You are on page 1of 17

OpenCOBOL Manual

=========================================================== Noticias de ltima hora: 23 de enero 2010 Gary Cutler ha publicado un impresionante Gua del OpenCOBOL programador . http://opencobol.add1tocobol.com/OpenCOBOL% 20Programmers% 20Guide.pdf (3.3M) Documentos 1.1pre versin-lanzamiento de OpenCOBOL con algunas grandes ideas y detalles COBOL. Impresionante. =========================================================== OpenCOBOL es un cdigo abierto de COBOL, que traduce los programas COBOL con el cdigo C y lo compila con el compilador C nativo. Este manual corresponde a OpenCOBOL 1,0 (espero).

UserManual / 1 Introduccin Hello World! UserManual/2_1 Compilar Opciones del compilador Construir Target Formato Fuente Opciones de advertencia UserManual/2_2 Mltiples fuentes Vinculacin esttica Enlazado dinmico Edificio de la Biblioteca Usando Biblioteca UserManual/2_3 C Interface Programa Principal C Esttico C a COBOL Dinmica C a COBOL COBOL esttico para C Dinmica COBOL a C UserManual / 3 Personalizar Personalizar Compilador Personalizacin de Biblioteca UserManual / 4 Optimizar Opciones Optimizar Optimizar Llame Optimizar Binary UserManual / 5

Depurar Opciones de depuracin UserManual / copia Manual OpenCOBOL

Introduccin
Hello World!

Este es un programa de ejemplo que muestra "Hello World": El I de identificacin debe estar en la columna 8 (7 espacios antes). ---- Hello.cob ------------------------* Programa COBOL de ejemplo DIVISIN DE IDENTIFICACIN. PROGRAMA-ID. hola. PROCEDURE DIVISION. DISPLAY "Hello World!". PARADA ejecucin. ---------------------------------------El compilador es COBC, que se ejecuta de la siguiente manera: $ COBC-x hello.cob $. / Hola Hello World! El nombre del archivo ejecutable (es decir, hola en este caso) se determina mediante la eliminacin de la extensin del nombre de archivo fuente. Se puede especificar el nombre del archivo ejecutable, especificando la opcin de compilador-o de la siguiente manera: $ COBC-o hola-mundo hello.cob $. / Hola-mundo Hello World!

Compilar

En este captulo se describe cmo compilar programas COBOL utilizando OpenCOBOL.

Opciones del compilador

El compilador COBC acepta las opciones descritas en esta seccin.

Construir Target

Las siguientes opciones especifican el tipo de destino producida por el compilador: -E Slo preproceso. Se ejecutan las directivas del compilador. Se eliminan lneas de comentario. Sentencias COPY se expanden. La salida va a la norma-out. -C Traduccin solamente. Archivos de cdigo fuente COBOL se convierten en archivos de C. La salida se guarda en el archivo *. C. -S Recopilar solamente. Archivos traducidos C son compilados por cc. La salida se guarda en el archivo *. S. -C Compilar y ensamblar. Esto es equivalente a cc-c. La salida se guarda en el archivo *. O. -M Compilar, ensamblar y construir un mdulo dinmico de enlaces (es decir, una biblioteca compartida). La salida se guarda en el archivo *. As. (Por defecto) -X Compilar, ensamblar y construir un ejecutable. Sin ningn tipo de opciones anteriores, el compilador intenta construir un mdulo. Si usted le da la opcin-x con-C, ver la funcin principal en el archivo C generado.

Formato Fuente

OpenCOBOL apoya tanto fijos como formato de cdigo libre. El formato por defecto es el formato fijo. Esto puede ser explcitamente sobrescritos por una de las siguientes opciones:

Libres Formato libre. -Fijado Formato fijo.

Opciones advertencia -Wall

Habilitar todas las advertencias -Wcolumn-overflow Advierta a cualquier texto despus de la columna 72 -Wend a evaluar Avisar carece de FIN-EVALUAR -Wend-si Warn carece de END-IF -Wparentheses Warn carece de parntesis, alrededor y dentro de O

Mltiples fuentes

Un programa consiste a menudo en varios archivos de cdigo fuente. En esta seccin se describe cmo compilar varios archivos de origen. En esta seccin tambin se describe cmo crear una biblioteca compartida que puede ser utilizado por todos los programas COBOL y cmo usar libreras externas de los programas COBOL.

Vinculacin esttica

La forma ms fcil de combinar varios archivos es compilar en un solo ejecutable. Recopilar todos los archivos con la opcin-c, y vincularlos al final. El programa de nivel superior se debe compilar con la opcin-fmain: $ $ $ $ COBC-c subr1.cob COBC-c subr2.cob COBC-c-fmain main.cob COBC-o prog main.o subr1.o subr2.o

