Example of Packman formatting of a patch:

$TXT Created by FORT,WALLY at NXT.KERNEL.ISC-SF.VA.GOV (KIDS) on THURSDAY, 11/20/97 at 15:32
=============================================================================
Run Date: NOV 28, 1997 Designation: XU*8*70
Package : XU - KERNEL Priority: Mandatory
Version : 8 SEQ #52 Status: Released
=============================================================================

Subject: Auto Sign-on and PCMM fix

Category:
- Routine

Description:
============

*** Patch XU*8*59 MUST be installed before this patch ***

A problem was found when using a Broker v1.0 application on Windows 95
and server side has Broker v1.1 with Auto sign-on. The 16bit app will
prevent the server from contacting the ClientAgent, this will cause the
16 bit PCMM to time-out and close the sign-on.
The fix is to disable the auto sign-on if the client is Broker v1.0

It was found that the Broker sign-on were allowed even when Logon were
inhibited.

Both problems fixed by patching XUSRB

SFC-1197-61181 XUSRA The SQLI interface was making use of a call in
XUSRA that called an entry point in XUS that had
chaged with patch 59. This is now fixed.

Checksum
Routine Old New 2nd Line
XUSRA 1213791 1890066 **70**
XUSRB 4666750 5125201 **11,16,28,32,59,70**

=========================================================================
Installation:

1. DSM sites - One of these routines may by mapped,
so you will need to disable mapping for the effected routine.

2. Use the 'INSTALL/CHECK MESSAGE' option on the PackMan menu. This
option will load the KIDS package onto your system.

3. The patch has now been loaded into a Transport global on your
system. You now need to use KIDS to install the Transport global.
On the KIDS menu, under the 'Installation' menu, use the following
options:

Verify Checksum's in Transport Global
Print Transport Global
Compare Transport Global to Current System
Backup a Transport Global

4. Users can remain on the system.
Stop the Broker listener to prevent the possibility of some CLOBER
errors.

5. On the KIDS menu, under the 'Installation' menu, use the following
option:
Install Package(s) 'XU*8.0*70'
=========

6. DSM Sites, after patch has installed, rebuild your map set.

7. All sites, Restart the Broker listener.
=========================================================================

Routine Information:
====================

Routine Name:
- XUSRB


Routine Checksum:

Routine Name:
- XUSRA


Routine Checksum:

=============================================================================
User Information:
Entered By : FORT,WALLY Date Entered : NOV 07, 1997
Completed By: MARSHALL,RICK Date Completed: NOV 24, 1997
Released By : SICARD,JERRY Date Released : NOV 28, 1997
=============================================================================


Packman Mail Message:
=====================

$END TXT
$KID XU*8.0*70
**INSTALL NAME**
XU*8.0*70
"BLD",21,0)
XU*8.0*70^KERNEL^0^2971119^y
"BLD",21,1,0)
^^58^58^2971120^
"BLD",21,1,1,0)

"BLD",21,1,2,0)
*** Patch XU*8*59 MUST be installed before this patch ***
"BLD",21,1,3,0)

"BLD",21,1,4,0)
A problem was found when using a Broker v1.0 application on Windows 95
"BLD",21,1,5,0)
and server side has Broker v1.1 with Auto sign-on. The 16bit app will
"BLD",21,1,6,0)
prevent the server from contacting the ClientAgent, this will cause the
"BLD",21,1,7,0)
16 bit PCMM to time-out and close the sign-on.
"BLD",21,1,8,0)
The fix is to disable the auto sign-on if the client is Broker v1.0
"BLD",21,1,9,0)

"BLD",21,1,10,0)
It was found that the Broker sign-on were allowed even when Logon were
"BLD",21,1,11,0)
inhibited.
"BLD",21,1,12,0)

"BLD",21,1,13,0)
Both problems fixed by patching XUSRB
"BLD",21,1,14,0)

"BLD",21,1,15,0)
SFC-1197-61181 XUSRA The SQLI interface was making use of a call in
"BLD",21,1,16,0)
XUSRA that called an entry point in XUS that had
"BLD",21,1,17,0)
chaged with patch 59. This is now fixed.
"BLD",21,1,18,0)

