Párrafo PROGRAM-ID

El párrafo PROGRAM-ID especifica el nombre por el que se conoce el programa y asigna los atributos de programa seleccionados a dicho programa. Es obligatorio y debe ser el primer párrafo de la DIVISIÓN DE IDENTIFICACIÓN.

nombre-programa
Palabra definida por el usuario o literal alfanumérico, pero no una constante figurativa, que identifica el programa. Debe seguir las siguientes reglas de formación, en función del valor de la opción de compilador PGMNAME:
PGMNAME (LONGUPPER)
Si nombre-programa es una palabra definida por el usuario, puede tener hasta 30 caracteres de longitud.

Si nombre-programa es un literal alfanumérico, el literal puede tener hasta 160 caracteres de longitud. El literal no puede ser una constante figurativa.

Sólo se permiten el guión, el subrayado de , los dígitos del 0 al 9 de y los caracteres alfabéticos en el nombre cuando el nombre se especifica como una palabra definida por el usuario.

Al menos un carácter debe ser alfabético.

El guión no puede ser el primer o último carácter.

Si nombre-programa es un literal alfanumérico, el carácter de subrayado puede ser el primer carácter.

Los nombres de programa externos se procesan con caracteres alfabéticos en mayúsculas.

PGMNAME (LONGMIXED)
nombre-programa debe especificarse como un literal alfanumérico, que puede tener hasta 160 caracteres de longitud. El literal no puede ser una constante figurativa.

Siempre que se permitan caracteres alfabéticos, puede utilizar caracteres de varios bytes.

Para obtener información sobre la opción de compilador PGMNAME y cómo procesa el compilador los nombres, consulte PGMNAME en la publicación COBOL for Linux® on x86 Programming Guide.

recursive
Cláusula opcional que permite reintroducir recursivamente los programas COBOL.

Puede especificar la cláusula RECURSIVE sólo en el programa más externo de una unidad de compilación. Los programas recursivos no pueden contener subprogramas anidados.

Si se especifica la cláusula RECURSIVE, nombre-programa se puede volver a especificar de forma recursiva mientras una invocación anterior sigue activa. Si no se especifica la cláusula RECURSIVE, no se puede volver a entrar de forma recursiva un programa activo.

La sección WORKING-STORAGE SECTION de un programa recursivo define el almacenamiento que se asigna e inicializa estáticamente en la primera entrada a un programa y está disponible en un estado de última utilización para cualquiera de las invocaciones recursivas.

La sección LOCAL-STORAGE SECTION de un programa recursivo (así como un programa no recursivo) define el almacenamiento que se asigna, inicializa y desasigna automáticamente por invocación.

Los conectores de archivo internos que corresponden a un FD en FILE SECTION de un programa recursivo se asignan estáticamente. El estado de los conectores de archivos internos forma parte del último estado utilizado de un programa que persiste entre invocaciones.

Los siguientes elementos de lenguaje no están soportados en un programa recursivo:

  • MODIFICAR
  • GO TO sin un nombre de procedimiento especificado
  • VOLVER A EJECUTAR
  • LÍMITE DE SEGMENTO
  • USO PARA DEPURACIÓN

Común
Especifica que el programa denominado por nombre-programa está contenido (es decir, anidado) dentro de otro programa y se puede llamar desde los hermanos del programa común y los programas contenidos en ellos. La cláusula COMMON sólo se puede utilizar en programas anidados. Para obtener más información sobre las convenciones para los nombres de programas, consulte Convenciones para los nombres de programas.
INITIAL
Especifica que cuando se llama a nombre-programa , nombre-programa y los programas contenidos (anidados) en él se colocan en su estado inicial.

Un programa está en el estado inicial:

  • La primera vez que se llama al programa en una unidad de ejecución
  • Cada vez que se llama al programa, si posee el atributo inicial
  • La primera vez que se llama al programa después de la ejecución de una sentencia CANCEL que hace referencia al programa o una sentencia CANCEL que hace referencia a un programa que contiene directa o indirectamente el programa
  • La primera vez que se llama al programa después de la ejecución de una sentencia CALL que hace referencia a un programa que posee el atributo inicial y que contiene directa o indirectamente el programa

Cuando un programa está en el estado inicial:

  • Se inicializan los datos internos del programa contenidos en WORKING-STORAGE SECTION. Si se utiliza una cláusula VALUE en la descripción del elemento de datos, el elemento de datos se inicializa con el valor definido. Si una cláusula VALUE no está asociada con un elemento de datos, el valor inicial del elemento de datos no está definido.
  • Los archivos con conectores de archivo internos asociados con el programa no están en modalidad abierta.
  • Los mecanismos de control para todas las sentencias PERFORM contenidas en el programa se establecen en sus estados iniciales.
  • Una sentencia GO TO modificada contenida en el programa se establece en su estado inicial.

Para ver las reglas que rigen los nombres de programa no exclusivos, consulte Reglas para nombres de programa.