The following is an example of the XWBAUTH user exit program.
$SET DIALECT(MF) SOURCEFORMAT(VARIABLE) identification division. author. Micro Focus, Ltd. Newbury, Berkshire United Kingdom ALL RIGHTS RESERVED. ***--------------------------------------------------------------* *** XWBAUTH exit for WEB-SEND/WEB-CONVERSE needs *** to be compiled without CICS ***--------------------------------------------------------------* environment division. special-names. data division. working-storage section. 78 78-max-host-sz value 116. 78 78-cwi-user-pw-max-len value 256. 78 78-cwi-realm-max-len value 56. *> Values for User Exits XWBOPEN, XWBSNDO, XWBAUTH return codes 78 78-UERCNORM value 0. *>INITIALISATION SUCCESSFUL 78 78-UERCBARR value 4. *>REMOTE HOST NAME IS BARRED 78 78-UERCBYP value 4. *>BYPASS (NO ACTION) 78 78-UERCPROX value 8. *>PROXY INFORMATION PROVIDED 78 78-UERCERR value 12. *>ERROR OCCURRED IN EXIT PROCESSING 01 WS-WORK-AREAS. 05 AUTHREQ pic x(8) value 'auth.req'. 05 AUTHREQL pic x(4) comp-x value 8. 05 AUTHBYP pic x(8) value 'auth.byp'. 05 AUTHBYPL pic x(4) comp-x value 8. 05 AUTHERR pic x(8) value 'auth.err'. 05 AUTHERRL pic x(4) comp-x value 8. 05 RETSYSAD pic x(12) value 'SSL/SSLTESTS'. 05 RETSYSADL pic x(4) comp-x value 12. 05 WRITEOPER pic x(22) value '/cics/services/xwbauth'. linkage section. 01 uxi-user-exit-interface. 02 uxi-operational-flags-ptr pointer. 02 uxi-scheduling-flags-ptr pointer. 02 uxi-global-area-ptr pointer. 02 uxi-global-area-length pic x(4) comp-5. 02 uxi-local-area-ptr pointer. 02 uxi-local-area-length pic x(4) comp-5. 02 uxi-dfheiblk-ptr pointer. 02 uxi-unit-of-recovery-ptr pointer. ***--------------------------------------------------------------* *** Exit specific parameters * ***--------------------------------------------------------------* 02 uxi-exit-specific-ptrs. *> XZCAT In/Ot XEin/ot FSHRO XWB???? 03 uxi-resource-ptr pointer. *> TCTTE TCTTE Arg lst Buffer 03 uxi-resource-data-ptr pointer. *> TIOA TIOA UserID UserID 03 uxi-res-data-len-ptr pointer. *> * * 03 uxi-aux-1-ptr pointer. *> 62TPN program F-Name ParmList 03 uxi-aux-1-length-ptr pointer. *> * * 03 uxi-aux-2-ptr pointer. *> Tran Sys EIB Keys 03 uxi-aux-2-length-ptr pointer. *> 03 uxi-aux-3-ptr pointer. *> TEUA TEUA 03 uxi-aux-3-length-ptr pointer. *> * * 03 uxi-aux-4-ptr pointer. *> ComA ComA 03 uxi-aux-4-length-ptr pointer. *> * * 03 pointer. *> ***--------------------------------------------------------------* *** System parameters * ***--------------------------------------------------------------* 02 uxi-PCA-ptr pointer. 02 uxi-CSA-ptr pointer. 02 uxi-DCA-ptr pointer. 02 uxi-local-trace-table-ptr pointer. 01 lk-host-len pic x(4) comp-x. 01 lk-host-name. 05 lk-host-char pic x occurs 0 to 78-max-host-sz depending lk-host-len. 01 lk-path-len pic x(4) comp-x. 01 lk-path-name pic x. 01 lk-realm-len pic x(4) comp-x. 01 lk-realm-name. 05 lk-realm-char pic x occurs 0 to 78-cwi-realm-max-len depending lk-realm-len. 01 lk-user-len pic x(4) comp-x. 01 lk-user-name. 05 lk-user-char pic x occurs 0 to 78-cwi-user-pw-max-len depending lk-user-len. 01 lk-password-len pic x(4) comp-x. 01 lk-password-value. 05 lk-password-char pic x occurs 0 to 78-cwi-user-pw-max-len depending lk-password-len. 01 lk-auth-type pic x. 88 lk-auth-basic-88 value x'01'. 01 lk-hosttype pic x. 88 lk-url-hostname-88 value x'01'. 88 lk-url-ipv4-88 value x'02'. 88 lk-url-ipv6-88 value x'03'. 01 lk-parm-list. 05 lk-host-name-ptr pointer. 05 lk-host-len-ptr pointer. 05 lk-path-name-ptr pointer. 05 lk-path-len-ptr pointer. 05 lk-realm-name-ptr pointer. 05 lk-realm-len-ptr pointer. 05 lk-auth-type-ptr pointer. 05 lk-user-name-ptr pointer. 05 lk-user-len-ptr pointer. 05 lk-password-ptr pointer. 05 lk-password-len-ptr pointer. 05 lk-hosttype-ptr pointer. procedure division using uxi-user-exit-interface. set address of lk-parm-list to uxi-aux-1-ptr set address of lk-host-name to lk-host-name-ptr set address of lk-host-len to lk-host-len-ptr set address of lk-path-name to lk-path-name-ptr set address of lk-path-len to lk-path-len-ptr set address of lk-realm-name to lk-realm-name-ptr set address of lk-realm-len to lk-realm-len-ptr set address of lk-auth-type to lk-auth-type-ptr set address of lk-user-name to lk-user-name-ptr set address of lk-user-len to lk-user-len-ptr set address of lk-password-value to lk-password-ptr set address of lk-password-len to lk-password-len-ptr set address of lk-hosttype to lk-hosttype-ptr move 78-UERCBYP to return-code if lk-auth-basic-88 evaluate lk-path-name(1:lk-path-len) when WRITEOPER *** *> Write console message call 'WRITEOPR' move 'XWBUSER' to lk-user-name move 7 to lk-user-len move 'TESTPWD' to lk-password-value move 6 to lk-password-len move 78-UERCNORM to return-code when AUTHREQ move 'TESTUSER' to lk-user-name move 7 to lk-user-len move 'TESTPWD' to lk-password-value move 6 to lk-password-len move 78-UERCNORM to return-code when AUTHBYP move 78-UERCBYP to return-code when AUTHERR move 78-UERCERR to return-code when other move 78-UERCBYP to return-code end-evaluate end-if goback .