"BLD",21,1,19,0)
Checksum
"BLD",21,1,20,0)
Routine Old New 2nd Line
"BLD",21,1,21,0)
XUSRA 1213791 1890066 **70**
"BLD",21,1,22,0)
XUSRB 4666750 5125201 **11,16,28,32,59,70**
"BLD",21,1,23,0)

"BLD",21,1,24,0)
=========================================================================
"BLD",21,1,25,0)
Installation:
"BLD",21,1,26,0)

"BLD",21,1,27,0)
1. DSM sites - One of these routines may by mapped,
"BLD",21,1,28,0)
so you will need to disable mapping for the effected routine.
"BLD",21,1,29,0)

"BLD",21,1,30,0)
2. Use the 'INSTALL/CHECK MESSAGE' option on the PackMan menu. This
"BLD",21,1,31,0)
option will load the KIDS package onto your system.
"BLD",21,1,32,0)

"BLD",21,1,33,0)
3. The patch has now been loaded into a Transport global on your
"BLD",21,1,34,0)
system. You now need to use KIDS to install the Transport global.
"BLD",21,1,35,0)
On the KIDS menu, under the 'Installation' menu, use the following
"BLD",21,1,36,0)
options:
"BLD",21,1,37,0)

"BLD",21,1,38,0)
Verify Checksum's in Transport Global
"BLD",21,1,39,0)
Print Transport Global
"BLD",21,1,40,0)
Compare Transport Global to Current System
"BLD",21,1,41,0)
Backup a Transport Global
"BLD",21,1,42,0)

"BLD",21,1,43,0)
4. Users can remain on the system.
"BLD",21,1,44,0)
Stop the Broker listener to prevent the possibility of some CLOBER
"BLD",21,1,45,0)
errors.
"BLD",21,1,46,0)

"BLD",21,1,47,0)
5. On the KIDS menu, under the 'Installation' menu, use the following
"BLD",21,1,48,0)
option:
"BLD",21,1,49,0)
Install Package(s) 'XU*8.0*70'
"BLD",21,1,50,0)
=========
"BLD",21,1,51,0)

"BLD",21,1,52,0)
6. MSM Sites - Answer YES to the question 'Want to MOVE routines to
"BLD",21,1,53,0)
other CPUs?'. Enter the names of your Compute and Print server(s).
"BLD",21,1,54,0)

"BLD",21,1,55,0)
7. DSM Sites, after patch has installed, rebuild your map set.
"BLD",21,1,56,0)

"BLD",21,1,57,0)
8. All sites, Restart the Broker listener.
"BLD",21,1,58,0)
=========================================================================
"BLD",21,4,0)
^9.64PA^^
"BLD",21,"KRN",0)
^9.67PA^19^14
"BLD",21,"KRN",.4,0)
.4
"BLD",21,"KRN",.401,0)
.401
"BLD",21,"KRN",.402,0)
.402
"BLD",21,"KRN",.403,0)
.403
"BLD",21,"KRN",.5,0)
.5
"BLD",21,"KRN",.84,0)
.84
"BLD",21,"KRN",3.6,0)
3.6
"BLD",21,"KRN",3.8,0)
3.8
"BLD",21,"KRN",9.2,0)
9.2
"BLD",21,"KRN",9.8,0)
9.8
"BLD",21,"KRN",9.8,"NM",0)
^9.68A^2^2
"BLD",21,"KRN",9.8,"NM",1,0)
XUSRB^^0^B14798029
"BLD",21,"KRN",9.8,"NM",2,0)
XUSRA^^0^B4688754
"BLD",21,"KRN",9.8,"NM","B","XUSRA",2)

"BLD",21,"KRN",9.8,"NM","B","XUSRB",1)

"BLD",21,"KRN",19,0)
19
"BLD",21,"KRN",19.1,0)
19.1
"BLD",21,"KRN",101,0)
101
"BLD",21,"KRN",8994,0)
8994
"BLD",21,"KRN","B",.4,.4)

"BLD",21,"KRN","B",.401,.401)

"BLD",21,"KRN","B",.402,.402)

"BLD",21,"KRN","B",.403,.403)

"BLD",21,"KRN","B",.5,.5)

"BLD",21,"KRN","B",.84,.84)

"BLD",21,"KRN","B",3.6,3.6)

"BLD",21,"KRN","B",3.8,3.8)

