                   V. A.  C R O S S  R E F E R E N C E R  7.3
                     [5/5/2016 VA Standards & Conventions]
              UCI: FOIA201802 CPU: ICARUS    Mar 13, 2018@10:55:07

The selected file Data Dictionaries are being processed.

18.02 WEB SERVICE......
18.022 WSDL..
18.12 WEB SERVER...........
18.121 AUTHORIZED WEB SERVICES.....
18.13 WEB SERVER LOOKUP KEY...
The option and function files are being processed.

Processing Input Templates

Processing Input Templates

Processing Input Templates

Processing List Templates

Processing List Templates

Processing List Templates

Processing List Templates

Processing Protocols

Processing Protocols

Processing Protocols

Processing Protocols

Processing Protocols

Processing Protocols

Processing Protocols

Processing Protocols

Processing Protocols

Processing Protocols

Processing Protocols

Processing Protocols

Processing Protocols

Processing Protocols

Processing Protocols

Processing Protocols

Processing Protocols

Processing Protocols

Processing Protocols


Routines are being processed.
Routines: 17  Faux Routines: 9

XOBWD     XOBWENV   XOBWLIB   XOBWLIB1  XOBWP004  XOBWPA04  XOBWPB04  XOBWPST   
XOBWPWD   XOBWSSL   XOBWU     XOBWU1    XOBWUA    XOBWUA1   XOBWUS    XOBWUS1   
XOBWUS2   

          Data Dictionaries
|dd18.02       |dd18.022      |dd18.12       |dd18.121      |dd18.13       
|inpt          |list          |opt           |ptcl          

--- CROSS REFERENCING ---


Compiled list of Errors and Warnings              Mar 13, 2018@10:55:07 page 1