Puede enlazar rutinas C, as: $ Cc-c subrs.c $ COBC-c-fmain main.cob $ COBC-o prog main.o subrs.o Cualquier nmero de funciones puede estar contenida en un solo archivo de C. Los programas vinculados sern llamados dinmicamente, es decir, el smbolo se resolver en tiempo de ejecucin. Por ejemplo, la siguiente instruccin COBOL LLAME "subr" USO X. se convertir en un cdigo de C equivalente as: int (* func) () = cob_resolve ("subr"); if (fun! = NULL) func (X); Con el compilador opciones Finicial de guardia, un cdigo ms eficiente ser generado de esta manera: subr (X);

Tenga en cuenta que esta opcin slo es eficaz cuando la llamada nombre del programa es un literal (como CALL "subr."). Con un nombre de datos (como SUBR CALL.), El programa todava se llama dinmica.

La vinculacin dinmica

El programa principal y subprogramas se pueden compilar por separado. El programa principal est compilado como siempre: $ COBC-x main.cob Los subprogramas se compilan con la opcin-m: $ COBC-m subr.cob Esto crea un archivo de mdulo subr.so (La extensin vara en funcin de su anfitrin.). Antes de ejecutar el programa principal, instale los archivos de mdulo en el directorio de la biblioteca: $ Cp subr.so / su / cobol / lib Ahora, la variable de entorno COB_LIBRARY_PATH a su directorio de la librera, y ejecutar el programa principal: $ Export COB_LIBRARY_PATH = / su / cobol / lib $. / Main

Library Building

Usted puede construir una biblioteca compartida mediante la combinacin de varios programas COBOL y hasta rutinas de C: $ $ $ $ COBC-c subr1.cob COBC-c subr2.cob Cc-c subr3.c Cc-shared-o libsubrs.so subr1.o subr2.o subr3.o

Usando Biblioteca

Puede utilizar una biblioteca compartida, relacionndola con su programa principal. Antes de vincular la biblioteca, se debe instalar en el directorio de biblioteca del sistema:

$ Cp libsubrs.so / usr / lib o instalarlo en otro lugar y establecer LD_LIBRARY_PATH: $ Cp libsubrs.so / su / cobol / lib $ Export LD_LIBRARY_PATH = / su / cobol / lib A continuacin, compilar el programa principal, que une la biblioteca de la siguiente manera: $ COBC main.cob -L/your/cobol/lib-lsubrs

Mltiples fuentes

Un programa consiste a menudo en varios archivos de cdigo fuente. En esta seccin se describe cmo compilar varios archivos de origen. En esta seccin tambin se describe cmo crear una biblioteca compartida que puede ser utilizado por todos los programas COBOL y cmo usar libreras externas de los programas COBOL.

Vinculacin esttica

La forma ms fcil de combinar varios archivos es compilar en un solo ejecutable. Recopilar todos los archivos con la opcin-c, y vincularlos al final. El programa de nivel superior se debe compilar con la opcin-fmain: $ $ $ $ COBC-c subr1.cob COBC-c subr2.cob COBC-c-fmain main.cob COBC-o prog main.o subr1.o subr2.o

Puede enlazar rutinas C, as: $ Cc-c subrs.c $ COBC-c-fmain main.cob $ COBC-o prog main.o subrs.o Cualquier nmero de funciones puede estar contenida en un solo archivo de C. Los programas vinculados sern llamados dinmicamente, es decir, el smbolo se resolver en tiempo de ejecucin. Por ejemplo, la siguiente instruccin COBOL LLAME "subr" USO X. se convertir en un cdigo de C equivalente as:

int (* func) () = cob_resolve ("subr"); if (fun! = NULL) func (X); Con el compilador opciones Finicial de guardia, un cdigo ms eficiente ser generado de esta manera: subr (X); Tenga en cuenta que esta opcin slo es eficaz cuando la llamada nombre del programa es un literal (como CALL "subr."). Con un nombre de datos (como SUBR CALL.), El programa todava se llama dinmica.

La vinculacin dinmica

El programa principal y subprogramas se pueden compilar por separado. El programa principal est compilado como siempre: $ COBC-x main.cob Los subprogramas se compilan con la opcin-m: $ COBC-m subr.cob Esto crea un archivo de mdulo subr.so (La extensin vara en funcin de su anfitrin.). Antes de ejecutar el programa principal, instale los archivos de mdulo en el directorio de la biblioteca: $ Cp subr.so / su / cobol / lib Ahora, la variable de entorno COB_LIBRARY_PATH a su directorio de la librera, y ejecutar el programa principal: $ Export COB_LIBRARY_PATH = / su / cobol / lib $. / Main