"BLD",21,"KRN","B",9.2,9.2)

"BLD",21,"KRN","B",9.8,9.8)

"BLD",21,"KRN","B",19,19)

"BLD",21,"KRN","B",19.1,19.1)

"BLD",21,"KRN","B",101,101)

"BLD",21,"KRN","B",8994,8994)

"BLD",21,"QUES",0)
^9.62^^
"BLD",21,"REQB",0)
^9.611^1^1
"BLD",21,"REQB",1,0)
XU*8.0*59^2
"BLD",21,"REQB","B","XU*8.0*59",1)

"PKG",3,-1)
1^1
"PKG",3,0)
KERNEL^XU^SIGN-ON, SECURITY, MENU DRIVER, DEVICES, TASKMAN^
"PKG",3,22,0)
^9.49I^1^1
"PKG",3,22,1,0)
8.0^2950703^2970507^.5
"PKG",3,22,1,"PAH",1,0)
70^2971119
"PKG",3,22,1,"PAH",1,1,0)
^^58^58^2971120
"PKG",3,22,1,"PAH",1,1,1,0)

"PKG",3,22,1,"PAH",1,1,2,0)
*** Patch XU*8*59 MUST be installed before this patch ***
"PKG",3,22,1,"PAH",1,1,3,0)

"PKG",3,22,1,"PAH",1,1,4,0)
A problem was found when using a Broker v1.0 application on Windows 95
"PKG",3,22,1,"PAH",1,1,5,0)
and server side has Broker v1.1 with Auto sign-on. The 16bit app will
"PKG",3,22,1,"PAH",1,1,6,0)
prevent the server from contacting the ClientAgent, this will cause the
"PKG",3,22,1,"PAH",1,1,7,0)
16 bit PCMM to time-out and close the sign-on.
"PKG",3,22,1,"PAH",1,1,8,0)
The fix is to disable the auto sign-on if the client is Broker v1.0
"PKG",3,22,1,"PAH",1,1,9,0)

"PKG",3,22,1,"PAH",1,1,10,0)
It was found that the Broker sign-on were allowed even when Logon were
"PKG",3,22,1,"PAH",1,1,11,0)
inhibited.
"PKG",3,22,1,"PAH",1,1,12,0)

"PKG",3,22,1,"PAH",1,1,13,0)
Both problems fixed by patching XUSRB
"PKG",3,22,1,"PAH",1,1,14,0)

"PKG",3,22,1,"PAH",1,1,15,0)
SFC-1197-61181 XUSRA The SQLI interface was making use of a call in
"PKG",3,22,1,"PAH",1,1,16,0)
XUSRA that called an entry point in XUS that had
"PKG",3,22,1,"PAH",1,1,17,0)
chaged with patch 59. This is now fixed.
"PKG",3,22,1,"PAH",1,1,18,0)

"PKG",3,22,1,"PAH",1,1,19,0)
Checksum
"PKG",3,22,1,"PAH",1,1,20,0)
Routine Old New 2nd Line
"PKG",3,22,1,"PAH",1,1,21,0)
XUSRA 1213791 1890066 **70**
"PKG",3,22,1,"PAH",1,1,22,0)
XUSRB 4666750 5125201 **11,16,28,32,59,70**
"PKG",3,22,1,"PAH",1,1,23,0)

"PKG",3,22,1,"PAH",1,1,24,0)
=========================================================================
"PKG",3,22,1,"PAH",1,1,25,0)
Installation:
"PKG",3,22,1,"PAH",1,1,26,0)

"PKG",3,22,1,"PAH",1,1,27,0)
1. DSM sites - One of these routines may by mapped,
"PKG",3,22,1,"PAH",1,1,28,0)
so you will need to disable mapping for the effected routine.
"PKG",3,22,1,"PAH",1,1,29,0)

"PKG",3,22,1,"PAH",1,1,30,0)
2. Use the 'INSTALL/CHECK MESSAGE' option on the PackMan menu. This
"PKG",3,22,1,"PAH",1,1,31,0)
option will load the KIDS package onto your system.
"PKG",3,22,1,"PAH",1,1,32,0)

