Otros/Utilidades misceláneas - AWS Modernización de mainframe

AWS El servicio de modernización de mainframes (experiencia en entornos de ejecución gestionados) ya no está abierto a nuevos clientes. Para obtener prestaciones similares a las del Servicio de Modernización de AWS Mainframe (experiencia en entornos de ejecución gestionados), explore el Servicio de Modernización de AWS Mainframe (experiencia autogestionada). Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte Cambio en la disponibilidad de la modernización del AWS mainframe.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Otros/Utilidades misceláneas

Esta sección cubre varios programas de utilidades, con diversos propósitos, que no se pudieron adjuntar a las categorías existentes

En los párrafos siguientes, PICTURE debe entenderse como la PICTURE palabra clave COBOL, utilizada para describir los tipos y formatos de datos de los campos.

CBL_ _NOT AND/CBL_OR/CBL_XOR/CBL_EQ/CBL_IMP/CBL

Finalidad

Esto se refiere al soporte de operaciones lógicas bit a bit en elementos de datos, que se encuentra en algunos dialectos de COBOL (Micro Focus). Tenga en cuenta que la refactorización automática con AWS Transform gestiona la transformación de los usos de los operadores bit a bit del dialecto MF de Cobol a Java (consulte los ejemplos de usos a continuación). Para que el código modernizado se ejecute correctamente, habrá que implementar simultáneamente la aplicación de utilidad.

Operadores compatibles:

  • Operador unitario:

Operador unario details
CBL_NOT Complemento bit a bit (~target)
  • Operadores binarios:

Operadores binarios details
CBL_AND AND a nivel de bits (origen y destino)
CBL_OR O bit a bit (fuente | destino)
CBL_XOR O exclusivo bit a bit (fuente ^ destino)
CBL_EQ Equivalencia bit a bit (~ (fuente ^ destino))
CBL_IMP Implicación bit a bit (~fuente | destino)

Signature

Además de CBL_NOT, que solo tiene un operando (objetivo), todas las demás operaciones tienen al menos dos operandos, que son elementos de datos. El primer operando es el origen, el segundo es el destino. Un argumento opcional adicional (longitud) indica el número de bytes que se van a procesar (de izquierda a derecha). Si se omite la longitud, se establece de forma predeterminada el tamaño mínimo de origen y destino (en bytes). El resultado de la operación se almacena en el destino. El código de retorno del programa es 0 (a menos que se produzca una excepción).

Control de comprobaciones o errores

  • Para cada operador disponible, se comprueba el número de argumentos necesarios. Si no se cumple el número mínimo de argumentos requeridos, se IllegalArgumentException lanzará uno.

  • Se comprueba la positividad del argumento de longitud entera opcional. Si la longitud proporcionada es negativa, se mostrará un mensaje en los registros y no se aplicará el operador.

Ejemplo de uso

  • Ejemplo de operador unitario:

Este es un uso de CBL_NOT en cobol:

* TARGET: 00000101 * OPERATION: NOT * EXPECTED: 11111010 = 64000 dec (2nd byte unchanged - all 0) MOVE X'0500' to TARGET CALL "CBL_NOT" USING TARGET BY VALUE 1.

y la correspondiente modernización de Java:

/* TARGET: 00000101 OPERATION: NOT EXPECTED: 11111010 = 64000 dec (2nd byte unchanged - all 0) */ ctx.getTarget().getTargetReference().setBytes(new byte[]{ 5, 0 }); ctrl.callSubProgram("CBL_NOT", CallBuilder.newInstance() .byReference(ctx.getTarget().getTargetReference()) .byValue(1) .getArguments(), ctx);
  • Ejemplo de operador binario:

Véase, por ejemplo, el siguiente código COBOL con CBL_AND:

* SOURCE: 00000011 * OPERATION: AND * TARGET: 00000101 * EXPECTED: 00000001 = 256 dec (2nd byte unchanged - all 0) MOVE X'0300' to SRC MOVE X'0500' to TARGET CALL "CBL_AND" USING SRC TARGET BY VALUE 1.

y su modernización de Java:

