





|
// **************************************************************************************
//
// SCRIPT: Ultimo Estado de Cuenta v2.3
// DESARROLLADO POR: OPTIMA Technology
// FECHA: Julio 11 del 2002
//
// Este script permite realizar una consulta de saldos de Tarjeta de Crédito, estableciando la conexión
// con un Mainframe IBM, ejecutando una aplicaciójn CICS, y extrayendo la información solictada por
// una aplicación remota. QUe para efectos de esta ejemplo, fué una aplicación WEB.
//
// Campos de Entrada:
//
// + PARAM001 - Este campo es obtenido en tiempo de ejecución del Script y pasa el número de Tarjeta de Crédito
//
//
// **************************************************************************************
BEGIN DATA
DECLARE @WORKPASSWORD IS " "
DECLARE @FREEPASSWORD IS " "
END DATA
BEGIN CODE
//--
// Envía comando de conexión
// --
WAIT SESSION LULU
SEND "CICSAPP", @@ENTER
//--
// Valida la excepción que la terminal no esté bloqueada por contención de HOST
// --
GET SCREEN
IF SCREEN = "THIS USERID IS CURRENTLY LOGGED"
SEND "YES", @@ENTER
SEND @@CLEAR
SEND "SONI", @@ENTER
ENDIF
//--
// Envía clave de usuario y de password
// --
SEND @@PASSWORD, @@USERID, @@ENTER
SET @@PASSWORD TO @WORKPASSWORD
SET @@NEWPASSWORD TO @FREEPASSWORD
//--
// Si el password es inválido, entonces se intenta el SIGN ON con la segunda derivación
// --
GET SCREEN
IF SCREEN = "PASSWORD ERROR - SIGN-ON REJECTED"
SEND @@CLEAR
SEND "SONI", @@ENTER
SEND @@NEWPASSWORD, @@USERID, @@ENTER
SET @@NEWPASSWORD TO @WORKPASSWORD
SET @@PASSWORD TO @FREEPASSWORD
GET SCREEN
ENDIF
//--
// Si el password expiró, entonces actualiza la cuenta con la siguiente derivación de password disponible
// --
IF SCREEN = "PASSWORD EXPIRED--NEW PASSWORD REQUIRED"
SEND @FREEPASSWORD, @@USERID, @@ENTER
SET @FREEPASSWORD TO @WORKPASSWORD
GET SCREEN
ENDIF
//--
// Se valida sí la cuenta de usuario no existe, entonces se reporta el error
// --
IF SCREEN = "OPERATOR NAME ERROR - SIGN-ON REJECTED"
SEND @@CLEAR
SET "USUARIO NO AUTORIZADO O INVALIDO" TO @@APPERRORMSG
EXIT CODE
ENDIF
//--
// Sí la cuenta de usuario presenta este problema, entonces se deberá cancelar el script
// --
IF SCREEN = "EXCESSIVE OPERATOR VIOLATIONS"
SET "PROBLEMAS CON LA CUENTA DEL USUARIO - REPORTE A SISTEMAS " TO @@APPERRORMSG
EXIT CODE
ENDIF
//--
// Se valida que el ingreso no haya fallado y que la terminal no esté bloqueada
// --
IF SCREEN = "INVALID FUNCTION CODE"
SEND @@CLEAR
SEND "SOFI", @@ENTER
SET "TERMINAL ESTA BLOQUEADA - REINTENTE" TO @@APPERRORMSG
EXIT CODE
ENDIF
//--
// En este paso se entró al IBM exitosamente, entonces se almacena el último PASSWORD existoso
y se asocia a la terminal
// --
SET @WORKPASSWORD TO @@LUPASSWORD
//--
// Manda la Transacción IGB para obtener variaciones en CLASIFICACION & TRANSCOD
// --
SEND "IGB", PARAM001, @@ENTER
GET SCREEN
//--
// Se regresa si el número de tarjeta de crédito no existe
// --
IF SCREEN = "ACCOUNT NUMBER DOES NOT SELF-CHECK"
SEND @@CLEAR
SEND "SOFI", @@ENTER
SET "NUMERO DE CUENTA NO EXISTE" TO @@APPERRORMSG
EXIT CODE
ENDIF
//--
// Se valida que la transacción falló
// --
IF SCREEN = "INVALID FUNCTION CODE"
SEND @@CLEAR
SEND "SOFI", @@ENTER
SET "TRANSACCION NO PUDO SER PROCESADA - REINTENTE" TO @@APPERRORMSG
EXIT CODE
ENDIF
//--
// Se obtienen los datos deseados
// --
GET FIELD_NEXT "CLASIFICACION"
GET FIELD_NEXT "TRANSCOD"
SEND "IPS", @@ENTER
GET FIELD_POS 3,51,8
GET FIELD_POS 3,73,8
GET FIELD_POS 16,12,18
GET FIELD_POS 16,42,12
GET FIELD_POS 16,67,11
GET FIELD_POS 17,12,18
GET FIELD_POS 17,42,12
GET FIELD_POS 17,67,11
GET FIELD_POS 18,12,18
GET FIELD_POS 18,42,12
GET FIELD_POS 18,67,11
GET FIELD_POS 19,12,18
GET FIELD_POS 19,42,12
GET FIELD_POS 19,67,11
GET FIELD_POS 20,12,18
GET FIELD_POS 20,42,12
GET FIELD_POS 20,67,11
GET FIELD_POS 21,12,18
GET FIELD_POS 21,42,12
GET FIELD_POS 21,67,11
GET FIELD_POS 22,12,18
GET FIELD_POS 22,42,12
GET FIELD_POS 22,67,11
DO
GET SCREEN 5,1,14,80
IF SCREEN <> LAST_SCREEN
SEND @@PF8
ENDIF
WHILE SCREEN <> LAST_SCREEN
//--
// Se sale de la apliación y se termina la sesión
// --
SEND @@CLEAR
SEND "SOFI", @@ENTER
END CODE
|