"PKG",3,22,1,"PAH",1,1,33,0)
3. The patch has now been loaded into a Transport global on your
"PKG",3,22,1,"PAH",1,1,34,0)
system. You now need to use KIDS to install the Transport global.
"PKG",3,22,1,"PAH",1,1,35,0)
On the KIDS menu, under the 'Installation' menu, use the following
"PKG",3,22,1,"PAH",1,1,36,0)
options:
"PKG",3,22,1,"PAH",1,1,37,0)

"PKG",3,22,1,"PAH",1,1,38,0)
Verify Checksum's in Transport Global
"PKG",3,22,1,"PAH",1,1,39,0)
Print Transport Global
"PKG",3,22,1,"PAH",1,1,40,0)
Compare Transport Global to Current System
"PKG",3,22,1,"PAH",1,1,41,0)
Backup a Transport Global
"PKG",3,22,1,"PAH",1,1,42,0)

"PKG",3,22,1,"PAH",1,1,43,0)
4. Users can remain on the system.
"PKG",3,22,1,"PAH",1,1,44,0)
Stop the Broker listener to prevent the possibility of some CLOBER
"PKG",3,22,1,"PAH",1,1,45,0)
errors.
"PKG",3,22,1,"PAH",1,1,46,0)

"PKG",3,22,1,"PAH",1,1,47,0)
5. On the KIDS menu, under the 'Installation' menu, use the following
"PKG",3,22,1,"PAH",1,1,48,0)
option:
"PKG",3,22,1,"PAH",1,1,49,0)
Install Package(s) 'XU*8.0*70'
"PKG",3,22,1,"PAH",1,1,50,0)
=========
"PKG",3,22,1,"PAH",1,1,51,0)

"PKG",3,22,1,"PAH",1,1,52,0)
6. MSM Sites - Answer YES to the question 'Want to MOVE routines to
"PKG",3,22,1,"PAH",1,1,53,0)
other CPUs?'. Enter the names of your Compute and Print server(s).
"PKG",3,22,1,"PAH",1,1,54,0)

"PKG",3,22,1,"PAH",1,1,55,0)
7. DSM Sites, after patch has installed, rebuild your map set.
"PKG",3,22,1,"PAH",1,1,56,0)

"PKG",3,22,1,"PAH",1,1,57,0)
8. All sites, Restart the Broker listener.
"PKG",3,22,1,"PAH",1,1,58,0)
=========================================================================
"QUES","XPF1",0)
Y
"QUES","XPF1","??")
^D REP^XPDH
"QUES","XPF1","A")
Shall I write over your |FLAG| File
"QUES","XPF1","B")
YES
"QUES","XPF1","M")
D XPF1^XPDIQ
"QUES","XPF2",0)
Y
"QUES","XPF2","??")
^D DTA^XPDH
"QUES","XPF2","A")
Want my data |FLAG| yours
"QUES","XPF2","B")
YES
"QUES","XPF2","M")
D XPF2^XPDIQ
"QUES","XPM1",0)
PO^VA(200,:EM
"QUES","XPM1","??")
^D MG^XPDH
"QUES","XPM1","A")
Enter the Coordinator for Mail Group '|FLAG|'
"QUES","XPM1","B")

