Hola HRM

Me alegro muchísimo de poder colaborar.
He aquí la solución:
a) El campo a "estampar" debes PIC X(19).
b) Su composición debe ser llenada con esta estructura:
YYYY '/' MM '/' DD ' ' HOR ':' MIN ':' SEG *> Notar que se usa sólo hasta SEGUNDOS. La milésima de segundo NO SE ESTAMPA.
... entonces, el modelo de registro es:
Código COBOL:
STRING
YYYY '/' MM '/' DD ' ' HOR ':' MIN ':' SEG *> Notar que se usa sólo hasta SEGUNDOS. La milésima de segundo NO SE ESTAMPA.
DELIMITED SIZE
INTO WSS_FECHA_Y_HORA *> Este es el campo SQL definido en la WSS
c) Debes usar el separador de fecha "/". El separador "-" NO FUNCIONA !!
Este programa lo fabriqué para probar. Funciona tanto para Postgres SQL como para SQL Server (los probé en ambos).
Código COBOL:
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 TODAY PIC X(16).
01 FECHA-Y-HORA REDEFINES TODAY.
05 FECHA-HOY.
10 YYYY PIC X(4).
10 MM PIC X(2).
10 DD PIC X(2).
05 HORA-HOY.
10 HOR PIC 99.
10 MIN PIC 99.
10 SEG PIC 99.
10 MDS PIC 99.
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 WSS_FECHA_Y_HORA PIC X(19).
EXEC SQL END DECLARE SECTION END-EXEC.
PROCEDURE DIVISION.
MOVE FUNCTION CURRENT-DATE TO TODAY *> Función para obtener la fecha y la hora deseada
DISPLAY TODAY '<-TODAY luego de ejecutar MOVE FUNCTION CURRENT-DATE TO TODAY'
MOVE SPACES TO WSS_FECHA_Y_HORA
STRING
YYYY '/' MM '/' DD ' ' HOR ':' MIN ':' SEG *> Notar que se usa sólo hasta SEGUNDOS. La milésima de segundo NO SE ESTAMPA.
DELIMITED SIZE
INTO WSS_FECHA_Y_HORA
DISPLAY WSS_FECHA_Y_HORA '<- Así queda el campo luego de llenado'
*>**************************
*> CONECTAMOS SERVIDOR SQL *
*>**************************
EXEC SQL CONNECT TO DEFAULT
END-EXEC CALL "Analiza-Mensaje-Error-SQL"
*>************************
*>************************
MOVE 76080362 TO MRP_SLC_ID_GIMNASIO *> Usado para probar el programa ejemplo. Debes usar tus propios elementos de registro.
MOVE 16963676 TO MRP_SLC_RUT *> Usado para probar el programa ejemplo. Debes usar tus propios elementos de registro.
MOVE 1 TO MRP_SLC_ID_SOLICITUD *> Usado para probar el programa ejemplo. Debes usar tus propios elementos de registro.
*> fecha_solicitud es el campo DateTime de la tabla SQL que se requiere actualizar (UPDATE)
EXEC SQL
UPDATE solicitud
SET fecha_solicitud = :WSS_FECHA_Y_HORA
WHERE id_gimnasio = :MRP_SLC_ID_GIMNASIO AND
rut = :MRP_SLC_RUT AND
id_solicitud = :MRP_SLC_ID_SOLICITUD
END-EXEC
CALL "Analiza-Mensaje-Error-SQL". *> Esta es una rutina que valida la acción sobre la tabla.
*>*****************************
*> DESCONECTAMOS SERVIDOR SQL *
*>*****************************
EXEC SQL DISCONNECT DEFAULT END-EXEC
CALL "Analiza-Mensaje-Error-SQL".
*>*****************************
*>*****************************
|
|