Ver Mensaje Individual
  #2
Antiguo 11 de abril de 2021, 01:53
Nino
Forero Junior
Última Actividad 23.11.2021 12:46
Posts Posts: 6
Likes enviados Enviados: 3
Likes recibidos Recibidos: 9

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:
  1. STRING
  2.       YYYY  '/' MM '/' DD ' ' HOR ':' MIN ':' SEG *> Notar que se usa sólo hasta SEGUNDOS. La milésima de segundo NO SE ESTAMPA.
  3.      DELIMITED SIZE
  4.      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:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01 TODAY PIC X(16).
  5.  01 FECHA-Y-HORA REDEFINES TODAY.
  6.    05 FECHA-HOY.
  7.      10 YYYY PIC X(4).
  8.      10 MM   PIC X(2).
  9.      10 DD   PIC X(2).
  10.    05 HORA-HOY.
  11.      10 HOR  PIC 99.
  12.      10 MIN  PIC 99.
  13.      10 SEG  PIC 99.
  14.      10 MDS  PIC 99.
  15.  
  16.      EXEC SQL BEGIN DECLARE SECTION END-EXEC.
  17.  01 WSS_FECHA_Y_HORA         PIC X(19).
  18.      EXEC SQL END DECLARE SECTION END-EXEC.
  19.  
  20.  PROCEDURE       DIVISION.
  21.      MOVE FUNCTION CURRENT-DATE TO TODAY *> Función para obtener la fecha y la hora deseada
  22.      DISPLAY TODAY '<-TODAY luego de ejecutar MOVE FUNCTION CURRENT-DATE TO TODAY'
  23.      MOVE SPACES TO WSS_FECHA_Y_HORA
  24.      STRING
  25.       YYYY  '/' MM '/' DD ' ' HOR ':' MIN ':' SEG *> Notar que se usa sólo hasta SEGUNDOS. La milésima de segundo NO SE ESTAMPA.
  26.      DELIMITED SIZE
  27.      INTO WSS_FECHA_Y_HORA
  28.      DISPLAY WSS_FECHA_Y_HORA '<- Así queda el campo luego de llenado'
  29.  *>**************************
  30.  *> CONECTAMOS SERVIDOR SQL *
  31.  *>**************************
  32.      EXEC SQL CONNECT TO DEFAULT END-EXEC
  33.      CALL "Analiza-Mensaje-Error-SQL"
  34.  *>************************
  35.  *>************************
  36.      MOVE 76080362          TO MRP_SLC_ID_GIMNASIO   *> Usado para probar el programa ejemplo. Debes usar tus propios elementos de registro.
  37.      MOVE 16963676          TO MRP_SLC_RUT           *> Usado para probar el programa ejemplo. Debes usar tus propios elementos de registro.
  38.      MOVE 1                 TO MRP_SLC_ID_SOLICITUD  *> Usado para probar el programa ejemplo. Debes usar tus propios elementos de registro.
  39.     *>  fecha_solicitud es el campo DateTime de la tabla SQL que se requiere actualizar (UPDATE)
  40.      EXEC SQL
  41.       UPDATE solicitud
  42.        SET fecha_solicitud = :WSS_FECHA_Y_HORA
  43.       WHERE id_gimnasio    = :MRP_SLC_ID_GIMNASIO AND
  44.             rut            = :MRP_SLC_RUT         AND
  45.             id_solicitud   = :MRP_SLC_ID_SOLICITUD
  46.      END-EXEC
  47.      CALL "Analiza-Mensaje-Error-SQL". *> Esta es una rutina que valida la acción sobre la tabla.
  48.  *>*****************************
  49.  *> DESCONECTAMOS SERVIDOR SQL *
  50.  *>*****************************
  51.      EXEC SQL DISCONNECT DEFAULT END-EXEC
  52.      CALL "Analiza-Mensaje-Error-SQL".
  53.  *>*****************************
  54.  *>*****************************

Comentario de Moderador

Usa los botones de resalto de sintaxis
Imágenes Adjuntas
    

Última edición por Kuk fecha: 11 de abril de 2021 a las 14:31. Razón: Resalto de sintaxis
Nino is offline   Responder Con Cita