XOBWP004        * *  128 Lines,  4580 Bytes, Checksum: B25852913
         I ($ROLES["%All")!($ROLES["%Manager") D SSLCONF Q
   CHECK+2      F - Undefined Special Variable.
   CHECK+2      F - Undefined Special Variable.
         .N $NAMESPACE ;Push current namespace onto the stack
   EXISTS+5     F - Undefined Special Variable.
   EXISTS+5     W - Invalid local variable name.
   EXISTS+5     F - Undefined Special Variable.
         .S $NAMESPACE="%SYS" ;Change namespace, revert back upon "Q"
   EXISTS+6     F - Undefined Special Variable.
   EXISTS+6     F - Unrecognized argument in SET command.
         .N $NAMESPACE ;Push current namespace onto the stack
   CRSSL+6      F - Undefined Special Variable.
   CRSSL+6      W - Invalid local variable name.
   CRSSL+6      F - Undefined Special Variable.
         .S $NAMESPACE="%SYS" ;Change namespace, revert back upon "Q"
   CRSSL+7      F - Undefined Special Variable.
   CRSSL+7      F - Unrecognized argument in SET command.
         .N $NAMESPACE ;Push current namespace onto the stack
   DELETE+5     F - Undefined Special Variable.
   DELETE+5     W - Invalid local variable name.
   DELETE+5     F - Undefined Special Variable.
         .S $NAMESPACE="%SYS" ;Change namespace, revert back upon "Q"
   DELETE+6     F - Undefined Special Variable.
   DELETE+6     F - Unrecognized argument in SET command.

XOBWU        * *  129 Lines,  2993 Bytes, Checksum: B8679055
   WST+2        F - Reference to routine '^XOBTWU'. That isn't in this UCI.

|ptcl        * *  420 Lines,  11930 Bytes, Checksum: 
   4425+5       F - Reference to routine '^XOBTPST'. That isn't in this UCI.

--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---

XOBWD   6899     printed  Mar 13, 2018@10:55:07                        Page 2

XOBWD     ;ALB/MJK - HWSC :: Private Deployment APIs ; 09/13/10 4:00pm
 +1       ;;1.0;HwscWebServiceClient;;September 13, 2010;Build 31
 +2       ;
 +3        QUIT 
 +4       ;
GENPORT(XOBY) ; -- generate http port class from WSDL during install
 +1        NEW XOBSTAT,XOBWSDL
 +2        SET XOBWSDL=$GET(XOBY("WSDL FILE"))
 +3       ;
 +4        IF ##class(%File).Exists(XOBWSDL)
               Begin DoDot:1
 +5                SET XOBSTAT=$$ADDPROXY(.XOBY)
               End DoDot:1
 +6       IF '$TEST
               Begin DoDot:1
 +7                SET XOBSTAT="0^File does not exist ["_XOBWSDL_"]"
               End DoDot:1
 +8        QUIT XOBSTAT
 +9       ;
ADDPROXY(XOBY) ; -- create client proxy class
 +1        NEW XOBREADR,XOBSTAT,XOBINFO,XOBCLASS,XOBCXT,I,X,XOBLERR,XOBWSDL,XOBPKG,XOBWSN,XOBTYPE,XOBWAV
 +2       ;
 +3        SET XOBWSDL=$GET(XOBY("WSDL FILE"))
 +4        SET XOBPKG=$GET(XOBY("CACHE PACKAGE NAME"))
 +5        SET XOBWSN=$GET(XOBY("WEB SERVICE NAME"))
 +6        SET XOBWAV=$GET(XOBY("AVAILABILITY RESOURCE"))
 +7       ;
 +8        SET XOBINFO=##class(xobw.WsdlHandler).getInfoFromFile(XOBWSDL)
 +9        IF XOBINFO=""
               QUIT "0^Unable to parse WSDL file ["_XOBWSDL_"]"
 +10       IF $GET(XOBPKG)=""
               NEW XOBPKG

*** ERROR ***
               SET XOBPKG=$LISTGET(XOBINFO,1)
 +11 
*** ERROR ***
           SET XOBCLASS=XOBPKG_"."_$LISTGET(XOBINFO,2)
 +12 
*** ERROR ***
           SET XOBCXT=$LISTGET(XOBINFO,3)
 +13      ;
 +14       SET XOBREADR=##class(%SOAP.WSDL.Reader).%New()
 +15       SET XOBREADR.OutputTypeAttribute=1
 +16       SET XOBSTAT=XOBREADR.Process(XOBWSDL,XOBPKG)
 +17       IF XOBSTAT
               Begin DoDot:1
 +18               DO REGSOAP^XOBWLIB(XOBWSN,XOBCXT,XOBCLASS,XOBWSDL,XOBWAV)
               End DoDot:1
 +19      IF '$TEST
               Begin DoDot:1
 +20 
*** ERROR ***
                   DO $system.Status.DecomposeStatus(%objlasterror,.XOBLERR)
 +21               SET X=""
                   FOR I=1:1:XOBLERR
                       SET X=X_XOBLERR(I)
 +22               SET XOBSTAT="0^"_X
               End DoDot:1
 +23      ;
 +24       QUIT XOBSTAT
 +25      ;
REGISTER(XOBWSN,XOBTYPE,XOBCXT,XOBCLASS,XOBWSDL,XOBCAURL) ; -- register SOAP and REST service
 +1       ;  Input:
 +2       ;    XOBWSN    -   web service name
 +3       ;    XOBTYPE   -   type of web service [ 1 - SOAP | 2 - REST ]
 +4       ;    XOBCXT    -   web service context root
 +5       ;    XOBCLASS  -   full class name, including package
 +6       ;    XOBWSDL   -   file path containing WSDL document
 +7       ;    XOBCAURL  -   'check availability' url portion to follow context root [optional]
 +8       ;
 +9        NEW XOBCDEF,XOBOK,XOBCHK
 +10       SET XOBCHK=$$CHKTYPE(XOBWSN,XOBTYPE)
           IF '+XOBCHK
               Begin DoDot:1
 +11               DO BMES^XPDUTL(" o  Type mismatch: attempted "_$SELECT(XOBTYPE=1:"SOAP",XOBTYPE=2:"REST",1:"unknown")_" update of "_$SELECT($PIECE(XOBCHK,"^",2)=1:"SOAP",$PIECE(XOBCHK,"^",2)=2:"REST",1:"unknown")_"-type service '"_XOBWSN_"' failed.")
               End DoDot:1
               QUIT 
 +12       IF XOBTYPE=1
               Begin DoDot:1
 +13               SET XOBCDEF=##class(%Dictionary.ClassDefinition).%OpenId(XOBCLASS)
 +14      ; -- perform check to see if port class creation matches what was expected
 +15               IF XOBCDEF=""
                       DO BMES^XPDUTL(" o  Creating the class definition for '"_XOBCLASS_"' failed.")
               End DoDot:1
               if XOBCDEF=""
                   QUIT 
 +16      ;
 +17      ; -- add entry into table
 +18       SET XOBOK=$$FILE(XOBWSN,XOBTYPE,XOBCXT,.XOBCLASS,.XOBWSDL,.XOBCAURL)
 +19       DO MES^XPDUTL(" o  WEB SERVICE '"_XOBWSN_"' addition/update "_$SELECT(XOBOK:"succeeded.",1:"failed."))
 +20       DO MES^XPDUTL(" ")
 +21       QUIT 
 +22      ;
UNREG(XOBWSN) ; -- unregister and delete web service
 +1        NEW DIK,XOBSRVDA,XOBMULDA,XOBDA,XOBSRVNM,DA
 +2        SET XOBDA=$ORDER(^XOB(18.02,"B",XOBWSN,0))
           IF '+XOBDA
               Begin DoDot:1
 +3                DO MES^XPDUTL(" o  WEB SERVICE '"_XOBWSN_"' not found for deletion.")
               End DoDot:1
               QUIT 
 +4       ; delete from web servers' authorized multiple
 +5        SET XOBSRVDA=0
           SET XOBMULDA=0
 +6        FOR 
               SET XOBSRVDA=$ORDER(^XOB(18.12,"AB",XOBDA,XOBSRVDA))
               if '+XOBSRVDA
                   QUIT 
               Begin DoDot:1
 +7                FOR 
                       SET XOBMULDA=$ORDER(^XOB(18.12,"AB",XOBDA,XOBSRVDA,XOBMULDA))
                       if '+XOBMULDA
                           QUIT 
                       Begin DoDot:2
 +8                        SET XOBSRVNM=$PIECE($GET(^XOB(18.12,XOBSRVDA,0)),U)
 +9                        KILL DIK,DA
                           SET DA=XOBMULDA
                           SET DA(1)=XOBSRVDA
                           SET DIK="^XOB(18.12,"_DA(1)_",100,"
 +10                       DO ^DIK
 +11                       DO MES^XPDUTL(" o  WEB SERVICE '"_XOBWSN_"' unauthorized from '"_XOBSRVNM_"'.")
                       End DoDot:2
               End DoDot:1
 +12      ; delete web service
 +13       KILL DIK,DA
           SET DA=XOBDA
           SET DIK="^XOB(18.02,"
           DO ^DIK
 +14       DO MES^XPDUTL(" o  WEB SERVICE '"_XOBWSN_"' unregistered/deleted.")
 +15       QUIT 
 +16      ;
CHKTYPE(XOBWSN,XOBTYPE) ; return 1 if no svc, or right type; 0^existing type if mismatch
 +1        NEW XOBIEN
 +2        SET XOBIEN=+$$FIND1^DIC(18.02,"","BX",XOBWSN,"","","")
 +3        IF XOBIEN
               IF XOBTYPE'=$PIECE(^XOB(18.02,XOBIEN,0),"^",2)
                   QUIT 0_"^"_$PIECE(^XOB(18.02,XOBIEN,0),"^",2)
 +4        QUIT 1
 +5       ;
FILE(XOBWSN,XOBTYPE,XOBCXT,XOBCLASS,XOBWSDL,XOBCAURL) ;-- File a new record in file #18.02 or edit existing
 +1       ;  Input:
 +2       ;    XOBWSN    -   web service name
 +3       ;    XOBTYPE   -   type of web service [ 1 - SOAP | 2 -REST ]
 +4       ;    XOBCXT    -   web service context root
 +5       ;    XOBCLASS  -   full class name, including package
 +6       ;    XOBWSDL   -   file path containing WSDL document
 +7       ;    XOBCAURL  -   'check availability' url portion to follow context root [optional]
 +8       ;
 +9       ; Output:
 +10      ;    Function Value - Returns IEN of record on success, 0 on failure
 +11      ;
 +12       NEW XOBFDA,XOBFDAI,XOBERR,XOBIENS,XOBIEN,DIERR
 +13      ;
 +14       SET XOBIEN=+$$FIND1^DIC(18.02,"","BX",XOBWSN,"","","")
 +15      ;
 +16      ; -- If record doesn't already exist, create new
 +17       IF XOBIEN
               SET XOBIENS=XOBIEN_","
 +18      IF '$TEST
               SET XOBIENS="+1,"
 +19      ;
 +20      ; -- validate values ; quit if not valid
 +21       IF '$$VALIDATE()
               QUIT 0
 +22      ;
 +23      ; -- Set up array with field values
 +24       SET XOBFDA(18.02,XOBIENS,.01)=$GET(XOBWSN)
 +25       SET XOBFDA(18.02,XOBIENS,.02)=$GET(XOBTYPE)
 +26       SET XOBFDA(18.02,XOBIENS,.03)=$$NOW^XLFDT
 +27       SET XOBFDA(18.02,XOBIENS,100)=$GET(XOBCLASS)
 +28       SET XOBFDA(18.02,XOBIENS,200)=$GET(XOBCXT)
 +29       SET XOBFDA(18.02,XOBIENS,201)=$GET(XOBCAURL)
 +30      ;
 +31       IF XOBIEN
               Begin DoDot:1
 +32               DO FILE^DIE("","XOBFDA","XOBERR")
 +33               IF $DATA(DIERR)
                       Begin DoDot:2
 +34                       DO DISPERR($NAME(XOBERR))
 +35                       SET XOBIEN=0
                       End DoDot:2
               End DoDot:1
 +36      IF '$TEST
               Begin DoDot:1
 +37               DO UPDATE^DIE("","XOBFDA","XOBFDAI","XOBERR")
 +38               IF $DATA(DIERR)
                       Begin DoDot:2
 +39                       DO DISPERR($NAME(XOBERR))
 +40                       SET XOBIEN=0
                       End DoDot:2
 +41              IF '$TEST
                       Begin DoDot:2
 +42                       SET XOBIEN=$GET(XOBFDAI(1))
                       End DoDot:2
               End DoDot:1
 +43      ;
 +44      ; -- add copy of WSDL to a SOAP-type entry
 +45       IF XOBIEN
               IF $GET(XOBWSDL)]""
                   DO WSDL(.XOBWSDL,.XOBIEN)
 +46      ;
 +47       QUIT $SELECT($GET(XOBIEN)>0:XOBIEN,1:0)
 +48      ;
VALIDATE() ; -- validate values of input variables
 +1        NEW XOBY,XOBERR,XOBOK
 +2        SET XOBOK=1
 +3        DO VAL^DIE(18.02,XOBIENS,.01,"",$GET(XOBWSN),.XOBY,"","XOBERR")
           DO CHK
 +4        DO VAL^DIE(18.02,XOBIENS,.02,"",$GET(XOBTYPE),.XOBY,"","XOBERR")
           DO CHK
 +5        DO VAL^DIE(18.02,XOBIENS,100,"",$GET(XOBCLASS),.XOBY,"","XOBERR")
           DO CHK
 +6        DO VAL^DIE(18.02,XOBIENS,200,"",$GET(XOBCXT),.XOBY,"","XOBERR")
           DO CHK
 +7       ; -- work around for FM DBS bug that does not allow input to start with ?
 +8        IF $EXTRACT($GET(XOBCAURL))'="?"
               Begin DoDot:1
 +9                DO VAL^DIE(18.02,XOBIENS,201,"",$GET(XOBCAURL),.XOBY,"","XOBERR")
                   DO CHK
               End DoDot:1
 +10       QUIT XOBOK
 +11      ;
CHK       ;
 +1        IF $GET(XOBY)="^"
               Begin DoDot:1
 +2                SET XOBOK=0
 +3                DO DISPERR("XOBERR")
               End DoDot:1
 +4        QUIT 
 +5       ;
DISPERR(XOBINARR) ; -- display error message
 +1        NEW XOBOUT,XOBI,XOBX
 +2        DO MES^XPDUTL("FM Database Server Error Information:")
 +3        DO MSG^DIALOG("AE",.XOBOUT,70,"",XOBINARR)
 +4        FOR XOBI=1:1
               if $DATA(XOBOUT(XOBI))=0
                   QUIT 
               DO MES^XPDUTL($GET(XOBOUT(XOBI)))
 +5        QUIT 
 +6       ;
WSDL(XOBWSDL,XOBIEN) ; -- file copy of WSDL
 +1        NEW XOBSTRM,XOBROOT,XOBI,XOBERR,DIERR
 +2        SET XOBROOT=$NAME(^TMP("XOBW WSDL FILING",$JOB))
 +3        SET XOBI=0
 +4        SET XOBSTRM=##class(%FileCharacterStream).%New()
 +5        SET XOBSTRM.Filename=$GET(XOBWSDL)
 +6        FOR 
               if XOBSTRM.AtEnd
                   QUIT 
               Begin DoDot:1
 +7                SET XOBI=XOBI+1
 +8                SET @XOBROOT@(XOBI)=XOBSTRM.ReadLine()
               End DoDot:1
 +9        DO WP^DIE(18.02,XOBIEN_",",300,"K",XOBROOT,$NAME(XOBERR))
 +10      ; -- if error occurs, just display
 +11       IF $DATA(DIERR)
               DO DISPERR($NAME(XOBERR))
 +12       QUIT 
 +13      ;


*****   INDEX OF XOBWD   *****


Local Variables      Line Occurrences   ( >> not killed explicitly)
                                        ( * Changed  ! Killed  ~ Newed)
>> %objlasterror 
                ADDPROXY+20
   DA           UNREG+1~,UNREG+9!*,UNREG+13!*
   DA(1         UNREG+9*
   DIERR        FILE+12~,FILE+33,FILE+38,WSDL+1~,WSDL+11
   DIK          UNREG+1~,UNREG+9!*,UNREG+13!*
   I            ADDPROXY+1~,ADDPROXY+21*
   U            UNREG+8
   X            ADDPROXY+1~,ADDPROXY+21*,ADDPROXY+22
   XOBCAURL     REGISTER~,REGISTER+18,FILE~,FILE+29,VALIDATE+8,VALIDATE+9
   XOBCDEF      REGISTER+9~,REGISTER+12,REGISTER+13*,REGISTER+15
   XOBCHK       REGISTER+9~,REGISTER+10*,REGISTER+11
   XOBCLASS     ADDPROXY+1~,ADDPROXY+11*,ADDPROXY+18,REGISTER~,REGISTER+13
                REGISTER+15,REGISTER+18,FILE~,FILE+27,VALIDATE+5
   XOBCXT       ADDPROXY+1~,ADDPROXY+12*,ADDPROXY+18,REGISTER~,REGISTER+18
                FILE~,FILE+28,VALIDATE+6
   XOBDA        UNREG+1~,UNREG+2*,UNREG+6,UNREG+7,UNREG+13
   XOBERR       FILE+12~,FILE+34,FILE+39,VALIDATE+1~,WSDL+1~,WSDL+9,WSDL+11
   XOBFDA       FILE+12~
   XOBFDA(      FILE+24*,FILE+25*,FILE+26*,FILE+27*,FILE+28*,FILE+29*
   XOBFDAI      FILE+12~
   XOBFDAI(1    FILE+42
   XOBI         DISPERR+1~,DISPERR+4*,WSDL+1~,WSDL+3*,WSDL+7*,WSDL+8
   XOBIEN       CHKTYPE+1~,CHKTYPE+2*,CHKTYPE+3,FILE+12~,FILE+14*,FILE+17
                FILE+31,FILE+35*,FILE+40*,FILE+42*,FILE+45,FILE+47,WSDL~,WSDL+9
   XOBIENS      FILE+12~,FILE+17*,FILE+18*,FILE+24,FILE+25,FILE+26,FILE+27
                FILE+28,FILE+29,VALIDATE+3,VALIDATE+4,VALIDATE+5,VALIDATE+6
                VALIDATE+9
   XOBINARR     DISPERR~,DISPERR+3
   XOBINFO      ADDPROXY+1~,ADDPROXY+8*,ADDPROXY+9,ADDPROXY+10,ADDPROXY+11
                ADDPROXY+12
   XOBLERR      ADDPROXY+1~,ADDPROXY+20,ADDPROXY+21
   XOBLERR(     ADDPROXY+21
   XOBMULDA     UNREG+1~,UNREG+5*,UNREG+7*,UNREG+9
   XOBOK        REGISTER+9~,REGISTER+18*,REGISTER+19,VALIDATE+1~,VALIDATE+2*
                VALIDATE+10,CHK+2*
   XOBOUT       DISPERR+1~,DISPERR+3
   XOBOUT(      DISPERR+4
   XOBPKG       ADDPROXY+1~,ADDPROXY+4*,ADDPROXY+10~*,ADDPROXY+11,ADDPROXY+16
   XOBREADR     ADDPROXY+1~,ADDPROXY+14*
   XOBROOT      WSDL+1~,WSDL+2*,WSDL+8,WSDL+9
   XOBSRVDA     UNREG+1~,UNREG+5*,UNREG+6*,UNREG+7,UNREG+8,UNREG+9
   XOBSRVNM     UNREG+1~,UNREG+8*,UNREG+11
   XOBSTAT      GENPORT+1~,GENPORT+5*,GENPORT+7*,GENPORT+8,ADDPROXY+1~
                ADDPROXY+16*,ADDPROXY+17,ADDPROXY+22*,ADDPROXY+24
   XOBSTRM      WSDL+1~,WSDL+4*
   XOBTYPE      ADDPROXY+1~,REGISTER~,REGISTER+10,REGISTER+11,REGISTER+12
                REGISTER+18,CHKTYPE~,CHKTYPE+3,FILE~,FILE+25,VALIDATE+4
   XOBWAV       ADDPROXY+1~,ADDPROXY+6*,ADDPROXY+18
   XOBWSDL      GENPORT+1~,GENPORT+2*,GENPORT+4,GENPORT+7,ADDPROXY+1~
                ADDPROXY+3*,ADDPROXY+8,ADDPROXY+9,ADDPROXY+16,ADDPROXY+18
                REGISTER~,REGISTER+18,FILE~,FILE+45,WSDL~,WSDL+5
   XOBWSN       ADDPROXY+1~,ADDPROXY+5*,ADDPROXY+18,REGISTER~,REGISTER+10
                REGISTER+11,REGISTER+18,REGISTER+19,UNREG~,UNREG+2,UNREG+3
                UNREG+11,UNREG+14,CHKTYPE~,CHKTYPE+2,FILE~,FILE+14,FILE+24
                VALIDATE+3
   XOBX         DISPERR+1~
   XOBY         GENPORT~,GENPORT+5,ADDPROXY~,VALIDATE+1~,VALIDATE+3,VALIDATE+4
                VALIDATE+5,VALIDATE+6,VALIDATE+9,CHK+1
   XOBY("AVAILABILITY RESOURCE" 
                ADDPROXY+6
   XOBY("CACHE PACKAGE NAME" 
                ADDPROXY+4
   XOBY("WEB SERVICE NAME" 
                ADDPROXY+5
   XOBY("WSDL FILE" 
                GENPORT+2,ADDPROXY+3

Global Variables  ( * Changed  ! Killed)
   ^TMP("XOBW WSDL FILING"
                       WSDL+2
   ^XOB(18.02          UNREG+2,CHKTYPE+3
   ^XOB(18.12          UNREG+6,UNREG+7,UNREG+8

Naked Globals
   NONE

Cache Objects
   $system.Status.DecomposeStatus  ADDPROXY+20
   %Dictionary.ClassDefinition     REGISTER+13
   %File                           GENPORT+4
   %FileCharacterStream            WSDL+4
   %SOAP.WSDL.Reader               ADDPROXY+14
   XOBREADR.OutputTypeAttribute    ADDPROXY+15*
   XOBREADR.Process                ADDPROXY+16
   XOBSTRM.AtEnd                   WSDL+6
   XOBSTRM.Filename                WSDL+5*
   XOBSTRM.ReadLine                WSDL+8
   xobw.WsdlHandler                ADDPROXY+8

Marked Items
   NONE

Label References
   $$ADDPROXY   GENPORT+5
   $$CHKTYPE    REGISTER+10
   $$FILE       REGISTER+18
   $$VALIDATE   FILE+21
   CHK          VALIDATE+3,VALIDATE+4,VALIDATE+5,VALIDATE+6,VALIDATE+9
   DISPERR      FILE+34,FILE+39,CHK+3,WSDL+11
   WSDL         FILE+45

External References
   MSG^DIALOG          DISPERR+3
   $$FIND1^DIC         CHKTYPE+2,FILE+14
   FILE^DIE            FILE+32
   UPDATE^DIE          FILE+37
   VAL^DIE             VALIDATE+3,VALIDATE+4,VALIDATE+5,VALIDATE+6,VALIDATE+9
   WP^DIE              WSDL+9
   ^DIK                UNREG+10,UNREG+13
   $$NOW^XLFDT         FILE+26
   REGSOAP^XOBWLIB     ADDPROXY+18
   BMES^XPDUTL         REGISTER+11,REGISTER+15
   MES^XPDUTL          REGISTER+19,REGISTER+20,UNREG+3,UNREG+11,UNREG+14
                       DISPERR+2,DISPERR+4

*****   END   *****

XOBWENV   3145     printed  Mar 13, 2018@10:55:07                      Page 3

XOBWENV   ;ALB/MJK - HWSC :: Environmental Check ; 06/10/2016
 +1       ;;1.0;HwscWebServiceClient;**4**;September 13, 2010;Build 9
 +2       ;Per VA Directive 6402, this routine should not be modified.
 +3       ;
 +4       ; ***** IMPORTANT NOTE *******************************************
 +5       ; This routine requires access to the manager (%SYS) namespace and
 +6       ; can only be run by a user with permissions to that namespace.
 +7       ; ****************************************************************
 +8       ;
 +9        QUIT 
EN        ;- entry point
 +1       ; -- must be a supported M implementation
 +2        DO VALIDM
           IF $GET(XPDABORT)
               GOTO ENQ
 +3       ; -- passed load check
 +4        IF '$GET(XPDENV)
               IF '$GET(XPDABORT)
                   Begin DoDot:1
 +5                    WRITE !!?1,">>> Environment check completed for KIDS Load a Distribution option.",!
                   End DoDot:1
 +6       ; -- passed install check
 +7        IF $GET(XPDENV)=1
               IF '$GET(XPDABORT)
                   Begin DoDot:1
 +8                    WRITE !!?1,">>> Environment check completed for KIDS Install Package option.",!
                   End DoDot:1
ENQ        QUIT 
 +1       ;
VALIDM    ; -- check if HWSC supports M implementation and set KIDS flag if not
 +1        IF $$PROD^XUPROD(0)
               IF '$$SSLOK()
                   Begin DoDot:1
 +2                    WRITE !,"Note: Your current production M environment does not support SSL/TLS"
 +3                    WRITE !,"      connectivity! SSL/TLS support is provided in Cache v5.2.3 and greater."
 +4                    WRITE !,"      Also, SSL/TLS is not currently supported on VMS."
 +5                    NEW DIR
                       SET DIR(0)="E"
                       DO ^DIR
                   End DoDot:1
 +6       ;
 +7        IF '$$OSOK()
               Begin DoDot:1
 +8                SET XPDABORT=1
 +9                WRITE !?5,"This software can only be installed in a Cache v5.2.3 or greater environment!",!
               End DoDot:1
 +10       QUIT 
 +11      ;
OSOK()    ; -- check environment for operating system, 5.2.3 or greater
 +1        IF $PIECE($GET(^%ZOSF("OS")),"^")'["OpenM"
               QUIT 0
 +2        NEW XOBVER,MAJOR,MINOR,SUBMINOR
 +3        SET XOBVER=$$VERSION^%ZOSV()
 +4       ; -- checks major version # against 5
 +5        SET MAJOR=+$PIECE(XOBVER,".")
 +6        IF MAJOR<5
               QUIT 0
 +7        IF MAJOR>5
               QUIT 1
 +8       ; -- checks minor version # against 2
 +9        SET MINOR=+$PIECE(XOBVER,".",2)
 +10       IF MINOR<2
               QUIT 0
 +11       IF MINOR>2
               QUIT 1
 +12      ; -- checks sub-minor version # against 3
 +13       SET SUBMINOR=+$PIECE(XOBVER,".",3)
 +14       IF SUBMINOR<3
               QUIT 0
 +15       IF SUBMINOR>2
               QUIT 1
 +16       QUIT 0
 +17      ;
SSLOK()   ; -- check environment if SSL/TLS is supported (Cache 5.2.3 or greater, and *not* VMS)
 +1       ; also called in [XOBW WEB SERVER SETUP] edit template
 +2       ;IF $$SYSOS()="VMS" QUIT 0 ; prevent SSL use on VMS ; - XOBW*1*4
 +3       ; 5.2.3 or greater
           QUIT $$OSOK()
 +4       ;
KIDSCHK(XOBDIR) ; -- check input from installer
 +1       ; input: XOBDIR := directory where wsdl file is located (
 +2       ;  Note: If applicable, XOBDIR should contain the os-specific final delimiter, like '/home/cache/'
 +3        NEW XOBPATH
 +4        IF '##class(%File).DirectoryExists(XOBDIR)
               Begin DoDot:1
 +5                WRITE !," o  Directory does not exist: "_XOBDIR
               End DoDot:1
               QUIT 0
 +6        SET XOBPATH=XOBDIR_$$SUPPORT()
 +7        IF '##class(%File).Exists(XOBPATH)
               Begin DoDot:1
 +8                WRITE !," o  File to be imported does not exist: "_XOBPATH
               End DoDot:1
               QUIT 0
 +9        QUIT 1
 +10      ;
SUPPORT() ; -- returns name of xml file containing support classes (wsdl handler, vista info header, etc.)
 +1        QUIT "xobw4.xml"
 +2       ;
VERSION() ; -- returns the version number for this build
 +1        QUIT +$PIECE($PIECE($TEXT(XOBWENV+1),";",7),"Build ",2)
 +2       ;
SYSOS()   ; -- get system operating system
 +1       ; returns VMS, UNIX, NT or UNK
 +2        NEW XOBOS
           SET XOBOS=^%ZOSF("OS")
 +3        QUIT $SELECT(XOBOS["OpenM":$$OS^%ZOSV(),XOBOS["DSM":"VMS",1:"UNK")


*****   INDEX OF XOBWENV   *****


Local Variables      Line Occurrences   ( >> not killed explicitly)
                                        ( * Changed  ! Killed  ~ Newed)
   DIR          VALIDM+5~
   DIR(0        VALIDM+5*
   MAJOR        OSOK+2~,OSOK+5*,OSOK+6,OSOK+7
   MINOR        OSOK+2~,OSOK+9*,OSOK+10,OSOK+11
   SUBMINOR     OSOK+2~,OSOK+13*,OSOK+14,OSOK+15
   XOBDIR       KIDSCHK~,KIDSCHK+4,KIDSCHK+5,KIDSCHK+6
   XOBOS        SYSOS+2~*,SYSOS+3
   XOBPATH      KIDSCHK+3~,KIDSCHK+6*,KIDSCHK+7,KIDSCHK+8
   XOBVER       OSOK+2~,OSOK+3*,OSOK+5,OSOK+9,OSOK+13
>> XPDABORT     EN+2,EN+4,EN+7,VALIDM+8*
>> XPDENV       EN+4,EN+7

Global Variables  ( * Changed  ! Killed)
   ^%ZOSF("OS"         OSOK+1,SYSOS+2

Naked Globals
   NONE

Cache Objects
   %File                           KIDSCHK+4,KIDSCHK+7

Marked Items
   $T(XOBWENV+1 VERSION+1

Label References
   $$OSOK       VALIDM+7,SSLOK+3
   $$SSLOK      VALIDM+1
   $$SUPPORT    KIDSCHK+6
   ENQ          EN+2
   VALIDM       EN+2

External References
   $$OS^%ZOSV          SYSOS+3
   $$VERSION^%ZOSV     OSOK+3
   ^DIR                VALIDM+5
   $$PROD^XUPROD       VALIDM+1

*****   END   *****

XOBWLIB   8235     printed  Mar 13, 2018@10:55:07                      Page 4

XOBWLIB   ;ALB/MJK - HWSC :: Utilities Library ; 09/13/10 4:00pm
 +1       ;;1.0;HwscWebServiceClient;;September 13, 2010;Build 31
 +2       ;
 +3        QUIT 
 +4       ;
 +5       ;----------------------------- Public APIs ----------------------------
 +6       ;
 +7       ;. . . . . . . . . . . . Web Service Proxy APIs . . . . . . . . . . . .
 +8       ;
GETFAC(XOBWSN) ; -- get web service proxy factory
 +1       ;  Input:
 +2       ;    XOBWSN    -   web service name  
 +3        QUIT ##class(xobw.WebServiceProxyFactory).%New(XOBWSN)
 +4       ;
GETPROXY(XOBWSN,XOBSRVR) ; -- get web service proxy
 +1       ;  Input:
 +2       ;    XOBWSN    -   web service name
 +3       ;    XOBSRVR   -   web server name
 +4        QUIT ##class(xobw.WebServiceProxyFactory).getWebServiceProxy(XOBWSN,XOBSRVR)
 +5       ;
GENPORT(XOBY) ; -- generate http port class from WSDL during install
 +1        QUIT $$GENPORT^XOBWD(.XOBY)
 +2       ;
REGSOAP(XOBWSN,XOBCXT,XOBCLASS,XOBWSDL,XOBCAURL) ; -- register SOAP service
 +1       ;  Input:
 +2       ;    XOBWSN    -   SOAP web service name
 +3       ;    XOBCXT    -   web service context root  
 +4       ;    XOBCLASS  -   full class name, including package
 +5       ;    XOBWSDL   -   file path containing WSDL document [optional]
 +6       ;    XOBCAURL  -   'check availability' url portion to follow context root [optional]
 +7        DO REGISTER^XOBWD(XOBWSN,1,XOBCXT,XOBCLASS,.XOBWSDL,.XOBCAURL)
 +8        QUIT 
 +9       ;
ATTACHDR(XOBPROXY) ; -- add VistaInfoHeader to proxy object
 +1       ; Input: 
 +2       ;   XOBPROXY   -   web service proxy object
 +3        DO ATTACHDR^XOBWLIB1(.XOBPROXY)
 +4        QUIT 
 +5       ;
UNREG(XOBWSN) ; unregister/delete REST *or* SOAP web service
 +1       ; Input:
 +2       ;   XOBWSN     -   web service name
 +3        DO UNREG^XOBWD(XOBWSN)
 +4        QUIT 
 +5       ;
 +6       ;. . . . . . . . . . . . REST Service Request APIs . . . . . . . . . . . .
 +7       ;
GETRESTF(XOBWSN) ; -- get REST service request factory
 +1       ;  Input:
 +2       ;    XOBWSN    -   web service name 
 +3        QUIT ##class(xobw.RestRequestFactory).%New(XOBWSN)
 +4       ;
GETREST(XOBWSN,XOBSRVR) ; -- get REST service request
 +1       ;  Input:
 +2       ;    XOBWSN    -   web service name
 +3       ;    XOBSRVR   -   web server name 
 +4        QUIT ##class(xobw.RestRequestFactory).getRestRequest(XOBWSN,XOBSRVR)
 +5       ;
REGREST(XOBWSN,XOBCXT,XOBCAURL) ; -- register REST service
 +1       ;  Input:
 +2       ;    XOBWSN    -   REST web service name
 +3       ;    XOBCXT    -   web service context root  
 +4       ;    XOBCAURL  -   'check availability' url portion to follow context root [optional]
 +5        DO REGISTER^XOBWD(XOBWSN,2,XOBCXT,"","",.XOBCAURL)
 +6        QUIT 
 +7       ;
GET(XOBREST,XOBRSCE,XOBERR,XOBFERR) ; -- do HTTP GET method and force M/Cache error if problem encountered
 +1       ;                                       Executes STATCHK and HTTPCHK calls.
 +2       ; input:
 +3       ;     XOBREST = instance of xobw.RestRequest class
 +4       ;     XOBRSCE = resource for HTTP GET method
 +5       ;     XOBERR  = where to store HWSC error object if problem encountered
 +6       ;     XOBFERR = if error object created, force M/Cache error [1], otherwise return to caller [0]
 +7       ;               [optional ; default = 1]
 +8        NEW XOBOK
 +9        SET XOBOK=$$STATCHK(XOBREST.Get(XOBRSCE),.XOBERR,$GET(XOBFERR,1))
 +10       IF XOBOK
               SET XOBOK=$$HTTPCHK(XOBREST,.XOBERR,$GET(XOBFERR,1))
 +11       QUIT XOBOK
 +12      ;
POST(XOBREST,XOBRSCE,XOBERR,XOBFERR) ; -- do HTTP POST method and force M/Cache error if problem encountered
 +1       ;                                        Executes STATCHK and HTTPCHK calls.
 +2       ; input:
 +3       ;     XOBREST = instance of xobw.RestRequest class
 +4       ;     XOBRSCE = resource for HTTP GET method
 +5       ;     XOBERR  = where to store HWSC error object if problem encountered
 +6       ;     XOBFERR = if error object created, force M/Cache error [1], otherwise return to caller [0]
 +7       ;               [optional ; default = 1]
 +8        NEW XOBOK
 +9        SET XOBOK=$$STATCHK(XOBREST.Post(XOBRSCE),.XOBERR,$GET(XOBFERR,1))
 +10       IF XOBOK
               SET XOBOK=$$HTTPCHK(XOBREST,.XOBERR,$GET(XOBFERR,1))
 +11       QUIT XOBOK
 +12      ;
HTTPCHK(XOBREST,XOBERR,XOBFERR) ; -- check HTTP response status code
 +1       ; input:
 +2       ;     XOBREST = instance of xobw.RestRequest class
 +3       ;     XOBERR  = where to store HWSC error object if problem encountered
 +4       ;     XOBFERR = if error object created, force M/Cache error [1], otherwise return to caller [0]
 +5       ;               [optional ; default = 1]
 +6        NEW XOBOK
 +7        SET XOBOK=$$HTTPOK(XOBREST.HttpResponse.StatusCode)
 +8        IF 'XOBOK
               Begin DoDot:1
 +9       ; -- create http error from %Net.HttpResponse object
 +10               SET XOBERR=$$EOHTTP(XOBREST.HttpResponse)
 +11      ; -- force error if requested to by caller
 +12               IF $GET(XOBFERR,1)
                       SET $ECODE=",UXOBWHTTP,"
               End DoDot:1
 +13       QUIT XOBOK
 +14      ;
HTTPOK(XOBSCODE) ; -- is HTTP response status code an 'OK' code
 +1       ; -- Future: Should we add more 200 series codes to the check?
 +2        QUIT $GET(XOBSCODE)=200
 +3       ;
 +4       ;. . . . . . . . . . . Error Processing Helper API . . . . . . . . . . .
 +5       ;
EOFAC(XOBPROXY) ; --  Error Object FACtory
 +1       ;      > finds and parses errors in partition
 +2       ;      > builds and returns error object for easier processing
 +3       ;
 +4       ;  input: XOBPROXY = SOAP proxy object reference [optional]
 +5       ; output:   XOBERR = error object
 +6       ;
 +7        QUIT $$EOFAC^XOBWLIB1(.XOBPROXY)
 +8       ;
EOSTAT(XOBSO) ; -- create object error from status error object
 +1        NEW $ETRAP
 +2        SET $ETRAP="D ^%ZTER HALT"
 +3        QUIT ##class(xobw.error.ObjectError).%New(XOBSO)
 +4       ;
EOHTTP(XOBHRO) ; -- create object error from %Net.HttpResponse object
 +1        NEW $ETRAP
 +2        SET $ETRAP="D ^%ZTER HALT"
 +3        QUIT ##class(xobw.error.HttpError).%New(XOBHRO)
 +4       ;
ERRDISP(XOBEO) ; -- do simple error display
 +1        IF $GET(XOBEO)]""
               IF XOBEO.%IsA("xobw.error.AbstractError")
                   Begin DoDot:1
 +2                    DO XOBEO.display()
                   End DoDot:1
 +3        QUIT 
 +4       ;
ERR2ARR(XOBEO,XOBERR) ; -- decompose error for traditional M processing
 +1        IF $GET(XOBEO)]""
               IF XOBEO.%IsA("xobw.error.AbstractError")
                   Begin DoDot:1
 +2                    DO XOBEO.decompose(.XOBERR)
                   End DoDot:1
 +3        QUIT 
 +4       ;
ZTER(XOBEO) ; -- build error object array and call error trap
 +1        NEW $ETRAP,XOBEOARR
 +2        SET $ETRAP="D ^%ZTER HALT"
 +3        IF $GET(XOBEO)]""
               DO ERR2ARR(.XOBEO,.XOBEOARR)
 +4        DO ^%ZTER
 +5        QUIT 
 +6       ;
STATCHK(XOBSO,XOBERR,XOBFERR) ; -- check Cache Status Object
 +1       ; input:
 +2       ;     XOBSO   = Cache status object
 +3       ;     XOBERR  = where to store HWSC error object if problem encountered
 +4       ;     XOBFERR = if error object created, force M/Cache error [1], otherwise return to caller [0]
 +5       ;               [optional ; default = 1]
 +6        NEW XOBOK
 +7 
*** ERROR ***
           SET XOBOK=$system.Status.IsOK(XOBSO)
 +8        IF 'XOBOK
               Begin DoDot:1
 +9       ; -- create object error from status error object
 +10               SET XOBERR=$$EOSTAT(XOBSO)
 +11      ; -- force error if requested to by caller
 +12               IF $GET(XOBFERR,1)
                       SET $ECODE=",UXOBWSTATUS,"
               End DoDot:1
 +13       QUIT XOBOK
 +14      ;
 +15      ;. . . . . . . . . . . . . . Server Lookup APIs . . . . . . . . . .
SKEYADD(XOBWKEY,XOBWDESC,XOBERR) ; add or edit a server key name/desc (no prompting)
 +1       ; input parameters:
 +2       ;  XOBWKEY: name for key
 +3       ;  XOBWDESC: (optional) brief description
 +4       ;  XOBERR: (optional) textual error description as array node(s) starting
 +5       ;                     at XOBERR(1) / passed by reference
 +6       ; returns: 
 +7       ;  >0: success (value = IEN of new or existing entry)
 +8       ;  0: failure (did not add/edit key)
 +9        QUIT $$SKEYADD^XOBWLIB1(.XOBWKEY,.XOBWDESC,.XOBERR)
 +10      ;
SNAME4KY(XOBWKEY,XOBWSNM,XOBERR) ; get server name based on key
 +1       ; input parameters: 
 +2       ;  XOBWKEY: name of key to lookup
 +3       ;  XOBWSNM: where web server name is returned / passed by reference
 +4       ;   XOBERR: (optional) where any error is returned / passed by reference
 +5       ;                     format: <error #>^<error text>
 +6       ;            errors possible:
 +7       ;                    186008^description (key does not exist)
 +8       ;                    186009^description (server association missing)
 +9       ; returns:
 +10      ;   1 - successful lookup
 +11      ;   0 - unsuccessful lookup
 +12      ;  
 +13       QUIT $$SNAME4KY^XOBWLIB1(.XOBWKEY,.XOBWSNM,.XOBERR)
 +14      ;
 +15      ;. . . . . . . . . . . . . . Developer Testing APIs . . . . . . . . .
 +16      ;
SELSRV()  ; -- interactive display and selection of an server
 +1       ;  Input: None
 +2       ; Output:
 +3       ;         Function Value - server name
 +4       ; -- display servers
 +5        DO DISPSRVS
 +6       ; -- select server
 +7        QUIT $$GETSRV()
 +8       ;
GETSRV()  ; -- PUBLIC API: return interactive-user-selected server name
 +1       ;            User selects a server entry in the WEB SERVER file (#18.12)
 +2       ;  Input:
 +3       ;    None
 +4       ; Output:
 +5       ;    Function Value - server name (#.01 field of file 18.12)
 +6       ; 
 +7        QUIT $$GETSRV^XOBWLIB1()
 +8       ;
DISPSRVS  ; -- display servers
 +1       ;  Input:
 +2       ;    None
 +3       ; Output:
 +4       ;    Screen formatted display of app servers and associated fields from file 18.12
 +5       ;
 +6        DO DISPSRVS^XOBWLIB1
 +7        QUIT 
 +8       ;


*****   INDEX OF XOBWLIB   *****


Local Variables      Line Occurrences   ( >> not killed explicitly)
                                        ( * Changed  ! Killed  ~ Newed)
   XOBCAURL     REGSOAP~,REGSOAP+7,REGREST~,REGREST+5
   XOBCLASS     REGSOAP~,REGSOAP+7
   XOBCXT       REGSOAP~,REGSOAP+7,REGREST~,REGREST+5
   XOBEO        ERRDISP~,ERRDISP+1,ERR2ARR~,ERR2ARR+1,ZTER~,ZTER+3
   XOBEOARR     ZTER+1~,ZTER+3
   XOBERR       GET~,GET+9,GET+10,POST~,POST+9,POST+10,HTTPCHK~,HTTPCHK+10*
                ERR2ARR~,ERR2ARR+2,STATCHK~,STATCHK+10*,SKEYADD~,SKEYADD+9
                SNAME4KY~,SNAME4KY+13
   XOBFERR      GET~,GET+9,GET+10,POST~,POST+9,POST+10,HTTPCHK~,HTTPCHK+12
                STATCHK~,STATCHK+12
   XOBHRO       EOHTTP~,EOHTTP+3
   XOBOK        GET+8~,GET+9*,GET+10*,GET+11,POST+8~,POST+9*,POST+10*,POST+11
                HTTPCHK+6~,HTTPCHK+7*,HTTPCHK+8,HTTPCHK+13,STATCHK+6~
                STATCHK+7*,STATCHK+8,STATCHK+13
   XOBPROXY     ATTACHDR~,ATTACHDR+3,EOFAC~,EOFAC+7
   XOBREST      GET~,GET+10,POST~,POST+10,HTTPCHK~
   XOBRSCE      GET~,GET+9,POST~,POST+9
   XOBSCODE     HTTPOK~,HTTPOK+2
   XOBSO        EOSTAT~,EOSTAT+3,STATCHK~,STATCHK+7,STATCHK+10
   XOBSRVR      GETPROXY~,GETPROXY+4,GETREST~,GETREST+4
   XOBWDESC     SKEYADD~,SKEYADD+9
   XOBWKEY      SKEYADD~,SKEYADD+9,SNAME4KY~,SNAME4KY+13
   XOBWSDL      REGSOAP~,REGSOAP+7
   XOBWSN       GETFAC~,GETFAC+3,GETPROXY~,GETPROXY+4,REGSOAP~,REGSOAP+7,UNREG~
                UNREG+3,GETRESTF~,GETRESTF+3,GETREST~,GETREST+4,REGREST~
                REGREST+5
   XOBWSNM      SNAME4KY~,SNAME4KY+13
   XOBY         GENPORT~,GENPORT+1

Global Variables  ( * Changed  ! Killed)
   NONE

Naked Globals
   NONE

Cache Objects
   $system.Status.IsOK             STATCHK+7
   XOBEO.%IsA                      ERRDISP+1,ERR2ARR+1
   XOBEO.decompose                 ERR2ARR+2
   XOBEO.display                   ERRDISP+2
   XOBREST.Get                     GET+9
   XOBREST.HttpResponse            HTTPCHK+10
   XOBREST.HttpResponse.StatusCode HTTPCHK+7
   XOBREST.Post                    POST+9
   xobw.RestRequestFactory         GETRESTF+3,GETREST+4
   xobw.WebServiceProxyFactory     GETFAC+3,GETPROXY+4
   xobw.error.HttpError            EOHTTP+3
   xobw.error.ObjectError          EOSTAT+3

Marked Items
   NONE

Label References
   $$EOHTTP     HTTPCHK+10
   $$EOSTAT     STATCHK+10
   $$GETSRV     SELSRV+7
   $$HTTPCHK    GET+10,POST+10
   $$HTTPOK     HTTPCHK+7
   $$STATCHK    GET+9,POST+9
   DISPSRVS     SELSRV+5
   ERR2ARR      ZTER+3

External References
   ^%ZTER              ZTER+4
   $$GENPORT^XOBWD     GENPORT+1
   REGISTER^XOBWD      REGSOAP+7,REGREST+5
   UNREG^XOBWD         UNREG+3
   $$EOFAC^XOBWLIB1    EOFAC+7
   $$GETSRV^XOBWLIB1   GETSRV+7
   $$SKEYADD^XOBWLIB1  SKEYADD+9
   $$SNAME4KY^XOBWLIB1 SNAME4KY+13
   ATTACHDR^XOBWLIB1   ATTACHDR+3
   DISPSRVS^XOBWLIB1   DISPSRVS+6

*****   END   *****

XOBWLIB1   6102     printed  Mar 13, 2018@10:55:07                     Page 5

XOBWLIB1  ;ALB/MJK - HWSC :: Utilities Library ; 09/13/10 4:00pm
 +1       ;;1.0;HwscWebServiceClient;;September 13, 2010;Build 31
 +2       ;
 +3        QUIT 
 +4       ;
 +5       ;----------------------- Private Calls used By XOBWLIB --------------------------
HEAD      ; -- display heading
 +1        WRITE @IOF,!
 +2        WRITE $$CJ^XLFSTR("List of Web Servers",80),!
 +3        WRITE $$CJ^XLFSTR("HealtheVet Web Services Client (HWSC)  "_$$GETBLD(),80),!
 +4        WRITE !,?2,"Name",?31,"Server:Port"
 +5        WRITE !,?2,"====",?31,"==========="
 +6        QUIT 
 +7       ;
PAUSE(XOBEXIT) ; -- screen continue message
 +1        NEW X,Y,DTOUT,DUOUT,DIRUT,DIROUT
 +2        WRITE !,?4,"* = enabled"
 +3        SET DIR(0)="E"
           SET DIR("A")="Enter RETURN to continue or '^' to stop"
           DO ^DIR
           KILL DIR
 +4        SET XOBEXIT=+$GET(DIRUT)
 +5        QUIT 
 +6       ;
GETBLD()  ; -- get current build number
 +1        QUIT "Build "_$$VERSION^XOBWENV()
 +2       ;
STATKSP() ; -- get station number for computing facility
 +1        QUIT $$STA^XUAF4($$KSP^XUPARAM("INST"))
 +2       ;
STATUSER() ; -- get station number for logged-on user
 +1        QUIT $$STA^XUAF4(DUZ(2))
 +2       ;
 +3       ; ----------- web service Proxy APIs ------------
 +4       ; 
ATTACHDR(XOBPROXY) ; -- add VistaInfoHeader to proxy object
 +1        NEW INFOARR
 +2        SET INFOARR=##class(%Library.ArrayOfDataTypes).%New()
 +3        DO INFOARR.SetAt($GET(DUZ,"Unknown"),"duz")
 +4        DO INFOARR.SetAt($$VPID^XUPS($GET(DUZ)),"vpid")
 +5        DO INFOARR.SetAt($IO,"mio")
 +6        DO INFOARR.SetAt($JOB,"mjob")
 +7        DO INFOARR.SetAt($$STATKSP(),"station-ksp")
 +8        DO INFOARR.SetAt($$STATUSER(),"station-user")
 +9        DO INFOARR.SetAt($$PROD^XUPROD(0),"production")
 +10       DO ##class(xobw.VistaInfoHeader).attachHeader(XOBPROXY,INFOARR)
 +11       QUIT 
 +12      ; 
 +13      ; ----------- error processing APIs ------------
EOFAC(XOBPROXY) ; --  Error Object FACtory
 +1        NEW $ETRAP,XOBERR
 +2        SET $ETRAP="D ^%ZTER HALT"
 +3       ;
 +4       ; -- SOAP fault error
 +5        IF $$EC^%ZOSV()["<ZSOAP>"
               IF $GET(XOBPROXY)]""
                   IF XOBPROXY.SoapFault]""
                       Begin DoDot:1
 +6                        SET XOBERR=##class(xobw.error.SoapError).%New(XOBPROXY.SoapFault)
 +7                        KILL %objlasterror
                       End DoDot:1
                       GOTO EOFACQ
 +8       ;
 +9       ; -- object error
 +10      ; -- Future: Can we remove the $$EC^%ZOSV()["<ZSOAP>"? (There could be spurious %objlasterror in partition)
 +11       IF $$EC^%ZOSV()["<ZSOAP>"
               IF $GET(%objlasterror)]""
                   Begin DoDot:1
 +12                   SET XOBERR=##class(xobw.error.ObjectError).%New(.%objlasterror)
 +13                   KILL %objlasterror
                   End DoDot:1
                   GOTO EOFACQ
 +14      ;
 +15      ; -- DIALOG object error [used in xobw.WebServiceProxyFactory]
 +16      ;     input structure of %XOBWERR:
 +17      ;       <DIALOG ien> ^ <parameter #1> ^ <parameter #2> ^ <so on...>
 +18       IF $GET(%XOBWERR)]""
               Begin DoDot:1
 +19               NEW XOBPARMS,XOBCODE,Y,I
 +20               SET XOBCODE=$PIECE(%XOBWERR,"^")
 +21               FOR I=2:1
                       SET Y=$PIECE(%XOBWERR,"^",I)
                       if Y=""
                           QUIT 
                       SET XOBPARMS(I-1)=Y
 +22               SET XOBERR=##class(xobw.error.DialogError).%New(XOBCODE,$$EZBLD^DIALOG(XOBCODE,.XOBPARMS))
 +23               KILL %XOBWERR
               End DoDot:1
               GOTO EOFACQ
 +24      ;
 +25      ; -- basic M-type error
 +26       SET XOBERR=##class(xobw.error.BasicError).%New($ECODE,$$EC^%ZOSV())
 +27      ;
EOFACQ    ;
 +1        QUIT $GET(XOBERR)
 +2       ;
 +3       ; ----------- Miscellaneous Helper APIs -----------
 +4       ;
IMPORT(XOBDIR,XOBFILE) ; -- import Cache-exported XML file into Cache
 +1       ; input parameters: 
 +2       ;  XOBDIR: directory holding 'export' file
 +3       ;  XOBFILE: 'export' file to import
 +4       ; return: 
 +5       ;  success: positive return value
 +6       ;  failure: 0^reason
 +7       ;  
 +8        NEW XOBPATH,XOBSTAT,XOBLIST,XOBLERR,X,I
 +9        SET XOBPATH=$GET(XOBDIR)_$GET(XOBFILE)
 +10       IF ##class(%File).Exists(XOBPATH)
               Begin DoDot:1
 +11 
*** ERROR ***
                   SET XOBSTAT=$system.OBJ.Load(XOBPATH,"ck","",.XOBLIST)
 +12               IF XOBSTAT
                       QUIT 
 +13 
*** ERROR ***
                   DO $system.Status.DecomposeStatus(%objlasterror,.XOBLERR)
 +14               SET X=""
                   FOR I=1:1:XOBLERR
                       SET X=X_XOBLERR(I)
 +15               SET XOBSTAT="0^"_X
               End DoDot:1
 +16      IF '$TEST
               Begin DoDot:1
 +17               SET XOBSTAT="0^File not found"
               End DoDot:1
 +18       QUIT XOBSTAT
 +19      ;
 +20      ; ----------- web server lookup key APIs -----------
 +21      ; 
SKEYADD(XOBWKEY,XOBWDESC,XOBOERR) ; add or edit a server key name/desc (no prompting)
 +1        NEW XOBFDA,XOBFDAI,XOBIENS,XOBIEN,DIERR,XOBERR
 +2       ; force uppercase
           SET XOBWKEY=$$UP^XLFSTR(XOBWKEY)
 +3        SET XOBIEN=+$$FIND1^DIC(18.13,"","BX",XOBWKEY,"","","")
 +4       ;
 +5       ; -- If record doesn't already exist, create new
 +6        IF XOBIEN
               SET XOBIENS=XOBIEN_","
 +7       IF '$TEST
               SET XOBIENS="+1,"
 +8       ;
 +9       ; -- Set up array with field values
 +10       SET XOBFDA(18.13,XOBIENS,.01)=$GET(XOBWKEY)
 +11       SET XOBFDA(18.13,XOBIENS,.02)=$GET(XOBWDESC)
 +12      ;
 +13      ; edit
           IF XOBIEN
               Begin DoDot:1
 +14               DO FILE^DIE("E","XOBFDA","XOBERR")
 +15               IF $DATA(DIERR)
                       Begin DoDot:2
 +16                       SET XOBIEN=0
 +17                       DO MSG^DIALOG("AE",.XOBOERR,245,"","XOBERR")
                       End DoDot:2
               End DoDot:1
 +18      ; add
          IF '$TEST
               Begin DoDot:1
 +19               DO UPDATE^DIE("E","XOBFDA","XOBFDAI","XOBERR")
 +20               IF $DATA(DIERR)
                       Begin DoDot:2
 +21                       SET XOBIEN=0
 +22                       DO MSG^DIALOG("AE",.XOBOERR,245,"","XOBERR")
                       End DoDot:2
 +23              IF '$TEST
                       Begin DoDot:2
 +24                       SET XOBIEN=$GET(XOBFDAI(1))
                       End DoDot:2
               End DoDot:1
 +25      ;
 +26       QUIT $SELECT($GET(XOBIEN)>0:XOBIEN,1:0)
 +27      ;
SNAME4KY(XOBWKEY,XOBWSNM,XOBERR) ; get server name based on key
 +1        NEW XOBWSIEN,XOBKYIEN,XOBKYNM,XOBPARMS
 +2        SET XOBKYNM=$$UP^XLFSTR(XOBWKEY)
 +3       ; -- exist check
 +4        IF XOBKYNM=""
               SET XOBERR="186008^"_$$EZBLD^DIALOG(186008,"")
               QUIT 0
 +5        SET XOBKYIEN=$ORDER(^XOB(18.13,"PRIMARY",XOBKYNM,""))
 +6        IF 'XOBKYIEN
               SET XOBERR="186008^"_$$EZBLD^DIALOG(186008,XOBKYNM)
               QUIT 0
 +7       ; -- server association check
 +8        SET XOBWSIEN=$PIECE($GET(^XOB(18.13,XOBKYIEN,0)),U,3)
 +9        IF 'XOBWSIEN
               SET XOBERR="186009^"_$$EZBLD^DIALOG(186009,XOBWKEY)
               QUIT 0
 +10      ; -- success
 +11       SET XOBWSNM=$PIECE($GET(^XOB(18.12,XOBWSIEN,0)),U)
 +12       QUIT 1
 +13      ;
 +14      ;------------ Developer Testing APIs ------------
 +15      ;
GETSRV()  ; -- PUBLIC API: return interactive-user-selected server name
 +1        NEW DIC,DUOUT,DTOUT,X,Y
 +2        SET DIC="^XOB(18.12,"
 +3        SET DIC(0)="AEMQ"
 +4        IF $DATA(^XOB(18.12,+$GET(^DISV(DUZ,"^XOB(18.12,")),0))
               SET DIC("B")=$PIECE(^(0),U)
 +5        DO ^DIC
           KILL DIC
 +6        IF +$GET(Y)'>0
               QUIT ""
 +7        QUIT $PIECE(Y,U,2)
 +8       ;
DISPSRVS  ; -- display servers
 +1        NEW NAME,IPPORT,DEFAULT,STATUS,SITE,XOBEXIT,XOBI,XOBJ,XOBSVRS,XOBR
 +2        SET XOBEXIT=0
           SET XOBR=""
 +3        SET XOBSVRS=$NAME(XOBDATA("DILIST","ID"))
 +4        DO LIST^DIC(18.12,"",".01;.03;.04;.06","I","","","","","","",$NAME(XOBDATA))
 +5        DO HEAD
 +6        FOR XOBI=0:0
               SET XOBI=$ORDER(@XOBSVRS@(XOBI))
               if 'XOBI!(XOBEXIT)
                   QUIT 
               Begin DoDot:1
 +7                SET NAME=$GET(@XOBSVRS@(XOBI,.01))
 +8                SET IPPORT=$GET(@XOBSVRS@(XOBI,.04))_":"_$GET(@XOBSVRS@(XOBI,.03))
 +9                SET STATUS=$SELECT($GET(@XOBSVRS@(XOBI,.06))=1:"* ",1:" ")
 +10               IF $Y>(IOSL-5)
                       DO PAUSE(.XOBEXIT)
                       if XOBEXIT
                           QUIT 
                       DO HEAD
 +11               WRITE !,STATUS,NAME,?31,IPPORT
               End DoDot:1
 +12       IF 'XOBEXIT
               WRITE !,?0,"* = enabled"
 +13       KILL XOBDATA
 +14       QUIT 
 +15      ;


*****   INDEX OF XOBWLIB1   *****


Local Variables      Line Occurrences   ( >> not killed explicitly)
                                        ( * Changed  ! Killed  ~ Newed)
   %XOBWERR     EOFAC+18,EOFAC+20,EOFAC+21,EOFAC+23!
   %objlasterror 
                EOFAC+7!,EOFAC+11,EOFAC+12,EOFAC+13!,IMPORT+13
   DEFAULT      DISPSRVS+1~
   DIC          GETSRV+1~,GETSRV+2*,GETSRV+5!
   DIC("B"      GETSRV+4*
   DIC(0        GETSRV+3*
   DIERR        SKEYADD+1~,SKEYADD+15,SKEYADD+20
   DIR          PAUSE+3!
   DIR("A"      PAUSE+3*
   DIR(0        PAUSE+3*
   DIROUT       PAUSE+1~
   DIRUT        PAUSE+1~,PAUSE+4
   DTOUT        PAUSE+1~,GETSRV+1~
   DUOUT        PAUSE+1~,GETSRV+1~
   DUZ          ATTACHDR+3,ATTACHDR+4,GETSRV+4
   DUZ(2        STATUSER+1
   I            EOFAC+19~,EOFAC+21*,IMPORT+8~,IMPORT+14*
   INFOARR      ATTACHDR+1~,ATTACHDR+2*,ATTACHDR+10
   IOF          HEAD+1
   IOSL         DISPSRVS+10
   IPPORT       DISPSRVS+1~,DISPSRVS+8*,DISPSRVS+11
   NAME         DISPSRVS+1~,DISPSRVS+7*,DISPSRVS+11
   SITE         DISPSRVS+1~
   STATUS       DISPSRVS+1~,DISPSRVS+9*,DISPSRVS+11
   U            SNAME4KY+8,SNAME4KY+11,GETSRV+4,GETSRV+7
   X            PAUSE+1~,IMPORT+8~,IMPORT+14*,IMPORT+15,GETSRV+1~
   XOBCODE      EOFAC+19~,EOFAC+20*,EOFAC+22
   XOBDATA      DISPSRVS+4,DISPSRVS+13!
   XOBDATA("DILIST" 
                DISPSRVS+3
   XOBDIR       IMPORT~,IMPORT+9
   XOBERR       EOFAC+1~,EOFAC+6*,EOFAC+12*,EOFAC+22*,EOFAC+26*,EOFACQ+1
                SKEYADD+1~,SNAME4KY~,SNAME4KY+4*,SNAME4KY+6*,SNAME4KY+9*
   XOBEXIT      PAUSE~,PAUSE+4*,DISPSRVS+1~,DISPSRVS+2*,DISPSRVS+6,DISPSRVS+10
                DISPSRVS+12
   XOBFDA       SKEYADD+1~
   XOBFDA(      SKEYADD+10*,SKEYADD+11*
   XOBFDAI      SKEYADD+1~
   XOBFDAI(1    SKEYADD+24
   XOBFILE      IMPORT~,IMPORT+9
   XOBI         DISPSRVS+1~,DISPSRVS+6*,DISPSRVS+7,DISPSRVS+8,DISPSRVS+9
   XOBIEN       SKEYADD+1~,SKEYADD+3*,SKEYADD+6,SKEYADD+13,SKEYADD+16*
                SKEYADD+21*,SKEYADD+24*,SKEYADD+26
   XOBIENS      SKEYADD+1~,SKEYADD+6*,SKEYADD+7*,SKEYADD+10,SKEYADD+11
   XOBJ         DISPSRVS+1~
   XOBKYIEN     SNAME4KY+1~,SNAME4KY+5*,SNAME4KY+6,SNAME4KY+8
   XOBKYNM      SNAME4KY+1~,SNAME4KY+2*,SNAME4KY+4,SNAME4KY+5,SNAME4KY+6
   XOBLERR      IMPORT+8~,IMPORT+13,IMPORT+14
   XOBLERR(     IMPORT+14
   XOBLIST      IMPORT+8~,IMPORT+11
   XOBOERR      SKEYADD~,SKEYADD+17,SKEYADD+22
   XOBPARMS     EOFAC+19~,EOFAC+22,SNAME4KY+1~
   XOBPARMS(    EOFAC+21*
   XOBPATH      IMPORT+8~,IMPORT+9*,IMPORT+10,IMPORT+11
   XOBPROXY     ATTACHDR~,ATTACHDR+10,EOFAC~,EOFAC+5
   XOBR         DISPSRVS+1~,DISPSRVS+2*
   XOBSTAT      IMPORT+8~,IMPORT+11*,IMPORT+12,IMPORT+15*,IMPORT+17*,IMPORT+18
   XOBSVRS      DISPSRVS+1~,DISPSRVS+3*,DISPSRVS+6,DISPSRVS+7,DISPSRVS+8
                DISPSRVS+9
   XOBWDESC     SKEYADD~,SKEYADD+11
   XOBWKEY      SKEYADD~,SKEYADD+2*,SKEYADD+3,SKEYADD+10,SNAME4KY~,SNAME4KY+2
                SNAME4KY+9
   XOBWSIEN     SNAME4KY+1~,SNAME4KY+8*,SNAME4KY+9,SNAME4KY+11
   XOBWSNM      SNAME4KY~,SNAME4KY+11*
   Y            PAUSE+1~,EOFAC+19~,EOFAC+21*,GETSRV+1~,GETSRV+6,GETSRV+7

Global Variables  ( * Changed  ! Killed)
   ^DISV(              GETSRV+4
   ^XOB(18.12          SNAME4KY+11,GETSRV+4
   ^XOB(18.13          SNAME4KY+5,SNAME4KY+8

Naked Globals
   ^(0          GETSRV+4

Cache Objects
   $system.OBJ.Load                IMPORT+11
   $system.Status.DecomposeStatus  IMPORT+13
   %File                           IMPORT+10
   %Library.ArrayOfDataTypes       ATTACHDR+2
   INFOARR.SetAt                   ATTACHDR+3,ATTACHDR+4,ATTACHDR+5,ATTACHDR+6
                                   ATTACHDR+7,ATTACHDR+8,ATTACHDR+9
   XOBPROXY.SoapFault              EOFAC+5,EOFAC+6
   xobw.VistaInfoHeader            ATTACHDR+10
   xobw.error.BasicError           EOFAC+26
   xobw.error.DialogError          EOFAC+22
   xobw.error.ObjectError          EOFAC+12
   xobw.error.SoapError            EOFAC+6

Marked Items
   NONE

Label References
   $$GETBLD     HEAD+3
   $$STATKSP    ATTACHDR+7
   $$STATUSER   ATTACHDR+8
   EOFACQ       EOFAC+5,EOFAC+11,EOFAC+18
   HEAD         DISPSRVS+5,DISPSRVS+10
   PAUSE        DISPSRVS+10

External References
   $$EC^%ZOSV          EOFAC+5,EOFAC+11,EOFAC+26
   $$EZBLD^DIALOG      EOFAC+22,SNAME4KY+4,SNAME4KY+6,SNAME4KY+9
   MSG^DIALOG          SKEYADD+17,SKEYADD+22
   ^DIC                GETSRV+5
   $$FIND1^DIC         SKEYADD+3
   LIST^DIC            DISPSRVS+4
   FILE^DIE            SKEYADD+14
   UPDATE^DIE          SKEYADD+19
   ^DIR                PAUSE+3
   $$CJ^XLFSTR         HEAD+2,HEAD+3
   $$UP^XLFSTR         SKEYADD+2,SNAME4KY+2
   $$VERSION^XOBWENV   GETBLD+1
   $$STA^XUAF4         STATKSP+1,STATUSER+1
   $$KSP^XUPARAM       STATKSP+1
   $$PROD^XUPROD       ATTACHDR+9
   $$VPID^XUPS         ATTACHDR+4

*****   END   *****

XOBWP004   4580     printed  Mar 13, 2018@10:55:07                     Page 6

XOBWP004  ;OAK/BDT - HWSC ::XOBW*1*4 ; 06/28/2016
 +1       ;;1.0;HwscWebServiceClient;**4**;September 13, 2010;Build 9
 +2       ;Per VA Directive 6402, this routine should not be modified.
 +3       ;
 +4       ; ***** IMPORTANT NOTE *******************************************
 +5       ; This routine requires access to the manager (%SYS) namespace and
 +6       ; can only be run by a user with permissions to that namespace.
 +7       ; ****************************************************************
 +8       ;
 +9        NEW XUSL,X
 +10       NEW DIF,XCNP
           KILL ^TMP($JOB,369)
 +11       SET X="XOBWLIB"
 +12       SET DIF="^TMP($J,369,"
           SET XCNP=0
           XECUTE ^%ZOSF("LOAD")
 +13       IF $GET(^TMP($JOB,369,2,0))'[";Build 31"
               DO BMES^XPDUTL("Your system is missing latest build 31st of the XOBW*1.0*0 package")
               SET XPDABORT=1
 +14       QUIT 
 +15      ;
POST      ;  -- main entry point for post-init
 +1        DO POST^XOBWPA04
 +2        DO POST^XOBWPB04
 +3        DO CHECK
 +4        QUIT 
 +5       ;
CHECK     ; check privillege
 +1        NEW XOBWNOTE
 +2 
*** ERROR ***

*** ERROR ***
           IF ($ROLES["%All")!($ROLES["%Manager")
               DO SSLCONF
               QUIT 
 +3        DO INCOMP
 +4        DO MES^XPDUTL(" ** Warning **")
 +5        SET XOBWNOTE="The SSL/TLS Configuration could not be installed at this time.  "
 +6        SET XOBWNOTE=XOBWNOTE_"You don't have the required privileged Role.  "
 +7        SET XOBWNOTE=XOBWNOTE_"A System Administrator must complete this step.  "
 +8        SET XOBWNOTE=XOBWNOTE_"Please follow the Post-Installation Instructions."
 +9        DO MES^XPDUTL(XOBWNOTE)
 +10       QUIT 
 +11      ;
INCOMP    ; generate incomplete-installation message
 +1        SET ^TMP("PSC DATA",$JOB,1)="Patch XOBW*1.0*4 has been installed but an extra step needs to be completed."
 +2        SET ^TMP("PSC DATA",$JOB,2)=""
 +3        SET ^TMP("PSC DATA",$JOB,3)="Please follow the instructions in the Post-Installation Instructions "
 +4        SET ^TMP("PSC DATA",$JOB,4)="to request your respective System Administration support group "
 +5        SET ^TMP("PSC DATA",$JOB,5)="(Region Operation Center) to assist you in completing the installation "
 +6        SET ^TMP("PSC DATA",$JOB,6)="of this patch."
 +7        IF $$PROD^XUPROD()
               DO MESSAGE
 +8        QUIT 
 +9       ;
MESSAGE   ;set up message and address list
 +1        SET MSG=$NAME(^TMP("PSC DATA",$JOB))
 +2        SET MSGSBJ="XOBW*1.0*4 "_$GET(^XMB("NETNAME"))
 +3        SET WHO("G.PATCH TRACKING XOBW_1_4@DOMAIN.EXT")=""
 +4        SET WHO("Jose.Luis-Garcia@domain.ext")=""
 +5        SET WHO(DUZ)=""
 +6        DO SENDMSG^XMXAPI(DUZ,MSGSBJ,.MSG,.WHO)
 +7        KILL ^TMP("PSC DATA",$JOB),WHO,MSG
 +8        QUIT 
 +9       ;
SSLCONF   ;Install SSL Configuration for encryption-only
 +1        NEW XOBNAME,XOBPROP
 +2        SET XOBNAME="encrypt_only"
 +3       ;I $$EXISTS(XOBNAME,.XOBPROP) D  Q
 +4       ;.D BMES^XPDUTL(" o  '"_XOBNAME_"' SSL Config already exists and will not be replaced.")
 +5       ; .D DISPL(.XOBPROP)
 +6       ; .Q
 +7       ; delete
 +8        DO DELETE(XOBNAME)
 +9       ; create
 +10       IF $$CRSSL(XOBNAME,.XOBPROP)
               Begin DoDot:1
 +11               DO BMES^XPDUTL(" o  '"_XOBNAME_"' SSL Config successfully installed")
 +12               DO DISPL(.XOBPROP)
 +13               QUIT 
               End DoDot:1
               QUIT 
 +14      ;
 +15       DO BMES^XPDUTL(" o  '"_XOBNAME_"' SSL Config could not be installed")
 +16       QUIT 
 +17      ;
DISPL(XOBPROP) ; Print out the result
 +1        NEW XOBW,XOBWI
 +2        WRITE !!,?20,"Configuration Values"
 +3        SET XOBWI=""
           FOR 
               SET XOBWI=$ORDER(XOBPROP(XOBWI))
               if XOBWI=""
                   QUIT 
               WRITE !,?10,XOBWI,?30," : ",$GET(XOBPROP(XOBWI))
 +4        WRITE !!
 +5        QUIT 
 +6       ;
EXISTS(XOBWIN,XOBPROP) ; check an existed SSL
 +1        NEW XOBEXSTS,XOBNAME
 +2        Begin DoDot:1
 +3            SET XOBNAME=$GET(XOBWIN,"encrypt_only")
               SET XOBEXSTS=0
 +4       ; change to %SYS namespace then revert upon finishing
 +5       ;Push current namespace onto the stack

*** ERROR ***
               NEW $NAMESPACE
 +6       ;Change namespace, revert back upon "Q"

*** ERROR ***
               SET $NAMESPACE="%SYS"
 +7       ; Check if SSL configuration exists
 +8            SET XOBEXSTS=##class(Security.SSLConfigs).Get(XOBNAME,.XOBPROP)
 +9            QUIT 
           End DoDot:1
 +10       QUIT $GET(XOBEXSTS)
 +11      ;
CRSSL(XOBWIN,XOBPROP) ; create a new SSL
 +1        NEW XOBSTAT,XOBNAME
 +2        Begin DoDot:1
 +3            NEW XOBCONFG,XOBPROP2,XOBSTAT2
 +4            SET XOBNAME=$GET(XOBWIN,"encrypt_only")
               SET XOBSTAT=0
 +5       ; change to %SYS namespace then revert upon finishing
 +6       ;Push current namespace onto the stack

*** ERROR ***
               NEW $NAMESPACE
 +7       ;Change namespace, revert back upon "Q"

*** ERROR ***
               SET $NAMESPACE="%SYS"
 +8            SET XOBPROP2("Description")="Patch XOBW*1*4"
 +9            SET XOBPROP2("Enabled")=1
 +10           SET XOBPROP2("Protocols")=2
 +11           SET XOBCONFG=##class(Security.SSLConfigs).%New()
 +12           SET XOBSTAT=XOBCONFG.Create(XOBNAME,.XOBPROP2)
 +13      ; get complete set of properties
 +14           SET XOBSTAT2=##class(Security.SSLConfigs).Get(XOBNAME,.XOBPROP)
 +15           QUIT 
           End DoDot:1
 +16       QUIT $GET(XOBSTAT)
 +17      ;
CHCKEXST(XOBNAME) ;check and display an SSL
 +1        NEW XOBPROP
 +2        SET XOBNAME=$GET(XOBNAME,"encrypt_only")
 +3        IF $$EXISTS(XOBNAME,.XOBPROP)
               Begin DoDot:1
 +4                DO DISPL(.XOBPROP)
               End DoDot:1
               QUIT 
 +5        DO BMES^XPDUTL(" >>>>  '"_XOBNAME_"' SSL Config doesn't exist.")
 +6        DO BMES^XPDUTL("")
 +7        QUIT 
DELETE(XOBWIN) ; delete an existing SSL configuration
 +1        NEW XOBNAME,XOBSTAT
 +2        Begin DoDot:1
 +3            SET XOBNAME=$GET(XOBWIN,"encrypt_only")
 +4       ; change to %SYS namespace then revert upon finishing
 +5       ;Push current namespace onto the stack

*** ERROR ***
               NEW $NAMESPACE
 +6       ;Change namespace, revert back upon "Q"

*** ERROR ***
               SET $NAMESPACE="%SYS"
 +7       ; Check if SSL configuration exists
 +8            SET XOBSTAT=##class(Security.SSLConfigs).Delete(XOBNAME)
 +9            QUIT 
           End DoDot:1
 +10       QUIT 

*****   ERRORS & WARNINGS IN XOBWP004   *****
   CHECK+2      F - Undefined Special Variable.
   CHECK+2      F - Undefined Special Variable.
   EXISTS+5     F - Undefined Special Variable.
   EXISTS+5     W - Invalid local variable name.
   EXISTS+5     F - Undefined Special Variable.
   EXISTS+6     F - Undefined Special Variable.
   EXISTS+6     F - Unrecognized argument in SET command.
   CRSSL+6      F - Undefined Special Variable.
   CRSSL+6      W - Invalid local variable name.
   CRSSL+6      F - Undefined Special Variable.
   CRSSL+7      F - Undefined Special Variable.
   CRSSL+7      F - Unrecognized argument in SET command.
   DELETE+5     F - Undefined Special Variable.
   DELETE+5     W - Invalid local variable name.
   DELETE+5     F - Undefined Special Variable.
   DELETE+6     F - Undefined Special Variable.
   DELETE+6     F - Unrecognized argument in SET command.

*****   INDEX OF XOBWP004   *****


Local Variables      Line Occurrences   ( >> not killed explicitly)
                                        ( * Changed  ! Killed  ~ Newed)
   DIF          XOBWP004+10~,XOBWP004+12*
   DUZ          MESSAGE+5,MESSAGE+6
   MSG          MESSAGE+1*,MESSAGE+6,MESSAGE+7!
>> MSGSBJ       MESSAGE+2*,MESSAGE+6
   WHO          MESSAGE+6,MESSAGE+7!
   WHO(         MESSAGE+5*
   WHO("G.PATCH TRACKING XOBW_1_4@DOMAIN.EXT" 
                MESSAGE+3*
   WHO("Jose.Luis-Garcia@domain.ext" 
                MESSAGE+4*
   X            XOBWP004+9~,XOBWP004+11*
   XCNP         XOBWP004+10~,XOBWP004+12*
   XOBCONFG     CRSSL+3~,CRSSL+11*
   XOBEXSTS     EXISTS+1~,EXISTS+3*,EXISTS+8*,EXISTS+10
   XOBNAME      SSLCONF+1~,SSLCONF+2*,SSLCONF+8,SSLCONF+10,SSLCONF+11
                SSLCONF+15,EXISTS+1~,EXISTS+3*,EXISTS+8,CRSSL+1~,CRSSL+4*
                CRSSL+12,CRSSL+14,CHCKEXST~,CHCKEXST+2*,CHCKEXST+3,CHCKEXST+5
                DELETE+1~,DELETE+3*,DELETE+8
   XOBPROP      SSLCONF+1~,SSLCONF+10,SSLCONF+12,DISPL~,EXISTS~,EXISTS+8,CRSSL~
                CRSSL+14,CHCKEXST+1~,CHCKEXST+3,CHCKEXST+4
   XOBPROP(     DISPL+3
   XOBPROP2     CRSSL+3~,CRSSL+12
   XOBPROP2("Description" 
                CRSSL+8*
   XOBPROP2("Enabled" 
                CRSSL+9*
   XOBPROP2("Protocols" 
                CRSSL+10*
   XOBSTAT      CRSSL+1~,CRSSL+4*,CRSSL+12*,CRSSL+16,DELETE+1~,DELETE+8*
   XOBSTAT2     CRSSL+3~,CRSSL+14*
   XOBW         DISPL+1~
   XOBWI        DISPL+1~,DISPL+3*
   XOBWIN       EXISTS~,EXISTS+3,CRSSL~,CRSSL+4,DELETE~,DELETE+3
   XOBWNOTE     CHECK+1~,CHECK+5*,CHECK+6*,CHECK+7*,CHECK+8*,CHECK+9
>> XPDABORT     XOBWP004+13*
   XUSL         XOBWP004+9~

Global Variables  ( * Changed  ! Killed)
   ^%ZOSF("LOAD"       XOBWP004+12
   ^TMP("PSC DATA"     INCOMP+1*,INCOMP+2*,INCOMP+3*,INCOMP+4*,INCOMP+5*
                       INCOMP+6*,MESSAGE+1,MESSAGE+7!
   ^TMP($J             XOBWP004+10!,XOBWP004+13
   ^XMB("NETNAME"      MESSAGE+2

Naked Globals
   NONE

Cache Objects
   Security.SSLConfigs             EXISTS+8,CRSSL+11,CRSSL+14,DELETE+8
   XOBCONFG.Create                 CRSSL+12

Marked Items
   NONE

Label References
   $$CRSSL      SSLCONF+10
   $$EXISTS     CHCKEXST+3
   CHECK        POST+3
   DELETE       SSLCONF+8
   DISPL        SSLCONF+12,CHCKEXST+4
   INCOMP       CHECK+3
   MESSAGE      INCOMP+7
   SSLCONF      CHECK+2

External References
   SENDMSG^XMXAPI      MESSAGE+6
   POST^XOBWPA04       POST+1
   POST^XOBWPB04       POST+2
   BMES^XPDUTL         XOBWP004+13,SSLCONF+11,SSLCONF+15,CHCKEXST+5,CHCKEXST+6
   MES^XPDUTL          CHECK+4,CHECK+9
   $$PROD^XUPROD       INCOMP+7

*****   END   *****

XOBWPA04   8449     printed  Mar 13, 2018@10:55:07                     Page 7

XOBWPA04  ;OAK/BDT - HWSC :: Environmental Check ; 06/28/2016
 +1       ;;1.0;HwscWebServiceClient;**4**;September 13, 2010;Build 9
 +2       ;Per VA Directive 6402, this routine should not be modified.
 +3       ;
 +4       ; ***** IMPORTANT NOTE *******************************************
 +5       ; This routine requires access to the manager (%SYS) namespace and
 +6       ; can only be run by a user with permissions to that namespace.
 +7       ; ****************************************************************
 +8       ;
 +9       ; Loads "xobw4.xml" into XOBW*1*4 transport global. Post-installation
 +10      ; routine ^XOBWPA04 will reconstruct the file for the installation of Cache
 +11      ; classes into VistA to support SSL. The "xobw4.xml"
 +12      ; file must be in the PRIMARY HFS DIRECTORY prior to transport.
 +13      ;
 +14      ; Note: Make sure that there are no lines longer than 255 chars in the file
 +15      ; to be loaded! It appears $$FTG is not creating overflow nodes.
 +16      ;
POST      ;
 +1       ;
           DO SETDATA
 +2       ;
           DO IMPDATA
 +3        QUIT 
GETDATA   ; export data from xobw4.xml file
 +1        NEW I,X,XFILE,XPATH,XREF
 +2        KILL ^TMP($JOB,4)
 +3        SET XFILE="xobw4.xml"
 +4       ;PRIMARY HFS DIRECTORY
           SET XPATH=$$DEFDIR^%ZISH
 +5        SET XREF="^TMP("_$JOB_",4,1,0)"
 +6       ;Load file into global
           SET X=$$FTG^%ZISH(XPATH,XFILE,XREF,3)
 +7        QUIT 
 +8       ;
IMPDATA   ; import data into xobw4.xml file
 +1        NEW XDIR,XOBWY,Y
 +2        SET XDIR=$$DEFDIR^%ZISH
 +3        SET XREF="^TMP("_$JOB_",4,1,0)"
 +4       ;Export ^TMP global to XML file
           SET Y=$$GTF^%ZISH(XREF,3,XDIR,"xobw4.xml")
 +5        KILL ^TMP($JOB,4)
 +6        SET XDIR=$$DEFDIR^%ZISH
 +7       ;Import Cache classes
           SET XOBWY=$$IMPORT^XOBWLIB1(XDIR,"xobw4.xml")
 +8        IF 'XOBWY
               Begin DoDot:1
 +9                DO BMES^XPDUTL("Error occurred during the importing of support classes file:")
 +10               DO MES^XPDUTL("  Directory: "_XDIR)
 +11               DO MES^XPDUTL("  File Name: "_"xobw4.xml")
 +12               DO MES^XPDUTL("      Error: "_$PIECE(XOBWY,"^",2))
 +13               DO MES^XPDUTL(" o  Classes not imported.")
               End DoDot:1
 +14      IF '$TEST
               Begin DoDot:1
 +15               DO MES^XPDUTL(" o  Support classes imported successfully.")
 +16               DO MES^XPDUTL(" ")
               End DoDot:1
 +17       QUIT 
 +18      ;
SETDATA   ;
 +1        NEW I,IT
 +2        KILL ^TMP($JOB,4)
 +3        FOR I=1:1:158
               SET IT=$TEXT(DATA+I)
               SET ^TMP($JOB,4,I,0)=$PIECE(IT,";;",2)
 +4        QUIT 
DATA      ;
 +1       ;;<?xml version="1.0" encoding="UTF-8"?>
 +2       ;;<Export generator="Cache" version="25" zv="Cache for UNIX (Red Hat Enterprise Linux for x86-64) 2014.1.3 (Build 775)" ts="2016-06-10 11:14:51">
 +3       ;;<Class name="xobw.WebServiceProxyFactory">
 +4       ;;<Description><![CDATA[
 +5       ;;This factory class contains methods to create web service proxy instances.
 +6       ;;<br><br>As part of the creation process, web server ip/port resolution is performed and
 +7       ;;any security implementation, as defined by ISS, is executed. ]]></Description>
 +8       ;;<ClassType/>
 +9       ;;<ProcedureBlock>1</ProcedureBlock>
 +10      ;;<Super>%RegisteredObject</Super>
 +11      ;;<TimeChanged>64072,51245.767727</TimeChanged>
 +12      ;;<TimeCreated>60655,58903.754395</TimeCreated>
 +13      ;;
 +14      ;;<UDLText name="T">
 +15      ;;<Content><![CDATA[
 +16      ;;// 1.0;HwscWebServiceClient   ;;September 13, 2010
 +17      ;;
 +18      ;;]]></Content>
 +19      ;;</UDLText>
 +20      ;;
 +21      ;;<UDLText name="T">
 +22      ;;<Content><![CDATA[
 +23      ;;// HealtheVet Web Service Client v1 [Build: 1.0.1.009]
 +24      ;;
 +25      ;;]]></Content>
 +26      ;;</UDLText>
 +27      ;;
 +28      ;;<Property name="webServiceMetadata">
 +29      ;;<Type>WebServiceMetadata</Type>
 +30      ;;<Private>1</Private>
 +31      ;;</Property>
 +32      ;;
 +33      ;;<Method name="%OnNew">
 +34      ;;<FormalSpec>webServiceName:%String</FormalSpec>
 +35      ;;<ReturnType>%Status</ReturnType>
 +36      ;;<Implementation><![CDATA[
 +37      ;; set webServiceId=##class(xobw.WebServiceMetadata).getWebServiceId(webServiceName)
 +38      ;; if 'webServiceId {
 +39      ;;     do ##class(xobw.error.DialogError).forceError(186006_"^"_webServiceName)
 +40      ;; }
 +41      ;; set ..webServiceMetadata=##class(xobw.WebServiceMetadata).%OpenId(webServiceId)
 +42      ;; quit $$$OK
 +43      ;;]]></Implementation>
 +44      ;;</Method>
 +45      ;;
 +46      ;;<Method name="getProxy">
 +47      ;;<Description><![CDATA[
 +48      ;;Creates web service client proxy for a web server.
 +49      ;;<ul>
 +50      ;;Parameter:
 +51      ;; <li><parameter>webServerName = name of server as it appears in NAME (#.01) field of a WEB SERVER (#18.12) file entry</parameter>
 +52      ;;</ul>]]></Description>
 +53      ;;<FormalSpec>webServerName:%String</FormalSpec>
 +54      ;;<ReturnType>%SOAP.WebClient</ReturnType>
 +55      ;;<Implementation><![CDATA[
 +56      ;;  // Future: Add any required headers to proxy when discovered, if any
 +57      ;;  new %proxy
 +58      ;;  if ..webServiceMetadata.type'=1 {
 +59      ;;      do ##class(xobw.error.DialogError).forceError(186007)
 +60      ;;  }
 +61      ;;  xecute "set %proxy=##class("_..webServiceMetadata.proxyClassName_").%New()"
 +62      ;;  if %proxy'=$$$NULLOREF {
 +63      ;;   set webServerId=##class(xobw.WebServer).getWebServerId(webServerName)
 +64      ;;    if 'webServerId {
 +65      ;;      do ##class(xobw.error.DialogError).forceError(186005_"^"_webServerName)
 +66      ;;   }    
 +67      ;;   set webServer=##class(xobw.WebServer).%OpenId(webServerId)
 +68      ;;   
 +69      ;;   // web server is disabled
 +70      ;;   if 'webServer.status {
 +71      ;;    do ##class(xobw.error.DialogError).forceError(186002_"^"_webServer.name)
 +72      ;;   }
 +73      ;;   
 +74      ;;   do ..setUpCredentials(webServer, %proxy)
 +75      ;;   do ..setUpLocation(webServer, %proxy)
 +76      ;;  }
 +77      ;; quit $get(%proxy)
 +78      ;;]]></Implementation>
 +79      ;;</Method>
 +80      ;;
 +81      ;;<Method name="setUpCredentials">
 +82      ;;<FormalSpec>webServer:WebServer,proxy:%SOAP.WebClient</FormalSpec>
 +83      ;;<Private>1</Private>
 +84      ;;<Implementation><![CDATA[
 +85      ;; set authorizedWebServiceId=##class(xobw.WebServicesAuthorized).getAuthorizedWebServiceId(webServer,..webServiceMetadata)
 +86      ;; 
 +87      ;; // web service is not authorized
 +88      ;; if 'authorizedWebServiceId {
 +89      ;;  do ##class(xobw.error.DialogError).forceError(186003_"^"_..webServiceMetadata.name_"^"_webServer.name)
 +90      ;; }
 +91      ;; 
 +92      ;; set authorizedWebService=##class(xobw.WebServicesAuthorized).%OpenId(authorizedWebServiceId)
 +93      ;; 
 +94      ;; // web service is disabled
 +95      ;; if 'authorizedWebService.status {
 +96      ;;  do ##class(xobw.error.DialogError).forceError(186004_"^"_..webServiceMetadata.name_"^"_webServer.name)
 +97      ;; }
 +98      ;; 
 +99      ;; if webServer.loginRequired="1"!(webServer.loginRequired="") {
 +100     ;;  set proxy.HttpUsername=webServer.userName
 +101     ;;  set proxy.HttpPassword=webServer.getPassword()
 +102     ;; }
 +103     ;; quit
 +104     ;;]]></Implementation>
 +105     ;;</Method>
 +106     ;;
 +107     ;;<Method name="setUpLocation">
 +108     ;;<FormalSpec>webServer:WebServer,proxy:%SOAP.WebClient</FormalSpec>
 +109     ;;<Private>1</Private>
 +110     ;;<Implementation><![CDATA[
 +111     ;; if (webServer.sslEnabled && ('$$SSLOK^XOBWENV())) {
 +112     ;;  do ##class(xobw.error.DialogError).forceError(186002_"^"_webServer.name_" (SSL is disabled on VMS)")
 +113     ;; }
 +114     ;; if (webServer.sslEnabled) {
 +115     ;;  set proxy.Location="https://"_webServer.server_":"_webServer.sslPort_"/"_..webServiceMetadata.contextRoot
 +116     ;;  set proxy.SSLConfiguration = webServer.sslConfiguration
 +117     ;;  set proxy.SSLCheckServerIdentity = 0
 +118     ;; } else {
 +119     ;;  set proxy.Location="http://"_webServer.server_":"_webServer.port_"/"_..webServiceMetadata.contextRoot
 +120     ;; }
 +121     ;; set proxy.Timeout=webServer.defaultTimeout
 +122     ;; quit
 +123     ;;]]></Implementation>
 +124     ;;</Method>
 +125     ;;
 +126     ;;<Method name="close">
 +127     ;;<Description><![CDATA[
 +128     ;;Close web service proxy factory
 +129     ;;<br>
 +130     ;;<br>Performs any close processing activities required.]]></Description>
 +131     ;;<ReturnType>%Status</ReturnType>
 +132     ;;<Implementation><![CDATA[ quit $$$OK
 +133     ;;]]></Implementation>
 +134     ;;</Method>
 +135     ;;
 +136     ;;<Method name="getWebServiceProxy">
 +137     ;;<Description><![CDATA[
 +138     ;;Create web service proxy
 +139     ;;<ul>
 +140     ;;Parameters:
 +141     ;; <li><parameter>webServiceName = name of service as it appears NAME (#.01) field in an WEB SERVICE (#18.02) file entry</parameter>
 +142     ;; <li><parameter>webServerName = name of server as it appears NAME (#.01) field in an WEB SERVER (#18.12) file entry</parameter>
 +143     ;;</ul>
 +144     ;;<br><b>Restricted Use:</b> This method is for HWSC use only. Applications should use the $$GETPROXY^XOBWLB(...) API]]></Description>
 +145     ;;<ClassMethod>1</ClassMethod>
 +146     ;;<FormalSpec>webServiceName:%String,webServerName:%String</FormalSpec>
 +147     ;;<ReturnType>%SOAP.WebClient</ReturnType>
 +148     ;;<Implementation><![CDATA[
 +149     ;; set factory=##class(xobw.WebServiceProxyFactory).%New(webServiceName)
 +150     ;; if factory'=$$$NULLOREF {
 +151     ;;  set proxy=factory.getProxy(webServerName)
 +152     ;;  set ok=factory.close()
 +153     ;; }
 +154     ;; quit $get(proxy,$$$NULLOREF)
 +155     ;;]]></Implementation>
 +156     ;;</Method>
 +157     ;;</Class>
 +158     ;;</Export>


*****   INDEX OF XOBWPA04   *****


Local Variables      Line Occurrences   ( >> not killed explicitly)
                                        ( * Changed  ! Killed  ~ Newed)
   I            GETDATA+1~,SETDATA+1~,SETDATA+3*
   IT           SETDATA+1~,SETDATA+3*
   X            GETDATA+1~,GETDATA+6*
   XDIR         IMPDATA+1~,IMPDATA+2*,IMPDATA+4,IMPDATA+6*,IMPDATA+7,IMPDATA+10
   XFILE        GETDATA+1~,GETDATA+3*,GETDATA+6
   XOBWY        IMPDATA+1~,IMPDATA+7*,IMPDATA+8,IMPDATA+12
   XPATH        GETDATA+1~,GETDATA+4*,GETDATA+6
   XREF         GETDATA+1~,GETDATA+5*,GETDATA+6,IMPDATA+3*,IMPDATA+4
   Y            IMPDATA+1~,IMPDATA+4*

Global Variables  ( * Changed  ! Killed)
   ^TMP($J             GETDATA+2!,IMPDATA+5!,SETDATA+2!,SETDATA+3*

Naked Globals
   NONE

Cache Objects
   NONE

Marked Items
   $T(DATA+I    SETDATA+3

Label References
   IMPDATA      POST+2
   SETDATA      POST+1

External References
   $$DEFDIR^%ZISH      GETDATA+4,IMPDATA+2,IMPDATA+6
   $$FTG^%ZISH         GETDATA+6
   $$GTF^%ZISH         IMPDATA+4
   $$IMPORT^XOBWLIB1   IMPDATA+7
   BMES^XPDUTL         IMPDATA+9
   MES^XPDUTL          IMPDATA+10,IMPDATA+11,IMPDATA+12,IMPDATA+13,IMPDATA+15
                       IMPDATA+16

*****   END   *****

XOBWPB04   12468     printed  Mar 13, 2018@10:55:07                    Page 8

XOBWPB04  ;OAK/BDT - HWSC :: Environmental Check ; 06/28/2016
 +1       ;;1.0;HwscWebServiceClient;**4**;September 13, 2010;Build 9
 +2       ;Per VA Directive 6402, this routine should not be modified.
 +3       ;
 +4       ; ***** IMPORTANT NOTE *******************************************
 +5       ; This routine requires access to the manager (%SYS) namespace and
 +6       ; can only be run by a user with permissions to that namespace.
 +7       ; ****************************************************************
 +8       ;
 +9       ; Loads "xobw4b.xml" into XOBW*1*4 transport global. Post-installation
 +10      ; routine ^XOBWPA04 will reconstruct the file for the installation of Cache
 +11      ; classes into VistA to support SSL. The "xobw4.xml"
 +12      ; file must be in the PRIMARY HFS DIRECTORY prior to transport.
 +13      ;
 +14      ; Note: Make sure that there are no lines longer than 255 chars in the file
 +15      ; to be loaded! It appears $$FTG is not creating overflow nodes.
 +16      ;
POST      ;
 +1       ;
           DO SETDATA
 +2       ;
           DO IMPDATA
 +3        QUIT 
GETDATA   ; export data from xobw4b.xml file
 +1        NEW I,X,XFILE,XPATH,XREF
 +2        KILL ^TMP($JOB,4)
 +3        SET XFILE="xobw4b.xml"
 +4       ;PRIMARY HFS DIRECTORY
           SET XPATH=$$DEFDIR^%ZISH
 +5        SET XREF="^TMP("_$JOB_",4,1,0)"
 +6       ;Load file into global
           SET X=$$FTG^%ZISH(XPATH,XFILE,XREF,3)
 +7        QUIT 
 +8       ;
IMPDATA   ; import data into xobw4b.xml file
 +1        NEW XDIR,XOBWY,Y
 +2        SET XDIR=$$DEFDIR^%ZISH
 +3        SET XREF="^TMP("_$JOB_",4,1,0)"
 +4       ;Export ^TMP global to XML file
           SET Y=$$GTF^%ZISH(XREF,3,XDIR,"xobw4b.xml")
 +5        KILL ^TMP($JOB,4)
 +6        SET XDIR=$$DEFDIR^%ZISH
 +7       ;Import Cache classes
           SET XOBWY=$$IMPORT^XOBWLIB1(XDIR,"xobw4b.xml")
 +8        IF 'XOBWY
               Begin DoDot:1
 +9                DO BMES^XPDUTL("Error occurred during the importing of support classes file:")
 +10               DO MES^XPDUTL("  Directory: "_XDIR)
 +11               DO MES^XPDUTL("  File Name: "_"xobw4b.xml")
 +12               DO MES^XPDUTL("      Error: "_$PIECE(XOBWY,"^",2))
 +13               DO MES^XPDUTL(" o  Classes not imported.")
               End DoDot:1
 +14      IF '$TEST
               Begin DoDot:1
 +15               DO MES^XPDUTL(" o  Support classes imported successfully.")
 +16               DO MES^XPDUTL(" ")
               End DoDot:1
 +17       QUIT 
 +18      ;
SETDATA   ;
 +1        NEW I,IT
 +2        KILL ^TMP($JOB,4)
 +3        FOR I=1:1:323
               SET IT=$TEXT(DATA+I)
               SET ^TMP($JOB,4,I,0)=$PIECE(IT,"   ;;",2,99)
 +4        QUIT 
DATA      ;
 +1       ;;<?xml version="1.0" encoding="UTF-8"?>
 +2       ;;<Export generator="Cache" version="25" zv="Cache for UNIX (Red Hat Enterprise Linux for x86-64) 2014.1.3 (Build 775)" ts="2016-06-22 15:48:50">
 +3       ;;<Class name="xobw.WebServer">
 +4       ;;<Description><![CDATA[
 +5       ;;This persistent class contains web server connection information used to connect to server hosting web services
 +6       ;;<br>
 +7       ;;This class is mapped to the VA FileMan WEB SERVER (#18.12) file
 +8       ;;<br><br>
 +9       ;;<b>Restricted Use:</b> The properties and methods of this class are for HWSC use only.
 +10      ;;  ]]></Description>
 +11      ;;<ClassType>persistent</ClassType>
 +12      ;;<ProcedureBlock>1</ProcedureBlock>
 +13      ;;<SqlRowIdPrivate>1</SqlRowIdPrivate>
 +14      ;;<SqlTableName>WebServer</SqlTableName>
 +15      ;;<StorageStrategy>WebServerStorage</StorageStrategy>
 +16      ;;<Super>%Persistent</Super>
 +17      ;;<TimeChanged>64091,56835.117773</TimeChanged>
 +18      ;;<TimeCreated>60654,21265.065878</TimeCreated>
 +19      ;;
 +20      ;;<UDLText name="T">
 +21      ;;<Content><![CDATA[
 +22      ;;// 1.0;HwscWebServiceClient;;September 13, 2010
 +23      ;;
 +24      ;;]]></Content>
 +25      ;;</UDLText>
 +26      ;;
 +27      ;;<UDLText name="T">
 +28      ;;<Content><![CDATA[
 +29      ;;// HealtheVet Web Service Client v1 [Build: 1.0.1.009]
 +30      ;;
 +31      ;;]]></Content>
 +32      ;;</UDLText>
 +33      ;;
 +34      ;;<Index name="ienIndex">
 +35      ;;<IdKey>1</IdKey>
 +36      ;;<PrimaryKey>1</PrimaryKey>
 +37      ;;<Properties>ien</Properties>
 +38      ;;<Unique>1</Unique>
 +39      ;;</Index>
 +40      ;;
 +41      ;;<Property name="server">
 +42      ;;<Type>%String</Type>
 +43      ;;<Parameter name="TRUNCATE" value="1"/>
 +44      ;;</Property>
 +45      ;;
 +46      ;;<Property name="port">
 +47      ;;<Type>%Integer</Type>
 +48      ;;<Collection/>
 +49      ;;<Relationship>0</Relationship>
 +50      ;;</Property>
 +51      ;;
 +52      ;;<Property name="ien">
 +53      ;;<Type>%String</Type>
 +54      ;;<Collection/>
 +55      ;;<Relationship>0</Relationship>
 +56      ;;<Parameter name="TRUNCATE" value="1"/>
 +57      ;;</Property>
 +58      ;;
 +59      ;;<Property name="name">
 +60      ;;<Type>%String</Type>
 +61      ;;<Collection/>
 +62      ;;<Relationship>0</Relationship>
 +63      ;;<Parameter name="TRUNCATE" value="1"/>
 +64      ;;</Property>
 +65      ;;
 +66      ;;<Property name="production">
 +67      ;;<Type>%Boolean</Type>
 +68      ;;<Collection/>
 +69      ;;<Relationship>0</Relationship>
 +70      ;;<Transient>1</Transient>
 +71      ;;</Property>
 +72      ;;
 +73      ;;<UDLText name="T">
 +74      ;;<Content><![CDATA[
 +75      ;;// server credentials
 +76      ;;
 +77      ;;]]></Content>
 +78      ;;</UDLText>
 +79      ;;
 +80      ;;<Property name="loginRequired">
 +81      ;;<Type>%Boolean</Type>
 +82      ;;<SqlFieldName>loginRequired</SqlFieldName>
 +83      ;;</Property>
 +84      ;;
 +85      ;;<Property name="password">
 +86      ;;<Type>%String</Type>
 +87      ;;<Private>1</Private>
 +88      ;;<SqlFieldName>password</SqlFieldName>
 +89      ;;<Parameter name="TRUNCATE" value="1"/>
 +90      ;;</Property>
 +91      ;;
 +92      ;;<Property name="userName">
 +93      ;;<Type>%String</Type>
 +94      ;;<SqlFieldName>userName</SqlFieldName>
 +95      ;;<Parameter name="TRUNCATE" value="1"/>
 +96      ;;</Property>
 +97      ;;
 +98      ;;<Property name="defaultTimeout">
 +99      ;;<Type>%Integer</Type>
 +100     ;;<InitialExpression>30</InitialExpression>
 +101     ;;<SqlFieldName>defaultTimeout</SqlFieldName>
 +102     ;;<Parameter name="MAXVAL" value="7200"/>
 +103     ;;<Parameter name="MINVAL" value="5"/>
 +104     ;;</Property>
 +105     ;;
 +106     ;;<Property name="sslEnabled">
 +107     ;;<Type>%Boolean</Type>
 +108     ;;<SqlFieldName>sslEnabled</SqlFieldName>
 +109     ;;</Property>
 +110     ;;
 +111     ;;<Property name="sslConfiguration">
 +112     ;;<Type>%String</Type>
 +113     ;;<SqlFieldName>sslConfiguration</SqlFieldName>
 +114     ;;<Parameter name="TRUNCATE" value="1"/>
 +115     ;;</Property>
 +116     ;;
 +117     ;;<Property name="sslPort">
 +118     ;;<Type>%String</Type>
 +119     ;;<SqlFieldName>sslPort</SqlFieldName>
 +120     ;;<Parameter name="TRUNCATE" value="1"/>
 +121     ;;</Property>
 +122     ;;
 +123     ;;<UDLText name="T">
 +124     ;;<Content><![CDATA[
 +125     ;;// for ISS use ------------------------
 +126     ;;
 +127     ;;]]></Content>
 +128     ;;</UDLText>
 +129     ;;
 +130     ;;<Property name="authorizedWebServices">
 +131     ;;<Type>xobw.WebServicesAuthorized</Type>
 +132     ;;<Cardinality>children</Cardinality>
 +133     ;;<Inverse>webServerRef</Inverse>
 +134     ;;<Relationship>1</Relationship>
 +135     ;;</Property>
 +136     ;;
 +137     ;;<Property name="status">
 +138     ;;<Type>%Boolean</Type>
 +139     ;;<Collection/>
 +140     ;;<Relationship>0</Relationship>
 +141     ;;</Property>
 +142     ;;
 +143     ;;<Method name="getPassword">
 +144     ;;<ReturnType>%String</ReturnType>
 +145     ;;<Implementation><![CDATA[ quit $$DECRYP^XOBWPWD(..password)
 +146     ;;]]></Implementation>
 +147     ;;</Method>
 +148     ;;
 +149     ;;<Method name="checkWebServicesAvailability">
 +150     ;;<FormalSpec>dots:%String</FormalSpec>
 +151     ;;<ReturnType>%Library.ListOfDataTypes</ReturnType>
 +152     ;;<Implementation><![CDATA[
 +153     ;; set key = ""
 +154     ;; set count=0
 +155     ;; set result=##class(%ListOfDataTypes).%New()
 +156     ;;
 +157     ;; // if server is disabled, stop
 +158     ;; if '..status {
 +159     ;;  do result.Insert("")
 +160     ;;  do result.Insert(" o Web server is disabled")
 +161     ;;  do result.Insert("")
 +162     ;;  quit result
 +163     ;; }
 +164     ;;
 +165     ;; // loop thru web services credentials defined for server and build list output
 +166     ;; // mainly for ListMan consumption (AVAIL^XOBWUT1)
 +167     ;; do {
 +168     ;;  set authorizedWebService = ..authorizedWebServices.GetNext(.key)
 +169     ;;  if $get(dots) write "."
 +170     ;;  set count=count+1
 +171     ;;  if (authorizedWebService '= $$$NULLOREF) {
 +172     ;;   set webService=##class(xobw.WebServiceMetadata).%OpenId(authorizedWebService.webServiceIen)
 +173     ;;   if (authorizedWebService.status) {
 +174     ;;    if ((webService.type=1) || (webService.type=2)) {
 +175     ;;     if ##class(xobw.WebServiceMetadata).checkResourceAvailability(##this,authorizedWebService,webService,.httpStatusCode) {
 +176     ;;      do result.Insert(count_" "_webService.name_" is available")
 +177     ;;     } else {
 +178     ;;      do result.Insert(count_" Unable to retrieve '"_webService.availResource_"' for "_webService.name)
 +179     ;;      //
 +180     ;;      // the following lines will report spurious %objlasterror errors.
 +181     ;;      // supposed to be fixed in Cache 5.1+.
 +182     ;;      // 
 +183     ;;      if ($data(%objlasterror)'=0) {
 +184     ;;       do $system.Status.DecomposeStatus(%objlasterror,.err)
 +185     ;;       set x=$get(err(1)," o no reason available")
 +186     ;;       set length=$length(x)
 +187     ;;       do result.Insert(" o "_$extract(x,1,70))
 +188     ;;       set x=$extract(x,71,length)
 +189     ;;       while (x'="") {
 +190     ;;        do result.Insert(" "_$extract(x,1,70))
 +191     ;;        set x=$extract(x,71,length)
 +192     ;;       } // while
 +193     ;;       // if there is a status code, show it
 +194     ;;       if $get(httpStatusCode)]"" do result.Insert(" o HTTP Response Status Code: "_httpStatusCode)
 +195     ;;      } else {
 +196     ;;       do result.Insert(" o HTTP Response Status Code: "_$get(httpStatusCode,"<no status code available>"))
 +197     ;;      } // %objlasterror 
 +198     ;;     } // resource availability
 +199     ;;    } else {
 +200     ;;     do result.Insert(count_" "_webService.name_" is not a valid web service type ["_webservice.type_"]")
 +201     ;;    } // not valid type (rare and should not occur)
 +202     ;;   } else {
 +203     ;;    do result.Insert(count_" "_webService.name_" is not enabled")
 +204     ;;   } // authorizedWebService.status
 +205     ;;  } // authorizedWebService
 +206     ;; } while (key '= "")
 +207     ;; quit result
 +208     ;;]]></Implementation>
 +209     ;;</Method>
 +210     ;;
 +211     ;;<Method name="getWebServerId">
 +212     ;;<ClassMethod>1</ClassMethod>
 +213     ;;<FormalSpec>name:%String</FormalSpec>
 +214     ;;<ReturnType>%String</ReturnType>
 +215     ;;<Implementation><![CDATA[
 +216     ;; if $get(name)="" {
 +217     ;;     do ##class(xobw.error.DialogError).forceError(186005_"^<empty string>")
 +218     ;; }
 +219     ;; quit +$order(^XOB(18.12,"B",name,0))
 +220     ;;]]></Implementation>
 +221     ;;</Method>
 +222     ;;
 +223     ;;<Method name="setUpHttpRequest">
 +224     ;;<FormalSpec>httpRequest:%Net.HttpRequest</FormalSpec>
 +225     ;;<Implementation><![CDATA[
 +226     ;; if (..sslEnabled && ('$$SSLOK^XOBWENV())) {
 +227     ;;  do ##class(xobw.error.DialogError).forceError(186002_"^"_..name_" (SSL is disabled on VMS)")
 +228     ;; }
 +229     ;; if (..sslEnabled) {
 +230     ;;  set httpRequest.Https=1
 +231     ;;  set httpRequest.SSLConfiguration=..sslConfiguration
 +232     ;;  set httpRequest.Port=..sslPort
 +233     ;;  set httpRequest.SSLCheckServerIdentity = 0
 +234     ;; } else {
 +235     ;;  set httpRequest.Port=..port
 +236     ;; }
 +237     ;; // common setting
 +238     ;; set httpRequest.Server=..server
 +239     ;; set httpRequest.Timeout=..defaultTimeout
 +240     ;; quit
 +241     ;;]]></Implementation>
 +242     ;;</Method>
 +243     ;;
 +244     ;;<Method name="defaultTimeoutGet">
 +245     ;;<ReturnType>%Integer</ReturnType>
 +246     ;;<Implementation><![CDATA[ quit $select(i%defaultTimeout:i%defaultTimeout,1:30)
 +247     ;;]]></Implementation>
 +248     ;;</Method>
 +249     ;;
 +250     ;;<Storage name="WebServerStorage">
 +251     ;;<Type>%CacheSQLStorage</Type>
 +252     ;;<StreamLocation>^xobw.WebServerS</StreamLocation>
 +253     ;;<ExtentSize>100000</ExtentSize>
 +254     ;;<SQLMap name="MasterMap">
 +255     ;;<Type>data</Type>
 +256     ;;<Global>^XOB</Global>
 +257     ;;<Subscript name="1">
 +258     ;;<Expression>18.12</Expression>
 +259     ;;</Subscript>
 +260     ;;<Subscript name="2">
 +261     ;;<Expression>{ien}</Expression>
 +262     ;;<LoopInitValue>0</LoopInitValue>
 +263     ;;<StopExpression>'+{L2}</StopExpression>
 +264     ;;</Subscript>
 +265     ;;<RowIdSpec name="1">
 +266     ;;<Expression>{L2}</Expression>
 +267     ;;<Field>ien</Field>
 +268     ;;</RowIdSpec>
 +269     ;;<Data name="defaultTimeout">
 +270     ;;<Delimiter>"^"</Delimiter>
 +271     ;;<Node>0</Node>
 +272     ;;<Piece>7</Piece>
 +273     ;;</Data>
 +274     ;;<Data name="loginRequired">
 +275     ;;<Delimiter>"^"</Delimiter>
 +276     ;;<Node>1</Node>
 +277     ;;<Piece>1</Piece>
 +278     ;;</Data>
 +279     ;;<Data name="name">
 +280     ;;<Delimiter>"^"</Delimiter>
 +281     ;;<Node>0</Node>
 +282     ;;<Piece>1</Piece>
 +283     ;;</Data>
 +284     ;;<Data name="password">
 +285     ;;<Node>300</Node>
 +286     ;;</Data>
 +287     ;;<Data name="port">
 +288     ;;<Delimiter>"^"</Delimiter>
 +289     ;;<Node>0</Node>
 +290     ;;<Piece>3</Piece>
 +291     ;;</Data>
 +292     ;;<Data name="server">
 +293     ;;<Delimiter>"^"</Delimiter>
 +294     ;;<Node>0</Node>
 +295     ;;<Piece>4</Piece>
 +296     ;;</Data>
 +297     ;;<Data name="sslConfiguration">
 +298     ;;<Delimiter>"^"</Delimiter>
 +299     ;;<Node>3</Node>
 +300     ;;<Piece>2</Piece>
 +301     ;;</Data>
 +302     ;;<Data name="sslEnabled">
 +303     ;;<Delimiter>"^"</Delimiter>
 +304     ;;<Node>3</Node>
 +305     ;;<Piece>1</Piece>
 +306     ;;</Data>
 +307     ;;<Data name="sslPort">
 +308     ;;<Delimiter>"^"</Delimiter>
 +309     ;;<Node>3</Node>
 +310     ;;<Piece>3</Piece>
 +311     ;;</Data>
 +312     ;;<Data name="status">
 +313     ;;<Delimiter>"^"</Delimiter>
 +314     ;;<Node>0</Node>
 +315     ;;<Piece>6</Piece>
 +316     ;;</Data>
 +317     ;;<Data name="userName">
 +318     ;;<Node>200</Node>
 +319     ;;</Data>
 +320     ;;</SQLMap>
 +321     ;;</Storage>
 +322     ;;</Class>
 +323     ;;</Export>


*****   INDEX OF XOBWPB04   *****


Local Variables      Line Occurrences   ( >> not killed explicitly)
                                        ( * Changed  ! Killed  ~ Newed)
   I            GETDATA+1~,SETDATA+1~,SETDATA+3*
   IT           SETDATA+1~,SETDATA+3*
   X            GETDATA+1~,GETDATA+6*
   XDIR         IMPDATA+1~,IMPDATA+2*,IMPDATA+4,IMPDATA+6*,IMPDATA+7,IMPDATA+10
   XFILE        GETDATA+1~,GETDATA+3*,GETDATA+6
   XOBWY        IMPDATA+1~,IMPDATA+7*,IMPDATA+8,IMPDATA+12
   XPATH        GETDATA+1~,GETDATA+4*,GETDATA+6
   XREF         GETDATA+1~,GETDATA+5*,GETDATA+6,IMPDATA+3*,IMPDATA+4
   Y            IMPDATA+1~,IMPDATA+4*

Global Variables  ( * Changed  ! Killed)
   ^TMP($J             GETDATA+2!,IMPDATA+5!,SETDATA+2!,SETDATA+3*

Naked Globals
   NONE

Cache Objects
   NONE

Marked Items
   $T(DATA+I    SETDATA+3

Label References
   IMPDATA      POST+2
   SETDATA      POST+1

External References
   $$DEFDIR^%ZISH      GETDATA+4,IMPDATA+2,IMPDATA+6
   $$FTG^%ZISH         GETDATA+6
   $$GTF^%ZISH         IMPDATA+4
   $$IMPORT^XOBWLIB1   IMPDATA+7
   BMES^XPDUTL         IMPDATA+9
   MES^XPDUTL          IMPDATA+10,IMPDATA+11,IMPDATA+12,IMPDATA+13,IMPDATA+15
                       IMPDATA+16

*****   END   *****

XOBWPST   4130     printed  Mar 13, 2018@10:55:07                      Page 9

XOBWPST   ;ALB/MJK - HWSC - Post-Init ; 09/13/10 4:00pm
 +1       ;;1.0;HwscWebServiceClient;;September 13, 2010;Build 31
 +2       ;
 +3        QUIT 
 +4       ;
EN        ;  -- main entry point for post-init
 +1        NEW XOBSTAT
 +2       ;
 +3       ; -- delete all classes in xobw package
 +4        DO DELETE()
 +5       ;
 +6       ; -- build primary key indices (for those who had installed early developer previews)
 +7        DO INDEX()
 +8       ;
 +9       ; -- delete IP ADDRESS field (for those who had installed early developer previews)
 +10       DO DELIP()
 +11      ;
 +12      ; -- remove HtttpProxy* fields and 2 node (for those who had installed early developer previews)
 +13       DO DELHP()
 +14      ;
 +15      ; -- load hwsc support classes (mapped FM classes, etc.)
 +16       NEW XOBSTAT
 +17       SET XOBSTAT=$$IMPORT^XOBWLIB1($$GETDIR(),$$SUPPORT^XOBWENV())
 +18       IF 'XOBSTAT
               Begin DoDot:1
 +19               DO BMES^XPDUTL("Error occurred during the importing of support classes file:")
 +20               DO MES^XPDUTL("  Directory: "_$$GETDIR())
 +21               DO MES^XPDUTL("  File Name: "_$$SUPPORT^XOBWENV())
 +22               DO MES^XPDUTL("      Error: "_$PIECE(XOBSTAT,"^",2))
 +23               DO MES^XPDUTL(" o  Classes not imported.")
               End DoDot:1
               GOTO ENQ
 +24      IF '$TEST
               Begin DoDot:1
 +25               DO MES^XPDUTL(" o  Support classes imported successfully.")
 +26               DO MES^XPDUTL(" ")
               End DoDot:1
 +27      ;
ENQ       ;
 +1        QUIT 
 +2       ;
DELETE()  ; -- delete classes for clean slate and remove previous releases
 +1        NEW XOBSTAT
 +2       ; -- delete all classes in xobw package
 +3        DO BMES^XPDUTL(" o  Deleting xobw classes:")
 +4       ;
 +5        SET XOBSTAT=$SYSTEM.OBJ.DeletePackage("xobw")
 +6        DO BMES^XPDUTL("       ...[xobw] deletion "_$SELECT(XOBSTAT:"finished successfully.",1:"failed."))
 +7        DO MES^XPDUTL("")
 +8        QUIT 
 +9       ;
INDEX()   ; -- build indices if data exists but index not defined
 +1        NEW XOBFILE,DIK,DA,XOBCNT
 +2       ; -- primary key indices for 18.02,18.12
 +3        FOR XOBFILE=18.02,18.12
               Begin DoDot:1
 +4                IF $ORDER(^XOB(XOBFILE,0))
                       IF $ORDER(^XOB(XOBFILE,"PRIMARY",""))=""
                           Begin DoDot:2
 +5                            SET DIK="^XOB("_XOBFILE_","
 +6                            SET DIK(1)=".01^PRIMARY"
 +7                            DO ENALL^DIK
 +8                            DO BMES^XPDUTL(" o PRIMARY index set for "_$SELECT(XOBFILE="18.02":"WEB SERVICE",1:"WEB SERVER")_" (#"_XOBFILE_") file.")
                           End DoDot:2
               End DoDot:1
 +9       ; AB index for 18.121
 +10       IF $ORDER(^XOB(18.12,0))
               IF $ORDER(^XOB(18.12,"AB",""))=""
                   Begin DoDot:1
 +11                   SET XOBCNT=0
                       SET DA(1)=0
                       FOR 
                           SET DA(1)=$ORDER(^XOB(18.12,DA(1)))
                           if DA(1)'>0
                               QUIT 
                           Begin DoDot:2
 +12                           SET DIK="^XOB(18.12,"_DA(1)_",100,"
 +13                           SET DIK(1)=".01^AB"
 +14                           DO ENALL^DIK
                               SET XOBCNT=XOBCNT+1
                           End DoDot:2
 +15                   DO BMES^XPDUTL(" o AB whole-file index set for "_XOBCNT_" AUTHORIZED WEB SERVICES (#18.121) subfiles.")
                   End DoDot:1
 +16       QUIT 
 +17      ;
DELIP()   ; -- move IP ADDRESS to SERVER field if blank and delete IP ADDRESS (#.02)
 +1        NEW XOBDA,XOBDA0,XOBY,XOBERR
 +2       ; -- make sure IP ADDRESS field is present
 +3        DO FIELD^DID(18.12,.02,"N","LABEL","XOBY","XOBERR")
 +4        IF $GET(XOBY("LABEL"))'="IP ADDRESS"
               GOTO DELIPQ
 +5       ;
 +6       ; -- move data
 +7        SET XOBDA=0
 +8        FOR 
               SET XOBDA=$ORDER(^XOB(18.12,XOBDA))
               if 'XOBDA
                   QUIT 
               SET XOBDA0=$GET(^(XOBDA,0))
               Begin DoDot:1
 +9                NEW SERVER,IP
 +10               SET SERVER=$PIECE(XOBDA0,"^",4)
 +11               SET IP=$PIECE(XOBDA0,"^",2)
 +12               IF IP]""
                       Begin DoDot:2
 +13                       NEW XOBIENS,XOBFDA,XOBERR
 +14                       SET XOBIENS=XOBDA_","
 +15      ; -- Set up array with field values
 +16                       IF SERVER=""
                               SET XOBFDA(18.12,XOBIENS,.04)=IP
 +17                       SET XOBFDA(18.12,XOBIENS,.02)="@"
 +18                       DO FILE^DIE("","XOBFDA","XOBERR")
                       End DoDot:2
               End DoDot:1
 +19       DO BMES^XPDUTL(" o  IP ADDRESS (#.02) field data moved to SERVER (#.04) if SERVER blank")
 +20       DO MES^XPDUTL("    in WEB SERVER (#18.12) file")
 +21      ;
 +22      ; -- delete field
 +23       DO DELFLD(.02,"IP ADDRESS")
DELIPQ    ; 
 +1        QUIT 
 +2       ; 
DELHP()   ; -- remove HtttpProxy* fields and 2 node
 +1        NEW XOBX
 +2       ; -- delete HtttpProxy* field definitions
 +3        DO DELFLD(2.01,"HttpProxyHTTPS")
 +4        DO DELFLD(2.02,"HttpProxyServer")
 +5        DO DELFLD(2.03,"HttpProxyPort")
 +6       ; -- remove 2 nodes
 +7        NEW XOBDA
 +8        SET XOBDA=0
 +9        FOR 
               SET XOBDA=$ORDER(^XOB(18.12,XOBDA))
               if 'XOBDA
                   QUIT 
               KILL ^XOB(18.12,XOBDA,2)
 +10       QUIT 
 +11      ;
DELFLD(XOBNUM,XOBLABEL) ; -- delete a field from WEB SERVER file
 +1        NEW XOBY,XOBERR,DIK,DA
 +2        DO FIELD^DID(18.12,XOBNUM,"N","LABEL","XOBY","XOBERR")
 +3        IF $GET(XOBY("LABEL"))'=XOBLABEL
               GOTO DELFLDQ
 +4        SET DIK="^DD(18.12,"
 +5        SET DA=XOBNUM
 +6        SET DA(1)=18.12
 +7        DO ^DIK
 +8        DO BMES^XPDUTL(" o  "_XOBLABEL_" (#"_XOBNUM_") field deleted from WEB SERVER (#18.12) file")
DELFLDQ   ;
 +1        QUIT 
 +2       ;
GETDIR()  ; -- get directory where install files are located
 +1        QUIT $$DEFDIR^%ZISH($GET(XPDQUES("POSXMLDIR"),""))
 +2       ;


*****   INDEX OF XOBWPST   *****


Local Variables      Line Occurrences   ( >> not killed explicitly)
                                        ( * Changed  ! Killed  ~ Newed)
   DA           INDEX+1~,DELFLD+1~,DELFLD+5*
   DA(1         INDEX+11*,INDEX+12,DELFLD+6*
   DIK          INDEX+1~,INDEX+5*,INDEX+12*,DELFLD+1~,DELFLD+4*
   DIK(1        INDEX+6*,INDEX+13*
   IP           DELIP+9~,DELIP+11*,DELIP+12,DELIP+16
   SERVER       DELIP+9~,DELIP+10*,DELIP+16
   XOBCNT       INDEX+1~,INDEX+11*,INDEX+14*,INDEX+15
   XOBDA        DELIP+1~,DELIP+7*,DELIP+8*,DELIP+14,DELHP+7~,DELHP+8*,DELHP+9*
   XOBDA0       DELIP+1~,DELIP+8*,DELIP+10,DELIP+11
   XOBERR       DELIP+1~,DELIP+13~,DELFLD+1~
   XOBFDA       DELIP+13~
   XOBFDA(      DELIP+16*,DELIP+17*
   XOBFILE      INDEX+1~,INDEX+3*,INDEX+4,INDEX+5,INDEX+8
   XOBIENS      DELIP+13~,DELIP+14*,DELIP+16,DELIP+17
   XOBLABEL     DELFLD~,DELFLD+3,DELFLD+8
   XOBNUM       DELFLD~,DELFLD+2,DELFLD+5,DELFLD+8
   XOBSTAT      EN+1~,EN+16~,EN+17*,EN+18,EN+22,DELETE+1~,DELETE+5*,DELETE+6
   XOBX         DELHP+1~
   XOBY         DELIP+1~,DELFLD+1~
   XOBY("LABEL" DELIP+4,DELFLD+3
>> XPDQUES("POSXMLDIR" 
                GETDIR+1

Global Variables  ( * Changed  ! Killed)
   ^XOB(               INDEX+4
   ^XOB(18.12          INDEX+10,INDEX+11,DELIP+8,DELHP+9!

Naked Globals
   ^(           DELIP+8

Cache Objects
   $SYSTEM.OBJ.DeletePackage       DELETE+5

Marked Items
   NONE

Label References
   $$GETDIR     EN+17,EN+20
   DELETE       EN+4
   DELFLD       DELIP+23,DELHP+3,DELHP+4,DELHP+5
   DELFLDQ      DELFLD+3
   DELHP        EN+13
   DELIP        EN+10
   DELIPQ       DELIP+4
   ENQ          EN+18
   INDEX        EN+7

External References
   $$DEFDIR^%ZISH      GETDIR+1
   FIELD^DID           DELIP+3,DELFLD+2
   FILE^DIE            DELIP+18
   ^DIK                DELFLD+7
   ENALL^DIK           INDEX+7,INDEX+14
   $$SUPPORT^XOBWENV   EN+17,EN+21
   $$IMPORT^XOBWLIB1   EN+17
   BMES^XPDUTL         EN+19,DELETE+3,DELETE+6,INDEX+8,INDEX+15,DELIP+19
                       DELFLD+8
   MES^XPDUTL          EN+20,EN+21,EN+22,EN+23,EN+25,EN+26,DELETE+7,DELIP+20

*****   END   *****

XOBWPWD   2997     printed  Mar 13, 2018@10:55:07                      Page 10

XOBWPWD   ;ALB/MJK - HWSC :: Private Password APIs ; 09/13/10 4:00pm
 +1       ;;1.0;HwscWebServiceClient;;September 13, 2010;Build 31
 +2       ;
 +3       ; -- used XOBVJC1 as seed
 +4       ; 
 +5        QUIT 
 +6       ;
EDIT      ; -- edit PASSWORD from DD
 +1        NEW DIR,DIR0,XOBH,XOBMATCH
 +2        SET XOBMATCH=0
 +3       ;
 +4       ; -- if not 'y'es
 +5        IF "Nn"[$EXTRACT(X,1)
               SET X=""
               QUIT 
 +6        IF "Yy"'[$EXTRACT(X,1)
               KILL X
               QUIT 
 +7       ;
 +8       ; -- get good hash or until abort by user 
 +9        FOR 
               Begin DoDot:1
 +10               DO CLR
 +11               SET XOBH=$$ASK()
 +12               IF $DATA(DIRUT)
                       QUIT 
 +13               SET XOBMATCH=$$REASK(XOBH)
               End DoDot:1
               if XOBMATCH!($DATA(DIRUT))
                   QUIT 
 +14      ;
 +15      ; -- if good hash set in file
 +16       IF XOBMATCH
               Begin DoDot:1
 +17               DO CLR
 +18               DO SET(XOBH,1)
               End DoDot:1
 +19      ;
 +20      ; -- clean up
 +21       KILL DUOUT
 +22       IF $DATA(DIRUT)
               SET DUOUT=1
 +23       XECUTE ^%ZOSF("EON")
           WRITE !
 +24       KILL DIR,DIRUT
           SET X=""
 +25       QUIT 
 +26      ;
CLR       ; -- clear to continue
 +1        IF '$DATA(DDS)
               WRITE !
               QUIT 
 +2        NEW DX,DY
 +3        DO CLRMSG^DDS
           SET DX=0
           SET DY=DDSHBX+1
           XECUTE IOXY
 +4        QUIT 
 +5       ;
SET(XOBH,XOBTALK) ; -- set password in entry
 +1        IF $LENGTH(XOBH)
               IF XOBTALK
                   WRITE !,"Ok, password has been changed!"
 +2        NEW FDA,XOBERR
 +3        IF XOBH=""
               SET XOBH="@"
 +4       ; -- password
 +5        SET FDA(18.12,$$IENS^DILF(.DA),300)=XOBH
 +6        DO FILE^DIE("","FDA","XOBERR")
 +7        IF $DATA(XOBERR)
               DO ^%ZTER
 +8        QUIT 
 +9       ;
DEL       ; -- make sure delete is desired
 +1        XECUTE ^%ZOSF("EON")
 +2        WRITE "@",*7
 +3        SET DIR(0)="Y"
           SET DIR("A")="Sure you want to delete"
 +4        DO ^DIR
 +5        IF Y'=1
               if $X>55
                   WRITE !?9
               WRITE *7,"  <Nothing Deleted>"
 +6        QUIT 
 +7       ;
DIRUT     ; -- set abort flag
 +1        SET DIRUT=1
 +2        QUIT 
 +3       ;
ASK()     ; -- setup to ask user for password
 +1        NEW X,XOBX,XOBH
 +2        XECUTE ^%ZOSF("EOFF")
 +3        DO CLR
 +4        WRITE "Enter a new PASSWORD: "
 +5        SET XOBX=$$GET()
 +6        IF $DATA(DIRUT)
               QUIT ""
 +7        IF XOBX="@"
               Begin DoDot:1
 +8                DO DEL
 +9                IF Y'=1
                       DO DIRUT
               End DoDot:1
               QUIT ""
 +10      ;
 +11       DO CLR
 +12       QUIT $$ENCRYP(XOBX)
 +13      ;
REASK(XOBH) ; -- reask user for password
 +1        NEW XOBX,XOBDONE,XOBMATCH,XOBI
 +2        SET XOBDONE=0
 +3        SET XOBMATCH=1
 +4       ;
 +5       ; -- if deleting then auto-match
 +6        IF XOBH=""
               QUIT XOBMATCH
 +7       ;
 +8        SET XOBMATCH=0
 +9        DO CLR
 +10       XECUTE ^%ZOSF("EOFF")
 +11       FOR XOBI=3:-1:1
               Begin DoDot:1
 +12               WRITE "Please re-type the new password to show that I have it right: "
 +13               SET XOBX=$$GET()
 +14      ; -- user is up-arrowing out
 +15               IF $DATA(DIRUT)
                       SET XOBDONE=1
                       QUIT 
 +16      ;
 +17               IF XOBX'=$$DECRYP(XOBH)
                       Begin DoDot:2
 +18                       DO CLR
 +19                       WRITE "This doesn't match.  Try again!",!,*7
                       End DoDot:2
                       QUIT 
 +20      ; -- match entered
 +21               SET XOBDONE=1
 +22               SET XOBMATCH=1
               End DoDot:1
               if XOBDONE
                   QUIT 
 +23       QUIT XOBMATCH
 +24      ;
GET()     ; -- get user input and process for '^' and ''
 +1        SET X=$$ACCEPT(60)
 +2        IF X="@"
               QUIT X
 +3        IF (X["^")!('$LENGTH(X))
               DO DIRUT
 +4        QUIT X
 +5       ;
ACCEPT(TO) ; -- read user input character a time; force exit on '^'; echo '*' back
 +1        NEW C,A,E
 +2        KILL DUOUT
 +3        SET A=""
           SET TO=$GET(TO,60)
           SET E=0
 +4        FOR 
               Begin DoDot:1
 +5                READ "",*C:TO
                   if ('$TEST)
                       SET DUOUT=1
                   if ('$TEST)!(C=94)
                       SET A="^"
 +6                IF (A="^")!(C=13)!($LENGTH(A)>100)
                       SET E=1
                       QUIT 
 +7                IF C=127
                       if '$LENGTH(A)
                           QUIT 
                       SET A=$EXTRACT(A,1,$LENGTH(A)-1)
                       WRITE $CHAR(8,32,8)
                       QUIT 
 +8                SET A=A_$CHAR(C)
                   WRITE *42
 +9                QUIT 
               End DoDot:1
               if E
                   QUIT 
 +10       QUIT A
 +11      ;
ENCRYP(XOBX) ; -- Kernel encode
 +1        QUIT $$ENCRYP^XUSRB1(XOBX)
 +2       ;
DECRYP(XOBH) ; -- Kernel decode
 +1        QUIT $$DECRYP^XUSRB1(XOBH)
 +2       ;


*****   INDEX OF XOBWPWD   *****


Local Variables      Line Occurrences   ( >> not killed explicitly)
                                        ( * Changed  ! Killed  ~ Newed)
   A            ACCEPT+1~,ACCEPT+3*,ACCEPT+5*,ACCEPT+6,ACCEPT+7*,ACCEPT+8*
                ACCEPT+10
   C            ACCEPT+1~,ACCEPT+5*,ACCEPT+6,ACCEPT+7,ACCEPT+8
>> DA           SET+5
>> DDS          CLR+1
>> DDSHBX       CLR+3
   DIR          EDIT+1~,EDIT+24!
   DIR("A"      DEL+3*
   DIR(0        DEL+3*
   DIR0         EDIT+1~
   DIRUT        EDIT+9,EDIT+12,EDIT+22,EDIT+24!,DIRUT+1*,ASK+6,REASK+15
   DUOUT        EDIT+21!,EDIT+22*,ACCEPT+2!,ACCEPT+5*
   DX           CLR+2~,CLR+3*
   DY           CLR+2~,CLR+3*
   E            ACCEPT+1~,ACCEPT+3*,ACCEPT+4,ACCEPT+6*
   FDA          SET+2~
   FDA(         SET+5*
>> IOXY         CLR+3
   TO           ACCEPT~,ACCEPT+3*,ACCEPT+5
   X            EDIT+5*,EDIT+6!,EDIT+24*,ASK+1~,GET+1*,GET+2,GET+3,GET+4
   XOBDONE      REASK+1~,REASK+2*,REASK+11,REASK+15*,REASK+21*
   XOBERR       SET+2~,SET+7
   XOBH         EDIT+1~,EDIT+11*,EDIT+13,EDIT+18,SET~,SET+1,SET+3*,SET+5,ASK+1~
                REASK~,REASK+6,REASK+17,DECRYP~,DECRYP+1
   XOBI         REASK+1~,REASK+11*
   XOBMATCH     EDIT+1~,EDIT+2*,EDIT+9,EDIT+13*,EDIT+16,REASK+1~,REASK+3*
                REASK+6,REASK+8*,REASK+22*,REASK+23
   XOBTALK      SET~,SET+1
   XOBX         ASK+1~,ASK+5*,ASK+7,ASK+12,REASK+1~,REASK+13*,REASK+17,ENCRYP~
                ENCRYP+1
>> Y            DEL+5,ASK+9

Global Variables  ( * Changed  ! Killed)
   ^%ZOSF("EOFF"       ASK+2,REASK+10
   ^%ZOSF("EON"        EDIT+23,DEL+1

Naked Globals
   NONE

Cache Objects
   NONE

Marked Items
   NONE

Label References
   $$ACCEPT     GET+1
   $$ASK        EDIT+11
   $$DECRYP     REASK+17
   $$ENCRYP     ASK+12
   $$GET        ASK+5,REASK+13
   $$REASK      EDIT+13
   CLR          EDIT+10,EDIT+17,ASK+3,ASK+11,REASK+9,REASK+18
   DEL          ASK+8
   DIRUT        ASK+9,GET+3
   SET          EDIT+18

External References
   ^%ZTER              SET+7
   CLRMSG^DDS          CLR+3
   FILE^DIE            SET+6
   $$IENS^DILF         SET+5
   ^DIR                DEL+4
   $$DECRYP^XUSRB1     DECRYP+1
   $$ENCRYP^XUSRB1     ENCRYP+1

*****   END   *****

XOBWSSL   3600     printed  Mar 13, 2018@10:55:07                      Page 11

XOBWSSL   ;ALB/MJK - HWSC :: SSL Integration Tools ; 09/13/10 4:00pm
 +1       ;;1.0;HwscWebServiceClient;;September 13, 2010;Build 31
 +2       ;
 +3        QUIT 
 +4       ;
CHKNAME(XOBCFGN) ; -- match configuration name / used by input transform (18.12 : 3.02)
 +1       ; skip match checking if Cache 2008/higher, can't check oustide %SYS 
           if $$CACH2008()
               QUIT 1
 +2        NEW MATCH,STATUS,RS,MORE
 +3        SET MATCH=0
 +4        SET RS=##class(%ResultSet).%New("%Net.SSL.Configuration:ListNames")
 +5 
*** ERROR ***
           IF $system.Status.IsError(RS.Execute())
               GOTO CHKNAMEQ
 +6       ; -- see if there is a match
 +7        FOR 
               SET MORE=RS.Next(.STATUS)

*** ERROR ***
               if 'MORE!($system.Status.IsError(STATUS))
                   QUIT 
               Begin DoDot:1
 +8                IF XOBCFGN=$GET(RS.Data("Name"))
                       SET MATCH=1
                       QUIT 
               End DoDot:1
               if MATCH
                   QUIT 
CHKNAMEQ  ; -- check name quit point
 +1        QUIT MATCH
 +2       ;
DISPLAY   ; -- display list of SSL configuration names  / used by XECUTABLE HELP (18.12 :3.02)
 +1       ; skip display if Cache 2008/higher, can't check oustide %SYS 
           if $$CACH2008()
               QUIT 
 +2        NEW COUNT,RS,STATUS
 +3        SET COUNT=0
 +4        DO EN^DDIOL("Possible SSL configurations are the following:")
 +5        SET RS=##class(%ResultSet).%New("%Net.SSL.Configuration:ListNames")
 +6 
*** ERROR ***
           IF $system.Status.IsError(RS.Execute())
               GOTO DISPLAYQ
 +7       ; -- display the names
 +8        FOR 
               SET MORE=RS.Next(.STATUS)

*** ERROR ***
               if 'MORE!($system.Status.IsError(STATUS))
                   QUIT 
               Begin DoDot:1
 +9                DO EN^DDIOL("- "_$GET(RS.Data("Name")),"","!?5")
 +10               SET COUNT=COUNT+1
               End DoDot:1
DISPLAYQ  ; -- display list quit point
 +1        IF COUNT=0
               DO EN^DDIOL("<No SSL configurations defined>","","!?5")
 +2        QUIT 
 +3       ;
GETCFG(XOBCFGN) ; -- get %Net.SSL.Configuration instance
 +1        NEW STATUS,RS,MORE,CFG
 +2        SET CFG=""
 +3        SET RS=##class(%ResultSet).%New("%Net.SSL.Configuration:Extent")
 +4 
*** ERROR ***
           IF $system.Status.IsError(RS.Execute())
               GOTO GETCFGQ
 +5       ; -- see if there is a match
 +6        FOR 
               SET MORE=RS.Next(.STATUS)

*** ERROR ***
               if 'MORE!($system.Status.IsError(STATUS))
                   QUIT 
               Begin DoDot:1
 +7                SET CFG=##class(%Net.SSL.Configuration).%OpenId(RS.Data("ID"))
 +8                IF XOBCFGN=CFG.Name
                       QUIT 
 +9                SET CFG=""
               End DoDot:1
               if CFG]""
                   QUIT 
GETCFGQ   ; -- get SSL config instance exit point
 +1        QUIT CFG
 +2       ;
SHOW(XOBCFGN) ; -- simple display of SSL Configuration
 +1       ; skip if Cache 2008/higher, can't check oustide %SYS 
           if $$CACH2008()
               QUIT 
 +2        NEW CFG
 +3        SET CFG=$$GETCFG(XOBCFGN)
 +4        IF CFG=""
               GOTO SHOWQ
 +5        WRITE !,"SSL Configuration Name: ",!?5," > ",CFG.Name
 +6        WRITE !,"File containing X.509 certificate(s) of trusted CAs: ",!?5," > ",$$GETSTR(CFG.CAFile)
 +7        WRITE !,"Directory containing file(s) with X.509 certificate(s) of trusted CA: ",!?5," > ",$$GETSTR(CFG.CAPath)
 +8        WRITE !,"File containing this configuration's X.509 certificate: ",!?5," > ",$$GETSTR(CFG.CertificateFile)
 +9        WRITE !,"Ciphersuites: ",!?5," > ",$$GETSTR(CFG.CipherList)
 +10       WRITE !,"File containing this configuration's private key: ",!?5," > ",$$GETSTR(CFG.PrivateKeyFile)
 +11       WRITE !,"Private key type: ",!?5," > ",$$GETSTR($SELECT(CFG.PrivateKeyType=1:"DSA",CFG.PrivateKeyType=2:"RSA",1:""))
 +12       WRITE !,"Intended role for this configuration: ",!?5," > ",$$GETSTR($SELECT(CFG.Role=0:"client",CFG.Role=1:"server",1:""))
 +13       WRITE !,"Peer certificate verification level: "
           Begin DoDot:1
 +14      ; -- client role
 +15           IF CFG.Role=0
                   WRITE !?5," > ",$$GETSTR($SELECT(CFG.VerifyPeer=0:"none",CFG.VerifyPeer=1:"required",1:""))
                   QUIT 
 +16      ; -- server role
 +17           IF CFG.Role=1
                   WRITE !?5," > ",$$GETSTR($SELECT(CFG.VerifyPeer=0:"none",CFG.VerifyPeer=1:"request",CFG.VerifyPeer=3:"required",1:""))
                   QUIT 
           End DoDot:1
 +18       WRITE !,"Maximum number of CA certificates allowed in peer certificate chain: ",!?5," > ",$$GETSTR(CFG.VerifyDepth)
SHOWQ     ;
 +1        QUIT 
 +2       ;
GETSTR(STR) ; 
 +1        QUIT $SELECT(STR]"":STR,1:"<null>")
 +2       ;
CACH2008() ; quit 1 if OS is 2008 or higher
 +1        NEW XOBVER
 +2        SET XOBVER=$$VERSION^%ZOSV()
 +3        IF +$PIECE(XOBVER,".")>2007
               QUIT 1
 +4        QUIT 0


*****   INDEX OF XOBWSSL   *****


Local Variables      Line Occurrences   ( >> not killed explicitly)
                                        ( * Changed  ! Killed  ~ Newed)
   CFG          GETCFG+1~,GETCFG+2*,GETCFG+6,GETCFG+7*,GETCFG+9*,GETCFGQ+1
                SHOW+2~,SHOW+3*,SHOW+4
   COUNT        DISPLAY+2~,DISPLAY+3*,DISPLAY+10*,DISPLAYQ+1
   MATCH        CHKNAME+2~,CHKNAME+3*,CHKNAME+7,CHKNAME+8*,CHKNAMEQ+1
   MORE         CHKNAME+2~,CHKNAME+7*,DISPLAY+8*,GETCFG+1~,GETCFG+6*
   RS           CHKNAME+2~,CHKNAME+4*,DISPLAY+2~,DISPLAY+5*,GETCFG+1~,GETCFG+3*
   STATUS       CHKNAME+2~,CHKNAME+7,DISPLAY+2~,DISPLAY+8,GETCFG+1~,GETCFG+6
   STR          GETSTR~,GETSTR+1
   XOBCFGN      CHKNAME~,CHKNAME+8,GETCFG~,GETCFG+8,SHOW~,SHOW+3
   XOBVER       CACH2008+1~,CACH2008+2*,CACH2008+3

Global Variables  ( * Changed  ! Killed)
   NONE

Naked Globals
   NONE

Cache Objects
   $system.Status.IsError          CHKNAME+5,CHKNAME+7,DISPLAY+6,DISPLAY+8
                                   GETCFG+4,GETCFG+6
   %Net.SSL.Configuration          GETCFG+7
   %ResultSet                      CHKNAME+4,DISPLAY+5,GETCFG+3
   CFG.CAFile                      SHOW+6
   CFG.CAPath                      SHOW+7
   CFG.CertificateFile             SHOW+8
   CFG.CipherList                  SHOW+9
   CFG.Name                        GETCFG+8,SHOW+5
   CFG.PrivateKeyFile              SHOW+10
   CFG.PrivateKeyType              SHOW+11
   CFG.Role                        SHOW+12,SHOW+15,SHOW+17
   CFG.VerifyDepth                 SHOW+18
   CFG.VerifyPeer                  SHOW+15,SHOW+17
   RS.Data                         CHKNAME+8,DISPLAY+9,GETCFG+7
   RS.Execute                      CHKNAME+5,DISPLAY+6,GETCFG+4
   RS.Next                         CHKNAME+7,DISPLAY+8,GETCFG+6

Marked Items
   NONE

Label References
   $$CACH2008   CHKNAME+1,DISPLAY+1,SHOW+1
   $$GETCFG     SHOW+3
   $$GETSTR     SHOW+6,SHOW+7,SHOW+8,SHOW+9,SHOW+10,SHOW+11,SHOW+12,SHOW+15
                SHOW+17,SHOW+18
   CHKNAMEQ     CHKNAME+5
   DISPLAYQ     DISPLAY+6
   GETCFGQ      GETCFG+4
   SHOWQ        SHOW+4

External References
   $$VERSION^%ZOSV     CACH2008+2
   EN^DDIOL            DISPLAY+4,DISPLAY+9,DISPLAYQ+1

*****   END   *****

XOBWU   2993     printed  Mar 13, 2018@10:55:07                        Page 12

XOBWU     ;ALB/MJK - HWSC :: Web Server Manager ; 09/13/10 4:00pm
 +1       ;;1.0;HwscWebServiceClient;;September 13, 2010;Build 31
 +2       ;
 +3        QUIT 
 +4       ;
EN        ; -- main entry point for XOBW WEB SERVER
 +1        NEW VALMBCK
 +2        KILL ^TMP("XOB WEBSERVERS",$JOB)
 +3        SET VALMBCK=""
 +4        DO EN^VALM("XOBW WEB SERVER")
 +5        QUIT 
 +6       ;
HDR       ; -- header code
 +1        NEW Y
 +2        SET X="                       HWSC Web Server Manager"
 +3        SET VALMHDR(1)=X
 +4        SET X="                      Version: "_$PIECE($TEXT(XOBWU+1),";",3)_"     Build: "_$$VERSION^XOBWENV()
 +5        SET VALMHDR(2)=X
 +6        QUIT 
 +7       ;
INIT      ; -- init variables and list array
 +1        DO CLEAR
 +2        DO MSG
 +3        QUIT 
 +4       ;
MSG       ; -- set default message
 +1        SET VALMSG="Legend:  *Enabled"
 +2        QUIT 
 +3       ;
BUILD     ; -- build list
 +1        NEW I,XOBI,XOB0,X,XOBDATA,XOBROOT,XOBSITEI,Y
 +2        DO KILL
 +3       ;
 +4        SET VALMCNT=0
 +5        SET XOBROOT=$NAME(XOBDATA("DILIST","ID"))
 +6        DO LIST^DIC(18.12,"",".01;.03;.04;.06;3.01;3.03","I","","","","","","",$NAME(XOBDATA))
 +7        SET XOBI=0
 +8        FOR 
               SET XOBI=$ORDER(@XOBROOT@(XOBI))
               if 'XOBI
                   QUIT 
               Begin DoDot:1
 +9                SET VALMCNT=VALMCNT+1
 +10               SET X=""
 +11               SET X=$$SETFLD^VALM1(VALMCNT,X,"ID")
 +12               SET X=$$SETFLD^VALM1($GET(@XOBROOT@(XOBI,.01)),X,"NAME")
 +13               SET X=$$SETFLD^VALM1($GET(@XOBROOT@(XOBI,.04))_":"_$$GETPORT(.XOBROOT,XOBI),X,"IP")
 +14               SET X=$$SETFLD^VALM1($SELECT(+$GET(@XOBROOT@(XOBI,.06)):"*",1:""),X,"ENABLED")
 +15               DO SET^VALM10(VALMCNT,X,VALMCNT)
 +16               SET ^TMP("XOB WEBSERVERS","IDX",$JOB,VALMCNT,VALMCNT)=+$GET(XOBDATA("DILIST",2,XOBI))
               End DoDot:1
 +17      ;
 +18       QUIT 
 +19      ;
GETPORT(XOBROOT,XOBI) ; -- return reg or SSL port
 +1        IF +$GET(@XOBROOT@(XOBI,3.01))
               QUIT $GET(@XOBROOT@(XOBI,3.03))_" (SSL)"
 +2        QUIT $GET(@XOBROOT@(XOBI,.03))
 +3       ;
CLEAR     ; -- clean up entries
 +1        DO REFRESH
 +2        QUIT 
 +3       ;
REFRESH   ; -- refresh display
 +1        DO BUILD
 +2        SET VALMBCK="R"
 +3        QUIT 
 +4       ;
KILL      ; -- kill off list location
 +1        KILL ^TMP("XOB WEBSERVERS",$JOB)
 +2        KILL ^TMP("XOB WEBSERVERS","IDX",$JOB)
 +3        QUIT 
 +4       ;
HELP      ; -- help code
 +1        SET X="?"
           DO DISP^XQORM1
           WRITE !!
 +2        QUIT 
 +3       ;
EXIT      ; -- exit code
 +1        QUIT 
 +2       ;
ADD       ; -- add an web server entry
 +1       ; -- Protocol: XOBW WEB SERVER ADD
 +2        DO ACTION("ADD",0)
 +3        QUIT 
 +4       ;
EDIT      ; -- edit web server entry
 +1       ; -- Protocol: XOBW WEB SERVER EDIT
 +2        DO ACTION("EDIT",0)
 +3        QUIT 
 +4       ;
DEL       ; -- delete web server entry
 +1       ; -- Protocol: XOBW WEB SERVER DELETE
 +2        DO ACTION("DEL",0)
 +3        QUIT 
 +4       ;
EXPAND    ; -- expand web server entry
 +1        DO ACTION("EXPAND",1)
 +2        QUIT 
 +3       ;
AVAIL     ; -- test web services availability
 +1       ; -- Protocol: XOBW WEB SERVER TEST WS AVAILABILITY
 +2        DO ACTION("AVAIL",0)
 +3        QUIT 
 +4       ;
WST       ; -- web server tester
 +1       ; -- Protocol: XOBW WEB SERVER TESTER
 +2        DO EN1^XOBTWU
 +3        DO REFRESH
 +4        DO MSG
 +5        QUIT 
 +6       ;
WSM       ; -- web service manager
 +1       ; -- Protocol: XOBW WEB SERVICE MANAGER
 +2        DO EN^XOBWUS
 +3        DO REFRESH
 +4        DO MSG
 +5        QUIT 
 +6       ;
LKM       ; -- lookup key manager
 +1       ; -- Protocol: XOBW WEB SERVER LOOKUP KEY MANAGER
 +2        DO EN^XOBWUA
 +3        DO REFRESH
 +4        DO MSG
 +5        QUIT 
 +6       ;
ACTION(TYPE,XOBPAUSE) ; -- execute action
 +1        DO FULL^VALM1
 +2        NEW X,Y
 +3        SET X="DO "_TYPE_"^XOBWU1"
 +4        XECUTE X
 +5        IF XOBPAUSE
               DO PAUSE^VALM1
 +6        DO REFRESH
 +7        DO MSG
 +8        QUIT 
 +9       ;

*****   ERRORS & WARNINGS IN XOBWU   *****
   WST+2        F - Reference to routine '^XOBTWU'. That isn't in this UCI.

*****   INDEX OF XOBWU   *****


Local Variables      Line Occurrences   ( >> not killed explicitly)
                                        ( * Changed  ! Killed  ~ Newed)
   I            BUILD+1~
   TYPE         ACTION~,ACTION+3
   VALMBCK      EN+1~,EN+3*,REFRESH+2*
>> VALMCNT      BUILD+4*,BUILD+9*,BUILD+11,BUILD+15,BUILD+16
>> VALMHDR(1    HDR+3*
>> VALMHDR(2    HDR+5*
>> VALMSG       MSG+1*
   X            HDR+2*,HDR+3,HDR+4*,HDR+5,BUILD+1~,BUILD+10*,BUILD+11*
                BUILD+12*,BUILD+13*,BUILD+14*,BUILD+15,HELP+1*,ACTION+2~
                ACTION+3*,ACTION+4
   XOB0         BUILD+1~
   XOBDATA      BUILD+1~,BUILD+6
   XOBDATA("DILIST" 
                BUILD+5,BUILD+16
   XOBI         BUILD+1~,BUILD+7*,BUILD+8*,BUILD+12,BUILD+13,BUILD+14,BUILD+16
                GETPORT~,GETPORT+1,GETPORT+2
   XOBPAUSE     ACTION~,ACTION+5
   XOBROOT      BUILD+1~,BUILD+5*,BUILD+8,BUILD+12,BUILD+13,BUILD+14,GETPORT~
                GETPORT+1,GETPORT+2
   XOBSITEI     BUILD+1~
   Y            HDR+1~,BUILD+1~,ACTION+2~

Global Variables  ( * Changed  ! Killed)
   ^TMP("XOB WEBSERVERS"
                       EN+2!,BUILD+16*,KILL+1!,KILL+2!

Naked Globals
   NONE

Cache Objects
   NONE

Marked Items
   $T(XOBWU+1   HDR+4

Label References
   $$GETPORT    BUILD+13
   ACTION       ADD+2,EDIT+2,DEL+2,EXPAND+1,AVAIL+2
   BUILD        REFRESH+1
   CLEAR        INIT+1
   KILL         BUILD+2
   MSG          INIT+2,WST+4,WSM+4,LKM+4,ACTION+7
   REFRESH      CLEAR+1,WST+3,WSM+3,LKM+3,ACTION+6

External References
   LIST^DIC            BUILD+6
   EN^VALM             EN+4
   $$SETFLD^VALM1      BUILD+11,BUILD+12,BUILD+13,BUILD+14
   FULL^VALM1          ACTION+1
   PAUSE^VALM1         ACTION+5
   SET^VALM10          BUILD+15
   EN1^XOBTWU          WST+2
   $$VERSION^XOBWENV   HDR+4
   EN^XOBWUA           LKM+2
   EN^XOBWUS           WSM+2
   DISP^XQORM1         HELP+1

*****   END   *****

XOBWU1   4119     printed  Mar 13, 2018@10:55:07                       Page 13

XOBWU1    ;ALB/MJK - HWSC :: Web Server Manager ; 09/13/10 4:00pm
 +1       ;;1.0;HwscWebServiceClient;;September 13, 2010;Build 31
 +2       ;
 +3        QUIT 
 +4       ;
ADD       ; -- add web server entry
 +1        NEW DIC,Y,XOBY,D
 +2        WRITE !
 +3        SET DIC="^XOB(18.12,"
           SET DIC(0)="AELQ"
           SET D="B"
           DO IX^DIC
           KILL DIC
 +4        SET XOBY=Y
 +5        IF +XOBY>0
               IF '$PIECE(XOBY,U,3)
                   Begin DoDot:1
 +6                    DO DISPLAY("",+XOBY)
 +7                    WRITE !!,"This is not a new entry! Please use 'Edit Server' action."
 +8                    DO PAUSE^VALM1
                   End DoDot:1
                   GOTO ADDQ
 +9        IF +XOBY>0
               IF $PIECE(XOBY,U,3)
                   DO DOEDIT(+XOBY)
ADDQ      ;
 +1        QUIT 
 +2       ;
EDIT      ; -- edit web server entry
 +1        NEW DA,DR,DIE,XOBI,VALMY
 +2        DO EN^VALM2(XQORNOD(0),"OS")
 +3        SET XOBI=+$ORDER(VALMY(""))
 +4        IF XOBI>0
               DO DOEDIT(+$GET(^TMP("XOB WEBSERVERS","IDX",$JOB,XOBI,XOBI)))
EDITQ     ;
 +1        QUIT 
 +2       ;
DOEDIT(DA) ; -- do actual web server edit
 +1        NEW DR,DIE
 +2        SET DR="[XOBW WEB SERVER SETUP]"
           SET DIE="^XOB(18.12,"
           DO ^DIE
 +3        QUIT 
 +4       ;
DEL       ; -- delete web server entry
 +1        NEW XOBI,VALMY,Y,XOBDA
 +2        DO EN^VALM2(XQORNOD(0),"OS")
 +3        SET XOBI=+$ORDER(VALMY(""))
 +4       ; -- quit if nothing selected
 +5        IF XOBI'>0
               GOTO DELQ
 +6       ; -- display entry, ask if 'ok' and delete
 +7        SET XOBDA=+$GET(^TMP("XOB WEBSERVERS","IDX",$JOB,XOBI,XOBI))
 +8        DO DISPLAY(XOBI,XOBDA)
 +9        IF $ORDER(^XOB(18.13,"WS",XOBDA,""))]""
               Begin DoDot:1
 +10               WRITE !,*7
 +11               WRITE !,"************************************************************"
 +12               WRITE !,"* Lookup keys are still associated with this web server.   *"
 +13               WRITE !,"*                  Deletion prohibited!                    *"
 +14               WRITE !,"* Use the 'Lookup Key Manager' to change key associations. *"
 +15               WRITE !,"************************************************************"
 +16               DO PAUSE^VALM1
               End DoDot:1
               GOTO DELQ
 +17       Begin DoDot:1
 +18           NEW DIR
 +19           SET DIR("A")="Are you sure you want to delete entry"
 +20           SET DIR("B")="NO"
               SET DIR(0)="Y"
 +21           WRITE !
 +22           DO ^DIR
           End DoDot:1
 +23       IF '$GET(Y)
               Begin DoDot:1
 +24               WRITE !!,"Deletion aborted."
 +25               DO PAUSE^VALM1
               End DoDot:1
               GOTO DELQ
 +26      ; -- execute deletion
 +27       DO DODEL(XOBDA)
 +28       WRITE !!,"Entry has been deleted."
 +29       DO PAUSE^VALM1
DELQ      ;
 +1        QUIT 
 +2       ;
DODEL(DA) ; -- do actual web server delete
 +1        NEW DIK
 +2        SET DIK="^XOB(18.12,"
           DO ^DIK
 +3        QUIT 
 +4       ;
EXPAND    ; -- expand Protocol
 +1        NEW DA,DIC,XOBI,VALMY
 +2        DO EN^VALM2(XQORNOD(0),"OS")
 +3        SET XOBI=+$ORDER(VALMY(""))
 +4        IF XOBI>0
               DO DISPLAY(XOBI,+$GET(^TMP("XOB WEBSERVERS","IDX",$JOB,XOBI,XOBI)))
 +5        QUIT 
 +6       ;
DISPLAY(XOBI,DA) ; display web server informaton
 +1       ; input: XOBI == list entry number
 +2       ;        DA   == internal entry number in file 18.12
 +3        NEW DIC,XOBLINE,XOBDASH,IEN,IEN0,KEY,XOBY
 +4        SET $PIECE(XOBLINE,"=",$GET(IOM,80))=""
 +5        SET $PIECE(XOBDASH,"-",$GET(IOM,80))=""
 +6        DO CLEAR^VALM1
 +7        WRITE !,XOBLINE
 +8        IF $GET(XOBI)
               Begin DoDot:1
 +9                WRITE !,@VALMAR@(XOBI,0)
 +10               WRITE !,XOBDASH
               End DoDot:1
 +11       SET DIC="^XOB(18.12,"
 +12       DO EN^DIQ
 +13       WRITE XOBDASH
 +14      ; -- display lookup keys associated with web server
 +15       WRITE !,"Lookup keys associated with server:"
 +16       SET IEN=""
 +17       FOR 
               SET IEN=$ORDER(^XOB(18.13,"WS",DA,IEN))
               if 'IEN
                   QUIT 
               Begin DoDot:1
 +18               SET IEN0=$GET(^XOB(18.13,IEN,0))
 +19               SET KEY=$PIECE(IEN0,"^")
 +20               IF KEY]""
                       SET XOBY(KEY)=$PIECE(IEN0,"^",2)
               End DoDot:1
 +21       IF $ORDER(XOBY(""))]""
               Begin DoDot:1
 +22               SET KEY=""
                   FOR 
                       SET KEY=$ORDER(XOBY(KEY))
                       if KEY=""
                           QUIT 
                       Begin DoDot:2
 +23                       WRITE !?2,"o ",KEY," - ",XOBY(KEY)
                       End DoDot:2
               End DoDot:1
 +24      IF '$TEST
               Begin DoDot:1
 +25               WRITE !?3,"<No lookup keys associations>"
               End DoDot:1
 +26       WRITE !,XOBLINE
 +27       QUIT 
 +28      ;
AVAIL     ; -- check web service availabilities
 +1        NEW XOBI,XOBY,VALMY
 +2        DO EN^VALM2(XQORNOD(0),"OS")
 +3        SET XOBI=+$ORDER(VALMY(""))
 +4        IF $GET(XOBI)
               Begin DoDot:1
 +5                SET XOBY("HEADER",1)="Web Server: "
 +6                SET XOBY("HEADER",2)=@VALMAR@(XOBI,0)
 +7                SET XOBY("TITLE")="Web Service Availability"
 +8                SET XOBY("BUILD CALLBACK")="DO BUILD^XOBWU1("_+$GET(^TMP("XOB WEBSERVERS","IDX",$JOB,XOBI,XOBI))_")"
 +9                DO EN^XOBWUS2(.XOBY)
               End DoDot:1
 +10       QUIT 
 +11      ;
BUILD(XOBDA) ; -- test web services availability
 +1        NEW XOBSRVR,XOBY,XOBDOTS,XOBI,XOBX
 +2        DO CLEAN^VALM10
 +3        SET XOBSRVR=##class(xobw.WebServer).%OpenId(XOBDA)
 +4        SET VALMCNT=0
 +5       ; -- write dots during check processing
           SET XOBDOTS=1
 +6        SET XOBY=XOBSRVR.checkWebServicesAvailability(XOBDOTS)
 +7        IF XOBY]""
               IF XOBY.Count()>0
                   Begin DoDot:1
 +8                    FOR XOBI=1:1:XOBY.Count()
                           SET XOBX=XOBY.GetAt(XOBI)
                           if XOBI=""
                               QUIT 
                           DO ADDLN("  "_XOBX)
                   End DoDot:1
 +9        QUIT 
 +10      ;
ADDLN(XOBTEXT) ; -- add line utility
 +1        SET VALMCNT=VALMCNT+1
 +2        DO SET^VALM10(VALMCNT,XOBTEXT)
 +3        QUIT 
 +4       ;


*****   INDEX OF XOBWU1   *****


Local Variables      Line Occurrences   ( >> not killed explicitly)
                                        ( * Changed  ! Killed  ~ Newed)
   D            ADD+1~,ADD+3*
   DA           EDIT+1~,DOEDIT~,DODEL~,EXPAND+1~,DISPLAY~,DISPLAY+17
   DIC          ADD+1~,ADD+3*!,EXPAND+1~,DISPLAY+3~,DISPLAY+11*
   DIC(0        ADD+3*
   DIE          EDIT+1~,DOEDIT+1~,DOEDIT+2*
   DIK          DODEL+1~,DODEL+2*
   DIR          DEL+18~
   DIR("A"      DEL+19*
   DIR("B"      DEL+20*
   DIR(0        DEL+20*
   DR           EDIT+1~,DOEDIT+1~,DOEDIT+2*
   IEN          DISPLAY+3~,DISPLAY+16*,DISPLAY+17*,DISPLAY+18
   IEN0         DISPLAY+3~,DISPLAY+18*,DISPLAY+19,DISPLAY+20
   IOM          DISPLAY+4,DISPLAY+5
   KEY          DISPLAY+3~,DISPLAY+19*,DISPLAY+20,DISPLAY+22*,DISPLAY+23
   U            ADD+5,ADD+9
>> VALMAR       DISPLAY+9,AVAIL+6
>> VALMCNT      BUILD+4*,ADDLN+1*,ADDLN+2
   VALMY        EDIT+1~,DEL+1~,EXPAND+1~,AVAIL+1~
   VALMY(""     EDIT+3,DEL+3,EXPAND+3,AVAIL+3
   XOBDA        DEL+1~,DEL+7*,DEL+8,DEL+9,DEL+27,BUILD~,BUILD+3
   XOBDASH      DISPLAY+3~,DISPLAY+5*,DISPLAY+10,DISPLAY+13
   XOBDOTS      BUILD+1~,BUILD+5*,BUILD+6
   XOBI         EDIT+1~,EDIT+3*,EDIT+4,DEL+1~,DEL+3*,DEL+5,DEL+7,DEL+8
                EXPAND+1~,EXPAND+3*,EXPAND+4,DISPLAY~,DISPLAY+8,DISPLAY+9
                AVAIL+1~,AVAIL+3*,AVAIL+4,AVAIL+6,AVAIL+8,BUILD+1~,BUILD+8*
   XOBLINE      DISPLAY+3~,DISPLAY+4*,DISPLAY+7,DISPLAY+26
   XOBSRVR      BUILD+1~,BUILD+3*
   XOBTEXT      ADDLN~,ADDLN+2
   XOBX         BUILD+1~,BUILD+8*
   XOBY         ADD+1~,ADD+4*,ADD+5,ADD+6,ADD+9,DISPLAY+3~,AVAIL+1~,AVAIL+9
                BUILD+1~,BUILD+6*,BUILD+7
   XOBY(        DISPLAY+20*,DISPLAY+22,DISPLAY+23
   XOBY(""      DISPLAY+21
   XOBY("BUILD CALLBACK" 
                AVAIL+8*
   XOBY("HEADER" 
                AVAIL+5*,AVAIL+6*
   XOBY("TITLE" AVAIL+7*
>> XQORNOD(0    EDIT+2,DEL+2,EXPAND+2,AVAIL+2
   Y            ADD+1~,ADD+4,DEL+1~,DEL+23

Global Variables  ( * Changed  ! Killed)
   ^TMP("XOB WEBSERVERS"
                       EDIT+4,DEL+7,EXPAND+4,AVAIL+8
   ^XOB(18.13          DEL+9,DISPLAY+17,DISPLAY+18

Naked Globals
   NONE

Cache Objects
   XOBSRVR.checkWebServicesAvailability
                                   BUILD+6
   XOBY.Count                      BUILD+7,BUILD+8
   XOBY.GetAt                      BUILD+8
   xobw.WebServer                  BUILD+3

Marked Items
   NONE

Label References
   ADDLN        BUILD+8
   ADDQ         ADD+5
   DELQ         DEL+5,DEL+9,DEL+23
   DISPLAY      ADD+6,DEL+8,EXPAND+4
   DODEL        DEL+27
   DOEDIT       ADD+9,EDIT+4

External References
   IX^DIC              ADD+3
   ^DIE                DOEDIT+2
   ^DIK                DODEL+2
   EN^DIQ              DISPLAY+12
   ^DIR                DEL+22
   CLEAR^VALM1         DISPLAY+6
   PAUSE^VALM1         ADD+8,DEL+16,DEL+25,DEL+29
   CLEAN^VALM10        BUILD+2
   SET^VALM10          ADDLN+2
   EN^VALM2            EDIT+2,DEL+2,EXPAND+2,AVAIL+2
   EN^XOBWUS2          AVAIL+9

*****   END   *****

XOBWUA   3997     printed  Mar 13, 2018@10:55:07                       Page 14

XOBWUA    ;OAK/KEC - HWSC :: Web Server Lookup Key Manager ; 09/13/10 4:00pm
 +1       ;;1.0;HwscWebServiceClient;;September 13, 2010;Build 31
 +2       ;
 +3        QUIT 
 +4       ;
EN        ; -- main entry point for XOBW WEB SERVER LOOKUPKEY
 +1        NEW XOBSORT,XOBKFILT,XOBSFILT,X
 +2       ; default sort by KEY
           SET XOBSORT="K"
 +3        SET XOBKFILT=""
 +4        SET XOBSFILT=""
 +5        DO KILL
 +6        SET VALMBCK=""
 +7        DO EN^VALM("XOBW WEB SERVER LOOKUPKEY")
 +8        QUIT 
 +9       ;
HDR       ; -- header code
 +1        SET X="                  HWSC Web Server Lookup Key Manager"
 +2        SET VALMHDR(1)=X
 +3        SET X="                      Version: "_$PIECE($TEXT(XOBWUA+1),";",3)_"     Build: "_$$VERSION^XOBWENV()
 +4        SET VALMHDR(2)=X
 +5        SET X=$SELECT(XOBSFILT]"":XOBSFILT,1:"<no filter>")
 +6        SET VALMHDR(3)="Filters:  Key = "_$SELECT(XOBKFILT]"":XOBKFILT,1:"<no filter>")_"   Server = "_X
 +7        QUIT 
 +8       ;
CHGCAP    ; -- change captions to indicate sort
 +1        NEW KEYCAP,SRVCAP
 +2        SET KEYCAP="Lookup Key Name"
 +3        SET SRVCAP="Web Server Name"
 +4        IF XOBSORT="K"
               Begin DoDot:1
 +5                DO CHGCAP^VALM("KEY",KEYCAP_" [Sorted By]")
 +6                DO CHGCAP^VALM("SERVER",SRVCAP)
               End DoDot:1
 +7       IF '$TEST
               Begin DoDot:1
 +8                DO CHGCAP^VALM("SERVER",SRVCAP_" [Sorted By]")
 +9                DO CHGCAP^VALM("KEY",KEYCAP)
               End DoDot:1
 +10       QUIT 
 +11      ;
INIT      ; -- init variables and list array
 +1        DO CLEAR
 +2        DO MSG
 +3        DO CHGCAP
 +4        QUIT 
 +5       ;
MSG       ; -- set default message
 +1        SET VALMSG=""
 +2        QUIT 
 +3       ;
BUILD     ; -- build list
 +1        NEW I,XOBI,XOB0,X,XOBDATA,XOBROOT,XOBSITEI,Y,SORT,XOBX,XOBKEY,XOBSRVR
 +2        DO KILL
 +3       ;
 +4        SET VALMCNT=0
 +5        SET XOBROOT=$NAME(XOBDATA("DILIST","ID"))
 +6        DO LIST^DIC(18.13,"",".01;.03","","","","","","","",$NAME(XOBDATA))
 +7       ; -- build sort
 +8        SET XOBI=0
 +9        FOR 
               SET XOBI=$ORDER(@XOBROOT@(XOBI))
               if 'XOBI
                   QUIT 
               Begin DoDot:1
 +10               SET XOBX=$SELECT(XOBSORT="S":$GET(@XOBROOT@(XOBI,.03)),1:$GET(@XOBROOT@(XOBI,.01)))
 +11               SET SORT($SELECT(XOBX="":" ",1:XOBX),XOBI)=""
               End DoDot:1
 +12      ; -- build list off sort and apply filters
 +13       SET XOBX=""
 +14       FOR 
               SET XOBX=$ORDER(SORT(XOBX))
               if XOBX=""
                   QUIT 
               Begin DoDot:1
 +15               SET XOBI=0
 +16               FOR 
                       SET XOBI=$ORDER(SORT(XOBX,XOBI))
                       if 'XOBI
                           QUIT 
                       Begin DoDot:2
 +17                       SET XOBKEY=$GET(@XOBROOT@(XOBI,.01))
 +18                       SET XOBSRVR=$GET(@XOBROOT@(XOBI,.03))
 +19                       IF XOBSRVR=""
                               SET XOBSRVR=$$NOTDEF()
 +20                       IF XOBKFILT]""
                               IF $EXTRACT(XOBKEY,1,$LENGTH(XOBKFILT))'=XOBKFILT
                                   QUIT 
 +21                       IF XOBSFILT]""
                               IF $$UP^XLFSTR($EXTRACT(XOBSRVR,1,$LENGTH(XOBSFILT)))'=$$UP^XLFSTR(XOBSFILT)
                                   QUIT 
 +22                       SET VALMCNT=VALMCNT+1
 +23                       SET X=""
 +24                       SET X=$$SETFLD^VALM1(VALMCNT,X,"ID")
 +25                       SET X=$$SETFLD^VALM1(XOBKEY,X,"KEY")
 +26                       SET X=$$SETFLD^VALM1(XOBSRVR,X,"SERVER")
 +27                       DO SET^VALM10(VALMCNT,X,VALMCNT)
 +28                       SET ^TMP("XOB WEB SERVER LOOKUP","IDX",$JOB,VALMCNT,VALMCNT)=+$GET(XOBDATA("DILIST",2,XOBI))
                       End DoDot:2
               End DoDot:1
 +29      ;
 +30       QUIT 
 +31      ;
NOTDEF()  ; -- constant text to use if server is not defined
 +1        QUIT "<server not defined>"
 +2       ;
CLEAR     ; -- clean up entries
 +1        DO REFRESH
 +2        QUIT 
 +3       ;
REFRESH   ; -- refresh display
 +1        DO BUILD
 +2        SET VALMBCK="R"
 +3        QUIT 
 +4       ;
KILL      ; -- kill off list location
 +1        KILL ^TMP("XOB WEB SERVER LOOKUP",$JOB)
 +2        KILL ^TMP("XOB WEB SERVER LOOKUP","XOB",$JOB)
 +3        QUIT 
 +4       ;
HELP      ; -- help code
 +1        SET X="?"
           DO DISP^XQORM1
           WRITE !!
 +2        QUIT 
 +3       ;
EXIT      ; -- exit code
 +1        QUIT 
 +2       ;
ADD       ; -- add a web server lookup identifier entry
 +1       ; -- Protocol: XOBW ASSOCIATE ADD
 +2        DO ACTION("ADD",0)
 +3        QUIT 
 +4       ;
EDIT      ; -- edit a web server lookup identifier entry
 +1       ; -- Protocol: XOBW ASSOCIATE EDIT
 +2        DO ACTION("EDIT",0)
 +3        QUIT 
 +4       ;
DEL       ; -- delete web server lookup identifier entry
 +1       ; -- Protocol: XOBW ASSOCIATE DELETE
 +2        DO ACTION("DEL",0)
 +3        QUIT 
 +4       ;
EXPAND    ; -- expand web server lookup identifier entry
 +1        DO ACTION("EXPAND",1)
 +2        QUIT 
 +3       ;
SORT      ; -- sort list
 +1       ; -- Protocol: XOBW ASSOCIATE SORT
 +2        DO ACTION("SORT",0)
 +3        DO HDR
 +4        DO CHGCAP
 +5        QUIT 
 +6       ;
KFILTER   ; -- specify look up key filter
 +1       ; -- Protocol: XOBW ASSOCIATE FILTER KEY
 +2        DO ACTION("KFILTER",0)
 +3        DO HDR
 +4        QUIT 
 +5       ;
SFILTER   ; -- specify web server filter
 +1       ; -- Protocol: XOBW ASSOCIATE FILTER SERVER
 +2        DO ACTION("SFILTER",0)
 +3        DO HDR
 +4        QUIT 
 +5       ;
ACTION(TYPE,XOBPAUSE) ; -- execute action
 +1        DO FULL^VALM1
 +2        NEW X,Y
 +3        SET X="DO "_TYPE_"^XOBWUA1"
 +4        XECUTE X
 +5        IF XOBPAUSE
               DO PAUSE^VALM1
 +6        DO REFRESH
 +7        DO MSG
 +8        QUIT 
 +9       ;


*****   INDEX OF XOBWUA   *****


Local Variables      Line Occurrences   ( >> not killed explicitly)
                                        ( * Changed  ! Killed  ~ Newed)
   I            BUILD+1~
   KEYCAP       CHGCAP+1~,CHGCAP+2*,CHGCAP+5,CHGCAP+9
   SORT         BUILD+1~
   SORT(        BUILD+11*,BUILD+14,BUILD+16
   SRVCAP       CHGCAP+1~,CHGCAP+3*,CHGCAP+6,CHGCAP+8
   TYPE         ACTION~,ACTION+3
>> VALMBCK      EN+6*,REFRESH+2*
>> VALMCNT      BUILD+4*,BUILD+22*,BUILD+24,BUILD+27,BUILD+28
>> VALMHDR(1    HDR+2*
>> VALMHDR(2    HDR+4*
>> VALMHDR(3    HDR+6*
>> VALMSG       MSG+1*
   X            EN+1~,HDR+1*,HDR+2,HDR+3*,HDR+4,HDR+5*,HDR+6,BUILD+1~,BUILD+23*
                BUILD+24*,BUILD+25*,BUILD+26*,BUILD+27,HELP+1*,ACTION+2~
                ACTION+3*,ACTION+4
   XOB0         BUILD+1~
   XOBDATA      BUILD+1~,BUILD+6
   XOBDATA("DILIST" 
                BUILD+5,BUILD+28
   XOBI         BUILD+1~,BUILD+8*,BUILD+9*,BUILD+10,BUILD+11,BUILD+15*
                BUILD+16*,BUILD+17,BUILD+18,BUILD+28
   XOBKEY       BUILD+1~,BUILD+17*,BUILD+20,BUILD+25
   XOBKFILT     EN+1~,EN+3*,HDR+6,BUILD+20
   XOBPAUSE     ACTION~,ACTION+5
   XOBROOT      BUILD+1~,BUILD+5*,BUILD+9,BUILD+10,BUILD+17,BUILD+18
   XOBSFILT     EN+1~,EN+4*,HDR+5,BUILD+21
   XOBSITEI     BUILD+1~
   XOBSORT      EN+1~,EN+2*,CHGCAP+4,BUILD+10
   XOBSRVR      BUILD+1~,BUILD+18*,BUILD+19*,BUILD+21,BUILD+26
   XOBX         BUILD+1~,BUILD+10*,BUILD+11,BUILD+13*,BUILD+14*,BUILD+16
   Y            BUILD+1~,ACTION+2~

Global Variables  ( * Changed  ! Killed)
   ^TMP("XOB WEB SERVER LOOKUP"
                       BUILD+28*,KILL+1!,KILL+2!

Naked Globals
   NONE

Cache Objects
   NONE

Marked Items
   $T(XOBWUA+1  HDR+3

Label References
   $$NOTDEF     BUILD+19
   ACTION       ADD+2,EDIT+2,DEL+2,EXPAND+1,SORT+2,KFILTER+2,SFILTER+2
   BUILD        REFRESH+1
   CHGCAP       INIT+3,SORT+4
   CLEAR        INIT+1
   HDR          SORT+3,KFILTER+3,SFILTER+3
   KILL         EN+5,BUILD+2
   MSG          INIT+2,ACTION+7
   REFRESH      CLEAR+1,ACTION+6

External References
   LIST^DIC            BUILD+6
   CHGCAP^VALM         CHGCAP+5,CHGCAP+6,CHGCAP+8,CHGCAP+9
   EN^VALM             EN+7
   $$SETFLD^VALM1      BUILD+24,BUILD+25,BUILD+26
   FULL^VALM1          ACTION+1
   PAUSE^VALM1         ACTION+5
   SET^VALM10          BUILD+27
   $$UP^XLFSTR         BUILD+21
   $$VERSION^XOBWENV   HDR+3
   DISP^XQORM1         HELP+1

*****   END   *****

XOBWUA1   3399     printed  Mar 13, 2018@10:55:07                      Page 15

XOBWUA1   ;OAK/KEC - HWSC :: Web Server Lookup Key Manager ; 09/13/10 4:00pm
 +1       ;;1.0;HwscWebServiceClient;;September 13, 2010;Build 31
 +2       ;
 +3        QUIT 
 +4       ;
ADD       ; -- add web server lookup key entry
 +1        NEW DIC,Y,XOBY,D
 +2        WRITE !
 +3        SET DIC("A")="Enter name for a new web server lookup key: "
 +4        SET DIC="^XOB(18.13,"
           SET DIC(0)="AELQ"
           SET D="B"
           DO IX^DIC
           KILL DIC
 +5        SET XOBY=Y
 +6        IF +XOBY>0
               IF '$PIECE(XOBY,U,3)
                   Begin DoDot:1
 +7                    DO DISPLAY("",+XOBY)
 +8                    WRITE !!,"This is not a new entry! Please use 'Edit Server' action."
 +9                    DO PAUSE^VALM1
                   End DoDot:1
                   GOTO ADDQ
 +10       IF +XOBY>0
               IF $PIECE(XOBY,U,3)
                   DO DOEDIT(+XOBY)
ADDQ      ;
 +1        QUIT 
 +2       ;
EDIT      ; -- edit web server entry
 +1        NEW DA,DR,DIE,XOBI,VALMY
 +2        DO EN^VALM2(XQORNOD(0),"OS")
 +3        SET XOBI=+$ORDER(VALMY(""))
 +4        IF XOBI>0
               DO DOEDIT(+$GET(^TMP("XOB WEB SERVER LOOKUP","IDX",$JOB,XOBI,XOBI)))
EDITQ     ;
 +1        QUIT 
 +2       ;
DOEDIT(DA) ; -- do actual web server lookup key edit
 +1        NEW DR,DIE
 +2        SET DR="[XOBW WEB SERVER KEY SETUP]"
           SET DIE="^XOB(18.13,"
           DO ^DIE
 +3        QUIT 
 +4       ;
DEL       ; -- delete web server lookup key entry
 +1        NEW XOBI,VALMY,Y,XOBDA
 +2        DO EN^VALM2(XQORNOD(0),"OS")
 +3        SET XOBI=+$ORDER(VALMY(""))
 +4       ; -- quit if nothing selected
 +5        IF XOBI'>0
               GOTO DELQ
 +6       ; -- display entry, ask if 'ok' and delete
 +7        SET XOBDA=+$GET(^TMP("XOB WEB SERVER LOOKUP","IDX",$JOB,XOBI,XOBI))
 +8        DO DISPLAY(XOBI,XOBDA)
 +9        Begin DoDot:1
 +10           NEW DIR
 +11           SET DIR("A")="Are you sure you want to delete entry"
 +12           SET DIR("B")="NO"
               SET DIR(0)="Y"
 +13           WRITE !
 +14           DO ^DIR
           End DoDot:1
 +15       IF '$GET(Y)
               Begin DoDot:1
 +16               WRITE !!,"Deletion aborted."
 +17               DO PAUSE^VALM1
               End DoDot:1
               GOTO DELQ
 +18      ; -- execute deletion
 +19       DO DODEL(XOBDA)
 +20       WRITE !!,"Entry has been deleted."
 +21       DO PAUSE^VALM1
DELQ      ;
 +1        QUIT 
 +2       ;
DODEL(DA) ; -- do actual web server lookup key delete
 +1        NEW DIK
 +2        SET DIK="^XOB(18.13,"
           DO ^DIK
 +3        QUIT 
 +4       ;
SORT      ; -- change sort order
 +1        IF XOBSORT="K"
               Begin DoDot:1
 +2                SET XOBSORT="S"
               End DoDot:1
 +3       IF '$TEST
               Begin DoDot:1
 +4                SET XOBSORT="K"
               End DoDot:1
 +5        QUIT 
 +6       ;
KFILTER   ; -- specify lookup key filter
 +1        NEW DIR,Y,X,XOBCLR,DTOUT,DUOUT,DIRUT,DIROUT
 +2        SET XOBCLR="<clear filter>"
 +3        SET DIR(0)="FO^1:30"
 +4        SET DIR("A")="Enter lookup key 'starts with' filter text"
 +5        IF $GET(XOBKFILT)]""
               SET DIR("B")=XOBCLR
 +6        DO ^DIR
 +7        IF '($DATA(DTOUT)!$DATA(DUOUT)!$DATA(DIRUT)!$DATA(DIROUT))
               Begin DoDot:1
 +8                SET XOBKFILT=$SELECT(Y=XOBCLR:"",1:$$UP^XLFSTR(Y))
               End DoDot:1
 +9        QUIT 
 +10      ;
SFILTER   ; -- specify web server filter
 +1        NEW DIR,Y,X,XOBCLR,DTOUT,DUOUT,DIRUT,DIROUT
 +2        SET XOBCLR="<clear filter>"
 +3        SET DIR(0)="FO^1:30"
 +4        SET DIR("A",1)=""
 +5        SET DIR("A",2)="Specify web server name 'starts with' filter text."
 +6        SET DIR("A",3)="Note: Use <space> to list entries without a web server defined."
 +7        SET DIR("A")="Enter filter text"
 +8        IF $GET(XOBSFILT)]""
               SET DIR("B")=XOBCLR
 +9        DO ^DIR
 +10       IF '($DATA(DTOUT)!$DATA(DUOUT)!$DATA(DIRUT)!$DATA(DIROUT))
               Begin DoDot:1
 +11               SET XOBSFILT=$SELECT(Y=XOBCLR:"",Y=" ":$$NOTDEF^XOBWUA(),1:$$UP^XLFSTR(Y))
               End DoDot:1
 +12       QUIT 
 +13      ;
EXPAND    ; -- expand Protocol
 +1        NEW DA,DIC,XOBI,VALMY
 +2        DO EN^VALM2(XQORNOD(0),"OS")
 +3        SET XOBI=+$ORDER(VALMY(""))
 +4        IF XOBI>0
               DO DISPLAY(XOBI,+$GET(^TMP("XOB WEB SERVER LOOKUP","IDX",$JOB,XOBI,XOBI)))
 +5        QUIT 
 +6       ;
DISPLAY(XOBI,DA) ; display web server lookup key informaton
 +1       ; input: XOBI == list entry number
 +2       ;        DA   == internal entry number in file 18.12
 +3        NEW DIC,XOBLINE,XOBDASH
 +4        SET $PIECE(XOBLINE,"=",$GET(IOM,80))=""
 +5        SET $PIECE(XOBDASH,"-",$GET(IOM,80))=""
 +6        DO CLEAR^VALM1
 +7        WRITE !,XOBLINE
 +8        IF $GET(XOBI)
               Begin DoDot:1
 +9                WRITE !,@VALMAR@(XOBI,0)
 +10               WRITE !,XOBDASH
               End DoDot:1
 +11       SET DIC="^XOB(18.13,"
 +12       DO EN^DIQ
 +13       WRITE XOBLINE
 +14       QUIT 
 +15      ;


*****   INDEX OF XOBWUA1   *****


Local Variables      Line Occurrences   ( >> not killed explicitly)
                                        ( * Changed  ! Killed  ~ Newed)
   D            ADD+1~,ADD+4*
   DA           EDIT+1~,DOEDIT~,DODEL~,EXPAND+1~,DISPLAY~
   DIC          ADD+1~,ADD+4*!,EXPAND+1~,DISPLAY+3~,DISPLAY+11*
   DIC("A"      ADD+3*
   DIC(0        ADD+4*
   DIE          EDIT+1~,DOEDIT+1~,DOEDIT+2*
   DIK          DODEL+1~,DODEL+2*
   DIR          DEL+10~,KFILTER+1~,SFILTER+1~
   DIR("A"      DEL+11*,KFILTER+4*,SFILTER+4*,SFILTER+5*,SFILTER+6*,SFILTER+7*
   DIR("B"      DEL+12*,KFILTER+5*,SFILTER+8*
   DIR(0        DEL+12*,KFILTER+3*,SFILTER+3*
   DIROUT       KFILTER+1~,KFILTER+7,SFILTER+1~,SFILTER+10
   DIRUT        KFILTER+1~,KFILTER+7,SFILTER+1~,SFILTER+10
   DR           EDIT+1~,DOEDIT+1~,DOEDIT+2*
   DTOUT        KFILTER+1~,KFILTER+7,SFILTER+1~,SFILTER+10
   DUOUT        KFILTER+1~,KFILTER+7,SFILTER+1~,SFILTER+10
   IOM          DISPLAY+4,DISPLAY+5
   U            ADD+6,ADD+10
>> VALMAR       DISPLAY+9
   VALMY        EDIT+1~,DEL+1~,EXPAND+1~
   VALMY(""     EDIT+3,DEL+3,EXPAND+3
   X            KFILTER+1~,SFILTER+1~
   XOBCLR       KFILTER+1~,KFILTER+2*,KFILTER+5,KFILTER+8,SFILTER+1~,SFILTER+2*
                SFILTER+8,SFILTER+11
   XOBDA        DEL+1~,DEL+7*,DEL+8,DEL+19
   XOBDASH      DISPLAY+3~,DISPLAY+5*,DISPLAY+10
   XOBI         EDIT+1~,EDIT+3*,EDIT+4,DEL+1~,DEL+3*,DEL+5,DEL+7,DEL+8
                EXPAND+1~,EXPAND+3*,EXPAND+4,DISPLAY~,DISPLAY+8,DISPLAY+9
>> XOBKFILT     KFILTER+5,KFILTER+8*
   XOBLINE      DISPLAY+3~,DISPLAY+4*,DISPLAY+7,DISPLAY+13
>> XOBSFILT     SFILTER+8,SFILTER+11*
>> XOBSORT      SORT+1,SORT+2*,SORT+4*
   XOBY         ADD+1~,ADD+5*,ADD+6,ADD+7,ADD+10
>> XQORNOD(0    EDIT+2,DEL+2,EXPAND+2
   Y            ADD+1~,ADD+5,DEL+1~,DEL+15,KFILTER+1~,KFILTER+8,SFILTER+1~
                SFILTER+11

Global Variables  ( * Changed  ! Killed)
   ^TMP("XOB WEB SERVER LOOKUP"
                       EDIT+4,DEL+7,EXPAND+4

Naked Globals
   NONE

Cache Objects
   NONE

Marked Items
   NONE

Label References
   ADDQ         ADD+6
   DELQ         DEL+5,DEL+15
   DISPLAY      ADD+7,DEL+8,EXPAND+4
   DODEL        DEL+19
   DOEDIT       ADD+10,EDIT+4

External References
   IX^DIC              ADD+4
   ^DIE                DOEDIT+2
   ^DIK                DODEL+2
   EN^DIQ              DISPLAY+12
   ^DIR                DEL+14,KFILTER+6,SFILTER+9
   CLEAR^VALM1         DISPLAY+6
   PAUSE^VALM1         ADD+9,DEL+17,DEL+21
   EN^VALM2            EDIT+2,DEL+2,EXPAND+2
   $$UP^XLFSTR         KFILTER+8,SFILTER+11
   $$NOTDEF^XOBWUA     SFILTER+11

*****   END   *****

XOBWUS   2306     printed  Mar 13, 2018@10:55:07                       Page 16

XOBWUS    ;ALB/MJK - HWSC :: Web Service Manager ; 09/13/10 4:00pm
 +1       ;;1.0;HwscWebServiceClient;;September 13, 2010;Build 31
 +2       ;
 +3        QUIT 
 +4       ;
EN        ; -- main entry point for XOBW WEB SERVICE
 +1        KILL ^TMP("XOB WEBSERVICES",$JOB)
 +2        SET VALMBCK=""
 +3        DO EN^VALM("XOBW WEB SERVICE")
 +4        QUIT 
 +5       ;
HDR       ; -- header code
 +1        NEW Y
 +2        SET X="                       HWSC Web Service Manager"
 +3        SET VALMHDR(1)=X
 +4        SET X="                      Version: "_$PIECE($TEXT(XOBWUS+1),";",3)_"     Build: "_$$VERSION^XOBWENV()
 +5        SET VALMHDR(2)=X
 +6        QUIT 
 +7       ;
INIT      ; -- init variables and list array
 +1        DO CLEAR
 +2        DO MSG
 +3        QUIT 
 +4       ;
MSG       ; -- set default message
 +1        SET VALMSG=""
 +2        QUIT 
 +3       ;
BUILD     ; -- build list
 +1        NEW XOBI,X,XOBDATA,XOBROOT,Y
 +2        DO KILL
 +3       ;
 +4        SET VALMCNT=0
 +5        SET XOBROOT=$NAME(XOBDATA("DILIST","ID"))
 +6        DO LIST^DIC(18.02,"",".01;.02;200","","","","","","","",$NAME(XOBDATA))
 +7        SET XOBI=0
 +8        FOR 
               SET XOBI=$ORDER(@XOBROOT@(XOBI))
               if 'XOBI
                   QUIT 
               Begin DoDot:1
 +9                SET VALMCNT=VALMCNT+1
 +10               SET X=""
 +11               SET X=$$SETFLD^VALM1(VALMCNT,X,"ID")
 +12               SET X=$$SETFLD^VALM1($GET(@XOBROOT@(XOBI,.01)),X,"NAME")
 +13               SET X=$$SETFLD^VALM1($GET(@XOBROOT@(XOBI,.02)),X,"TYPE")
 +14               SET Y=$GET(@XOBROOT@(XOBI,200))
 +15               IF $LENGTH(Y)>35
                       SET Y=$EXTRACT(Y,1,35)_"..."
 +16               SET X=$$SETFLD^VALM1(Y,X,"CONTEXT")
 +17               DO SET^VALM10(VALMCNT,X,VALMCNT)
 +18               SET ^TMP("XOB WEBSERVICES","IDX",$JOB,VALMCNT,VALMCNT)=+$GET(XOBDATA("DILIST",2,XOBI))
               End DoDot:1
 +19      ;
 +20       QUIT 
 +21      ;
CLEAR     ; -- clean up entries
 +1        DO REFRESH
 +2        QUIT 
 +3       ;
REFRESH   ; -- refresh display
 +1        DO BUILD
 +2        SET VALMBCK="R"
 +3        QUIT 
 +4       ;
KILL      ; -- kill off list location
 +1        KILL ^TMP("XOB WEBSERVICES",$JOB)
 +2        KILL ^TMP("XOB WEBSERVICES","IDX",$JOB)
 +3        QUIT 
 +4       ;
HELP      ; -- help code
 +1        SET X="?"
           DO DISP^XQORM1
           WRITE !!
 +2        QUIT 
 +3       ;
EXIT      ; -- exit code
 +1        QUIT 
 +2       ;
ADD       ; -- add an web service entry
 +1       ; -- Protocol: XOBW WEB SERVICE ADD
 +2        DO ACTION("ADD",0)
 +3        QUIT 
 +4       ;
EDIT      ; -- edit web service entry
 +1       ; -- Protocol: XOBW WEB SERVICE EDIT
 +2        DO ACTION("EDIT",0)
 +3        QUIT 
 +4       ;
DEL       ; -- delete web service entry
 +1       ; -- Protocol: XOBW WEB SERVICE DELETE
 +2        DO ACTION("DEL",0)
 +3        QUIT 
 +4       ;
EXPAND    ; -- expand web service entry
 +1        DO ACTION("EXPAND",0)
 +2        QUIT 
 +3       ;
ACTION(TYPE,XOBPAUSE) ; -- execute action
 +1        DO FULL^VALM1
 +2        NEW X,Y
 +3        SET X="DO "_TYPE_"^XOBWUS1"
 +4        XECUTE X
 +5        IF XOBPAUSE
               DO PAUSE^VALM1
 +6        DO REFRESH
 +7        DO MSG
 +8        QUIT 
 +9       ;


*****   INDEX OF XOBWUS   *****


Local Variables      Line Occurrences   ( >> not killed explicitly)
                                        ( * Changed  ! Killed  ~ Newed)
   TYPE         ACTION~,ACTION+3
>> VALMBCK      EN+2*,REFRESH+2*
>> VALMCNT      BUILD+4*,BUILD+9*,BUILD+11,BUILD+17,BUILD+18
>> VALMHDR(1    HDR+3*
>> VALMHDR(2    HDR+5*
>> VALMSG       MSG+1*
   X            HDR+2*,HDR+3,HDR+4*,HDR+5,BUILD+1~,BUILD+10*,BUILD+11*
                BUILD+12*,BUILD+13*,BUILD+16*,BUILD+17,HELP+1*,ACTION+2~
                ACTION+3*,ACTION+4
   XOBDATA      BUILD+1~,BUILD+6
   XOBDATA("DILIST" 
                BUILD+5,BUILD+18
   XOBI         BUILD+1~,BUILD+7*,BUILD+8*,BUILD+12,BUILD+13,BUILD+14,BUILD+18
   XOBPAUSE     ACTION~,ACTION+5
   XOBROOT      BUILD+1~,BUILD+5*,BUILD+8,BUILD+12,BUILD+13,BUILD+14
   Y            HDR+1~,BUILD+1~,BUILD+14*,BUILD+15*,BUILD+16,ACTION+2~

Global Variables  ( * Changed  ! Killed)
   ^TMP("XOB WEBSERVICES"
                       EN+1!,BUILD+18*,KILL+1!,KILL+2!

Naked Globals
   NONE

Cache Objects
   NONE

Marked Items
   $T(XOBWUS+1  HDR+4

Label References
   ACTION       ADD+2,EDIT+2,DEL+2,EXPAND+1
   BUILD        REFRESH+1
   CLEAR        INIT+1
   KILL         BUILD+2
   MSG          INIT+2,ACTION+7
   REFRESH      CLEAR+1,ACTION+6

External References
   LIST^DIC            BUILD+6
   EN^VALM             EN+3
   $$SETFLD^VALM1      BUILD+11,BUILD+12,BUILD+13,BUILD+16
   FULL^VALM1          ACTION+1
   PAUSE^VALM1         ACTION+5
   SET^VALM10          BUILD+17
   $$VERSION^XOBWENV   HDR+4
   DISP^XQORM1         HELP+1

*****   END   *****

XOBWUS1   7665     printed  Mar 13, 2018@10:55:07                      Page 17

XOBWUS1   ;ALB/MJK - HWSC :: Web Service Manager ; 09/13/10 4:00pm
 +1       ;;1.0;HwscWebServiceClient;;September 13, 2010;Build 31
 +2       ;
 +3        QUIT 
 +4       ;
ADD       ; -- add web service entry
 +1        NEW DIC,Y,XOBY,D
 +2        WRITE !
 +3        SET DIC="^XOB(18.02,"
           SET DIC(0)="AELQ"
           SET D="B"
           DO IX^DIC
           KILL DIC
 +4        SET XOBY=Y
 +5        IF +XOBY>0
               IF '$PIECE(XOBY,U,3)
                   Begin DoDot:1
 +6                    DO DISPLAY("",+XOBY)
 +7                    WRITE !!,"This is not a new entry! Please use 'Edit Service' action."
 +8                    DO PAUSE^VALM1
                   End DoDot:1
                   GOTO ADDQ
 +9        IF +XOBY>0
               IF $PIECE(XOBY,U,3)
                   DO DOEDIT(+XOBY)
 +10       DO POSTEDIT(+XOBY)
ADDQ      ;
 +1        QUIT 
 +2       ;
EDIT      ; -- edit web service entry
 +1        NEW XOBDA,XOBI,VALMY
 +2        DO EN^VALM2(XQORNOD(0),"OS")
 +3        SET XOBI=+$ORDER(VALMY(""))
 +4        IF XOBI>0
               Begin DoDot:1
 +5                SET XOBDA=+$GET(^TMP("XOB WEBSERVICES","IDX",$JOB,XOBI,XOBI))
 +6                DO DISPLAY(XOBI,XOBDA)
 +7                DO DOEDIT(XOBDA)
 +8                DO POSTEDIT(XOBDA)
               End DoDot:1
EDITQ     ;
 +1        QUIT 
 +2       ;
DOEDIT(DA) ; -- do actual web service edit
 +1        NEW DR,DIE
 +2        SET DR="[XOBW WEB SERVICE EDIT]"
           SET DIE="^XOB(18.02,"
           DO ^DIE
 +3        QUIT 
 +4       ;
POSTEDIT(XOBDA) ; -- warning checks after 'add' or 'edit'
 +1        NEW XOBCLASS,XOBSTAT,XOBISSUE
 +2        SET XOBSTAT=$$CLSVAL(XOBDA,.XOBCLASS,.XOBISSUE)
 +3        IF 'XOBSTAT
               Begin DoDot:1
 +4                IF $GET(XOBISSUE)=1
                       WRITE !!,"Warning: No class name specified"
 +5                IF $GET(XOBISSUE)=2
                       WRITE !!,"Warning: Class name of '",$GET(XOBCLASS),"' is not a defined class!"
 +6                IF $GET(XOBISSUE)=3
                       WRITE !!,"Warning: Class '",$GET(XOBCLASS),"' does not extend %SOAP.WebClient!"
 +7                DO PAUSE^VALM1
               End DoDot:1
 +8        QUIT 
 +9       ;
CLSCHK(XOBDA) ; -- class check warning message
 +1        NEW XOBCLASS,XOBSTAT,XOBISSUE,XOBMSG
 +2        SET XOBMSG=""
 +3        SET XOBSTAT=$$CLSVAL(XOBDA,.XOBCLASS,.XOBISSUE)
 +4        IF 'XOBSTAT
               Begin DoDot:1
 +5                IF $GET(XOBISSUE)=1
                       SET XOBMSG=" o  Class name not specified"
                       QUIT 
 +6                IF $GET(XOBISSUE)=2
                       SET XOBMSG=" o  Class is not a defined class"
                       QUIT 
 +7                IF $GET(XOBISSUE)=3
                       SET XOBMSG=" o  Class does not extend %SOAP.WebClient"
                       QUIT 
               End DoDot:1
 +8        QUIT XOBMSG
 +9       ;
CLSVAL(XOBDA,XOBCLASS,XOBISSUE) ; -- do actual validation check
 +1        NEW XOBWCDEF,XOBDA0,XOBOK
 +2        SET XOBOK=0
           SET XOBISSUE=0
 +3        SET XOBDA0=$GET(^XOB(18.02,+XOBDA,0))
 +4       ; -- no need to do check for REST-type [2]; quit w/ok
 +5        IF $PIECE(XOBDA0,"^",2)=2
               SET XOBOK=1
               GOTO CLSVALQ
 +6       ; -- do checks for SOAP-type [1] 
 +7        SET XOBCLASS=$PIECE($GET(^XOB(18.02,+XOBDA,100)),"^")
 +8       ; -- no class name defined
 +9        IF XOBCLASS=""
               SET XOBOK=0
               SET XOBISSUE=1
               GOTO CLSVALQ
 +10       SET XOBWCDEF=##class(%Dictionary.ClassDefinition).%OpenId(XOBCLASS)
 +11      ; -- not a class
 +12       IF XOBWCDEF=""
               SET XOBOK=0
               SET XOBISSUE=2
               GOTO CLSVALQ
 +13      ; -- not a SOAP client class
 +14       IF XOBWCDEF.Super'="%SOAP.WebClient"
               SET XOBOK=0
               SET XOBISSUE=3
               GOTO CLSVALQ
 +15       SET XOBOK=1
           SET XOBISSUE=0
CLSVALQ   ;
 +1        QUIT XOBOK
 +2       ;
DEL       ; -- delete web service entry
 +1        NEW XOBI,VALMY,Y,XOBDA
 +2        DO EN^VALM2(XQORNOD(0),"OS")
 +3        SET XOBI=+$ORDER(VALMY(""))
 +4       ; -- quit if nothing selected
 +5        IF XOBI'>0
               GOTO DELQ
 +6       ; -- display entry, ask if 'ok' and delete
 +7        SET XOBDA=+$GET(^TMP("XOB WEBSERVICES","IDX",$JOB,XOBI,XOBI))
 +8        DO DISPLAY(XOBI,XOBDA)
 +9        IF $ORDER(^XOB(18.12,"AB",XOBDA,""))]""
               Begin DoDot:1
 +10               WRITE *7
 +11               WRITE !,"    ***************************************************"
 +12               WRITE !,"    * ATTENTION: This web service is still authorized *"
 +13               WRITE !,"    *            to 1 or more servers.                *"
 +14               WRITE !,"    ***************************************************"
               End DoDot:1
 +15       Begin DoDot:1
 +16           NEW DIR
 +17           SET DIR("A")="Are you sure you want to delete entry"
 +18           SET DIR("B")="NO"
               SET DIR(0)="Y"
 +19           WRITE !
 +20           DO ^DIR
           End DoDot:1
 +21       IF '$GET(Y)
               Begin DoDot:1
 +22               WRITE !!,"Deletion aborted."
 +23               DO PAUSE^VALM1
               End DoDot:1
               GOTO DELQ
 +24      ; -- execute deletion
 +25       DO UNREG^XOBWLIB($PIECE(^XOB(18.02,XOBDA,0),"^"))
 +26       WRITE !!,"Entry has been deleted."
 +27       DO PAUSE^VALM1
DELQ      ;
 +1        QUIT 
 +2       ;
DISPLAY(XOBI,DA) ; display web service informaton
 +1       ; input: XOBI == list entry number
 +2       ;        DA   == internal entry number in file 18.02
 +3        NEW X,DIQ,XOBY,DR,DIC,XOBLINE,XOBDASH,XOBTYPE,XOBCMSG,XOBSRVDA,XOBMULDA
 +4        SET $PIECE(XOBLINE,"=",$GET(IOM,80))=""
 +5        SET $PIECE(XOBDASH,"-",$GET(IOM,80))=""
 +6        DO CLEAR^VALM1
 +7        WRITE !,XOBLINE
 +8        IF $GET(XOBI)
               Begin DoDot:1
 +9                WRITE !,@VALMAR@(XOBI,0)
 +10               WRITE !,XOBDASH
               End DoDot:1
 +11       SET DIC="^XOB(18.02,"
 +12       SET DIQ="XOBY("
 +13       SET DIQ(0)="E"
 +14       SET DR=".01;.02;.03;100;200;201;"
 +15       DO EN^DIQ1
 +16       SET XOBTYPE=$GET(XOBY(18.02,DA,.02,"E"))
 +17       WRITE !?5,"                Name: ",$GET(XOBY(18.02,DA,.01,"E"))
 +18       WRITE !?5,"                Type: ",$GET(XOBY(18.02,DA,.02,"E"))
 +19       WRITE !?5,"Registered Date/Time: ",$GET(XOBY(18.02,DA,.03,"E"))
 +20       IF XOBTYPE="SOAP"
               Begin DoDot:1
 +21               WRITE !?5,"    Proxy Class Name: ",$GET(XOBY(18.02,DA,100,"E"))
 +22               SET XOBCMSG=$$CLSCHK(DA)
 +23               IF XOBCMSG]""
                       WRITE !?5,"                      ",XOBCMSG
               End DoDot:1
 +24       WRITE !?5,"        Context Root: ",$GET(XOBY(18.02,DA,200,"E"))
 +25       WRITE !?4,"Availability Resource: "_$GET(XOBY(18.02,DA,201,"E"))
 +26       SET X="----------- Web servers '"_$GET(XOBY(18.02,DA,.01,"E"))_"' is authorized to: "
 +27       WRITE !!,X_$EXTRACT(XOBDASH,$LENGTH(X)+1,999)
 +28       IF $ORDER(^XOB(18.12,"AB",DA,""))']""
               Begin DoDot:1
 +29               WRITE !!,"        <<<none>>>"
               End DoDot:1
 +30      IF '$TEST
               Begin DoDot:1
 +31               WRITE !
                   SET XOBSRVDA=0
                   SET XOBMULDA=0
 +32               FOR 
                       SET XOBSRVDA=$ORDER(^XOB(18.12,"AB",DA,XOBSRVDA))
                       if XOBSRVDA']""
                           QUIT 
                       Begin DoDot:2
 +33                       FOR 
                               SET XOBMULDA=$ORDER(^XOB(18.12,"AB",DA,XOBSRVDA,XOBMULDA))
                               if XOBMULDA']""
                                   QUIT 
                               Begin DoDot:3
 +34                               WRITE !," - ",$PIECE($GET(^XOB(18.12,XOBSRVDA,0)),U)
                               End DoDot:3
                       End DoDot:2
               End DoDot:1
 +35       WRITE !!,XOBDASH,!
 +36       QUIT 
 +37      ;
EXPAND    ; -- expand Protocol
 +1        NEW XOBI,XOBY,VALMY
 +2        DO EN^VALM2(XQORNOD(0),"OS")
 +3        SET XOBI=+$ORDER(VALMY(""))
 +4        IF $GET(XOBI)
               Begin DoDot:1
 +5                SET XOBY("HEADER",1)=""
 +6                SET XOBY("HEADER",2)=@VALMAR@(XOBI,0)
 +7                SET XOBY("TITLE")="Web Service Metadata Display"
 +8                SET XOBY("BUILD CALLBACK")="DO BUILD^XOBWUS1("_+$GET(^TMP("XOB WEBSERVICES","IDX",$JOB,XOBI,XOBI))_")"
 +9                DO EN^XOBWUS2(.XOBY)
               End DoDot:1
 +10       QUIT 
 +11      ;
BUILD(XOBDA) ; -- build display array with WSDL content (callback)
 +1        NEW DIQ,XOBY,DR,DIC,DA,XOBJ,XOBWSDL,XOBDOTS,X,XOBTYPE,XOBCMSG,XOBSRVDA,XOBMULDA
 +2        SET $PIECE(XOBDOTS,".",$GET(IOM,80))="."
 +3        DO CLEAN^VALM10
 +4        SET DIC="^XOB(18.02,"
 +5        SET DIQ="XOBY("
 +6        SET DIQ(0)="E"
 +7        SET DR=".01;.02;.03;100;200;201;300"
 +8        SET DA=$GET(XOBDA)
 +9        DO EN^DIQ1
 +10       SET VALMCNT=0
 +11       SET XOBTYPE=$GET(XOBY(18.02,DA,.02,"E"))
 +12       DO ADDLN("                     Name: "_$GET(XOBY(18.02,DA,.01,"E")))
 +13       DO ADDLN("             Service Type: "_$GET(XOBY(18.02,DA,.02,"E")))
 +14       DO ADDLN("     Registered Date/Time: "_$GET(XOBY(18.02,DA,.03,"E")))
 +15       IF XOBTYPE="SOAP"
               Begin DoDot:1
 +16               DO ADDLN("         Proxy Class Name: "_$GET(XOBY(18.02,DA,100,"E")))
 +17               SET XOBCMSG=$$CLSCHK(DA)
 +18               IF XOBCMSG]""
                       DO ADDLN("                           "_XOBCMSG)
               End DoDot:1
 +19       DO ADDLN("             Context Root: "_$GET(XOBY(18.02,DA,200,"E")))
 +20       DO ADDLN("    Availability Resource: "_$GET(XOBY(18.02,DA,201,"E")))
 +21       SET X="............Web servers '"_$GET(XOBY(18.02,DA,.01,"E"))_"' authorized to:"
 +22       DO ADDLN(" ")
           DO ADDLN(X_$EXTRACT(XOBDOTS,$LENGTH(X)+1,999))
 +23       IF $ORDER(^XOB(18.12,"AB",XOBDA,""))']""
               Begin DoDot:1
 +24               DO ADDLN(" ")
                   DO ADDLN("        <<<none>>>")
               End DoDot:1
 +25      IF '$TEST
               Begin DoDot:1
 +26               DO ADDLN(" ")
                   SET XOBSRVDA=0
                   SET XOBMULDA=0
 +27               FOR 
                       SET XOBSRVDA=$ORDER(^XOB(18.12,"AB",XOBDA,XOBSRVDA))
                       if XOBSRVDA']""
                           QUIT 
                       Begin DoDot:2
 +28                       FOR 
                               SET XOBMULDA=$ORDER(^XOB(18.12,"AB",XOBDA,XOBSRVDA,XOBMULDA))
                               if XOBMULDA']""
                                   QUIT 
                               Begin DoDot:3
 +29                               DO ADDLN(" - "_$PIECE($GET(^XOB(18.12,XOBSRVDA,0)),U))
                               End DoDot:3
                       End DoDot:2
               End DoDot:1
 +30       DO ADDLN(" ")
 +31      ;
 +32      ; -- no need to do WSDL display info for REST services
 +33       IF XOBTYPE="REST"
               GOTO BUILDQ
 +34      ;
 +35      ; -- build WSDL lines
 +36       SET X="............WSDL Document:"
 +37       DO ADDLN(X_$EXTRACT(XOBDOTS,$LENGTH(X)+1,999))
 +38       SET XOBJ=0
 +39       FOR 
               SET XOBJ=$ORDER(XOBY(18.02,DA,300,XOBJ))
               if XOBJ=""
                   QUIT 
               Begin DoDot:1
 +40               DO ADDLN($GET(XOBY(18.02,DA,300,XOBJ)))
 +41               SET XOBWSDL=1
               End DoDot:1
 +42      ;
 +43       IF '$GET(XOBWSDL)
               Begin DoDot:1
 +44               DO ADDLN("")
 +45               DO ADDLN("        <<< No WSDL document available for this web service! >>>")
 +46               DO ADDLN("")
               End DoDot:1
BUILDQ    ;
 +1        DO ADDLN(XOBDOTS)
 +2        QUIT 
 +3       ;
ADDLN(XOBTEXT) ; -- add line utility
 +1        SET VALMCNT=VALMCNT+1
 +2        DO SET^VALM10(VALMCNT,XOBTEXT)
 +3        QUIT 
 +4       ;


*****   INDEX OF XOBWUS1   *****


Local Variables      Line Occurrences   ( >> not killed explicitly)
                                        ( * Changed  ! Killed  ~ Newed)
   D            ADD+1~,ADD+3*
   DA           DOEDIT~,DISPLAY~,DISPLAY+16,DISPLAY+17,DISPLAY+18,DISPLAY+19
                DISPLAY+21,DISPLAY+22,DISPLAY+24,DISPLAY+25,DISPLAY+26
                DISPLAY+28,DISPLAY+32,DISPLAY+33,BUILD+1~,BUILD+8*,BUILD+11
                BUILD+12,BUILD+13,BUILD+14,BUILD+16,BUILD+17,BUILD+19,BUILD+20
                BUILD+21,BUILD+39,BUILD+40
   DIC          ADD+1~,ADD+3*!,DISPLAY+3~,DISPLAY+11*,BUILD+1~,BUILD+4*
   DIC(0        ADD+3*
   DIE          DOEDIT+1~,DOEDIT+2*
   DIQ          DISPLAY+3~,DISPLAY+12*,BUILD+1~,BUILD+5*
   DIQ(0        DISPLAY+13*,BUILD+6*
   DIR          DEL+16~
   DIR("A"      DEL+17*
   DIR("B"      DEL+18*
   DIR(0        DEL+18*
   DR           DOEDIT+1~,DOEDIT+2*,DISPLAY+3~,DISPLAY+14*,BUILD+1~,BUILD+7*
   IOM          DISPLAY+4,DISPLAY+5,BUILD+2
   U            ADD+5,ADD+9,DISPLAY+34,BUILD+29
>> VALMAR       DISPLAY+9,EXPAND+6
>> VALMCNT      BUILD+10*,ADDLN+1*,ADDLN+2
   VALMY        EDIT+1~,DEL+1~,EXPAND+1~
   VALMY(""     EDIT+3,DEL+3,EXPAND+3
   X            DISPLAY+3~,DISPLAY+26*,DISPLAY+27,BUILD+1~,BUILD+21*,BUILD+22
                BUILD+36*,BUILD+37
   XOBCLASS     POSTEDIT+1~,POSTEDIT+2,POSTEDIT+5,POSTEDIT+6,CLSCHK+1~,CLSCHK+3
                CLSVAL~,CLSVAL+7*,CLSVAL+9,CLSVAL+10
   XOBCMSG      DISPLAY+3~,DISPLAY+22*,DISPLAY+23,BUILD+1~,BUILD+17*,BUILD+18
   XOBDA        EDIT+1~,EDIT+5*,EDIT+6,EDIT+7,EDIT+8,POSTEDIT~,POSTEDIT+2
                CLSCHK~,CLSCHK+3,CLSVAL~,CLSVAL+3,CLSVAL+7,DEL+1~,DEL+7*,DEL+8
                DEL+9,DEL+25,BUILD~,BUILD+8,BUILD+23,BUILD+27,BUILD+28
   XOBDA0       CLSVAL+1~,CLSVAL+3*,CLSVAL+5
   XOBDASH      DISPLAY+3~,DISPLAY+5*,DISPLAY+10,DISPLAY+27,DISPLAY+35
   XOBDOTS      BUILD+1~,BUILD+2*,BUILD+22,BUILD+37,BUILDQ+1
   XOBI         EDIT+1~,EDIT+3*,EDIT+4,EDIT+5,EDIT+6,DEL+1~,DEL+3*,DEL+5,DEL+7
                DEL+8,DISPLAY~,DISPLAY+8,DISPLAY+9,EXPAND+1~,EXPAND+3*,EXPAND+4
                EXPAND+6,EXPAND+8
   XOBISSUE     POSTEDIT+1~,POSTEDIT+2,POSTEDIT+4,POSTEDIT+5,POSTEDIT+6
                CLSCHK+1~,CLSCHK+3,CLSCHK+5,CLSCHK+6,CLSCHK+7,CLSVAL~,CLSVAL+2*
                CLSVAL+9*,CLSVAL+12*,CLSVAL+14*,CLSVAL+15*
   XOBJ         BUILD+1~,BUILD+38*,BUILD+39*,BUILD+40
   XOBLINE      DISPLAY+3~,DISPLAY+4*,DISPLAY+7
   XOBMSG       CLSCHK+1~,CLSCHK+2*,CLSCHK+5*,CLSCHK+6*,CLSCHK+7*,CLSCHK+8
   XOBMULDA     DISPLAY+3~,DISPLAY+31*,DISPLAY+33*,BUILD+1~,BUILD+26*,BUILD+28*
   XOBOK        CLSVAL+1~,CLSVAL+2*,CLSVAL+5*,CLSVAL+9*,CLSVAL+12*,CLSVAL+14*
                CLSVAL+15*,CLSVALQ+1
   XOBSRVDA     DISPLAY+3~,DISPLAY+31*,DISPLAY+32*,DISPLAY+33,DISPLAY+34
                BUILD+1~,BUILD+26*,BUILD+27*,BUILD+28,BUILD+29
   XOBSTAT      POSTEDIT+1~,POSTEDIT+2*,POSTEDIT+3,CLSCHK+1~,CLSCHK+3*,CLSCHK+4
   XOBTEXT      ADDLN~,ADDLN+2
   XOBTYPE      DISPLAY+3~,DISPLAY+16*,DISPLAY+20,BUILD+1~,BUILD+11*,BUILD+15
                BUILD+33
   XOBWCDEF     CLSVAL+1~,CLSVAL+10*,CLSVAL+12
   XOBWSDL      BUILD+1~,BUILD+41*,BUILD+43
   XOBY         ADD+1~,ADD+4*,ADD+5,ADD+6,ADD+9,ADD+10,DISPLAY+3~,EXPAND+1~
                EXPAND+9,BUILD+1~
   XOBY(        DISPLAY+16,DISPLAY+17,DISPLAY+18,DISPLAY+19,DISPLAY+21
                DISPLAY+24,DISPLAY+25,DISPLAY+26,BUILD+11,BUILD+12,BUILD+13
                BUILD+14,BUILD+16,BUILD+19,BUILD+20,BUILD+21,BUILD+39,BUILD+40
   XOBY("BUILD CALLBACK" 
                EXPAND+8*
   XOBY("HEADER" 
                EXPAND+5*,EXPAND+6*
   XOBY("TITLE" EXPAND+7*
>> XQORNOD(0    EDIT+2,DEL+2,EXPAND+2
   Y            ADD+1~,ADD+4,DEL+1~,DEL+21

Global Variables  ( * Changed  ! Killed)
   ^TMP("XOB WEBSERVICES"
                       EDIT+5,DEL+7,EXPAND+8
   ^XOB(18.02          CLSVAL+3,CLSVAL+7,DEL+25
   ^XOB(18.12          DEL+9,DISPLAY+28,DISPLAY+32,DISPLAY+33,DISPLAY+34
                       BUILD+23,BUILD+27,BUILD+28,BUILD+29

Naked Globals
   NONE

Cache Objects
   %Dictionary.ClassDefinition     CLSVAL+10
   XOBWCDEF.Super                  CLSVAL+14

Marked Items
   NONE

Label References
   $$CLSCHK     DISPLAY+22,BUILD+17
   $$CLSVAL     POSTEDIT+2,CLSCHK+3
   ADDLN        BUILD+12,BUILD+13,BUILD+14,BUILD+16,BUILD+18,BUILD+19,BUILD+20
                BUILD+22,BUILD+24,BUILD+26,BUILD+29,BUILD+30,BUILD+37,BUILD+40
                BUILD+44,BUILD+45,BUILD+46,BUILDQ+1
   ADDQ         ADD+5
   BUILDQ       BUILD+33
   CLSVALQ      CLSVAL+5,CLSVAL+9,CLSVAL+12,CLSVAL+14
   DELQ         DEL+5,DEL+21
   DISPLAY      ADD+6,EDIT+6,DEL+8
   DOEDIT       ADD+9,EDIT+7
   POSTEDIT     ADD+10,EDIT+8

External References
   IX^DIC              ADD+3
   ^DIE                DOEDIT+2
   EN^DIQ1             DISPLAY+15,BUILD+9
   ^DIR                DEL+20
   CLEAR^VALM1         DISPLAY+6
   PAUSE^VALM1         ADD+8,POSTEDIT+7,DEL+23,DEL+27
   CLEAN^VALM10        BUILD+3
   SET^VALM10          ADDLN+2
   EN^VALM2            EDIT+2,DEL+2,EXPAND+2
   UNREG^XOBWLIB       DEL+25
   EN^XOBWUS2          EXPAND+9

*****   END   *****

XOBWUS2   925     printed  Mar 13, 2018@10:55:07                       Page 18

XOBWUS2   ;ALB/MJK - HWSC :: Generic Info Display Tool ; 09/13/10 4:00pm
 +1       ;;1.0;HwscWebServiceClient;;September 13, 2010;Build 31
 +2       ;
 +3        QUIT 
 +4       ;
EN(XOBY)  ; -- main entry point for XOBW WEB SERVICE DISPLAY
 +1       ;   Input Array Subscripts:
 +2       ;      XOBY("TITLE")          = title for List Manager
 +3       ;      XOBY("HEADER")         = Header line
 +4       ;      XOBY("BUILD CALLBACK") = code to build list to display
 +5       ;         example: XOBY("BUILD CALLBACK"="DO BUILD^XOBWUS1(2)"
 +6       ;      
 +7        DO EN^VALM("XOBW WEB SERVICE DISPLAY")
 +8        QUIT 
 +9       ;
HDR       ; -- header code
 +1        SET VALMHDR(1)=$GET(XOBY("HEADER",1))
 +2        SET VALMHDR(2)=$GET(XOBY("HEADER",2))
 +3        QUIT 
 +4       ;
INIT      ; -- init variables and list array
 +1        SET VALM("TITLE")=$GET(XOBY("TITLE"))
 +2        IF $GET(XOBY("BUILD CALLBACK"))]""
               XECUTE XOBY("BUILD CALLBACK")
 +3        QUIT 
 +4       ;
HELP      ; -- help code
 +1        SET X="?"
           DO DISP^XQORM1
           WRITE !!
 +2        QUIT 
 +3       ;
EXIT      ; -- exit code
 +1        DO CLEAN^VALM10
 +2        QUIT 
 +3       ;
EXPND     ; -- expand code
 +1        QUIT 
 +2       ;


*****   INDEX OF XOBWUS2   *****


Local Variables      Line Occurrences   ( >> not killed explicitly)
                                        ( * Changed  ! Killed  ~ Newed)
>> VALM("TITLE" INIT+1*
>> VALMHDR(1    HDR+1*
>> VALMHDR(2    HDR+2*
>> X            HELP+1*
   XOBY         EN~
   XOBY("BUILD CALLBACK" 
                INIT+2
   XOBY("HEADER" 
                HDR+1,HDR+2
   XOBY("TITLE" INIT+1

Global Variables  ( * Changed  ! Killed)
   NONE

Naked Globals
   NONE

Cache Objects
   NONE

Marked Items
   NONE

Label References
   NONE

External References
   EN^VALM             EN+7
   CLEAN^VALM10        EXIT+1
   DISP^XQORM1         HELP+1

*****   END   *****

|dd18.02   629     printed  Mar 13, 2018@10:55:07                      Page 19

|dd18.02  ;DD of the WEB SERVICE file.
IXPRIMARYSL ; SET LOGIC
 +1        SET ^XOB(18.02,"PRIMARY",X,DA)=""
IXPRIMARYKL ; KILL LOGIC
 +1        KILL ^XOB(18.02,"PRIMARY",X,DA)
IXPRIMARYKEIC ; KILL ENTIRE INDEX CODE
 +1        KILL ^XOB(18.02,"PRIMARY")
.01       ; NAME
 +1        if $LENGTH(X)>30!(X?.N)!($LENGTH(X)<3)!'(X'?1P.E)
               KILL X
.01XRF1S  ; SET LOGIC FOR 'B' XREF
 +1        SET ^XOB(18.02,"B",$EXTRACT(X,1,30),DA)=""
.01XRF1K  ; KILL LOGIC FOR 'B' XREF
 +1        KILL ^XOB(18.02,"B",$EXTRACT(X,1,30),DA)
.03       ; DATE REGISTERED
 +1        SET %DT="ESTXR"
           DO ^%DT
           SET X=Y
           if X<1
               KILL X
100       ; PROXY CLASS NAME
 +1        if $LENGTH(X)>245!($LENGTH(X)<3)
               KILL X
200       ; CONTEXT ROOT
 +1        if $LENGTH(X)>245!($LENGTH(X)<1)
               KILL X
201       ; AVAILABILITY RESOURCE
 +1        if $LENGTH(X)>245!($LENGTH(X)<1)
               KILL X


*****   INDEX OF |dd18.02   *****


Local Variables      Line Occurrences   ( >> not killed explicitly)
                                        ( * Changed  ! Killed  ~ Newed)
>> %DT          .03+1*
>> DA           IXPRIMARYSL+1,IXPRIMARYKL+1,.01XRF1S+1,.01XRF1K+1
   X            IXPRIMARYSL+1,IXPRIMARYKL+1,.01+1!,.01XRF1S+1,.01XRF1K+1
                .03+1*!,100+1!,200+1!,201+1!
>> Y            .03+1

Global Variables  ( * Changed  ! Killed)
   ^XOB(18.02          IXPRIMARYSL+1*,IXPRIMARYKL+1!,IXPRIMARYKEIC+1!
                       .01XRF1S+1*,.01XRF1K+1!

Naked Globals
   NONE

Cache Objects
   NONE

Marked Items
   NONE

Label References
   NONE

External References
   ^%DT                .03+1

*****   END   *****

|dd18.022   70     printed  Mar 13, 2018@10:55:07                      Page 20

|dd18.022 ;DD of the WSDL sub-file of the WEB SERVICE (#18.02) file.


*****   INDEX OF |dd18.022   *****


Local Variables      Line Occurrences   ( >> not killed explicitly)
                                        ( * Changed  ! Killed  ~ Newed)
   NONE

Global Variables  ( * Changed  ! Killed)
   NONE

Naked Globals
   NONE

Cache Objects
   NONE

Marked Items
   NONE

Label References
   NONE

External References
   NONE

*****   END   *****

|dd18.12   1452     printed  Mar 13, 2018@10:55:07                     Page 21

|dd18.12  ;DD of the WEB SERVER file.
IXPRIMARYSL ; SET LOGIC
 +1        SET ^XOB(18.12,"PRIMARY",X,DA)=""
IXPRIMARYKL ; KILL LOGIC
 +1        KILL ^XOB(18.12,"PRIMARY",X,DA)
IXPRIMARYKEIC ; KILL ENTIRE INDEX CODE
 +1        KILL ^XOB(18.12,"PRIMARY")
.01       ; NAME
 +1        if $LENGTH(X)>30!($LENGTH(X)<3)!'(X'?1P.E)
               KILL X
.01XRF1S  ; SET LOGIC FOR 'B' XREF
 +1        SET ^XOB(18.12,"B",$EXTRACT(X,1,30),DA)=""
.01XRF1K  ; KILL LOGIC FOR 'B' XREF
 +1        KILL ^XOB(18.12,"B",$EXTRACT(X,1,30),DA)
.03       ; PORT
 +1        if +X'=X!(X>64000)!(X<1)!(X?.E1"."1N.N)
               KILL X
.04       ; SERVER
 +1        if $LENGTH(X)>60!($LENGTH(X)<3)
               KILL X
.07       ; DEFAULT HTTP TIMEOUT
 +1        if +X'=X!(X>7200)!(X<5)!(X?.E1"."1.N)
               KILL X
1.02      ; Want to edit PASSWORD (Y/N)
 +1        DO EDIT^XOBWPWD
1.03      ; DATE PASSWORD LAST CHANGED
 +1        SET %DT="ESTX"
           DO ^%DT
           SET X=Y
           if Y<1
               KILL X
3.02      ; SSL CONFIGURATION
 +1        if $LENGTH(X)>40!($LENGTH(X)<1)
               KILL X
           IF $DATA(X)
               IF '$$CHKNAME^XOBWSSL(X)
                   KILL X
3.02HELP  ; EXECUTABLE HELP CODE
 +1        DO DISPLAY^XOBWSSL
3.03      ; SSL PORT
 +1        if +X'=X!(X>64000)!(X<1)!(X?.E1"."1N.N)
               KILL X
200       ; USERNAME
 +1        if $LENGTH(X)>50!($LENGTH(X)<3)
               KILL X
300       ; PASSWORD
 +1        if $LENGTH(X)>50!($LENGTH(X)<1)
               KILL X
300OT     ; OUTPUT TRANSFORM CODE
 +1        SET Y(0)=Y
           SET Y(0)=Y
           SET Y="<Hidden>"
300XRF1S  ; SET LOGIC FOR '1' XREF
 +1        KILL DIV
           SET DIV=X
           SET D0=DA
           SET DIV(0)=D0
           SET Y(1)=$SELECT($DATA(^XOB(18.12,D0,1)):^(1),1:"")
           SET X=$PIECE(Y(1),U,3)
           SET X=X
           SET DIU=X
           KILL Y
           SET X=DIV
           SET %=$PIECE($HOROLOG,",",2)
           SET X=DT_(%\60#60/100+(%\3600)+(%#60/10000)/100)
           XECUTE ^DD(18.12,300,1,1,1.4)
300XRF1n1.4 ; SET LOGIC FOR '1' XREF
 +1        SET DIH=$GET(^XOB(18.12,DIV(0),1))
           SET DIV=X
           SET $PIECE(^(1),U,3)=DIV
           SET DIH=18.12
           SET DIG=1.03
           DO ^DICR
300XRF1K  ; KILL LOGIC FOR '1' XREF
 +1        QUIT 


*****   INDEX OF |dd18.12   *****


Local Variables      Line Occurrences   ( >> not killed explicitly)
                                        ( * Changed  ! Killed  ~ Newed)
>> %            300XRF1S+1*
>> %DT          1.03+1*
>> D0           300XRF1S+1*
>> DA           IXPRIMARYSL+1,IXPRIMARYKL+1,.01XRF1S+1,.01XRF1K+1,300XRF1S+1
>> DIG          300XRF1n1.4+1*
>> DIH          300XRF1n1.4+1*
>> DIU          300XRF1S+1*
   DIV          300XRF1S+1!*,300XRF1n1.4+1*
   DIV(0        300XRF1S+1*,300XRF1n1.4+1
   DT           300XRF1S+1
   U            300XRF1S+1,300XRF1n1.4+1
   X            IXPRIMARYSL+1,IXPRIMARYKL+1,.01+1!,.01XRF1S+1,.01XRF1K+1,.03+1!
                .04+1!,.07+1!,1.03+1*!,3.02+1!,3.03+1!,200+1!,300+1!
                300XRF1S+1*,300XRF1n1.4+1
   Y            1.03+1,300OT+1*,300XRF1S+1!
   Y(0          300OT+1*
   Y(1          300XRF1S+1*

Global Variables  ( * Changed  ! Killed)
   ^DD(18.12           300XRF1S+1
   ^XOB(18.12          IXPRIMARYSL+1*,IXPRIMARYKL+1!,IXPRIMARYKEIC+1!
                       .01XRF1S+1*,.01XRF1K+1!,300XRF1S+1,300XRF1n1.4+1

Naked Globals
   ^(1          300XRF1S+1,300XRF1n1.4+1*

Cache Objects
   NONE

Marked Items
   NONE

Label References
   NONE

External References
   ^%DT                1.03+1
   ^DICR               300XRF1n1.4+1
   EDIT^XOBWPWD        1.02+1
   $$CHKNAME^XOBWSSL   3.02+1
   DISPLAY^XOBWSSL     3.02HELP+1

*****   END   *****

|dd18.121   431     printed  Mar 13, 2018@10:55:07                     Page 22

|dd18.121 ;DD of the AUTHORIZED WEB SERVICES sub-file of the WEB SERVER (#18.12) file.
.01       ; WEB SERVICE
 +1        QUIT 
.01XRF1S  ; SET LOGIC FOR 'B' XREF
 +1        SET ^XOB(18.12,DA(1),100,"B",$EXTRACT(X,1,30),DA)=""
.01XRF1K  ; KILL LOGIC FOR 'B' XREF
 +1        KILL ^XOB(18.12,DA(1),100,"B",$EXTRACT(X,1,30),DA)
.01XRF2S  ; SET LOGIC FOR 'AB' XREF
 +1        SET ^XOB(18.12,"AB",$EXTRACT(X,1,30),DA(1),DA)=""
.01XRF2K  ; KILL LOGIC FOR 'AB' XREF
 +1        KILL ^XOB(18.12,"AB",$EXTRACT(X,1,30),DA(1),DA)


*****   INDEX OF |dd18.121   *****


Local Variables      Line Occurrences   ( >> not killed explicitly)
                                        ( * Changed  ! Killed  ~ Newed)
>> DA           .01XRF1S+1,.01XRF1K+1,.01XRF2S+1,.01XRF2K+1
>> DA(1         .01XRF1S+1,.01XRF1K+1,.01XRF2S+1,.01XRF2K+1
>> X            .01XRF1S+1,.01XRF1K+1,.01XRF2S+1,.01XRF2K+1

Global Variables  ( * Changed  ! Killed)
   ^XOB(18.12          .01XRF1S+1*,.01XRF1K+1!,.01XRF2S+1*,.01XRF2K+1!

Naked Globals
   NONE

Cache Objects
   NONE

Marked Items
   NONE

Label References
   NONE

External References
   NONE

*****   END   *****

|dd18.13   673     printed  Mar 13, 2018@10:55:07                      Page 23

|dd18.13  ;DD of the WEB SERVER LOOKUP KEY file.
IXPRIMARYSL ; SET LOGIC
 +1        SET ^XOB(18.13,"PRIMARY",X,DA)=""
IXPRIMARYKL ; KILL LOGIC
 +1        KILL ^XOB(18.13,"PRIMARY",X,DA)
IXPRIMARYKEIC ; KILL ENTIRE INDEX CODE
 +1        KILL ^XOB(18.13,"PRIMARY")
.01       ; KEY NAME
 +1        SET X=$$UP^XLFSTR(X)
           if $LENGTH(X)>30!($LENGTH(X)<3)!'(X'?1P.E)
               KILL X
.01XRF1S  ; SET LOGIC FOR 'B' XREF
 +1        SET ^XOB(18.13,"B",$EXTRACT(X,1,30),DA)=""
.01XRF1K  ; KILL LOGIC FOR 'B' XREF
 +1        KILL ^XOB(18.13,"B",$EXTRACT(X,1,30),DA)
.02       ; BRIEF DESCRIPTION
 +1        if $LENGTH(X)>50!($LENGTH(X)<2)
               KILL X
.03       ; ASSOCIATED WEB SERVER
 +1        QUIT 
.03XRF1S  ; SET LOGIC FOR 'WS' XREF
 +1        SET ^XOB(18.13,"WS",$EXTRACT(X,1,30),DA)=""
.03XRF1K  ; KILL LOGIC FOR 'WS' XREF
 +1        KILL ^XOB(18.13,"WS",$EXTRACT(X,1,30),DA)


*****   INDEX OF |dd18.13   *****


Local Variables      Line Occurrences   ( >> not killed explicitly)
                                        ( * Changed  ! Killed  ~ Newed)
>> DA           IXPRIMARYSL+1,IXPRIMARYKL+1,.01XRF1S+1,.01XRF1K+1,.03XRF1S+1
                .03XRF1K+1
   X            IXPRIMARYSL+1,IXPRIMARYKL+1,.01+1*!,.01XRF1S+1,.01XRF1K+1
                .02+1!,.03XRF1S+1,.03XRF1K+1

Global Variables  ( * Changed  ! Killed)
   ^XOB(18.13          IXPRIMARYSL+1*,IXPRIMARYKL+1!,IXPRIMARYKEIC+1!
                       .01XRF1S+1*,.01XRF1K+1!,.03XRF1S+1*,.03XRF1K+1!

Naked Globals
   NONE

Cache Objects
   NONE

Marked Items
   NONE

Label References
   NONE

External References
   $$UP^XLFSTR         .01+1

*****   END   *****

|inpt   403     printed  Mar 13, 2018@10:55:07                         Page 24

|inpt     ; '' Input Templates.
 +1       ;
1749      ; XOBW WEB SERVER KEY SETUP - EXECUTABLE CODE
 +1       ;
1747      ; XOBW WEB SERVER SETUP - EXECUTABLE CODE
 +1       ;
 +2        WRITE !!,"Security Credentials"
 +3        WRITE !,"===================="
 +4        IF +X=0
               SET Y="@100"
 +5        IF '$$SSLOK^XOBWENV()
               SET Y="@200"
 +6        WRITE !!,"SSL Setup"
 +7        WRITE !,"========="
1748      ; XOBW WEB SERVICE EDIT - EXECUTABLE CODE
 +1        WRITE !,"========="
 +2        IF X'=1
               SET Y=200


*****   INDEX OF |inpt   *****


Local Variables      Line Occurrences   ( >> not killed explicitly)
                                        ( * Changed  ! Killed  ~ Newed)
>> X            1747+4,1748+2
>> Y            1747+4*,1747+5*,1748+2*

Global Variables  ( * Changed  ! Killed)
   NONE

Naked Globals
   NONE

Cache Objects
   NONE

Marked Items
   NONE

Label References
   NONE

External References
   $$SSLOK^XOBWENV     1747+5

*****   END   *****

|list   1572     printed  Mar 13, 2018@10:55:07                        Page 25

|list     ; '' List Templates.
 +1       ;
666       ; XOBW WEB SERVER - HEADER CODE (#100)
 +1        DO HDR^XOBWU
 +2       ; XOBW WEB SERVER - EXPAND CODE (#102)
 +3        DO EXPAND^XOBWU
 +4       ; XOBW WEB SERVER - HELP CODE (#103)
 +5        DO HELP^XOBWU
 +6       ; XOBW WEB SERVER - EXIT CODE (#105)
 +7        DO EXIT^XOBWU
 +8       ; XOBW WEB SERVER - ENTRY CODE (#106)
 +9        DO INIT^XOBWU
 +10      ; XOBW WEB SERVER - ARRAY NAME (#107)
 +11       IF $LENGTH(^TMP("XOB WEBSERVERS",$JOB))
               QUIT 
669       ; XOBW WEB SERVER LOOKUPKEY - HEADER CODE (#100)
 +1        DO HDR^XOBWUA
 +2       ; XOBW WEB SERVER LOOKUPKEY - EXPAND CODE (#102)
 +3        DO EXPAND^XOBWUA
 +4       ; XOBW WEB SERVER LOOKUPKEY - HELP CODE (#103)
 +5        DO HELP^XOBWUA
 +6       ; XOBW WEB SERVER LOOKUPKEY - EXIT CODE (#105)
 +7        DO EXIT^XOBWUA
 +8       ; XOBW WEB SERVER LOOKUPKEY - ENTRY CODE (#106)
 +9        DO INIT^XOBWUA
 +10      ; XOBW WEB SERVER LOOKUPKEY - ARRAY NAME (#107)
 +11       IF $LENGTH(^TMP("XOB WEB SERVER LOOKUP",$JOB))
               QUIT 
667       ; XOBW WEB SERVICE - HEADER CODE (#100)
 +1        DO HDR^XOBWUS
 +2       ; XOBW WEB SERVICE - EXPAND CODE (#102)
 +3        DO EXPAND^XOBWUS
 +4       ; XOBW WEB SERVICE - HELP CODE (#103)
 +5        DO HELP^XOBWUS
 +6       ; XOBW WEB SERVICE - EXIT CODE (#105)
 +7        DO EXIT^XOBWUS
 +8       ; XOBW WEB SERVICE - ENTRY CODE (#106)
 +9        DO INIT^XOBWUS
 +10      ; XOBW WEB SERVICE - ARRAY NAME (#107)
 +11       IF $LENGTH(^TMP("XOB WEBSERVICES",$JOB))
               QUIT 
668       ; XOBW WEB SERVICE DISPLAY - HEADER CODE (#100)
 +1        DO HDR^XOBWUS2
 +2       ; XOBW WEB SERVICE DISPLAY - EXPAND CODE (#102)
 +3       ;
 +4       ; XOBW WEB SERVICE DISPLAY - HELP CODE (#103)
 +5        DO HELP^XOBWUS2
 +6       ; XOBW WEB SERVICE DISPLAY - EXIT CODE (#105)
 +7        DO EXIT^XOBWUS2
 +8       ; XOBW WEB SERVICE DISPLAY - ENTRY CODE (#106)
 +9        DO INIT^XOBWUS2
 +10      ; XOBW WEB SERVICE DISPLAY - ARRAY NAME (#107)
 +11      ;


*****   INDEX OF |list   *****


Local Variables      Line Occurrences   ( >> not killed explicitly)
                                        ( * Changed  ! Killed  ~ Newed)
   NONE

Global Variables  ( * Changed  ! Killed)
   ^TMP("XOB WEB SERVER LOOKUP"
                       669+11
   ^TMP("XOB WEBSERVERS"
                       666+11
   ^TMP("XOB WEBSERVICES"
                       667+11

Naked Globals
   NONE

Cache Objects
   NONE

Marked Items
   NONE

Label References
   NONE

External References
   EXIT^XOBWU          666+7
   EXPAND^XOBWU        666+3
   HDR^XOBWU           666+1
   HELP^XOBWU          666+5
   INIT^XOBWU          666+9
   EXIT^XOBWUA         669+7
   EXPAND^XOBWUA       669+3
   HDR^XOBWUA          669+1
   HELP^XOBWUA         669+5
   INIT^XOBWUA         669+9
   EXIT^XOBWUS         667+7
   EXPAND^XOBWUS       667+3
   HDR^XOBWUS          667+1
   HELP^XOBWUS         667+5
   INIT^XOBWUS         667+9
   EXIT^XOBWUS2        668+7
   HDR^XOBWUS2         668+1
   HELP^XOBWUS2        668+5
   INIT^XOBWUS2        668+9

*****   END   *****

|opt   118     printed  Mar 13, 2018@10:55:07                          Page 26

|opt      ; '' Options.
 +1       ;
11222     ; XOBW WEB SERVER MANAGER - Web Server Manager (action)
 +1       ; ENTRY ACTION
 +2        DO EN^XOBWU


*****   INDEX OF |opt   *****


Local Variables      Line Occurrences   ( >> not killed explicitly)
                                        ( * Changed  ! Killed  ~ Newed)
   NONE

Global Variables  ( * Changed  ! Killed)
   NONE

Naked Globals
   NONE

Cache Objects
   NONE

Marked Items
   NONE

Label References
   NONE

External References
   EN^XOBWU            11222+2

*****   END   *****

|ptcl   11930     printed  Mar 13, 2018@10:55:07                       Page 27

|ptcl     ; '' Protocols.
 +1       ;
4433      ; XOBW ASSOCIATE ADD - EXIT ACTION (#15)
 +1       ;
 +2       ; XOBW ASSOCIATE ADD - ENTRY ACTION (#20)
 +3        DO ADD^XOBWUA
 +4       ; XOBW ASSOCIATE ADD - SCREEN (#24)
 +5       ;
 +6       ; XOBW ASSOCIATE ADD - HEADER (#26)
 +7       ;
 +8       ; XOBW ASSOCIATE ADD - MENU HELP (#27)
 +9       ;
 +10      ; XOBW ASSOCIATE ADD - ORDER PRINT ACTION (#100)
 +11      ;
 +12      ; XOBW ASSOCIATE ADD - ORDER CANCEL ACTION (#100.1)
 +13      ;
 +14      ; XOBW ASSOCIATE ADD - ORDER PURGE ACTION (#100.2)
 +15      ;
 +16      ; XOBW ASSOCIATE ADD - PROCESSING ROUTINE (#771)
 +17      ;
 +18      ; XOBW ASSOCIATE ADD - ORDER PURGE ACTION (#772)
 +19      ;
 +20      ; XOBW ASSOCIATE ADD - ROUTING LOGIC (#774)
 +21      ;
4435      ; XOBW ASSOCIATE DELETE - EXIT ACTION (#15)
 +1       ;
 +2       ; XOBW ASSOCIATE DELETE - ENTRY ACTION (#20)
 +3        DO DEL^XOBWUA
 +4       ; XOBW ASSOCIATE DELETE - SCREEN (#24)
 +5       ;
 +6       ; XOBW ASSOCIATE DELETE - HEADER (#26)
 +7       ;
 +8       ; XOBW ASSOCIATE DELETE - MENU HELP (#27)
 +9       ;
 +10      ; XOBW ASSOCIATE DELETE - ORDER PRINT ACTION (#100)
 +11      ;
 +12      ; XOBW ASSOCIATE DELETE - ORDER CANCEL ACTION (#100.1)
 +13      ;
 +14      ; XOBW ASSOCIATE DELETE - ORDER PURGE ACTION (#100.2)
 +15      ;
 +16      ; XOBW ASSOCIATE DELETE - PROCESSING ROUTINE (#771)
 +17      ;
 +18      ; XOBW ASSOCIATE DELETE - ORDER PURGE ACTION (#772)
 +19      ;
 +20      ; XOBW ASSOCIATE DELETE - ROUTING LOGIC (#774)
 +21      ;
4434      ; XOBW ASSOCIATE EDIT - EXIT ACTION (#15)
 +1       ;
 +2       ; XOBW ASSOCIATE EDIT - ENTRY ACTION (#20)
 +3        DO EDIT^XOBWUA
 +4       ; XOBW ASSOCIATE EDIT - SCREEN (#24)
 +5       ;
 +6       ; XOBW ASSOCIATE EDIT - HEADER (#26)
 +7       ;
 +8       ; XOBW ASSOCIATE EDIT - MENU HELP (#27)
 +9       ;
 +10      ; XOBW ASSOCIATE EDIT - ORDER PRINT ACTION (#100)
 +11      ;
 +12      ; XOBW ASSOCIATE EDIT - ORDER CANCEL ACTION (#100.1)
 +13      ;
 +14      ; XOBW ASSOCIATE EDIT - ORDER PURGE ACTION (#100.2)
 +15      ;
 +16      ; XOBW ASSOCIATE EDIT - PROCESSING ROUTINE (#771)
 +17      ;
 +18      ; XOBW ASSOCIATE EDIT - ORDER PURGE ACTION (#772)
 +19      ;
 +20      ; XOBW ASSOCIATE EDIT - ROUTING LOGIC (#774)
 +21      ;
4437      ; XOBW ASSOCIATE FILTER KEY - EXIT ACTION (#15)
 +1       ;
 +2       ; XOBW ASSOCIATE FILTER KEY - ENTRY ACTION (#20)
 +3        DO KFILTER^XOBWUA
 +4       ; XOBW ASSOCIATE FILTER KEY - SCREEN (#24)
 +5       ;
 +6       ; XOBW ASSOCIATE FILTER KEY - HEADER (#26)
 +7       ;
 +8       ; XOBW ASSOCIATE FILTER KEY - MENU HELP (#27)
 +9       ;
 +10      ; XOBW ASSOCIATE FILTER KEY - ORDER PRINT ACTION (#100)
 +11      ;
 +12      ; XOBW ASSOCIATE FILTER KEY - ORDER CANCEL ACTION (#100.1)
 +13      ;
 +14      ; XOBW ASSOCIATE FILTER KEY - ORDER PURGE ACTION (#100.2)
 +15      ;
 +16      ; XOBW ASSOCIATE FILTER KEY - PROCESSING ROUTINE (#771)
 +17      ;
 +18      ; XOBW ASSOCIATE FILTER KEY - ORDER PURGE ACTION (#772)
 +19      ;
 +20      ; XOBW ASSOCIATE FILTER KEY - ROUTING LOGIC (#774)
 +21      ;
4438      ; XOBW ASSOCIATE FILTER SERVER - EXIT ACTION (#15)
 +1       ;
 +2       ; XOBW ASSOCIATE FILTER SERVER - ENTRY ACTION (#20)
 +3        DO SFILTER^XOBWUA
 +4       ; XOBW ASSOCIATE FILTER SERVER - SCREEN (#24)
 +5       ;
 +6       ; XOBW ASSOCIATE FILTER SERVER - HEADER (#26)
 +7       ;
 +8       ; XOBW ASSOCIATE FILTER SERVER - MENU HELP (#27)
 +9       ;
 +10      ; XOBW ASSOCIATE FILTER SERVER - ORDER PRINT ACTION (#100)
 +11      ;
 +12      ; XOBW ASSOCIATE FILTER SERVER - ORDER CANCEL ACTION (#100.1)
 +13      ;
 +14      ; XOBW ASSOCIATE FILTER SERVER - ORDER PURGE ACTION (#100.2)
 +15      ;
 +16      ; XOBW ASSOCIATE FILTER SERVER - PROCESSING ROUTINE (#771)
 +17      ;
 +18      ; XOBW ASSOCIATE FILTER SERVER - ORDER PURGE ACTION (#772)
 +19      ;
 +20      ; XOBW ASSOCIATE FILTER SERVER - ROUTING LOGIC (#774)
 +21      ;
4432      ; XOBW ASSOCIATE MENU - EXIT ACTION (#15)
 +1       ;
 +2       ; XOBW ASSOCIATE MENU - ENTRY ACTION (#20)
 +3       ;
 +4       ; XOBW ASSOCIATE MENU - SCREEN (#24)
 +5       ;
 +6       ; XOBW ASSOCIATE MENU - HEADER (#26)
 +7        DO SHOW^VALM
 +8       ; XOBW ASSOCIATE MENU - MENU HELP (#27)
 +9       ;
 +10      ; XOBW ASSOCIATE MENU - ORDER PRINT ACTION (#100)
 +11      ;
 +12      ; XOBW ASSOCIATE MENU - ORDER CANCEL ACTION (#100.1)
 +13      ;
 +14      ; XOBW ASSOCIATE MENU - ORDER PURGE ACTION (#100.2)
 +15      ;
 +16      ; XOBW ASSOCIATE MENU - PROCESSING ROUTINE (#771)
 +17      ;
 +18      ; XOBW ASSOCIATE MENU - ORDER PURGE ACTION (#772)
 +19      ;
 +20      ; XOBW ASSOCIATE MENU - ROUTING LOGIC (#774)
 +21      ;
4436      ; XOBW ASSOCIATE SORT - EXIT ACTION (#15)
 +1       ;
 +2       ; XOBW ASSOCIATE SORT - ENTRY ACTION (#20)
 +3        DO SORT^XOBWUA
 +4       ; XOBW ASSOCIATE SORT - SCREEN (#24)
 +5       ;
 +6       ; XOBW ASSOCIATE SORT - HEADER (#26)
 +7       ;
 +8       ; XOBW ASSOCIATE SORT - MENU HELP (#27)
 +9       ;
 +10      ; XOBW ASSOCIATE SORT - ORDER PRINT ACTION (#100)
 +11      ;
 +12      ; XOBW ASSOCIATE SORT - ORDER CANCEL ACTION (#100.1)
 +13      ;
 +14      ; XOBW ASSOCIATE SORT - ORDER PURGE ACTION (#100.2)
 +15      ;
 +16      ; XOBW ASSOCIATE SORT - PROCESSING ROUTINE (#771)
 +17      ;
 +18      ; XOBW ASSOCIATE SORT - ORDER PURGE ACTION (#772)
 +19      ;
 +20      ; XOBW ASSOCIATE SORT - ROUTING LOGIC (#774)
 +21      ;
4423      ; XOBW WEB SERVER ADD - EXIT ACTION (#15)
 +1       ;
 +2       ; XOBW WEB SERVER ADD - ENTRY ACTION (#20)
 +3        DO ADD^XOBWU
 +4       ; XOBW WEB SERVER ADD - SCREEN (#24)
 +5       ;
 +6       ; XOBW WEB SERVER ADD - HEADER (#26)
 +7       ;
 +8       ; XOBW WEB SERVER ADD - MENU HELP (#27)
 +9       ;
 +10      ; XOBW WEB SERVER ADD - ORDER PRINT ACTION (#100)
 +11      ;
 +12      ; XOBW WEB SERVER ADD - ORDER CANCEL ACTION (#100.1)
 +13      ;
 +14      ; XOBW WEB SERVER ADD - ORDER PURGE ACTION (#100.2)
 +15      ;
 +16      ; XOBW WEB SERVER ADD - PROCESSING ROUTINE (#771)
 +17      ;
 +18      ; XOBW WEB SERVER ADD - ORDER PURGE ACTION (#772)
 +19      ;
 +20      ; XOBW WEB SERVER ADD - ROUTING LOGIC (#774)
 +21      ;
4424      ; XOBW WEB SERVER DELETE - EXIT ACTION (#15)
 +1       ;
 +2       ; XOBW WEB SERVER DELETE - ENTRY ACTION (#20)
 +3        DO DEL^XOBWU
 +4       ; XOBW WEB SERVER DELETE - SCREEN (#24)
 +5       ;
 +6       ; XOBW WEB SERVER DELETE - HEADER (#26)
 +7       ;
 +8       ; XOBW WEB SERVER DELETE - MENU HELP (#27)
 +9       ;
 +10      ; XOBW WEB SERVER DELETE - ORDER PRINT ACTION (#100)
 +11      ;
 +12      ; XOBW WEB SERVER DELETE - ORDER CANCEL ACTION (#100.1)
 +13      ;
 +14      ; XOBW WEB SERVER DELETE - ORDER PURGE ACTION (#100.2)
 +15      ;
 +16      ; XOBW WEB SERVER DELETE - PROCESSING ROUTINE (#771)
 +17      ;
 +18      ; XOBW WEB SERVER DELETE - ORDER PURGE ACTION (#772)
 +19      ;
 +20      ; XOBW WEB SERVER DELETE - ROUTING LOGIC (#774)
 +21      ;
4422      ; XOBW WEB SERVER EDIT - EXIT ACTION (#15)
 +1       ;
 +2       ; XOBW WEB SERVER EDIT - ENTRY ACTION (#20)
 +3        DO EDIT^XOBWU
 +4       ; XOBW WEB SERVER EDIT - SCREEN (#24)
 +5       ;
 +6       ; XOBW WEB SERVER EDIT - HEADER (#26)
 +7       ;
 +8       ; XOBW WEB SERVER EDIT - MENU HELP (#27)
 +9       ;
 +10      ; XOBW WEB SERVER EDIT - ORDER PRINT ACTION (#100)
 +11      ;
 +12      ; XOBW WEB SERVER EDIT - ORDER CANCEL ACTION (#100.1)
 +13      ;
 +14      ; XOBW WEB SERVER EDIT - ORDER PURGE ACTION (#100.2)
 +15      ;
 +16      ; XOBW WEB SERVER EDIT - PROCESSING ROUTINE (#771)
 +17      ;
 +18      ; XOBW WEB SERVER EDIT - ORDER PURGE ACTION (#772)
 +19      ;
 +20      ; XOBW WEB SERVER EDIT - ROUTING LOGIC (#774)
 +21      ;
4439      ; XOBW WEB SERVER LOOKUP KEY MANAGER - EXIT ACTION (#15)
 +1       ;
 +2       ; XOBW WEB SERVER LOOKUP KEY MANAGER - ENTRY ACTION (#20)
 +3        DO LKM^XOBWU
 +4       ; XOBW WEB SERVER LOOKUP KEY MANAGER - SCREEN (#24)
 +5       ;
 +6       ; XOBW WEB SERVER LOOKUP KEY MANAGER - HEADER (#26)
 +7       ;
 +8       ; XOBW WEB SERVER LOOKUP KEY MANAGER - MENU HELP (#27)
 +9       ;
 +10      ; XOBW WEB SERVER LOOKUP KEY MANAGER - ORDER PRINT ACTION (#100)
 +11      ;
 +12      ; XOBW WEB SERVER LOOKUP KEY MANAGER - ORDER CANCEL ACTION (#100.1)
 +13      ;
 +14      ; XOBW WEB SERVER LOOKUP KEY MANAGER - ORDER PURGE ACTION (#100.2)
 +15      ;
 +16      ; XOBW WEB SERVER LOOKUP KEY MANAGER - PROCESSING ROUTINE (#771)
 +17      ;
 +18      ; XOBW WEB SERVER LOOKUP KEY MANAGER - ORDER PURGE ACTION (#772)
 +19      ;
 +20      ; XOBW WEB SERVER LOOKUP KEY MANAGER - ROUTING LOGIC (#774)
 +21      ;
4421      ; XOBW WEB SERVER MENU - EXIT ACTION (#15)
 +1       ;
 +2       ; XOBW WEB SERVER MENU - ENTRY ACTION (#20)
 +3       ;
 +4       ; XOBW WEB SERVER MENU - SCREEN (#24)
 +5        IF 1
               if $DATA(^ORD(101,+$PIECE(^ORD(101,DA(1),10,DA,0),"^",1),24))
                   XECUTE ^(24)
 +6       ; XOBW WEB SERVER MENU - HEADER (#26)
 +7        DO SHOW^VALM
 +8       ; XOBW WEB SERVER MENU - MENU HELP (#27)
 +9       ;
 +10      ; XOBW WEB SERVER MENU - ORDER PRINT ACTION (#100)
 +11      ;
 +12      ; XOBW WEB SERVER MENU - ORDER CANCEL ACTION (#100.1)
 +13      ;
 +14      ; XOBW WEB SERVER MENU - ORDER PURGE ACTION (#100.2)
 +15      ;
 +16      ; XOBW WEB SERVER MENU - PROCESSING ROUTINE (#771)
 +17      ;
 +18      ; XOBW WEB SERVER MENU - ORDER PURGE ACTION (#772)
 +19      ;
 +20      ; XOBW WEB SERVER MENU - ROUTING LOGIC (#774)
 +21      ;
4431      ; XOBW WEB SERVER TEST WS AVAILABILITY - EXIT ACTION (#15)
 +1       ;
 +2       ; XOBW WEB SERVER TEST WS AVAILABILITY - ENTRY ACTION (#20)
 +3        DO AVAIL^XOBWU
 +4       ; XOBW WEB SERVER TEST WS AVAILABILITY - SCREEN (#24)
 +5       ;
 +6       ; XOBW WEB SERVER TEST WS AVAILABILITY - HEADER (#26)
 +7       ;
 +8       ; XOBW WEB SERVER TEST WS AVAILABILITY - MENU HELP (#27)
 +9       ;
 +10      ; XOBW WEB SERVER TEST WS AVAILABILITY - ORDER PRINT ACTION (#100)
 +11      ;
 +12      ; XOBW WEB SERVER TEST WS AVAILABILITY - ORDER CANCEL ACTION (#100.1)
 +13      ;
 +14      ; XOBW WEB SERVER TEST WS AVAILABILITY - ORDER PURGE ACTION (#100.2)
 +15      ;
 +16      ; XOBW WEB SERVER TEST WS AVAILABILITY - PROCESSING ROUTINE (#771)
 +17      ;
 +18      ; XOBW WEB SERVER TEST WS AVAILABILITY - ORDER PURGE ACTION (#772)
 +19      ;
 +20      ; XOBW WEB SERVER TEST WS AVAILABILITY - ROUTING LOGIC (#774)
 +21      ;
4425      ; XOBW WEB SERVER TESTER - EXIT ACTION (#15)
 +1       ;
 +2       ; XOBW WEB SERVER TESTER - ENTRY ACTION (#20)
 +3        DO WST^XOBWU
 +4       ; XOBW WEB SERVER TESTER - SCREEN (#24)
 +5        IF $TEXT(SOAPNAME^XOBTPST)]""
 +6       ; XOBW WEB SERVER TESTER - HEADER (#26)
 +7       ;
 +8       ; XOBW WEB SERVER TESTER - MENU HELP (#27)
 +9       ;
 +10      ; XOBW WEB SERVER TESTER - ORDER PRINT ACTION (#100)
 +11      ;
 +12      ; XOBW WEB SERVER TESTER - ORDER CANCEL ACTION (#100.1)
 +13      ;
 +14      ; XOBW WEB SERVER TESTER - ORDER PURGE ACTION (#100.2)
 +15      ;
 +16      ; XOBW WEB SERVER TESTER - PROCESSING ROUTINE (#771)
 +17      ;
 +18      ; XOBW WEB SERVER TESTER - ORDER PURGE ACTION (#772)
 +19      ;
 +20      ; XOBW WEB SERVER TESTER - ROUTING LOGIC (#774)
 +21      ;
4427      ; XOBW WEB SERVICE ADD - EXIT ACTION (#15)
 +1       ;
 +2       ; XOBW WEB SERVICE ADD - ENTRY ACTION (#20)
 +3        DO ADD^XOBWUS
 +4       ; XOBW WEB SERVICE ADD - SCREEN (#24)
 +5       ;
 +6       ; XOBW WEB SERVICE ADD - HEADER (#26)
 +7       ;
 +8       ; XOBW WEB SERVICE ADD - MENU HELP (#27)
 +9       ;
 +10      ; XOBW WEB SERVICE ADD - ORDER PRINT ACTION (#100)
 +11      ;
 +12      ; XOBW WEB SERVICE ADD - ORDER CANCEL ACTION (#100.1)
 +13      ;
 +14      ; XOBW WEB SERVICE ADD - ORDER PURGE ACTION (#100.2)
 +15      ;
 +16      ; XOBW WEB SERVICE ADD - PROCESSING ROUTINE (#771)
 +17      ;
 +18      ; XOBW WEB SERVICE ADD - ORDER PURGE ACTION (#772)
 +19      ;
 +20      ; XOBW WEB SERVICE ADD - ROUTING LOGIC (#774)
 +21      ;
4429      ; XOBW WEB SERVICE DELETE - EXIT ACTION (#15)
 +1       ;
 +2       ; XOBW WEB SERVICE DELETE - ENTRY ACTION (#20)
 +3        DO DEL^XOBWUS
 +4       ; XOBW WEB SERVICE DELETE - SCREEN (#24)
 +5       ;
 +6       ; XOBW WEB SERVICE DELETE - HEADER (#26)
 +7       ;
 +8       ; XOBW WEB SERVICE DELETE - MENU HELP (#27)
 +9       ;
 +10      ; XOBW WEB SERVICE DELETE - ORDER PRINT ACTION (#100)
 +11      ;
 +12      ; XOBW WEB SERVICE DELETE - ORDER CANCEL ACTION (#100.1)
 +13      ;
 +14      ; XOBW WEB SERVICE DELETE - ORDER PURGE ACTION (#100.2)
 +15      ;
 +16      ; XOBW WEB SERVICE DELETE - PROCESSING ROUTINE (#771)
 +17      ;
 +18      ; XOBW WEB SERVICE DELETE - ORDER PURGE ACTION (#772)
 +19      ;
 +20      ; XOBW WEB SERVICE DELETE - ROUTING LOGIC (#774)
 +21      ;
4428      ; XOBW WEB SERVICE EDIT - EXIT ACTION (#15)
 +1       ;
 +2       ; XOBW WEB SERVICE EDIT - ENTRY ACTION (#20)
 +3        DO EDIT^XOBWUS
 +4       ; XOBW WEB SERVICE EDIT - SCREEN (#24)
 +5       ;
 +6       ; XOBW WEB SERVICE EDIT - HEADER (#26)
 +7       ;
 +8       ; XOBW WEB SERVICE EDIT - MENU HELP (#27)
 +9       ;
 +10      ; XOBW WEB SERVICE EDIT - ORDER PRINT ACTION (#100)
 +11      ;
 +12      ; XOBW WEB SERVICE EDIT - ORDER CANCEL ACTION (#100.1)
 +13      ;
 +14      ; XOBW WEB SERVICE EDIT - ORDER PURGE ACTION (#100.2)
 +15      ;
 +16      ; XOBW WEB SERVICE EDIT - PROCESSING ROUTINE (#771)
 +17      ;
 +18      ; XOBW WEB SERVICE EDIT - ORDER PURGE ACTION (#772)
 +19      ;
 +20      ; XOBW WEB SERVICE EDIT - ROUTING LOGIC (#774)
 +21      ;
4430      ; XOBW WEB SERVICE MANAGER - EXIT ACTION (#15)
 +1       ;
 +2       ; XOBW WEB SERVICE MANAGER - ENTRY ACTION (#20)
 +3        DO WSM^XOBWU
 +4       ; XOBW WEB SERVICE MANAGER - SCREEN (#24)
 +5       ;
 +6       ; XOBW WEB SERVICE MANAGER - HEADER (#26)
 +7       ;
 +8       ; XOBW WEB SERVICE MANAGER - MENU HELP (#27)
 +9       ;
 +10      ; XOBW WEB SERVICE MANAGER - ORDER PRINT ACTION (#100)
 +11      ;
 +12      ; XOBW WEB SERVICE MANAGER - ORDER CANCEL ACTION (#100.1)
 +13      ;
 +14      ; XOBW WEB SERVICE MANAGER - ORDER PURGE ACTION (#100.2)
 +15      ;
 +16      ; XOBW WEB SERVICE MANAGER - PROCESSING ROUTINE (#771)
 +17      ;
 +18      ; XOBW WEB SERVICE MANAGER - ORDER PURGE ACTION (#772)
 +19      ;
 +20      ; XOBW WEB SERVICE MANAGER - ROUTING LOGIC (#774)
 +21      ;
4426      ; XOBW WEB SERVICE MENU - EXIT ACTION (#15)
 +1       ;
 +2       ; XOBW WEB SERVICE MENU - ENTRY ACTION (#20)
 +3       ;
 +4       ; XOBW WEB SERVICE MENU - SCREEN (#24)
 +5       ;
 +6       ; XOBW WEB SERVICE MENU - HEADER (#26)
 +7        DO SHOW^VALM
 +8       ; XOBW WEB SERVICE MENU - MENU HELP (#27)
 +9       ;
 +10      ; XOBW WEB SERVICE MENU - ORDER PRINT ACTION (#100)
 +11      ;
 +12      ; XOBW WEB SERVICE MENU - ORDER CANCEL ACTION (#100.1)
 +13      ;
 +14      ; XOBW WEB SERVICE MENU - ORDER PURGE ACTION (#100.2)
 +15      ;
 +16      ; XOBW WEB SERVICE MENU - PROCESSING ROUTINE (#771)
 +17      ;
 +18      ; XOBW WEB SERVICE MENU - ORDER PURGE ACTION (#772)
 +19      ;
 +20      ; XOBW WEB SERVICE MENU - ROUTING LOGIC (#774)
 +21      ;

*****   ERRORS & WARNINGS IN |ptcl   *****
   4425+5       F - Reference to routine '^XOBTPST'. That isn't in this UCI.

*****   INDEX OF |ptcl   *****


Local Variables      Line Occurrences   ( >> not killed explicitly)
                                        ( * Changed  ! Killed  ~ Newed)
>> DA           4421+5
>> DA(1         4421+5

Global Variables  ( * Changed  ! Killed)
   ^ORD(101            4421+5

Naked Globals
   ^(24         4421+5

Cache Objects
   NONE

Marked Items
   $T(SOAPNAME^XOBTPST
                4425+5

Label References
   NONE

External References
   SHOW^VALM           4432+7,4421+7,4426+7
   SOAPNAME^XOBTPST    4425+5
   ADD^XOBWU           4423+3
   AVAIL^XOBWU         4431+3
   DEL^XOBWU           4424+3
   EDIT^XOBWU          4422+3
   LKM^XOBWU           4439+3
   WSM^XOBWU           4430+3
   WST^XOBWU           4425+3
   ADD^XOBWUA          4433+3
   DEL^XOBWUA          4435+3
   EDIT^XOBWUA         4434+3
   KFILTER^XOBWUA      4437+3
   SFILTER^XOBWUA      4438+3
   SORT^XOBWUA         4436+3
   ADD^XOBWUS          4427+3
   DEL^XOBWUS          4429+3
   EDIT^XOBWUS         4428+3

*****   END   *****


*****   Cross Reference of all Routines   *****   Mar 13, 2018@10:55:07 page 28

Local Variables    Routines   ( >> not killed explicitly)
                              ( * Changed  ! Killed  ~ Newed)
>> %            |dd18.12*
>> %DT          |dd18.02*,|dd18.12*
   %XOBWERR     XOBWLIB1!
   %objlasterror 
                XOBWD,XOBWLIB1!
   A            XOBWPWD*~
   C            XOBWPWD*~
   CFG          XOBWSSL*~
   COUNT        XOBWSSL*~
   D            XOBWU1*~,XOBWUA1*~,XOBWUS1*~
>> D0           |dd18.12*
   DA           XOBWD*!~,XOBWPST*~,XOBWPWD,XOBWU1~,XOBWUA1~,XOBWUS1*~,XOBWUS1
                |dd18.02,|dd18.12,|dd18.121,|dd18.13,|ptcl
   DA(1         XOBWD*,XOBWPST*,|dd18.121,|ptcl
>> DDS          XOBWPWD
>> DDSHBX       XOBWPWD
   DEFAULT      XOBWLIB1~
   DIC          XOBWLIB1*!~,XOBWU1*!~,XOBWUA1*!~,XOBWUS1*!~
   DIC("A"      XOBWUA1*
   DIC("B"      XOBWLIB1*
   DIC(0        XOBWLIB1*,XOBWU1*,XOBWUA1*,XOBWUS1*
   DIE          XOBWU1*~,XOBWUA1*~,XOBWUS1*~
   DIERR        XOBWD~,XOBWLIB1~
   DIF          XOBWP004*~
>> DIG          |dd18.12*
>> DIH          |dd18.12*
   DIK          XOBWD*!~,XOBWPST*~,XOBWU1*~,XOBWUA1*~
   DIK(1        XOBWPST*
   DIQ          XOBWUS1*~
   DIQ(0        XOBWUS1*
   DIR          XOBWENV~,XOBWLIB1!,XOBWPWD!~,XOBWU1~,XOBWUA1~,XOBWUS1~
   DIR("A"      XOBWLIB1*,XOBWPWD*,XOBWU1*,XOBWUA1*,XOBWUS1*
   DIR("B"      XOBWU1*,XOBWUA1*,XOBWUS1*
   DIR(0        XOBWENV*,XOBWLIB1*,XOBWPWD*,XOBWU1*,XOBWUA1*,XOBWUS1*
   DIR0         XOBWPWD~
   DIROUT       XOBWLIB1~,XOBWUA1~
   DIRUT        XOBWLIB1~,XOBWPWD*!,XOBWUA1~
>> DIU          |dd18.12*
   DIV          |dd18.12*!
   DIV(0        |dd18.12*
   DR           XOBWU1*~,XOBWUA1*~,XOBWUS1*~
   DT           |dd18.12
   DTOUT        XOBWLIB1~,XOBWUA1~
   DUOUT        XOBWLIB1~,XOBWPWD*!,XOBWUA1~
   DUZ          XOBWLIB1,XOBWP004
   DUZ(2        XOBWLIB1
   DX           XOBWPWD*~
   DY           XOBWPWD*~
   E            XOBWPWD*~
   FDA          XOBWPWD~
   FDA(         XOBWPWD*
   I            XOBWD*~,XOBWLIB1*~,XOBWPA04*~,XOBWPB04*~,XOBWU~,XOBWUA~
   IEN          XOBWU1*~
   IEN0         XOBWU1*~
   INFOARR      XOBWLIB1*~
   IOF          XOBWLIB1
   IOM          XOBWU1,XOBWUA1,XOBWUS1
   IOSL         XOBWLIB1
>> IOXY         XOBWPWD
   IP           XOBWPST*~
   IPPORT       XOBWLIB1*~
   IT           XOBWPA04*~,XOBWPB04*~
   KEY          XOBWU1*~
   KEYCAP       XOBWUA*~
   MAJOR        XOBWENV*~
   MATCH        XOBWSSL*~
   MINOR        XOBWENV*~
   MORE         XOBWSSL*~
   MSG          XOBWP004*!
>> MSGSBJ       XOBWP004*
   NAME         XOBWLIB1*~
   RS           XOBWSSL*~
   SERVER       XOBWPST*~
   SITE         XOBWLIB1~
   SORT         XOBWUA~
   SORT(        XOBWUA*
   SRVCAP       XOBWUA*~
   STATUS       XOBWLIB1*~,XOBWSSL~
   STR          XOBWSSL~
   SUBMINOR     XOBWENV*~
   TO           XOBWPWD*~
   TYPE         XOBWU~,XOBWUA~,XOBWUS~
   U            XOBWD,XOBWLIB1,XOBWU1,XOBWUA1,XOBWUS1,|dd18.12
>> VALM("TITLE" XOBWUS2*
>> VALMAR       XOBWU1,XOBWUA1,XOBWUS1
   VALMBCK      XOBWU*~,XOBWUA*,XOBWUS*
>> VALMCNT      XOBWU*,XOBWU1*,XOBWUA*,XOBWUS*,XOBWUS1*
>> VALMHDR(1    XOBWU*,XOBWUA*,XOBWUS*,XOBWUS2*
>> VALMHDR(2    XOBWU*,XOBWUA*,XOBWUS*,XOBWUS2*
>> VALMHDR(3    XOBWUA*
>> VALMSG       XOBWU*,XOBWUA*,XOBWUS*
   VALMY        XOBWU1~,XOBWUA1~,XOBWUS1~
   VALMY(""     XOBWU1,XOBWUA1,XOBWUS1
   WHO          XOBWP004!
   WHO(         XOBWP004*
   WHO("G.PATCH TRACKING XOBW_1_4@DOMAIN.EXT" 
                XOBWP004*
   WHO("Jose.Luis-Garcia@domain.ext" 
                XOBWP004*
   X            XOBWD*~,XOBWLIB1*~,XOBWP004*~,XOBWPA04*~,XOBWPB04*~,XOBWPWD*!~
                XOBWU*~,XOBWUA*~,XOBWUA1~,XOBWUS*~,XOBWUS1*~,XOBWUS2*
                |dd18.02*!,|dd18.12*!,|dd18.121,|dd18.13*!,|inpt
   XCNP         XOBWP004*~
   XDIR         XOBWPA04*~,XOBWPB04*~
   XFILE        XOBWPA04*~,XOBWPB04*~
   XOB0         XOBWU~,XOBWUA~
   XOBCAURL     XOBWD~,XOBWLIB~
   XOBCDEF      XOBWD*~
   XOBCFGN      XOBWSSL~
   XOBCHK       XOBWD*~
   XOBCLASS     XOBWD*~,XOBWLIB~,XOBWUS1*~
   XOBCLR       XOBWUA1*~
   XOBCMSG      XOBWUS1*~
   XOBCNT       XOBWPST*~
   XOBCODE      XOBWLIB1*~
   XOBCONFG     XOBWP004*~
   XOBCXT       XOBWD*~,XOBWLIB~
   XOBDA        XOBWD*~,XOBWPST*~,XOBWU1*~,XOBWUA1*~,XOBWUS1*~
   XOBDA0       XOBWPST*~,XOBWUS1*~
   XOBDASH      XOBWU1*~,XOBWUA1*~,XOBWUS1*~
   XOBDATA      XOBWLIB1!,XOBWU~,XOBWUA~,XOBWUS~
   XOBDATA("DILIST" 
                XOBWLIB1,XOBWU,XOBWUA,XOBWUS
   XOBDIR       XOBWENV~,XOBWLIB1~
   XOBDONE      XOBWPWD*~
   XOBDOTS      XOBWU1*~,XOBWUS1*~
   XOBEO        XOBWLIB~
   XOBEOARR     XOBWLIB~
   XOBERR       XOBWD~,XOBWLIB*~,XOBWLIB1*~,XOBWPST~,XOBWPWD~
   XOBEXIT      XOBWLIB1*~
   XOBEXSTS     XOBWP004*~
   XOBFDA       XOBWD~,XOBWLIB1~,XOBWPST~
   XOBFDA(      XOBWD*,XOBWLIB1*,XOBWPST*
   XOBFDAI      XOBWD~,XOBWLIB1~
   XOBFDAI(1    XOBWD,XOBWLIB1
   XOBFERR      XOBWLIB~
   XOBFILE      XOBWLIB1~,XOBWPST*~
   XOBH         XOBWPWD*~
   XOBHRO       XOBWLIB~
   XOBI         XOBWD*~,XOBWLIB1*~,XOBWPWD*~,XOBWU*~,XOBWU1*~,XOBWUA*~
                XOBWUA1*~,XOBWUS*~,XOBWUS1*~
   XOBIEN       XOBWD*~,XOBWLIB1*~
   XOBIENS      XOBWD*~,XOBWLIB1*~,XOBWPST*~
   XOBINARR     XOBWD~
   XOBINFO      XOBWD*~
   XOBISSUE     XOBWUS1*~
   XOBJ         XOBWLIB1~,XOBWUS1*~
   XOBKEY       XOBWUA*~
   XOBKFILT     XOBWUA*~,XOBWUA1*
   XOBKYIEN     XOBWLIB1*~
   XOBKYNM      XOBWLIB1*~
   XOBLABEL     XOBWPST~
   XOBLERR      XOBWD~,XOBWLIB1~
   XOBLERR(     XOBWD,XOBWLIB1
   XOBLINE      XOBWU1*~,XOBWUA1*~,XOBWUS1*~
   XOBLIST      XOBWLIB1~
   XOBMATCH     XOBWPWD*~
   XOBMSG       XOBWUS1*~
   XOBMULDA     XOBWD*~,XOBWUS1*~
   XOBNAME      XOBWP004*~
   XOBNUM       XOBWPST~
   XOBOERR      XOBWLIB1~
   XOBOK        XOBWD*~,XOBWLIB*~,XOBWUS1*~
   XOBOS        XOBWENV*~
   XOBOUT       XOBWD~
   XOBOUT(      XOBWD
   XOBPARMS     XOBWLIB1~
   XOBPARMS(    XOBWLIB1*
   XOBPATH      XOBWENV*~,XOBWLIB1*~
   XOBPAUSE     XOBWU~,XOBWUA~,XOBWUS~
   XOBPKG       XOBWD*~
   XOBPROP      XOBWP004~
   XOBPROP(     XOBWP004
   XOBPROP2     XOBWP004~
   XOBPROP2("Description" 
                XOBWP004*
   XOBPROP2("Enabled" 
                XOBWP004*
   XOBPROP2("Protocols" 
                XOBWP004*
   XOBPROXY     XOBWLIB~,XOBWLIB1~
   XOBR         XOBWLIB1*~
   XOBREADR     XOBWD*~
   XOBREST      XOBWLIB~
   XOBROOT      XOBWD*~,XOBWU*~,XOBWUA*~,XOBWUS*~
   XOBRSCE      XOBWLIB~
   XOBSCODE     XOBWLIB~
   XOBSFILT     XOBWUA*~,XOBWUA1*
   XOBSITEI     XOBWU~,XOBWUA~
   XOBSO        XOBWLIB~
   XOBSORT      XOBWUA*~,XOBWUA1*
   XOBSRVDA     XOBWD*~,XOBWUS1*~
   XOBSRVNM     XOBWD*~
   XOBSRVR      XOBWLIB~,XOBWU1*~,XOBWUA*~
   XOBSTAT      XOBWD*~,XOBWLIB1*~,XOBWP004*~,XOBWPST*~,XOBWUS1*~
   XOBSTAT2     XOBWP004*~
   XOBSTRM      XOBWD*~
   XOBSVRS      XOBWLIB1*~
   XOBTALK      XOBWPWD~
   XOBTEXT      XOBWU1~,XOBWUS1~
   XOBTYPE      XOBWD~,XOBWUS1*~
   XOBVER       XOBWENV*~,XOBWSSL*~
   XOBW         XOBWP004~
   XOBWAV       XOBWD*~
   XOBWCDEF     XOBWUS1*~
   XOBWDESC     XOBWLIB~,XOBWLIB1~
   XOBWI        XOBWP004*~
   XOBWIN       XOBWP004~
   XOBWKEY      XOBWLIB~,XOBWLIB1*~
   XOBWNOTE     XOBWP004*~
   XOBWSDL      XOBWD*~,XOBWLIB~,XOBWUS1*~
   XOBWSIEN     XOBWLIB1*~
   XOBWSN       XOBWD*~,XOBWLIB~
   XOBWSNM      XOBWLIB~,XOBWLIB1*~
   XOBWY        XOBWPA04*~,XOBWPB04*~
   XOBX         XOBWD~,XOBWPST~,XOBWPWD*~,XOBWU1*~,XOBWUA*~
   XOBY         XOBWD~,XOBWLIB~,XOBWPST~,XOBWU1*~,XOBWUA1*~,XOBWUS1*~,XOBWUS2~
   XOBY(        XOBWU1*,XOBWUS1
   XOBY(""      XOBWU1
   XOBY("AVAILABILITY RESOURCE" 
                XOBWD
   XOBY("BUILD CALLBACK" 
                XOBWU1*,XOBWUS1*,XOBWUS2
   XOBY("CACHE PACKAGE NAME" 
                XOBWD
   XOBY("HEADER" 
                XOBWU1*,XOBWUS1*,XOBWUS2
   XOBY("LABEL" XOBWPST
   XOBY("TITLE" XOBWU1*,XOBWUS1*,XOBWUS2
   XOBY("WEB SERVICE NAME" 
                XOBWD
   XOBY("WSDL FILE" 
                XOBWD
   XPATH        XOBWPA04*~,XOBWPB04*~
>> XPDABORT     XOBWENV*,XOBWP004*
>> XPDENV       XOBWENV
>> XPDQUES("POSXMLDIR" 
                XOBWPST
>> XQORNOD(0    XOBWU1,XOBWUA1,XOBWUS1
   XREF         XOBWPA04*~,XOBWPB04*~
   XUSL         XOBWP004~
   Y            XOBWLIB1*~,XOBWPA04*~,XOBWPB04*~,XOBWPWD,XOBWU~,XOBWU1~,XOBWUA~
                XOBWUA1~,XOBWUS*~,XOBWUS1~,|dd18.02,|dd18.12*!,|inpt*
   Y(0          |dd18.12*
   Y(1          |dd18.12*

Global Variables
   ^%ZOSF("EOFF"       XOBWPWD
   ^%ZOSF("EON"        XOBWPWD
   ^%ZOSF("LOAD"       XOBWP004
   ^%ZOSF("OS"         XOBWENV
   ^DD(18.12           |dd18.12
   ^DISV(              XOBWLIB1
   ^ORD(101            |ptcl
   ^TMP("PSC DATA"     XOBWP004*!
   ^TMP("XOB WEB SERVER LOOKUP"
                       XOBWUA*!,XOBWUA1,|list
   ^TMP("XOB WEBSERVERS"
                       XOBWU*!,XOBWU1,|list
   ^TMP("XOB WEBSERVICES"
                       XOBWUS*!,XOBWUS1,|list
   ^TMP("XOBW WSDL FILING"
                       XOBWD
   ^TMP($J             XOBWP004!,XOBWPA04*!,XOBWPB04*!
   ^XMB("NETNAME"      XOBWP004
   ^XOB(               XOBWPST
   ^XOB(18.02          XOBWD,XOBWUS1,|dd18.02*!
   ^XOB(18.12          XOBWD,XOBWLIB1,XOBWPST!,XOBWUS1,|dd18.12*!,|dd18.121*!
   ^XOB(18.13          XOBWLIB1,XOBWU1,|dd18.13*!

Naked Globals
   ^(           XOBWPST
   ^(0          XOBWLIB1
   ^(1          |dd18.12*
   ^(24         |ptcl

Cache Objects
   $SYSTEM.OBJ.DeletePackage       XOBWPST
   $system.OBJ.Load                XOBWLIB1
   $system.Status.DecomposeStatus  XOBWD,XOBWLIB1
   $system.Status.IsError          XOBWSSL
   $system.Status.IsOK             XOBWLIB
   %Dictionary.ClassDefinition     XOBWD,XOBWUS1
   %File                           XOBWD,XOBWENV,XOBWLIB1
   %FileCharacterStream            XOBWD
   %Library.ArrayOfDataTypes       XOBWLIB1
   %Net.SSL.Configuration          XOBWSSL
   %ResultSet                      XOBWSSL
   %SOAP.WSDL.Reader               XOBWD
   CFG.CAFile                      XOBWSSL
   CFG.CAPath                      XOBWSSL
   CFG.CertificateFile             XOBWSSL
   CFG.CipherList                  XOBWSSL
   CFG.Name                        XOBWSSL
   CFG.PrivateKeyFile              XOBWSSL
   CFG.PrivateKeyType              XOBWSSL
   CFG.Role                        XOBWSSL
   CFG.VerifyDepth                 XOBWSSL
   CFG.VerifyPeer                  XOBWSSL
   INFOARR.SetAt                   XOBWLIB1
   RS.Data                         XOBWSSL
   RS.Execute                      XOBWSSL
   RS.Next                         XOBWSSL
   Security.SSLConfigs             XOBWP004
   XOBCONFG.Create                 XOBWP004
   XOBEO.%IsA                      XOBWLIB
   XOBEO.decompose                 XOBWLIB
   XOBEO.display                   XOBWLIB
   XOBPROXY.SoapFault              XOBWLIB1
   XOBREADR.OutputTypeAttribute    XOBWD*
   XOBREADR.Process                XOBWD
   XOBREST.Get                     XOBWLIB
   XOBREST.HttpResponse            XOBWLIB
   XOBREST.HttpResponse.StatusCode XOBWLIB
   XOBREST.Post                    XOBWLIB
   XOBSRVR.checkWebServicesAvailability
                                   XOBWU1
   XOBSTRM.AtEnd                   XOBWD
   XOBSTRM.Filename                XOBWD*
   XOBSTRM.ReadLine                XOBWD
   XOBWCDEF.Super                  XOBWUS1
   XOBY.Count                      XOBWU1
   XOBY.GetAt                      XOBWU1
   xobw.RestRequestFactory         XOBWLIB
   xobw.VistaInfoHeader            XOBWLIB1
   xobw.WebServer                  XOBWU1
   xobw.WebServiceProxyFactory     XOBWLIB
   xobw.WsdlHandler                XOBWD
   xobw.error.BasicError           XOBWLIB1
   xobw.error.DialogError          XOBWLIB1
   xobw.error.HttpError            XOBWLIB
   xobw.error.ObjectError          XOBWLIB,XOBWLIB1
   xobw.error.SoapError            XOBWLIB1

Marked Items
   $T(DATA+I    XOBWPA04,XOBWPB04
   $T(SOAPNAME^XOBTPST
                |ptcl
   $T(XOBWENV+1 XOBWENV
   $T(XOBWU+1   XOBWU
   $T(XOBWUA+1  XOBWUA
   $T(XOBWUS+1  XOBWUS

Routine             Invokes:
   XOBWD        MSG^DIALOG,$$FIND1^DIC,FILE^DIE,UPDATE^DIE,VAL^DIE,WP^DIE,DIK
                $$NOW^XLFDT,REGSOAP^XOBWLIB,BMES^XPDUTL,MES^XPDUTL
   XOBWENV      $$OS^%ZOSV,$$VERSION^%ZOSV,DIR,$$PROD^XUPROD
   XOBWLIB      %ZTER,$$GENPORT^XOBWD,REGISTER^XOBWD,UNREG^XOBWD
                $$EOFAC^XOBWLIB1,$$GETSRV^XOBWLIB1,$$SKEYADD^XOBWLIB1
                $$SNAME4KY^XOBWLIB1,ATTACHDR^XOBWLIB1,DISPSRVS^XOBWLIB1
   XOBWLIB1     $$EC^%ZOSV,$$EZBLD^DIALOG,MSG^DIALOG,DIC,$$FIND1^DIC,LIST^DIC
                FILE^DIE,UPDATE^DIE,DIR,$$CJ^XLFSTR,$$UP^XLFSTR
                $$VERSION^XOBWENV,$$STA^XUAF4,$$KSP^XUPARAM,$$PROD^XUPROD
                $$VPID^XUPS
   XOBWP004     SENDMSG^XMXAPI,POST^XOBWPA04,POST^XOBWPB04,BMES^XPDUTL
                MES^XPDUTL,$$PROD^XUPROD
   XOBWPA04     $$DEFDIR^%ZISH,$$FTG^%ZISH,$$GTF^%ZISH,$$IMPORT^XOBWLIB1
                BMES^XPDUTL,MES^XPDUTL
   XOBWPB04     $$DEFDIR^%ZISH,$$FTG^%ZISH,$$GTF^%ZISH,$$IMPORT^XOBWLIB1
                BMES^XPDUTL,MES^XPDUTL
   XOBWPST      $$DEFDIR^%ZISH,FIELD^DID,FILE^DIE,DIK,ENALL^DIK
                $$SUPPORT^XOBWENV,$$IMPORT^XOBWLIB1,BMES^XPDUTL,MES^XPDUTL
   XOBWPWD      %ZTER,CLRMSG^DDS,FILE^DIE,$$IENS^DILF,DIR,$$DECRYP^XUSRB1
                $$ENCRYP^XUSRB1
   XOBWSSL      $$VERSION^%ZOSV,EN^DDIOL
   XOBWU        LIST^DIC,EN^VALM,$$SETFLD^VALM1,FULL^VALM1,PAUSE^VALM1
                SET^VALM10,EN1^XOBTWU,$$VERSION^XOBWENV,EN^XOBWUA,EN^XOBWUS
                DISP^XQORM1
   XOBWU1       IX^DIC,DIE,DIK,EN^DIQ,DIR,CLEAR^VALM1,PAUSE^VALM1,CLEAN^VALM10
                SET^VALM10,EN^VALM2,EN^XOBWUS2
   XOBWUA       LIST^DIC,CHGCAP^VALM,EN^VALM,$$SETFLD^VALM1,FULL^VALM1
                PAUSE^VALM1,SET^VALM10,$$UP^XLFSTR,$$VERSION^XOBWENV
                DISP^XQORM1
   XOBWUA1      IX^DIC,DIE,DIK,EN^DIQ,DIR,CLEAR^VALM1,PAUSE^VALM1,EN^VALM2
                $$UP^XLFSTR,$$NOTDEF^XOBWUA
   XOBWUS       LIST^DIC,EN^VALM,$$SETFLD^VALM1,FULL^VALM1,PAUSE^VALM1
                SET^VALM10,$$VERSION^XOBWENV,DISP^XQORM1
   XOBWUS1      IX^DIC,DIE,EN^DIQ1,DIR,CLEAR^VALM1,PAUSE^VALM1,CLEAN^VALM10
                SET^VALM10,EN^VALM2,UNREG^XOBWLIB,EN^XOBWUS2
   XOBWUS2      EN^VALM,CLEAN^VALM10,DISP^XQORM1
   |dd18.02     %DT
   |dd18.12     %DT,DICR,EDIT^XOBWPWD,$$CHKNAME^XOBWSSL,DISPLAY^XOBWSSL
   |dd18.13     $$UP^XLFSTR
   |inpt        $$SSLOK^XOBWENV
   |list        EXIT^XOBWU,EXPAND^XOBWU,HDR^XOBWU,HELP^XOBWU,INIT^XOBWU
                EXIT^XOBWUA,EXPAND^XOBWUA,HDR^XOBWUA,HELP^XOBWUA,INIT^XOBWUA
                EXIT^XOBWUS,EXPAND^XOBWUS,HDR^XOBWUS,HELP^XOBWUS,INIT^XOBWUS
                EXIT^XOBWUS2,HDR^XOBWUS2,HELP^XOBWUS2,INIT^XOBWUS2
   |opt         EN^XOBWU
   |ptcl        SHOW^VALM,SOAPNAME^XOBTPST,ADD^XOBWU,AVAIL^XOBWU,DEL^XOBWU
                EDIT^XOBWU,LKM^XOBWU,WSM^XOBWU,WST^XOBWU,ADD^XOBWUA,DEL^XOBWUA
                EDIT^XOBWUA,KFILTER^XOBWUA,SFILTER^XOBWUA,SORT^XOBWUA
                ADD^XOBWUS,DEL^XOBWUS,EDIT^XOBWUS

Routine             is Invoked by:
   ^%DT                |dd18.02,|dd18.12
   $$DEFDIR^%ZISH      XOBWPA04,XOBWPB04,XOBWPST
   $$FTG^%ZISH         XOBWPA04,XOBWPB04
   $$GTF^%ZISH         XOBWPA04,XOBWPB04
   $$EC^%ZOSV          XOBWLIB1
   $$OS^%ZOSV          XOBWENV
   $$VERSION^%ZOSV     XOBWENV,XOBWSSL
   ^%ZTER              XOBWLIB,XOBWPWD
   EN^DDIOL            XOBWSSL
   CLRMSG^DDS          XOBWPWD
   $$EZBLD^DIALOG      XOBWLIB1
   MSG^DIALOG          XOBWD,XOBWLIB1
   ^DIC                XOBWLIB1
   $$FIND1^DIC         XOBWD,XOBWLIB1
   IX^DIC              XOBWU1,XOBWUA1,XOBWUS1
   LIST^DIC            XOBWLIB1,XOBWU,XOBWUA,XOBWUS
   ^DICR               |dd18.12
   FIELD^DID           XOBWPST
   ^DIE                XOBWU1,XOBWUA1,XOBWUS1
   FILE^DIE            XOBWD,XOBWLIB1,XOBWPST,XOBWPWD
   UPDATE^DIE          XOBWD,XOBWLIB1
   VAL^DIE             XOBWD
   WP^DIE              XOBWD
   ^DIK                XOBWD,XOBWPST,XOBWU1,XOBWUA1
   ENALL^DIK           XOBWPST
   $$IENS^DILF         XOBWPWD
   EN^DIQ              XOBWU1,XOBWUA1
   EN^DIQ1             XOBWUS1
   ^DIR                XOBWENV,XOBWLIB1,XOBWPWD,XOBWU1,XOBWUA1,XOBWUS1
   CHGCAP^VALM         XOBWUA
   EN^VALM             XOBWU,XOBWUA,XOBWUS,XOBWUS2
   SHOW^VALM           |ptcl
   $$SETFLD^VALM1      XOBWU,XOBWUA,XOBWUS
   CLEAR^VALM1         XOBWU1,XOBWUA1,XOBWUS1
   FULL^VALM1          XOBWU,XOBWUA,XOBWUS
   PAUSE^VALM1         XOBWU,XOBWU1,XOBWUA,XOBWUA1,XOBWUS,XOBWUS1
   CLEAN^VALM10        XOBWU1,XOBWUS1,XOBWUS2
   SET^VALM10          XOBWU,XOBWU1,XOBWUA,XOBWUS,XOBWUS1
   EN^VALM2            XOBWU1,XOBWUA1,XOBWUS1
   $$NOW^XLFDT         XOBWD
   $$CJ^XLFSTR         XOBWLIB1
   $$UP^XLFSTR         XOBWLIB1,XOBWUA,XOBWUA1,|dd18.13
   SENDMSG^XMXAPI      XOBWP004
   SOAPNAME^XOBTPST    |ptcl
   EN1^XOBTWU          XOBWU
   $$GENPORT^XOBWD     XOBWLIB
   REGISTER^XOBWD      XOBWLIB
   UNREG^XOBWD         XOBWLIB
   $$SSLOK^XOBWENV     |inpt
   $$SUPPORT^XOBWENV   XOBWPST
   $$VERSION^XOBWENV   XOBWLIB1,XOBWU,XOBWUA,XOBWUS
   REGSOAP^XOBWLIB     XOBWD
   UNREG^XOBWLIB       XOBWUS1
   $$EOFAC^XOBWLIB1    XOBWLIB
   $$GETSRV^XOBWLIB1   XOBWLIB
   $$IMPORT^XOBWLIB1   XOBWPA04,XOBWPB04,XOBWPST
   $$SKEYADD^XOBWLIB1  XOBWLIB
   $$SNAME4KY^XOBWLIB1 XOBWLIB
   ATTACHDR^XOBWLIB1   XOBWLIB
   DISPSRVS^XOBWLIB1   XOBWLIB
   POST^XOBWPA04       XOBWP004
   POST^XOBWPB04       XOBWP004
   EDIT^XOBWPWD        |dd18.12
   $$CHKNAME^XOBWSSL   |dd18.12
   DISPLAY^XOBWSSL     |dd18.12
   ADD^XOBWU           |ptcl
   AVAIL^XOBWU         |ptcl
   DEL^XOBWU           |ptcl
   EDIT^XOBWU          |ptcl
   EN^XOBWU            |opt
   EXIT^XOBWU          |list
   EXPAND^XOBWU        |list
   HDR^XOBWU           |list
   HELP^XOBWU          |list
   INIT^XOBWU          |list
   LKM^XOBWU           |ptcl
   WSM^XOBWU           |ptcl
   WST^XOBWU           |ptcl
   $$NOTDEF^XOBWUA     XOBWUA1
   ADD^XOBWUA          |ptcl
   DEL^XOBWUA          |ptcl
   EDIT^XOBWUA         |ptcl
   EN^XOBWUA           XOBWU
   EXIT^XOBWUA         |list
   EXPAND^XOBWUA       |list
   HDR^XOBWUA          |list
   HELP^XOBWUA         |list
   INIT^XOBWUA         |list
   KFILTER^XOBWUA      |ptcl
   SFILTER^XOBWUA      |ptcl
   SORT^XOBWUA         |ptcl
   ADD^XOBWUS          |ptcl
   DEL^XOBWUS          |ptcl
   EDIT^XOBWUS         |ptcl
   EN^XOBWUS           XOBWU
   EXIT^XOBWUS         |list
   EXPAND^XOBWUS       |list
   HDR^XOBWUS          |list
   HELP^XOBWUS         |list
   INIT^XOBWUS         |list
   EN^XOBWUS2          XOBWU1,XOBWUS1
   EXIT^XOBWUS2        |list
   HDR^XOBWUS2         |list
   HELP^XOBWUS2        |list
   INIT^XOBWUS2        |list
   BMES^XPDUTL         XOBWD,XOBWP004,XOBWPA04,XOBWPB04,XOBWPST
   MES^XPDUTL          XOBWD,XOBWP004,XOBWPA04,XOBWPB04,XOBWPST
   DISP^XQORM1         XOBWU,XOBWUA,XOBWUS,XOBWUS2
   $$STA^XUAF4         XOBWLIB1
   $$KSP^XUPARAM       XOBWLIB1
   $$PROD^XUPROD       XOBWENV,XOBWLIB1,XOBWP004
   $$VPID^XUPS         XOBWLIB1
   $$DECRYP^XUSRB1     XOBWPWD
   $$ENCRYP^XUSRB1     XOBWPWD

*****   END   *****


--- END ---