/* SOURCE: 00000011 OPERATION: AND TARGET: 00000101 EXPECTED: 00000001 = 256 dec (2nd byte unchanged - all 0) */ ctx.getSrc().getSrcReference().setBytes(new byte[]{ 3, 0 }); ctx.getTarget().getTargetReference().setBytes(new byte[]{ 5, 0 }); ctrl.callSubProgram("CBL_AND", CallBuilder.newInstance() .byReference(ctx.getSrc().getSrcReference()) .byReference(ctx.getTarget().getTargetReference()) .byValue(1) .getArguments(), ctx);

CEE3Y

Finalidad

Este programa de utilidad imita el comportamiento del programa anterior con el mismo nombre, cuya función es terminar un programa con un código Abend (final anormal) y un tiempo de limpieza opcional. El motor de transformación de AWS gestiona la modernización automática de las llamadas a CEE3 ABD. Para que el código modernizado se ejecute correctamente, habrá que implementar simultáneamente la aplicación de utilidad.

El programa detiene la unidad de ejecución actual mediante el código abend proporcionado. Se imprime un mensaje informativo en los registros, en el que se especifica que se ha llamado a una salida de usuario con el código indicado. Por ahora, el parámetro de temporización NO se tiene en cuenta, pero está presente como argumento por motivos de compatibilidad con la modernización.

Signature

El programa acepta 0 o 2 argumentos. Los dos argumentos son:

  • El código Abend (un elemento de datos que debe interpretarse como un valor entero positivo)

  • Se ignora el tiempo de limpieza (un elemento de datos que debe interpretarse como un valor entero positivo)

Si no se proporciona ningún argumento, se utilizan los siguientes valores predeterminados:

  • Código de plegado: 0

  • Tiempo de limpieza: 0

Comprobaciones/manejo de errores

  • Comprueba que se están proporcionando 0 o 2 argumentos; de lo contrario, se IllegalArgumentException generará un.

  • Si se proporcionan dos argumentos, compruebe que: el código abend esté entre 0 y 4095 (ambos incluidos); el tiempo esté entre 0 y 5 (ambos incluidos)

Si no se cumplen estas pruebas, se activará un. IllegalArgumentException

Ejemplo de uso

A continuación, se muestra un ejemplo de uso en un programa COBOL, de la aplicación Carddemo:

9999-ABEND-PROGRAM. DISPLAY 'ABENDING PROGRAM' MOVE 0 TO TIMING MOVE 999 TO ABCODE CALL 'CEE3ABD'.

y el correspondiente código java modernizado:

public void _9999AbendProgram(final Cbtrn03cContext ctx, final ExecutionController ctrl) { DisplayUtils.display(ctx, ctrl, LOGGER, "ABENDING PROGRAM"); ctx.getTiming().setTiming(0); ctx.getAbcode().setAbcode(999); ctrl.callSubProgram("CEE3ABD", CallBuilder.newInstance() .getArguments(), ctx); }

CREAR

Finalidad

La utilidad CEEDATE convierte un número que representa una fecha de Lilian (días transcurridos desde el 15 de octubre de 1582) en una representación de fecha basada en caracteres, utilizando un formato proporcionado.

Imita el comportamiento de la antigua utilidad del sistema con el mismo nombre.

Signature

Dada su naturaleza, la utilidad CEEDATE está destinada más bien a ser llamada desde programas.

Se necesitan tres o cuatro argumentos (el último argumento es opcional):

  • El primer argumento obligatorio es un elemento de datos numéricos cuyo valor se interpretará como una fecha de Lilian

  • El segundo argumento obligatorio es un elemento de datos alfanumérico que contiene la PICTURE cadena utilizada para la conversión de la fecha a caracteres

  • El tercer argumento obligatorio es el elemento de datos alfanuméricos de destino, que contiene el resultado de la conversión del primer argumento al segundo como PICTURE

  • El cuarto argumento opcional es un elemento de datos que se utiliza para almacenar el código de respuesta de la utilidad