Library Building

Usted puede construir una biblioteca compartida mediante la combinacin de varios programas COBOL y hasta rutinas de C: $ COBC-c subr1.cob $ COBC-c subr2.cob

$ Cc-c subr3.c $ Cc-shared-o libsubrs.so subr1.o subr2.o subr3.o

Usando Biblioteca

Puede utilizar una biblioteca compartida, relacionndola con su programa principal. Antes de vincular la biblioteca, se debe instalar en el directorio de biblioteca del sistema: $ Cp libsubrs.so / usr / lib o instalarlo en otro lugar y establecer LD_LIBRARY_PATH: $ Cp libsubrs.so / su / cobol / lib $ Export LD_LIBRARY_PATH = / su / cobol / lib A continuacin, compilar el programa principal, que une la biblioteca de la siguiente manera: $ COBC main.cob -L/your/cobol/lib-lsubrs

C Interface

En este captulo se describe cmo combinar los programas en C con programas COBOL.

Programa Principal C

Incluya libcob.h en su programa de C. Llame cob_init antes de usar cualquier mdulo COBOL: # Include <libcob.h> int main (int argc, char ** argv) { / * Inicializar el programa * / ... / * Inicializar la biblioteca de tiempo de ejecucin COBOL * / cob_init (argc, argv); / * Resto del programa * / ... } Puedes escribir cobc_init (0, NULL), y si usted no desea pasar argumentos de lnea de comandos para COBOL. El cob_set_library_path funcin sobrescribir la configuracin de usuario de la variable de entorno COB_LIBRARY_PATH. Usted puede compilar su programa en C de la siguiente manera: $ Cc-c `cob-config - cflags` main.c El objeto compilado debe estar vinculada con libcob la siguiente manera: $ Cc-o principales main.o `cob-config - libs`

Esttico C a COBOL

Digamos que el mdulo COBOL siguiente de un programa en C: ---- Say.cob --------------------------DIVISIN DE IDENTIFICACIN. PROGRAMA-ID. decir. Divisin de Medio Ambiente. DIVISION DE DATOS. VINCULACIN SECCIN. 01 HOLA PIC X (6). 01 MUNDO PIC X (6).

DIVISIN DE PROCEDIMIENTO DE USAR EL MUNDO HOLA. DISPLAY HELLO WORLD. Salir del programa. ---------------------------------------Recuerde que el cdigo tiene que empezar en la columna 9. Este programa acepta dos argumentos, los muestra, y salir. Desde el punto de vista de C, esto es equivalente a una funcin que tiene la siguiente prototipo: extern int decir (char * hola, mundo char *); Por lo tanto, el programa principal se ver como la siguiente: ---- Hello.c --------------------------# Include <stdio.h> # Include <libcob.h> extern int decir (char * hola, mundo char *); int main () { int ret; carbn hola [6] = "Hola"; Char mundo [6] = "Mundo"; cob_init (0, NULL); ret = decir (hola mundo); volver ret; } ---------------------------------------Recopilar estos programas, a saber: $ Cc-c `cob-config - cflags` hello.c $ Say.cob COBC-c-esttica $ COBC-x-o hola hello.o say.o $. / Hola Hello World!

Dinmica C para COBOL

Usted puede encontrar un mdulo COBOL tener un programa de identificacin especfica utilizando un cob_resolve funcin C, que toma el nombre del mdulo como una cadena y devuelve un puntero a la funcin del mdulo. cob_resolve devuelve NULL si no hay ningn mdulo. En este caso, la cob_resolve_error funcin devuelve el mensaje de error.

Vamos a ver un ejemplo: ---- Hola-dynamic.c ------------------# Include <stdio.h> # Include <stdlib.h> # Include <libcob.h> static int (* digamos) (char * hola, mundo char *); int main () { int ret; carbn hola [6] = "Hola"; Char mundo [6] = "Mundo"; cob_init (0, NULL); / * Encontrar el mdulo con PROGRAM-ID "decir". * / decir = cob_resolve ("palabra"); / * Si no existe tal mdulo, muestra el error y la salida * / if (decir == NULL) { fprintf (stderr, "% s \ n", cob_resolve_error ()); exit (1); } / * Llamada al mdulo encontrado y salir con el cdigo de retorno * / ret = decir (hola mundo); volver ret; } ---------------------------------------Recopilar estos programas, a saber: $ Cc-c `cob-config - cflags` hola-dynamic.c $ COBC-x-o hello hello-dynamic.o $ COBC-m say.cob $ Export COB_LIBRARY_PATH =. $. / Hola Hello World!

COBOL esttico para C