"QUES","XPM1","M")
D XPM1^XPDIQ
"QUES","XPZ1",0)
Y
"QUES","XPZ1","??")
^D OPT^XPDH
"QUES","XPZ1","A")
Want to DISABLE Scheduled Options, Menu Options, and Protocols
"QUES","XPZ1","B")
YES
"QUES","XPZ1","M")
D XPZ1^XPDIQ
"QUES","XPZ2",0)
Y
"QUES","XPZ2","??")
^D RTN^XPDH
"QUES","XPZ2","A")
Want to MOVE routines to other CPUs
"QUES","XPZ2","B")
NO
"QUES","XPZ2","M")
D XPZ2^XPDIQ
"RTN")
2
"RTN","XUSRA")
0^2^B4688754
"RTN","XUSRA",1,0)
XUSRA ;ISCSF/RWF - Remote access control ;11/19/97 13:43
"RTN","XUSRA",2,0)
;;8.0;KERNEL;**70**;Jul 10, 1995
"RTN","XUSRA",3,0)
Q ;No entry from top
"RTN","XUSRA",4,0)
;
"RTN","XUSRA",5,0)
;OUTSIDE app user cheking, The supported entry-points are:
"RTN","XUSRA",6,0)
;VALIDAV, INTRO
"RTN","XUSRA",7,0)
;First parameter is always call-by-reference
"RTN","XUSRA",8,0)
VALIDAV(RESULT,AVCODE) ;Check a users access
"RTN","XUSRA",9,0)
;Return DUZ^problem message^verify needs changing
"RTN","XUSRA",10,0)
;This entry point is subscription only.
"RTN","XUSRA",11,0)
N X,XUSER,XUF,XRA1,XRA2,XUMSG
"RTN","XUSRA",12,0)
K ^UTILITY($J),^TMP($J),^XUTL("XQ",$J)
"RTN","XUSRA",13,0)
D SET1^XUS(0) S XRA1=$$INHIBIT^XUSRB,XRA2=0,XUF=0,DUZ=0,XUMSG=0
"RTN","XUSRA",14,0)
I 'XRA1 S DUZ=$$CHECKAV^XUS(AVCODE) S:DUZ XRA2=$$VCVALID S:XRA2 DUZ=0,XRA1=12
"RTN","XUSRA",15,0)
S XUMSG=$S(XRA1:XRA1,'DUZ:4,1:0),XUMSG=$S(XUMSG:$P($T(@XUMSG^XUS3),";",4),1:"")
"RTN","XUSRA",16,0)
S RESULT=DUZ_U_XUMSG_U_XRA2
"RTN","XUSRA",17,0)
Q
"RTN","XUSRA",18,0)
;
"RTN","XUSRA",19,0)
INTRO(RESULT) ;Return INTRO TEXT.
"RTN","XUSRA",20,0)
D INTRO^XUS1A("RESULT")
"RTN","XUSRA",21,0)
Q
"RTN","XUSRA",22,0)
VCVALID() ;Check if the Verify code needs changing.
"RTN","XUSRA",23,0)
Q:'$G(DUZ) 1
"RTN","XUSRA",24,0)
Q $G(^VA(200,DUZ,.1))+$P(^XTV(8989.3,1,"XUS"),"^",15)'>(+$H)
"RTN","XUSRA",25,0)
;
"RTN","XUSRA",26,0)
CVC(RESULT,XU1) ;change VC
"RTN","XUSRA",27,0)
S RESULT=0 Q:$G(DUZ)'>0 N XU2 S U="^",XU2=$P(XU1,U,2),XU1=$P(XU1,U)
"RTN","XUSRA",28,0)
Q $$XXCVC^XUS2(XU1,XU2)
"RTN","XUSRA",29,0)
;
"RTN","XUSRA",30,0)
ZSETUP(RESULT) ;Finish setup partition
"RTN","XUSRA",31,0)
S RESULT=0 Q:$G(DUZ)'>0 D DUZ^XUS1A,USER^XUS1A
"RTN","XUSRA",32,0)
S RESULT=1 M RESULT(1)=XUTXT
"RTN","XUSRA",33,0)
K ^UTILITY($J),^TMP($J),^XUTL("XQ",$J)
"RTN","XUSRA",34,0)
Q
"RTN","XUSRA",35,0)
;
"RTN","XUSRA",36,0)
SETUP(RESULT) ;sets up environment for GUI signon
"RTN","XUSRA",37,0)
D SET1^XUS(0)
"RTN","XUSRA",38,0)
S RESULT(0)=$P(XUENV,U,3) ;server name
"RTN","XUSRA",39,0)
S RESULT(1)=$P(XUVOL,U) ;volume
"RTN","XUSRA",40,0)
S RESULT(2)=XUCI ;uci
"RTN","XUSRA",41,0)
S RESULT(3)=$I ;device
"RTN","XUSRA",42,0)
Q
"RTN","XUSRA",43,0)
;
"RTN","XUSRA",44,0)
A1 ;Set some basics.
"RTN","XUSRA",45,0)
S U="^",DT=$$DT^XLFDT()
"RTN","XUSRA",46,0)
Q
"RTN","XUSRA",47,0)
JOB(DUZ,KEY,ACTION) ;To start a new process from GUI.
"RTN","XUSRA",48,0)
Q:(DUZ'>0)!'$L(KEY)
"RTN","XUSRA",49,0)
S %=$O(^VA(200,"ARA",KEY,0)) K KEY Q:%'=DUZ
"RTN","XUSRA",50,0)
D SETUP X ACTION D H2^XUSCLEAN
"RTN","XUSRA",51,0)
;
"RTN","XUSRA",52,0)
NETV(KEY) ;Net access check
"RTN","XUSRA",53,0)
Q:'$L(KEY) -1
"RTN","XUSRA",54,0)
S DUZ=$O(^VA(200,"ARA",KEY,0))
"RTN","XUSRA",55,0)
Q DUZ
"RTN","XUSRA",56,0)
;
"RTN","XUSRA",57,0)
GIVE(DUZ) ;
"RTN","XUSRA",58,0)
N %
"RTN","XUSRA",59,0)
F S %=$E(^VA(200,DUZ,0),1,2)_$R(($H*86400+$P($H,",",2))) Q:'$D(^VA(200,"ARA",%))
"RTN","XUSRA",60,0)
S XU(200,DUZ_",",11.7)=% D FILE^DIE("","XU")
"RTN","XUSRA",61,0)
Q
"RTN","XUSRA",62,0)
LAUNCH(ACTION) ;Job out a new process
"RTN","XUSRA",63,0)
N % S %=$P(^VA(200,DUZ,.1),"^",7)
"RTN","XUSRA",64,0)
Q:%="" 0 X "JOB JOB^XUSRA(DUZ,%,ACTION)" Q $T
"RTN","XUSRA",65,0)
;
"RTN","XUSRB")
0^1^B14798029
"RTN","XUSRB",1,0)
XUSRB ;ISCSF/RWF - Request Broker ;11/20/97 15:19
"RTN","XUSRB",2,0)
;;8.0;KERNEL;**11,16,28,32,59,70**;Jul 05, 1995
"RTN","XUSRB",3,0)
Q ;No entry from top
"RTN","XUSRB",4,0)
;
"RTN","XUSRB",5,0)
;DATA BROKER calls, First parameter is always call-by-reference
"RTN","XUSRB",6,0)
VALIDAV(RET,AVCODE) ;Check a users access
"RTN","XUSRB",7,0)
;Return R(0)=DUZ, R(1)=(0=OK, 1,2...=Can't sign-on for some reason)
"RTN","XUSRB",8,0)
; R(2)=verify needs changing, R(3)=Message, R(4)=0, R(5)=msg cnt, R(5+n)
"RTN","XUSRB",9,0)
I $$NEWERR^%ZTER N $ETRAP S $ETRAP=""
"RTN","XUSRB",10,0)
N X,XUSER,XUF,XUNOW,XUDEV,XUM,XUMSG,%1,VCOK K DUZ
"RTN","XUSRB",11,0)
S RET(0)=0,RET(5)=0,XUF=0,XUM=0,XUMSG=0
"RTN","XUSRB",12,0)
S DUZ=0,DUZ(0)="",VCOK=0 D NOW
"RTN","XUSRB",13,0)
S XOPT=$$STATE^XWBSEC("XUS XOPT"),XUT=$$STATE^XWBSEC("XUS CNT")
"RTN","XUSRB",14,0)
S XUMSG=$$INHIBIT() I XUMSG S XUM=1 G VAX ;Logon inhibited
"RTN","XUSRB",15,0)
S DUZ=$$CHECKAV^XUS($$DECRYP^XUSRB1(AVCODE))
"RTN","XUSRB",16,0)
S XUT=$G(XUT)+1 D SET^XWBSEC("XUS CNT",XUT)
"RTN","XUSRB",17,0)
I XUT>$P(XOPT,U,2) S XUM=1,XUMSG=7 H 5 G VAX
"RTN","XUSRB",18,0)
S XUMSG=$$UVALID^XUS() G:XUMSG VAX
"RTN","XUSRB",19,0)
S VCOK=$$VCVALID()
"RTN","XUSRB",20,0)
I DUZ>0 S XUMSG=$$POST(1)
"RTN","XUSRB",21,0)
I 'XUMSG,VCOK S XUMSG=12 D SET^XWBSEC("XUS DUZ",DUZ) ;Need to change VC
"RTN","XUSRB",22,0)
VAX S:XUMSG>0 DUZ=0 D:DUZ>0 POST2
"RTN","XUSRB",23,0)
S RET(0)=DUZ,RET(1)=XUM,RET(2)=VCOK,RET(3)=$S(XUMSG:$P($T(@XUMSG^XUS3),";",4),1:""),RET(4)=0
"RTN","XUSRB",24,0)
Q
"RTN","XUSRB",25,0)
;
"RTN","XUSRB",26,0)
NOW S U="^",XUNOW=$$NOW^XLFDT(),DT=$P(XUNOW,"."),XUDEV=0
"RTN","XUSRB",27,0)
Q
"RTN","XUSRB",28,0)
;
"RTN","XUSRB",29,0)
INTRO(RET) ;Return INTRO TEXT.
"RTN","XUSRB",30,0)
D INTRO^XUS1A("RET")
"RTN","XUSRB",31,0)
Q
"RTN","XUSRB",32,0)
;
"RTN","XUSRB",33,0)
VCVALID() ;Return 1 if the Verify code needs changing.
"RTN","XUSRB",34,0)
Q:'$G(DUZ) 1
"RTN","XUSRB",35,0)
Q:$P($G(^VA(200,DUZ,.1)),U,2)="" 1
"RTN","XUSRB",36,0)
Q $G(^VA(200,DUZ,.1))+$P(^XTV(8989.3,1,"XUS"),"^",15)'>(+$H)
"RTN","XUSRB",37,0)
;
"RTN","XUSRB",38,0)
CVC(RET,XU1) ;change VC, Return 0 = success
"RTN","XUSRB",39,0)
N XU2,XU3,XU4 S RET(0)=99,XU4=$$STATE^XWBSEC("XUS DUZ") S:(DUZ=0)&(XU4>0) DUZ=XU4 Q:$G(DUZ)'>0
"RTN","XUSRB",40,0)
S U="^",XU2=$P(XU1,U,2),XU3=$P(XU1,U,3),XU1=$P(XU1,U)
"RTN","XUSRB",41,0)
S XU1=$$DECRYP^XUSRB1(XU1),XU2=$$DECRYP^XUSRB1(XU2),XU3=$$DECRYP^XUSRB1(XU3)
"RTN","XUSRB",42,0)
S XU3=$$BRCVC^XUS2(XU1,XU2),RET(0)=+XU3,RET(1)=$P(XU3,U,2,9)
"RTN","XUSRB",43,0)
I 'XU3,XU4 D KILL^XWBSEC("XUS DUZ"),POST2
"RTN","XUSRB",44,0)
Q
"RTN","XUSRB",45,0)
;
"RTN","XUSRB",46,0)
POST(CVC) ;Finish setup partition, I CVC don't log get
"RTN","XUSRB",47,0)
N X,XUM S:$D(IO)[0 IO=$I S IO(0)=IO
"RTN","XUSRB",48,0)
K ^UTILITY($J),^TMP($J),^XUTL("XQ",$J)
"RTN","XUSRB",49,0)
I '$D(USER(0)),DUZ D USER^XUS(DUZ)
"RTN","XUSRB",50,0)
S XUM=$$USER^XUS1A Q:XUM>0 XUM ;User can't sign on for some reason.
"RTN","XUSRB",51,0)
S RET(5)=0 ;The next line sends the post sign-on msg
"RTN","XUSRB",52,0)
F %=1:1 Q:'$D(XUTEXT(%)) S RET(5+%)=$E(XUTEXT(%),2,256),RET(5)=%
"RTN","XUSRB",53,0)
S RET(5)=0 ;This line stops the display of the msg. Remove this line to allow.
"RTN","XUSRB",54,0)
D:'$G(CVC) POST2
"RTN","XUSRB",55,0)
Q 0
"RTN","XUSRB",56,0)
POST2 D:'$D(XUNOW) NOW
"RTN","XUSRB",57,0)
D DUZ^XUS1A,LOG^XUS1,SAVE^XUS1,ABT^XQ12
"RTN","XUSRB",58,0)
D KILL^XWBSEC("XUS CNT"),KILL^XWBSEC("XUS XOPT")
"RTN","XUSRB",59,0)
K XUTEXT,XOPT,XUEON,XUEOFF,XUTT,XUDEV,XUSER
"RTN","XUSRB",60,0)
Q
"RTN","XUSRB",61,0)
;
"RTN","XUSRB",62,0)
INHIBIT() ;Is Logon to this system Inhibited?
"RTN","XUSRB",63,0)
I $G(^%ZIS(14.5,"LOGON",XQVOL)) Q 1
"RTN","XUSRB",64,0)
I $D(^%ZOSF("ACTJ")) X ^("ACTJ") I $P(XUVOL,U,3),($P(XUVOL,U,3)'>Y) Q 2
"RTN","XUSRB",65,0)
Q 0
"RTN","XUSRB",66,0)
;
"RTN","XUSRB",67,0)
LOGOUT ;Finish logout of user.
"RTN","XUSRB",68,0)
D BYE^XUSCLEAN
"RTN","XUSRB",69,0)
Q
"RTN","XUSRB",70,0)
;
"RTN","XUSRB",71,0)
SETUP(RET) ;sets up environment for GUI signon
"RTN","XUSRB",72,0)
K DUZ U XWBTDEV
"RTN","XUSRB",73,0)
S IO("IP")=XWBTIP,IO("CLNM")=$$LOW^XLFSTR($G(XWBCLMAN)) D ZIO^%ZIS4
"RTN","XUSRB",74,0)
D SET1^XUS(0),SET^XWBSEC("XUS XOPT",XOPT),SET^XWBSEC("XUS CNT",0)
"RTN","XUSRB",75,0)
;0=server name, 1=volume, 2=uci, 3=device, 4=# attempts, 5=skip signon-screen
"RTN","XUSRB",76,0)
S RET(0)=$P(XUENV,U,3),RET(1)=$P(XUVOL,U),RET(2)=XUCI
"RTN","XUSRB",77,0)
S RET(3)=$I,RET(4)=$P(XOPT,U,2),RET(5)=0
"RTN","XUSRB",78,0)
I $$INHIBIT() Q
"RTN","XUSRB",79,0)
;Single sign-on check only for Broker v1.1
"RTN","XUSRB",80,0)
I $G(XWBVER)<1.1 S XQXFLG("ZEBRA")=-1 ;Disable for v1.0
"RTN","XUSRB",81,0)
I IO("CLNM")]"" S DUZ=$$AUTOXWB^XUS1B() ;Only check when 1.1 CL.
"RTN","XUSRB",82,0)
I DUZ>0 D NOW S XUMSG=$$POST(0) I XUMSG>0 S DUZ=0
"RTN","XUSRB",83,0)
S:DUZ>0 RET(5)=1
"RTN","XUSRB",84,0)
Q
"RTN","XUSRB",85,0)
;
"RTN","XUSRB",86,0)
OWNSKEY(RET,LIST) ;Does user have Key
"RTN","XUSRB",87,0)
N I,K S I=""
"RTN","XUSRB",88,0)
I $G(DUZ)'>0 S RET(0)=0 Q
"RTN","XUSRB",89,0)
I $O(LIST(""))="" S RET(0)=$$KCHK(LIST) Q
"RTN","XUSRB",90,0)
F S I=$O(LIST(I)) Q:I="" S RET(I)=$$KCHK(LIST(I))
"RTN","XUSRB",91,0)
Q
"RTN","XUSRB",92,0)
KCHK(%) Q $S($G(DUZ)>0:$D(^XUSEC(%,DUZ)),1:0) ;Key Check
"RTN","XUSRB",93,0)
;
"RTN","XUSRB",94,0)
AVHELP(RET) ; send access/verify code instructions.
"RTN","XUSRB",95,0)
S RET(0)=$$AVHLPTXT^XUS2()
"RTN","XUSRB",96,0)
Q
"RTN","XUSRB",97,0)
;
"RTN","XUSRB",98,0)
OPTACCES(RET,USER,OPTIONS,MODE) ;Checks or sets user's access for passed in options
"RTN","XUSRB",99,0)
S MODE="CHECK" ;only CHECK mode supported for now
"RTN","XUSRB",100,0)
N I S I=""
"RTN","XUSRB",101,0)
I $G(USER)'>0 S RET(0)=0 Q
"RTN","XUSRB",102,0)
F S I=$O(OPTIONS(I)) Q:I="" S RET(I)=$$CHK^XQCS(USER,OPTIONS(I))=1
"RTN","XUSRB",103,0)
Q
"VER")
8.0^21.0
$END KID XU*8.0*70