Control de comprobaciones y errores

  • Si el número de argumentos que se pasan a la utilidad no es tres o cuatro, se BluageWrapperException lanzará un

  • Si el primer argumento numérico proporcionado no se puede evaluar correctamente como una fecha de Lilian (fuera de los límites), se registrará un mensaje de error. El titular del código de valoración opcional, si está presente, recibirá un código de valoración de gravedad 3 y un mensaje número 2512

  • Si se produce una excepción durante la conversión de fecha debido a que se ha proporcionado un mensaje de error no válidoPICTURE, se registrará un mensaje de error. El titular del código de valoración opcional, si está presente, recibirá un código de valoración de gravedad 3 y un mensaje número 2518

  • Si, por alguna razón, la conversión no puede realizarse correctamente, el elemento de datos de salida se rellenará con espacios en blanco

  • Si la conversión se ha realizado correctamente, el titular del código de valoración opcional recibirá un código de valoración de gravedad 0 (y ningún mensaje)

Ejemplo de uso

Este es un ejemplo de llamada de un programa COBOL (la estructura del soporte del código de retroalimentación FC contiene puntos suspensivos, ya que contiene cientos de entradas de condiciones (nivel 88) que no se muestran aquí):

WORKING-STORAGE SECTION. 01 LILIANS PIC S9(9) BINARY. 01 TIMESTAMP-OUT PIC X(80). 01 MASK. 05 MASK-LEN PIC S9(4) BINARY. 05 MASK-STR. 10 MASK-CHR PIC X OCCURS 0 TO 256 DEPENDING ON MASK-LEN. 01 ROUTINE-NAMES. 05 CEESECS-ROUTINE PIC X(08) VALUE 'CEESECS '. 05 CEELOCT-ROUTINE PIC X(08) VALUE 'CEELOCT '. 05 CEEDATE-ROUTINE PIC X(08) VALUE 'CEEDATE '. 01 FC. ... * lilian date for 4 June 1990 MOVE SPACES TO MASK-STR MOVE 148887 TO LILIANS. MOVE 23 TO MASK-LEN MOVE 'YYYY-MM-DD-HH:MI:SS.999' TO MASK-STR CALL CEEDATE-ROUTINE USING LILIANS MASK TIMESTAMP-OUT FC.

CELOCT

Finalidad

La utilidad CEELOCT se utiliza para devolver el local date/time en tres formatos:

  • Fecha de Lilian (el número de días transcurridos desde el 14 de octubre de 1582)

  • Los segundos de Lilian (el número de segundos transcurridos desde las 00:00:00 del 14 de octubre de 1582)

  • Cadena de caracteres gregorianos (en la forma) YYYYMMDDHHMISS999

Imita el comportamiento de la utilidad del sistema anterior con el mismo nombre.

Signature

Dada su naturaleza, la utilidad CEELOCT está destinada más bien a ser llamada desde programas.

Se necesitan tres o cuatro argumentos (el último argumento es opcional):

  • El primer argumento obligatorio es un elemento de datos que se utiliza para almacenar la fecha de Lilian

  • El segundo argumento obligatorio es un elemento de datos que se utiliza para almacenar los segundos de Lilian

  • El tercer argumento obligatorio es un elemento de datos que se utiliza para almacenar la fecha gregoriana utilizando el formulario anterior

  • El cuarto argumento opcional es un elemento de datos que se utiliza para almacenar el código de retroalimentación de la utilidad

Control de comprobaciones y errores

  • Si el número de argumentos que se pasan a la utilidad no es tres o cuatro, se BluageWrapperException lanzará un

  • Si se produce alguna excepción durante la conversión del formato local date/time a cualquiera de los formatos de salida: el primer y el segundo argumento se establecerán en 0 y el tercero se mantendrá sin cambios; se registrará un mensaje de error; si lo desea, el titular del código de respuesta recibirá un código de respuesta de gravedad 3 y un mensaje número 2531

  • En caso de éxito, los tres argumentos se rellenarán con el contenido adecuado y el código de valoración opcional se ingresará con un código de gravedad 0

Ejemplo de uso

Este es un ejemplo de fragmento de COBOL que muestra el uso de la utilidad CEELOCT. La estructura de soporte del código de retroalimentación FC no se proporciona en su totalidad, ya que contiene cientos de entradas de condiciones (nivel 88).