Vamos a llamar a la siguiente funcin C de COBOL: ---- Say.c ----------------------------# Include <stdio.h> int decir (char * hola, char * mundo) { int i; for (i = 0; i <6, i + +) putchar (hola [i]); for (i = 0; i <6, i + +) putchar (mundo [i]);

putchar ('\ n'); return 0; } ---------------------------------------Este programa es equivalente a la say.cob anterior. Tenga en cuenta que, a diferencia de C, los argumentos que se pasan de los programas COBOL no se terminan con el carcter nulo (es decir, \ 0). Si quieres llamarlo en ambientes WIN nativos (no hace dao si lo hace en todos los casos) el cdigo debe ser cambiado a ---- Say.c ----------------------------# Include <stdio.h> # Ifndef C_EXTERN # If defined (_WIN32) | | define (__CYGWIN__) # Define C_EXTERN __ declspec extern (dllexport) # Else # Define extern C_EXTERN # Endif # Endif C_EXTERN int decir (char * hola, char * mundo) { int i; for (i = 0; i <6, i + +) putchar (hola [i]); for (i = 0; i <6, i + +) putchar (mundo [i]); putchar ('\ n'); return 0; } ---------------------------------------Usted puede llamar a esta funcin de la misma manera que llame programas COBOL: ---- Hello.cob ------------------------DIVISIN DE IDENTIFICACIN. PROGRAMA-ID. hola. Divisin de Medio Ambiente. DIVISION DE DATOS. WORKING-STORAGE SECTION. 01 HOLA PIC X (6) VALOR "Hello". 01 MUNDO PIC X (6) VALOR "World". PROCEDURE DIVISION. LLAME "decir" usar HELLO WORLD. PARADA ejecucin. ---------------------------------------Recopilar estos programas, a saber: $ Cc-c say.c $ COBC-c-static-fmain hello.cob => desde OC 1.0: (. Fmain archivo est obsoleto cf NEWS) no se debe hacer

$ COBC-x-o hola hello.o say.o => desde OC 1.0: $ COBC-x-o hola hello.cob say.o $. / Hola Hello World!

Dinmica COBOL a C

Usted puede crear un mdulo dinmico de enlaces desde un programa C pasando una opcin comn para el compilador de C: $ Cc-shared-o say.so say.c $ COBC-x-o hola hello.cob $ Export COB_LIBRARY_PATH =. $. / Hola Hello World!

Personalizar

Personalizar Compilador

Estos ajustes son efectivos en tiempo de compilacin. Las variables de entorno (valor por defecto): COB_CC Compilador de C ("gcc") COB_CFLAGS Banderas pasan al compilador de C ("-I $ (prefijo) / include") COB_LDFLAGS Banderas pasan al compilador de C ("") COB_LIBS Bibliotecas estndar vinculados con el programa ("-L $ (prefijo) / lib-LCOB") COB_LDADD Bibliotecas adicionales relacionados con el programa ("")

Personalizar Biblioteca

Estos ajustes son efectivos en tiempo de ejecucin. Las variables de entorno (valor por defecto): COB_LIBRARY_PATH Dinmica de enlaces va mdulo (":. $ (Prefijo) / lib / open-cobol")

Optimizar

Optimizar Opciones

Hay dos opciones de compilador de optimizacin:-O y O2. Estas opciones permiten a los niveles de compilacin (C hasta el montaje). La opcin-O o-O2 se pasa al compilador de C como es y utilizados para la optimizacin de nivel C.

Optimizar Llame

Cuando se ejecuta una instruccin CALL, el programa llamado se vincula en tiempo de ejecucin. Al especificar la opcin de compilador-Finicial-llamada, puede enlazar estticamente el programa en tiempo de compilacin y llame de manera eficiente. (Consulte Vinculacin esttica)

Optimizar Binary

De forma predeterminada, los elementos de datos de BINARIO uso o COMP se almacenan en formato big-endian. En las mquinas cuya orden de bytes nativo es little-endian, no es eficiente. Considere cambiar PIC a COMP-5 o al uso BINARIO-xxx 2002 estndar, en el que xxx es CHAR de 1 byte, short de 2 bytes, LONG de 4 bytes y dobles (sic) de 8 bytes. Adems, el establecimiento de la opcin binaria de tamao a 2-4-8 o 1-2-4-8 es ms eficaz que otros.

Depurar

Depurar Opciones

La opcin de compilador-debug se puede utilizar durante el desarrollo de sus programas. Permite que todos la comprobacin de errores en tiempo de ejecucin, como subndice controles de frontera y controles de datos numricos, y muestra los errores en tiempo de ejecucin con los lugares de origen. La opcin de compilador-g incluye directivas de lnea en la salida. Esto ayuda a depurar sus programas COBOL utilizando "gdb".

You might also like