WORKING-STORAGE SECTION. 01 LILIANS PIC S9(9) BINARY. 01 GREGORN PIC X(80). 01 SECONDS COMP-2. 01 FC. ... 01 ROUTINE-NAMES. 05 CEESECS-ROUTINE PIC X(08) VALUE 'CEESECS '. 05 CEELOCT-ROUTINE PIC X(08) VALUE 'CEELOCT '. 05 CEEDATE-ROUTINE PIC X(08) VALUE 'CEEDATE '. ... CALL CEELOCT-ROUTINE USING LILIANS SECONDS GREGORN FC.

CEERAN0

Finalidad

El programa CEERAN0 está llamado a generar números pseudoaleatorios, entre 0.0 y 1.0, utilizando una semilla específica. Se basa en el algoritmo del método congruencial multiplicativo, que requiere una semilla especificada por el usuario. Al usar 0 como semilla se activa un modo específico en el que la semilla se calcula a partir de la hora media de Greenwich (en el momento en que se está ejecutando el programa). De lo contrario, la semilla se usa tal cual. La secuencia pseudoaleatoria es predecible.

Signature

El programa CEERAN0 toma tres parámetros:

  • la semilla (parámetro de entrada), un elemento de datos que se puede interpretar como un entero positivo (incluido el 0)

  • el número aleatorio (parámetro de salida), un elemento de datos que se puede interpretar como un número flotante de doble precisión (cuyo valor estará entre 0.0 y 1.0, sin incluir); es el resultado del programa

  • el código de retroalimentación opcional (parámetro de salida), un elemento de datos de 12 bytes, que se utiliza para almacenar la retroalimentación del programa sobre el cálculo de números aleatorios

Control de comprobaciones y errores

  • Si el número de argumentos no es 2 o 3, se IllegalArgumentException lanzará un

  • El valor inicial debe estar comprendido entre 0 y 2147483646, ambos inclusive. Si el valor inicial está fuera de estos límites, se registrará un mensaje de error y el código de respuesta se establecerá en la gravedad 3 y el número del mensaje en 2524. El número aleatorio resultante se establecerá en -1,0 (análogo al comportamiento tradicional)

  • Si el valor inicial se establece en 0, pero el sistema no ha podido recuperar la hora media de Greewich (por cualquier motivo), el cálculo se realizará utilizando el valor 1 como alternativa y el código de respuesta se establecerá en 1 y el número de mensaje en 2523. El cálculo de los números aleatorios continuará con el valor inicial alternativo (análogo al comportamiento tradicional)

Ejemplo de uso

Este es un ejemplo de Java que demuestra cómo utilizar el programa CEERAN0, utilizando todos los parámetros, incluido el código de retroalimentación, con bits de varias capas (entidad, servicio):

//Entity layer public class Randomin extends RecordEntity { private final Group root = new Group(getData()).named("RANDOMIN"); private final Elementary randomin = new Elementary(root,new BinaryIntegerType(4, true),new BigDecimal("0")).named("RANDOMIN"); ... public class Randomout extends RecordEntity { private final Group root = new Group(getData()).named("RANDOMOUT"); private final Elementary randomout = new Elementary(root,new DoubleFloatingPointType(),new BigDecimal("0")).named("RANDOMOUT"); ... public class Returncode1 extends RecordEntity { private final Group root = new Group(getData()).named("RETURNCODE"); private final Elementary returncode1 = new Elementary(root,new AlphanumericType(12)," ").named("RETURNCODE"); ... // Service layer CallHandler.newInstance(ctrl, ctx, ctx.getErrorContext()) .byReference(ctx.getRandomin().getRandominReference(), ctx.getRandomout().getRandomoutReference(), ctx.getReturncode1().getReturncode1Reference()) .call("CEERAN0");

CESA

Finalidad

La utilidad CEESECS convierte la representación de una cadena de fecha y hora en segundos lilianos (el número de segundos transcurridos desde las 00:00:00 del 14 de octubre de 1582).

Signature

Dada su naturaleza, la utilidad CEESECS está pensada más bien para ser llamada desde programas.

Se necesitan tres o cuatro argumentos (el último argumento es opcional):

  • El primer argumento obligatorio es un elemento de datos cuyo valor se interpretará como una marca de tiempo

  • El segundo argumento obligatorio es un elemento de datos alfanumérico que contiene la PICTURE cadena utilizada para especificar cómo interpretar el primer argumento

  • El tercer argumento obligatorio es el elemento de datos, que contiene el resultado de la conversión del primer argumento al segundo como PICTURE

  • El cuarto argumento opcional es un elemento de datos que se utiliza para almacenar el código de retroalimentación de la utilidad

Control de comprobaciones y errores

  • Si el número de argumentos que se pasan a la utilidad no es tres o cuatro, se BluageWrapperException lanzará un

  • Si la marca de tiempo transferida a la utilidad como argumento no es válida, se registrará un mensaje de error y, de forma opcional, se enviará al titular del código de valoración un código de valoración de gravedad 3 y un mensaje número 2513

  • Si la imagen que se ha enviado a la utilidad como argumento no es válida, se registrará un mensaje de error y, si lo desea, el titular del código de valoración recibirá un código de valoración de gravedad 3 y un mensaje número 2518

  • Si, por alguna razón, no se puede calcular la salida en segundos de lilian, el tercer argumento (salida) se establecerá en 0

Ejemplo de uso

Este es un ejemplo de llamada a la utilidad CEESECS en un programa COBOL:

WORKING-STORAGE SECTION. 01 SECONDS COMP-2. 01 TIMESTAMP-IN. 05 TIMESTAMP-IN-LEN PIC S9(4) BINARY. 05 TIMESTAMP-IN-STR. 10 TIMESTAMP-IN-CHAR PIC X OCCURS 0 TO 256 DEPENDING ON TIMESTAMP-IN-LEN. 01 MASK. 05 MASK-LEN PIC S9(4) BINARY. 05 MASK-STR. 10 MASK-CHR PIC X OCCURS 0 TO 256 DEPENDING ON MASK-LEN. 01 FC. ... 01 ROUTINE-NAMES. 05 CEESECS-ROUTINE PIC X(08) VALUE 'CEESECS '. 05 CEELOCT-ROUTINE PIC X(08) VALUE 'CEELOCT '. 05 CEEDATE-ROUTINE PIC X(08) VALUE 'CEEDATE '. ... ... * date for lilian second 12,799,191,601.123 MOVE '1988-5-16-19:00:01.123' TO TIMESTAMP-IN-STR MOVE 23 TO MASK-LEN MOVE 'YYYY-MM-DD-HH:MI:SS.999' TO MASK-STR CALL CEESECS-ROUTINE USING TIMESTAMP-IN MASK SECONDS FC.

ILBOBAN0

Finalidad

El propósito del programa ILBOABN0 es interrumpir la unidad de ejecución actual de forma controlada, utilizando un código abend (extremo anormal) proporcionado por el usuario. Se utiliza a menudo en programas dedicados a la gestión de errores.

La interrupción de la unidad de ejecución actual se produce al lanzar unStopRunUnitException.

Signature

El programa ILBOABN0 utiliza un único argumento obligatorio, que es un elemento de datos que contiene el código abend (que debe poder interpretarse como un número entero).

Control de comprobaciones/manejo de errores

Al lanzar el botón StopRunUnitException para interrumpir la ejecución de la unidad de ejecución actual, el programa establecerá el código de retorno en el valor proporcionado como primer argumento. Además, se registrará un mensaje informativo.

Ejemplo de uso

A continuación, se muestra un ejemplo del uso en Java del programa ILBOABN0, resultante de una modernización de COBOL mediante la transformación de AWS:

77 WS-ABND-CODE COMP PIC S9(4) VALUE +1234. ... ... 1970-ABNDIT. CALL 'ILBOABN0' USING WS-ABND-CODE.

y la correspondiente modernización de Java:

//Entity layer private final Group root = new Group(getData()); private final Elementary wsAbndCode = new Elementary(root,new BinaryType(4, 0, "STD", false, false, true),Short.valueOf("1234")); ... //Service layer @Override public void _1970Abndit(final MyPgmContext ctx, final ExecutionController ctrl) { ctrl.callSubProgram("ILBOABN0", CallBuilder.newInstance() .byReference(ctx.getWsAbndCode().getWsAbndCodeReference()) .getArguments(), ctx);