This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Estado
Esta es una versión candidata 1.1 del FAQ OpenCOBOL. Citas en ocfaq.rst . Courtesty
dereStructuredText , Sphinx y Pygments .
ocfaq.pdf también está disponible, utilizandorst2latex y luego pdflatex .
Este FAQ es más que un FAQ y menos de un FAQ.Algún día eso va a cambiar y este
documento se dividirá en un manual OpenCOBOL y un archivo simplificada Preguntas
más frecuentes.
Favicon web por Mark James, Help.png del FAMFAMFAM seda conjunto de
OpenCOBOL es un código abierto de COBOL compilador. OpenCOBOL implementa una
parte sustancial de la COBOL 85 y COBOL 2002 estándares, así como muchas
extensiones de los compiladores COBOL existentes.
OpenCOBOL traduce en C y COBOL compila el código traducido usando el compilador
C nativo. Usted puede construir sus programas COBOL en varias plataformas,
incluyendo Unix / Linux, Mac OS X y Microsoft Windows.
La más excelente Guía de OpenCOBOL Programmer se puede encontrar en
OpenCOBOL Guía de Programadores .
1.2 ¿Qué es COBOL?
COBOL es un acrónimo de comunes Business Oriented Language. Este autor siempre
ha pensado en ella como "Business común" orientada más común "Business Oriented",
pero que el énfasis es tal vez hasta el punto de vista del lector.
1.3 ¿Cómo se licencia OpenCOBOL?
El compilador es bajo licencia GNU General Public License .
La biblioteca de tiempo de ejecución es bajo licencia GNU Licencia Pública General
Reducida .
Todos los códigos fuente son propiedad de sus respectivos autores.
Lo que significa que, a grandes rasgos, es la siguiente:
Se le permite escribir programas OpenCOBOL que utilizan el tiempo deejecución libcob biblioteca como quieras. Cerrado, propiedad, uso comercialestá permitiday alentó. Usted puede enviar programas en forma binaria como desee.
Las modificaciones del propio compilador, debe proporcionar acceso al códigofuente y ser licenciado bajo la GNU GPL. Esto asegura que nadie estáautorizado para llamar fuentes modificado su cuenta, ni negar a nadie laposibilidad de copiar yredistribuir el código fuente del compilador,incluyendo sus cambios locales.
A tener en cuenta: cualquier versión alemana del compilador que estáconfigurado para utilizar Berkeley DB más allá de la versión 1.85 debecumplir con la licencia y fuentes del Oracle Programas COBOL que utilizanlibdb deben enviarse con todos los binarios.
OpenCOBOL se distribuye con la esperanza de que sea útil, pero SIN NINGUNA
GARANTÍA, incluso sin la garantía implícita de COMERCIALIZACIÓN o IDONEIDAD
secreto mientras que los desarrolladores curiosos están expuestos a COBOL fuera de
las bóvedas.
1.9 ¿A quién agradezco OpenCOBOL?
Mucha gente. En particular Keisuke Nishida y Roger Mientras .
Consulte el archivo de gracias en el archivo de código fuente para más nombres de
personas que han trabajado en el proyecto OpenCOBOL. Roger señala que la lista es
deplorablemente incompleta. Para citar a:
El proyecto OC no hubiera sido lo que es hoy sin laayuda significativa / enorme de muchos-muchos personas. Las GRACIASarchivo ni siquiera hacer justicia a este.
1.10 ¿Tiene OpenCOBOL incluye un conjunto de pruebas?
¿Por qué sí lo hace. 74 pruebas de sintaxis, 170 pruebas de cobertura, y los datos de
16 ensayos de representación en el 2009 antes de la liberación de Febrero. 88 de
sintaxis, 253 de cobertura, y 22 pruebas de datos en una corte de 2010.
Desde el tarball de desarrollo:
$ Make check
evaluará e informará sobre la serie de pruebas. Ver make check lista para obtener una
lista corriente de salida de una prueba.
1.11 ¿Tiene OpenCOBOL pasar el conjunto de pruebas NIST?
El Instituto Nacional de Normas y Tecnología, NIST, mantiene un 85 suite de
verificación aplicación COBOL de pruebas. Un archivo de las pruebas se puede
encontrar en
http://www.itl.nist.gov/div897/ctg/cobol_form.htm
OpenCOBOL pasa muchas de las pruebas incluidas en el patrocinado COBOL 85 banco
de pruebas NIST. A pesar de que pasa más de 9000 de las pruebas, OpenCOBOL no
reclama la conformidad con cualquier nivel de COBOL estándar .
Instrucciones para el uso de la suite de NIST se incluye en el archivo build en:
1.16 ¿Puede OpenCOBOL utilizarse para aplicaciones de
producción?
Depende. OpenCOBOL todavía está en desarrollo activo. La cobertura de funciones
está creciendo, y mientras que la implementación actual ofrece una gran cobertura,
aplicabilidad a una situación determinada tendría que analizar y evaluar los riesgos
antes de compromiso con el uso de producción.
La licencia permite el uso comercial, pero OpenCOBOL también viene con aviso de
indemnización, lo que significa que no hay garantías al utilizar OpenCOBOL, directa o
indirectamente.
Puede haber un momento en que se ofrece soporte comercial de OpenCOBOL, pero en
el momento de escribir ninguna ofrenda conocida existe.
Buscar en google por si acaso!
Y sí, OpenCOBOL se utiliza en entornos de producción.
Desde [Roger] :
Dicho sea de paso, OC ha sido (y sigue siendo) usado en la producciónambientes desde 2005. (Esto incluye proyectos que personalmente he trabajadoen más otros proyectos me informaron, los cuales todo el mundo)
El proyecto OC no hubiera sido lo que es hoy sin la ayuda significativa /enorme de muchos-muchos personas. Las GRACIAS archivo ni siquiera hacerjusticia a este.
1.16.1 Nagasaki Prefecture
Enviado el opencobol.org , La Prefectura de Nagasaki, la población de 1,44 millones y
30.000 empleados civiles está utilizando OpenCOBOL en apoyo de su sistema de
gestión de nóminas. Un equipo de 3 portado y mantener un conjunto de 200
programas COBOL, mezclados con Perl y los módulos de información especializados,
que se ejecutan en Nec PX9000 hierro grande y servidores Xeon.
1.16.2 Historias de Currey Adkins
Otro post de opencobol.org en abril de 2009, reimpreso con el permiso .
Para aquellos preocupados por la viabilidad de OpenCOBOL en una producciónmedio ambiente, que ofrece nuestra situación como un ejemplo.
Empezamos cargando OpenCOBOL a un Debian (Etch) Caja parisc a mediados demarzo. Con ayuda valiosa de este foro nos quedamos en funcionamiento en pocosdías.
A continuación, exploramos las capacidades de CGI y trasladamos nuestromanejador CGI hecho en casa (Escrito en HP3000 Cobol) sobre. Terminamoscambiando unas pocas líneas.
En el post de Marcr indica, encontramos un envoltorio MySql e hicimos algunospequeños cambios en él.
A partir de la segunda semana de abril, estábamos en pleno desarrollo denuevos sistemas para uso comercial.
Por favor, acepte nuestras felicitaciones a la comunidad y nuestra gratitudpor la ayuda del foro.
jimc
Otra referencia de Jim, unos 6 meses después, en febrero de 2010, que parece ser el
tiempo suficiente para un efecto de cristal de color rosa haber desaparecido si iba a
hacerlo.
Por nuestra parte, la respuesta es sí.
Es posible que desee leer un hilo antes de esto. Buscar en OpenCOBOLviabilidad.
Después de haber trabajado con Cobol desde 1960, mi forma de pensar es que noconversión es automática.
En nuestro caso no nos estamos convirtiendo en un dialecto específico comoMF,sino que están ya sea escribiendo sistemas completamente nuevos o estáncambiandocaracterísticas (por lo que basado en la web, por ejemplo) en los sistemasmás antiguos.
Hay algunos fallos detectados en la ejecución OpenCOBOL que tienen hadiscutido en este foro. Hemos encontrado que son inconsecuentes y simplementetrabajar alrededor de ellos. Por otra parte no me acuerdo de trabajo con uncompilador libre de errores.
Nuestro medio ambiente es Debian Linux, OpenCOBOL 1.1, MySQL, ISAM (elproporcionado con la versión preliminar 1.1), HTML (a través de CGI) y unnuevo preprocesador para aliviar el tedio de escribir sentencias SQL.
Si usted tiene algunos "nay Sayers" en su organización y desea alguna apoyoestaré encantado de hablar con ellos.
jimc
Espero que la gente no les importa un poco de publicidad en este FAQ, pero Jim ha
hecho mucho por OpenCOBOL y su compañía es una empresa de mentalidad de la
comunidad. http://www.curreyadkins.com
1.16.3 Contador Público
Otra de opencobol.org
Como parte de un estudio inicial de los compiladores de COBOL para encontraruna alternativa a la la de MicroFocus, OpenCobol fue seleccionado paradesarrollar un modelo para la compilación de un paquete de contabilidadpública (1,5 millones de líneas).
El modelo tenía para validar esta elección, incluso con el uso de secuencialarchivos indexados, con la versión 0.33 OpenCobol y pequeños ajustes en elCOBOLcódigo (principalmente utilizando palabras clave reservadas y palabras claveno implementado).
Después de la clasificación funcional de este modelo, el software es en laproducción desde julio de 2011 en Linux RedHat Enterprise Linux 4 avanzado de32 bits del servidor entorno virtualizado VMware ESX - 4 GB de RAM -Procesador dual AMD Opteron 6176 (tm).
El paquete de software se implementa para 650 usuarios cuyos 150 conectadosal mismo tiempo, en los picos de actividad y en comparación con la anteriorplataforma AIX 4.3 y MicroFocus, ganancia de rendimiento es en un informe, enel mejor, 1-10 (lote de explotación de misión), en el peor, del 1 al 4 (lotede recálculo).
Con el auge de la versión del paquete, una validación funcional está en cursodesde septiembre de 2011 con OpenCobol versión 1.1 en Linux RedHat Enterprise5 Linux Advanced Server de 64 bits y doble Quad-Core AMD Opteron 8356 (tm)procesador. No hay pérdida de rendimiento relacionado con la nueva versión deOpenCobol (pero relacionada con el paquete de 10% a 20% de pérdida) despuésde la campaña en los dosambientes.
1.17 ¿Dónde puedo obtener más información acerca de COBOL?
El COBOL FAQ por William M Klein es un gran lugar para comenzar.
A google de las palabras de búsqueda "COBOL" o "OpenCOBOL" están obligados a
llevar a bastantes días el valor de la lectura de los artículos de fondo, opiniones e
información técnica para satisfacer la mayor de las curiosidades.
Los COBUG sitio COBOL Grupos de usuarios es también un recurso maravilloso para
Estamos empezando a traducirse en las próximas versiones diferentes idiomas.Los cambios de código necesarios para OC 2.0 ya se realizaron.
Ahora necesitamos traductores.
Antes de publicar cualquier cosa aquí me quiero reunir a los traductoresaquí. ¿Quién es capaz y está dispuesto a traducir las cadenas (actualmente667) en qué idioma (s) [O tiene a alguien que hace esto]?
A partir de los últimos debates Recuerdo personas que quieren hacer esto paraFrancés, italiano, español, alemán, pero no recuerdo que dijo exactamente queél / ella le ayudará. Ya contamos con una traducción al japonés, pero quenecesita una actualización pesada.
...
1.20 ¿Hay una lista de correo OpenCOBOL?
Sí. Visita opencobol.org para más detalles. La lista de correo de desarrollo
OpenCOBOL se gentilmente auspiciada por SourceForge. El archivo ML está disponible
en http://sourceforge.net/mailarchive/forum.php?forum_name=open-cobol-list y
una vez que se ha suscrito, la lista se aceptan mensajes de correo electrónico en el
destino-cobol de listas abiertas en las listas. sourceforge.net.
1.21 ¿Dónde puedo encontrar más información sobre los
estándares de COBOL?
El COBOL 85 , están documentadas en
ANSI X3.23-1985
ISO 1989-1985
ANSI X3.23a-1989
ANSI X3.23b-1993
Esto es muy sujeta a cambios , pero en la actualidad (febrero de 2013) un proyecto de
20xx está disponible en http://www.cobolstandard.info/j4/index.htmy en
Ver la entrada de Wikipedia para COBOL para muchos más detalles.
2.2 ¿Qué son las Normas Oficiales COBOL?
Muchas gracias a William Klein, [wmklein] para más detalles sobre qué formulaciones
se van a utilizar al hacer referencia a las Normas COBOL:
Hay varias referencias a "COBOL 85" y estas son a menudo se distingue de"funciones intrínsecas".
El término oficial (pero muy oscura) que se debe utilizar es "modificadaTercer Estándar COBOL. "El" más clara "(y en mi humilde opinión mejor)término que debeutilizar es algo así como
- "'85 COBOL estándar con sus modificaciones"
En 1991 (en realidad 1993 de ISO en lugar de ANSI) no había tal cosa como"simplemente '85 estándar COBOL". La única norma reconocida fue la Documento"base" (X3.23-1985), junto con sus dos enmiendas- Funciones intrínseca Enmienda Módulo- Correcciones Enmienda
Un dato relacionado interesante es que el "Módulo de funciones intrínsecas"eraOPCIONAL en el ANSI e ISO COBOL pero fue necesario (en el Nivel ALTO) para laFIPS COBOL. Como las "pruebas de certificación" se orientaron a conseguircontratos con el gobierno de Estados Unidos, la mayoría de los vendedores(que se siguen haciendo certificación) funciones intrínsecas realidadtratadas no requieren opcional para la certificación de "alto nivel". (No seincluyeron en el Certificación FIPS intermedia del proceso).
Bottom-Line:
Aunque se añadieron algunas funciones intrínsecas en la Norma '02 (y másestán incluidos en el proyecto de revisión), no es correcto (en mi opinión)para distinguir entre el apoyo a la Norma '85 yapoyar las funciones intrínsecas.
PS La enmienda correcciones hizo algunas modificaciones técnicas, pero todasde ellos fueron incluidos en la Norma '02. Por lo tanto, es de esperar, loqueque no tendrá un impacto OpenCOBOL mucho.
Nota
Mientras OpenCOBOL se hace con un alto estándar de calidad y robustez, los
autores NO afirman que es un "Conforme estándar" la aplicación de COBOL.
Véase también ¿Cuál es la versión actual de OpenCOBOL? .
3.1.5 Macintosh
De Ganímedes en opencobol.org
HOWTO: Installling OpenCOBOL 1.0.0 (con BerkeleyDB) en Mac OS 10.5.x, 10.6.x
En Mac OS X 10.5.x/10.6.x, he arreglado para compilar e instalar OpenCOBOL1.0.0 (incluyendo libdb linking), y ahora estoy feliz compilar sistemas deproducción con el mismo. No es enteramente * * sencillo, ya que implicainstalación GMP a través de MacPorts - la * única manera * que GMP seinstalarácorrectamente debido a algunas excentricidades en las herramientasde desarrollo Xcode de Apple (en particular con relación a c99 en gcc), amenos que esté dispuesto a arreglar las cosas a mano.
Además, las versiones anteriores (BerkeleyDB los 4.xx los disponibles atravésMacPorts) causan algunos errores ioctl extraños en tiempo de ejecución en MacOS X Leopard y Snow Leopard cuando se trata ciertos tipos de organización seindexaoperaciones; precisamente lo que hace que las condiciones de este sinembargo, estoy totalmente a determinar.El resultado de esto es que con el fin de compilar y ejecutar un OpenCOBOLcompleta 1.0.0 instalación de Leopard y Snow Leopard, uno tiene que 1)instalación GMP a través de MacPorts, pero 2) compilar e instalar una versiónreciente de BerkeleyDB nativa.
Probablemente en algún momento, voy a empacar esto en una bonita-bonitaprecompilados. app. dmg junto con una interfaz de compilador Cacaorudimentaria.Hasta entonces, sin embargo - mi COBOL sobre compañeros de Mac! - Por favorhaga lo siguiente:
- Pasos de instalación (Probado en tanto 10.5.xy 10.6.x) -1) Descargar una distribución MacPorts apropiado para su sistema operativo:<http://distfiles.macports.org/MacPorts/>
Si desea utilizar el programa de instalación:
* Para 10.5.x: MacPorts-1.8.0-10.5-Leopard.dmg* Para 10.6.x: MacPorts-1.8.0-10.6-SnowLeopard.dmg
De origen, MacPorts-1.8.0.tar.gz se confirma que trabajar en ambas versiones.Nota: Asegúrese de que PATH está correctamente configurado por instalar en ~/ perfil del usuario activo..
2) Actualizar MacPorts: sudo port-d selfupdate3) Instale GMP con MacPorts: sudo port install gmp4) Descargar el Oracle Berkeley DB 5.0.21 (o posterior) fuente tar.gz.:<http://www.oracle.com/technology/products/berkeley-db/db/index.html>5) Untar, cd a la carpeta de origen de Berkeley DB, entonces:cd / build_unix6) Haga lo siguiente para configurar, realizar e instalar Berkeley DB:.. / Dist / configureHacer sudo make install7) Descargar y descomprimir OpenCOBOL 1.0.0, cd al directorio8) Ejecutar. / Configure, estableciendo CPPFLAGS y LDFLAGS como abajo(CAMBIAR CUALQUIER CAMINOS específica de la versión a lo que usted acaba deinstalar) como sigue:
. / ConfigureCPPFLAGS = "-I/opt/local/var/macports/software/gmp/5.0.1_0/opt/local/include/-I/usr/local/BerkeleyDB.5.0/include / "LDFLAGS = "-L/opt/local/var/macports/software/gmp/5.0.1_0/opt/local/lib-L/usr/local/BerkeleyDB.5.0/lib / "9) Haga e instale:Hacer sudo make install10) Et voila! Trate de salir del directorio y la invocación COBC.- A continuación, debería ser capaz de hacer algo como esto: -phrygia.ganymede-labs.com: Botellas ganymede $ sw_versProductName: Mac OS XProductVersion: 10.5.6BuildVersion: 9G55phrygia.ganymede-labs.com: Botellas ganymede $ COBC-VCOBC (OpenCOBOL) 1.0.0Copyright (C) 2001-2007 Keisuke NishidaCopyright (C) 2007 Roger Mientrasphrygia.ganymede-labs.com: Botellas ganymede $ COBC-v-x bottles.cblbottles.cbl pretratamiento en/ Var/folders/KI/KI15WC0KGMmvvO980RztgU + + + TI/-Tmp- / / cob75450_0.cobtraducir/ Var/folders/KI/KI15WC0KGMmvvO980RztgU + + + TI/-Tmp- / / cob75450_0.cob en/ Var/folders/KI/KI15WC0KGMmvvO980RztgU + + + TI/-Tmp- / / cob75450_0.c
3.2 ¿Cuáles son las opciones de configuración disponibles para
la construcción de OpenCOBOL?
configuración es una herramienta de desarrollo estándar de facto para POSIX sistemas
operativos compatibles, en especial GNU / Linux. Examina el entorno actual y crea un
Makefile adecuado para el equipo de destino y el paquete que se está construyendo.
Para OpenCOBOL, la configuración script acepta -ayuda como una opción de línea de
comandos para mostrar todas las opciones de configuración disponibles.
`Configure 'configura OpenCOBOL 1.1 para adaptarse a muchos tipos desistemas.Uso:. / Configure [OPTION] ... [VAR = VALUE] ...
Para asignar variables de entorno (por ejemplo, CC, CFLAGS ...), especifiquecomoVAR = VALOR. Véase más abajo para descripciones de algunas de las variablesútiles.
Los valores predeterminados para las opciones se especifican entreparéntesis.Configuración:-H, - help muestra esta ayuda y finaliza- Help = Opciones de visualización cortos específicos para este paquete- Help = display recursiva el corto ayuda de todos los paquetes incluidos-V, - version versión y finaliza--- Tranquila, - en silencio no se imprimen `control ... ' mensajes- Cache-file = ARCHIVO resultados de las pruebas de caché en el archivo[Disabled]-C, - alias config-cache para `- cache-file = config.cache-N, - no-create no crean archivos de salida- Srcdir = DIR encontrar las fuentes de DIR [configurar dir o '..']
Directorios de instalación:Archivos prefix = PREFIJO instalación independientes de la arquitectura enPREFIJO -[/ Usr / local]
- Exec-prefix = eprefix instalar los archivos dependientes de la arquitecturaen eprefix[PREFIJO]
Por defecto, `make install instalará todos los archivos`/ Usr / local / bin ',` / usr / local / lib', etc Usted puede especificar unprefijo de instalación que no sea `/ usr / local 'con` - prefix',por ejemplo `- prefix = $ HOME '.
Para un mejor control, utilice las opciones a continuación.
Puesta a punto de los directorios de instalación:- Bindir = DIR ejecutables usuario [eprefix / bin]- Sbindir = DIR ejecutables de administración del sistema [eprefix / sbin]- Libexecdir = ejecutables del programa DIR [eprefix / libexec]- Datadir = DIR de sólo lectura independiente de la arquitectura de datos[PREFIX / share]- Sysconfdir = DIR de sólo lectura de un solo dato de máquina [PREFIX / etc]- Sharedstatedir = DIR modificables independientes de la arquitectura dedatos [PREFIX / com]- Localstatedir = DIR modificable solo equipo de datos [PREFIX / var]- Libdir = DIR bibliotecas de código objeto [eprefix / lib]- Includedir = DIR C los archivos de cabecera [prefix / include]- Oldincludedir = DIR C los archivos de cabecera para no gcc [/ usr /include]- Infodir = Documentación info DIR [PREFIX / info]- Mandir = Documentación hombre DIR [PREFIX / hombre]
Nombres del programa:
- Programa-prefix = PREFIJO prepend prefijo a nombres de programas instalados- Programa-suffix = SUFIJO Añade SUFIJO a nombres de programas instalados- Programa-transform-name = PROGRAMA PROGRAMA sed se ejecutan en nombre delos programas instalados
Tipos de sistemas:
- Construir = CONSTRUIR configurar para la construcción de BUILD [supuso]- Host = HOST cross-compilar para crear programas que se ejecutan en el host[CREAR]
Características opcionales:
- Disable-REPORTAJE no incluyen FEATURE (igual que - enable-feature = no)- Enable-FEATURE [= ARG] include FEATURE [ARG = sí]- Enable-maintainer-mode permite establecer reglas y dependencias no es útil
(Ya veces confuso) al instalar casualmente- Velocidades desactivar la dependencia de seguimiento hasta un tiempo deconstrucción- Enable-dependency-tracking no rechaces extractores de dependencia lentos- Enable-experimental (OpenCOBOL) permiten al código experimental (sóloDesarrolladores!)- Enable-param-check (OpenCOBOL) permiten parámetro de llamada de cheques- Enable-shared [= PKGS]
- Enable-fast-install [= PKGS]optimizar para una rápida instalación [default = sí]
- Disable-libtool-lock Evita bloqueos (debe romper compilaciones paralelas)- Disable-rpath no codificar rutas de la biblioteca de tiempo de ejecución- Disable-nls no utilizan Native Language Support
Paquetes opcionales:
- With-PAQUETE [= ARG] uso PAQUETE [ARG = sí]- Without-PAQUETE no utilice PAQUETE (igual que - with-PAQUETE = no)- With-cc = <cc> (OpenCOBOL) especifica el compilador de C utilizado por COBC- With-SEQRA-extfh (OpenCOBOL) Utilice SEQ externa / RAN Filehandler- With-Cisam (OpenCOBOL) Utilice CISAM de ISAM I / O- With-DISAM (OpenCOBOL) Utilice DISAM de ISAM I / O- With-vbisam (OpenCOBOL) Utilice VBISAM de ISAM I / O- With-index-extfh (OpenCOBOL) Use el administrador de archivos ISAM externa- With-DB1 (OpenCOBOL) utiliza Berkeley DB 1.85 (libdb-1.85)- With-db (OpenCOBOL) utiliza Berkeley DB 3.0 o posterior (libdb)(predeterminado)- With-lfs64 (OpenCOBOL) usar el sistema de archivos de gran tamaño para elarchivo de E / S (por defecto)- With-dl (OpenCOBOL) Sistema dinámico uso de cámara (por defecto)- With-patch-nivel (OpenCOBOL) definir un nivel del programa (por defecto 0)- With-VARSE (OpenCOBOL) definen formato secuencial variables (por defecto 0)- With-gnu-ld asumir el compilador de C de GNU usa ld [default = no]- With-pic tratar de usar sólo PIC / no-PIC objetos [default = uso ambos ]- Con las etiquetas [= TAGS] incluir configuraciones adicionales [automática]- With-gnu-ld asumir el compilador de C de GNU usa ld default = no- With-libiconv-prefix [= DIR] buscar libiconv en DIR / include y DIR / lib- Without-libiconv-prefix no buscar libiconv en includedir y libdir- With-libintl-prefix [= DIR] buscar libintl en DIR / include y DIR / lib- Without-libintl-prefix no buscar libintl en includedir y libdir
Algunas variables de entorno influyentes:
CC comando compilador de C
CFLAGS C opciones del compilador
LDFLAGS enlazador, dir> <lib por ejemplo-L si tiene bibliotecas en un noestándar directorio <lib dir>
CPPFLAGS C / C + + banderas preprocesador, por ejemplo-I <include dir> sitiene encabezados en un directorio no estándar <include dir>
CPP C preprocesadorCXXCPP C + preprocesador +
Utilice estas variables para anular las decisiones tomadas por 'configure' opara ayudar a para encontrar las bibliotecas y los programas con nombres /localizaciones no estándar.
/* ---------------------------------------------- */ /* Generated by cobc 1.1.0 */
/* Generated from hello.cob */ /* Generated at Oct 04 2008 00:19:36 EDT */ /* OpenCOBOL build date Oct 01 2008 22:15:19 */ /* OpenCOBOL package date Oct 01 2008 16:31:26 CEST */ /* Compile command cobc -C hello.cob */
Compilar y ensamblar, no enlace. Produce hello.o .
3.4.10 Build módulos
$ COBC-m hello.cob
Generar dinámicamente módulos cargables. El es el comportamiento
predeterminado . Este ejemplo produce hello.so o hello.dll .
$ COBC-b hello.cob
hará lo mismo, pero en este caso, el Build extendida es el mismo que el single Módulo
construir con m- . -b construirá un módulo de carga dinámica que incluye todos los
puntos de entrada creados a partir de varias entradas de línea de comandos. Es
divertido, se puede mezclar la mazorca, c, y d libs y OpenCOBOL hace lo correcto
pegado todo junto... -b Build es adecuado para la programación en el Grande y el
uso cobcrun .
3.4.11 plazo Módulo
$ cobcrun holaHello World!
Escaneará el DSO hello.so, y luego enlace, carga y ejecución hola.
3.4.12 Crear ejecutable
$ COBC-x hello.cob
Crear un programa ejecutable. Este ejemplo produce hola o hello.exe .
Esto es importante . COBC produce un Dynamic Shared Object por defecto. Para crear
ejecutables , debe utilizar -x .
$ . / holaHello World!
OpenCOBOL también admite funciones de múltiples fuentes, la programación en
varios idiomas, que se detalla en el FAQ en módulos de soporte OpenCOBOL hace? .
3.4.13 tamaños para saludar en Fedora 16
El directorio después de usar las diferentes opciones COBC:
-Rwxrwxr-x. 1 btiffin btiffin 22 de abril 9730 doce y veinticinco hola-Rw-rw-r -. 1 btiffin btiffin 22 de abril 2253 doce y veintiséis hello.c-Rw-rw-r -. 1 btiffin btiffin 835 22 de abril doce y veintiséis hello.ch-Rw-rw-r -. 1 btiffin btiffin 391 22 de abril doce y veintiséis hello.clh
-Rw-rw-r -. 1 btiffin btiffin 181 22 de abril doce y veinticuatro hello.cob-Rw-rw-r -. 1 btiffin btiffin 22 de abril 3288 doce y veinticuatro hello.o-Rw-rw-r -. 1 btiffin btiffin 22 de abril 2577 doce y veintiséis hello.s-Rwxrwxr-x. 1 btiffin btiffin 22 de abril 9334 doce y veintisiete hello.so
3.5 ¿Qué es COBC?
COBC es el compilador OpenCOBOL. Que los procesos de código fuente en objeto,
biblioteca o código ejecutable.
Ver ¿Qué opciones de compilación son compatibles? para más información.
3.6 ¿Qué es cobcrun?
cobcrun
es el programa del controlador OpenCOBOL que permite la ejecución de
programas almacenados en módulos OpenCOBOL.
El COBC compilador, por defecto, produce módulos (el -m opción). Estos módulos son
objetos compartidos dinámicos vinculables (DSO). Con GNU / Linux, por ejemplo,
$ COBC-x hello.cob$ . / hola
Hello World!$ COBC hello.cob$ cobcrun hola
Hello World!
El COBC-x hello.cob construyó un binario ejecutable llamado hola. El COBC
hello.cob produjo un DSO hello.so y cobcrun resuelve el punto de entrada y ejecuta el
código, desde el DSO .
cobcrun es la forma preferida el compilador del autor para gestionar el desarrollo
OpenCOBOL. Alivia saber que fuente de archivo de las necesidades -x fomentando al
mismo tiempo la programación modular adecuada, un pilar de OpenCOBOL.
3.7 ¿Qué es cob-config?
cob-config es un programa que se puede utilizar para encontrar los parámetros del
compilador C y las bibliotecas necesarias para compilar. Con GNU / Linux, por
Puede que tenga que utilizar estas funciones durante el desarrollo del idioma de
origen mixto, por lo general mediante back-marcando la línea de salida de comando
con otros gcc comandos.
3.8 Son compatibles Opciones Lo que compilador?
El sistema OpenCOBOL se esfuerza por seguir las normas, pero también sigue siendo
una opción viable para el compilador de los muchos miles de millones de líneas
existentes de fuentes de COBOL, apoyando muchas extensiones existentes para el
lenguaje COBOL. Muchos detalles de la compilación se pueden controlar con las
opciones de línea de comandos. Por favor vea también ¿Cuáles son los archivos de
configuración en tiempo de compilación OpenCOBOL?para obtener más detalles sobre
este control afinado.
$ COBC-VCOBC (OpenCOBOL) 1.1.0Copyright (C) 2001-2008 Keisuke Nishida / Roger MientrasConstruido 29 de octubre 2008 16:32:02Empaquetado 28 de octubre 2008 19:05:45 CET
$ COBC - helpUso: COBC [opciones] fichero ...
Opciones:- Help Muestra este mensaje- Version,-V Muestra la versión del compilador-V Muestra los programas invocados por el compilador-X Construir un programa ejecutable-M Construir un módulo de carga dinámica (por defecto)-Std = <dialect> Compilar un dialecto específico:
cobol2002 Cobol 2002cobol85 Cobol 85ibm IBM CompatibleMVS MVS CompatibleBS2000 BS2000 Compatiblemf Micro Focus Compatiblepor defecto cuando no se especifica
Ver config / default.conf y config / *. ConfLibre uso formato de código libreFijo Formato de fuente fija uso (por defecto)-O,-O2,-Os Habilitar optimización-G Producir información de depuración en la salida-Debug Habilitar todas comprobación de errores en tiempo de ejecución-O <archivo> Coloca el resultado en <archivo>-B Combine todos los archivos de entrada en una sola
módulo de carga dinámica-E preproceso solamente; no compilar, ensamblar o unirSólo-C Traducción; convertir COBOL a C-S sólo Compile; archivo de ensamblado de salida-C Compilar y ensamblar, pero no vincular-T <archivo> Generar y coloque un listado de programas en <archivo>-Yo <directorio> Añadir <directorio> copiar / include ruta de búsqueda-L <directorio> Añadir <directorio> a la ruta de búsqueda de bibliotecas-L <lib> Enlace <lib> la biblioteca-D <define> Pass <define> para el compilador de C-Conf = <archivo> usuario de configuración dialecto definido - Ver-std =- List-reservada Mostrar palabras reservadas- List-intrínsecos Mostrar funciones intrínsecas- List-mnemotécnicos Mostrar nombres mnemotécnicos-Save-temps (= <dir>) Guardar archivos intermedios (directorio actual pordefecto)
-MT archivo de destino Set <destino> utilizado en lista de dependencia-MF <archivo> Coloca lista de dependencias en <archivo>Extensión de archivo por defecto-ext <extensión> Añadir
-W Habilitar todas las advertencias-Wall Habilitar todas las advertencias con las siguientes excepciones-Wobsolete Warn si se utilizan características obsoletos-Warchaic Advertir si se utilizan rasgos arcaicos-Wredefinition Warn redefinición incompatible de elementos de datos-Wconstant Advertir constante inconsistentes-Wparentheses Advierten falta de paréntesis y dentro de O-Wstrict tipificación Avisar de coincidencia de tipos estricta-Wimplicit a definir Advertir elementos de datos definidos implícitamente-Wcall-params Warn no 01/77, artículos para params LLAMADAS (no establecido
con-Wall)
-Wcolumn-overflow Warn texto después de la columna 72, formato fijo (noajustado
con-Wall)-Wterminator Warn falta de alcance terminador END-XXX (no ajustado con-
Wall)-Advierta Wtruncate posible truncamiento campo (no ajustado con-Wall)-Wlinkage Warn colgando artículos ENLACE (NO engastado con-Wall)-Wunreachable Warn inalcanzables (no ajustado con-Wall)
-Ftrace Generar código trace (SECCIÓN / PÁRRAFO Ejecutado)-Ftraceall Generar código trace (CUENTAS SECCIÓN / PUNTO / Ejecutados)-Fsyntax de sólo error de sintaxis chequeando solo; no emiten ninguna
salida
-Fdebugging línea líneas Activar depuración ('D' en la columna deindicador)
-Fsource-location Generar código de ubicación de origen (activado por-debugo-
g)-Fimplicit-init hacer la inicialización automática del sistema de ejecuciónCobol
-FIniciar-ascii display numérico signo ASCII (ASCII por defecto en lasmáquinas)
-FIniciar-ebcdic numérico despliegue de señal EBCDIC (por defecto en lasmáquinas EBCDIC)
-Fstack a verificar realizar la comprobación de la pila (activado por-debugo-
g)-Ffold-copia-copia inferior Fold sujetos a minúsculas (predeterminado sintransformación)
COPIA plegable ffold-copy-superior sujeto a mayúsculas (por defecto sintransformación)
-Fnotrunc No trunca campos binarios según IMAGEN-Ffunctions-todos permiten el uso de las funciones intrínsecas y sin
palabraclave function
-Fmfcomment '*' o '/' en la columna 1 tratada como comentario (sólo fijo)-FNull-param Pass NULL adicional terminar punteros en sentencias CALL
3.9 ¿Qué dialectos son compatibles con OpenCOBOL?
Usando el std = <dialect> opción de compilador, OpenCOBOL se puede configurar
para compilar usando características del compilador COBOL históricas específicas y
peculiaridades.
Dialectos soportados incluyen:
defecto
cobol85
cobol2002
ibm
mvs
mf
BS2000
Para obtener detalles sobre qué opciones e interruptores se utilizan para apoyar estas
dialecto compila, vea el config / de la instalación de OpenCOBOL. En Debian GNU /
Linux, que será si utiliza APT para instalar un
paquete OpenCOBOL o / usr / local / share / open-cobol / config / después de una
# Si es así, los nombres de archivo se resuelven en tiempo de ejecuciónmediante variables de entorno.# Por ejemplo, dada ASSIGN TO "DATAFILE", el nombre del archivo será# 1. el valor de la variable de entorno `DD_DATAFILE" o# 2. el valor de la variable de entorno `dd_DATAFILE" o# 3. el valor de la variable de entorno `DATAFILE" o# 4. el "DATAFILE" literal# Si no, el valor de la cláusula de asignación es el nombre del archivo.## Valor: `sí ',' no 'nombre del archivo de mapas: sí
# Valor: `sí ',' no 'pretty-display: sí
# Valor: `sí ',' no 'auto-inicialización: sí
# Valor: `sí ',' no 'compleja-odo: no
# Valor: `sí ',' no 'indirecta-redefine: no
# Valor: bytes sin signo firmados# -------------------# `2-4-8 'febrero 1 a 4# 5 a 9 abril# 10 hasta 18 agosto## `1-2-4-8" en 1 a 2# 3 a 4 febrero# 5 a 9 abril# 10 hasta 18 agosto## `1-8 '1 - 2 en hasta 2 en# 3 - 4 marzo hasta 4 febrero# 5 - 5 jun-3 jul# 7 - 9 agosto-9 abril# 10 - noviembre 10 a diciembre 5# 12 - 14 junio 13 a 14# 15 - 16 julio 15 a 16# 17 - 18 17 hasta 18 agostobinary-size: 1-2-4-8
# Realice OSVS tipo - En caso afirmativo, el punto de cualquier salida que seejecuta actualmente realizan# Se reconocerá si llega.# Valor: `sí ',' no 'realizar-OSVs: no
# En caso afirmativo, de sección vinculación artículos no se mantienen losparámetros asignados# Entre invocaciones.# Valor: `sí ',' no 'sticky-vinculación: no
# Si sí, permitir números de niveles no coincidentes# Valor: `sí ',' no 'relajarse nivel jerarquía: no
# No-reservado:# Valor: Palabra para ser sacado de la lista de palabras reservadas# (Caso independiente)
# Características dialectales# Valor: `ok ',' arcaico ',' obsoleto ',' salto ',' ignorar ',` discordante'autor-párrafo: obsoletomemoria de tamaño cláusula: obsoletomúltiples archivos en cinta cláusula: obsoletoetiqueta-records-Cláusula: obsoletovalor de la cláusula: obsoletode datos los registros de la cláusula: obsoletonivel superior se produce la cláusula: skipsincronizado cláusula: okgoto-comunicado-sin-nombre: obsoletostop-literal-declaración: obsoletodepuración-line: obsoletopadding-personaje-Cláusula: obsoletoúltima frase Frase: arcaicaexpulsar-declaración: skipentrada declaración: obsoletomovimiento no entero a alfanumérico: errorodo-sin-to: ok
Y ahora, para compilar un pequeño programa llamado program.cob , sólo tiene que
utilizar
$ hacer programa # para ejecutables$ hacer program.o # de los ficheros objeto$ hacer program.so # para la biblioteca compartida$ hacer program.q # crear un archivo ejecutable y llame vi en modoquickfix
La última regla, occurlrefresh es un ejemplo de cómo se puede apoyar un proyecto de
varias partes. Simplemente escriba
$ hacen occurlrefresh
y hacer que se compruebe las marcas de tiempo para occurl.c, occurlsym.cpy y
occurlrefresh.cbl y luego construir el ejecutable si alguno de esos archivos han
cambiado en comparación con marca de tiempo del binario.
Ver Tectónica de otra palabra para describir el código de construcción.
3.13 ¿Tiene una razonable esqueleto del código fuente para
OpenCOBOL?
Puede ser. El estilo es una elección muy personal desarrollador. OpenCOBOL rinde
homenaje a esta libertad de elección.
Este es el encabezado de formato fijo que este autor utiliza. Incluye ocdoc líneas.
asumiendo PDFer es una clase o una impresora con un miembro del PDF. Una versión
PDF del texto en cupscob.cob será colocado en ~ / PDF / comocupscob.pdf .
Mientras Roger añadió esta sabiduría:
Comprueba si tu distro en particular tiene cups-pdf ensu repositorio. (Por ejemplo, mediante YaST con Suse).En caso afirmativo, la instalación desde allí.Si no, utilice uno de los RPM buscadores en la web para encontraruna versión para su distribución.por ejemplo. www.rpmfind.com
La instalación de cups-pdf debe establecer automáticamenteuna impresora ficticia con el nombre "cups-pdf".Así que en realidad no necesita definir una clase.Puede imprimir directamente en "cups-pdf".(Marque impresoras definidas con, por ejemplo. "Lpstat-t")
La ubicación del archivo de salida depende de la tazas-pdfarchivo de configuración normalmente ubicado en / etc / cups / cups-pdf.conf.Así, por ejemplo. en mi caja se define la ubicación tanto -Salida $ {HOME} / Documents / PDFs
El código con un poco más de documentación, en caso de que resulta ser útil.
llamada "cupsPrintFile" *> requiere-lcups
utilizando"cups-pdf" y x "00" *> clase de impresoras"cupscob.cob" y x "00" *> nombre del archivo de entrada"cupscob.pdf" y x "00" *> títulopor el valor 0 *> num_optionsde referencia NULL *> Opciones struct <*
regresar resultadode excepción
pantalla "pista:-lcups uso para cupsPrintFile" final visualizaciónde colgar
Prtcbl de 3.15.5 Jim Currey
Jim amablemente donó este fragmento. Uno de sus primeros esfuerzos por establecer
una base de recursos OpenCOBOL. prtcbl produce listado de código fuente con
resultados entubados a una impresora.
Algunas personalizaciones . Esta versión requiere un cambio en el nombre del archivo
de control de la impresora, la ubicación de cuadernos, y los posibles cambios en la
línea de comandos lp sistema.
Stash una cadena de configuración de impresión en el archivo llamado así. El
programa solicita la entrada, la salida y la impresora.
Jim señaló que se trataba de los primeros intentos con OpenCOBOL como una
herramienta para apoyar mejor en el desarrollo de la casa, y tuvo la gentileza de
dejarme volver a imprimirla.
OCOBOL IDENTIFICACIÓN DE DIVISION .PROGRAMA-ID . PRTCBL .
* AUTOR. JC CURREY.*********************************************** ************** Imprime una COBOL ARCHIVO FUENTE DE TI CON LOS LIBROS DE COPIADO **** VERSION VERSION 001--ORIGINAL ** 3/26/2009--JC CURREY **** 002 - -Añade CPY (CAPS) SI NO SE ENCUENTRA cpy *..* FILE Y AMPLÍA LOS MEDIOS A 132 CARACTERES ** 4/09/2009--JC CURREY **** 003 - Agrega NOLIST Y LISTA DE APOYO (NOTA * NO* APOYADO POR OPENCOBOL COMPILADOR) **** NOLIST EN COL 7-14 APAGA LISTADO **** LISTA EN COL 7-12 VUELTAS EN LA LISTA ** 4/22/2009--JC CURREY ***
004 * - ADDS APOYO A / testing-set-1/copybooks ** cuadernos están buscado primero en el ** directorio local y si no se encuentra, entonces, en ** / * testing-set-1/copybooks* 5/7/2009--JC CURREY **** 005--CORRECTS FALTA EDICIÓN ON LINE saltos de página ** EN LA COPIA DEL ARCHIVO DE IMPRESIÓN SECCIÓN. *1285451 * - * SANDY DOSS* 06/19/2009--JEREMY MONTOYA ***006 * - USOS EXTERNOS PCL CÓDIGO archivo para insertar * PCL* CÓDIGO EN ARCHIVO PARA IMPRIMIR FORMATO. *1330505 * - * JIM CURREY * 12/14/2009--PETE MCTHOMPSON
X (140) .01 PRINT-LINE .
05 O-LINE-NUMERO PIC Z (6) .05 O-FILLER-1 PIC XX .05 O-TEXT PIC X (132) .
121 409 *121 409 FD del archivo de formato .121409 01 FORMATO-RECORD PIC X (140) .
*FD archivo de entrada .01 ENTRADA-REGISTRO .
05 IR-INTERMEDIARIO PIC X (132) .
FD COPIA DE ARCHIVOS .01 COPIA-RECORD .
05 CR-INTERMEDIARIO PIC X (132) .** NOLIST * ESTA ES OTRA LÍNEA** LISTA*TRABAJO-STORAGE SECCIÓN .
************* **************************************** constantes, CONTADORES Y ÁREAS DE TRABAJO **** *************************************************01 WS-NOMBRE-PROGRAMA PIC X (12) VALOR
LOS ESPACIOS .01 WS-NOMBRE-DE ENTRADA DE ARCHIVOS PIC X (64)
VALOR DE ESPACIOS .01 WS-ENTRADA- ARCHIVO-ESTADO PIC XX VALOR "00" .
050 709 01 WS-NOMBRE-COPIA DE ARCHIVOS PIC X (128)VALOR DE LOS ESPACIOS .050 709 01 WS-HOLD-NOMBRE-COPIA DE ARCHIVOS PIC X (128)VALOR DE LOS ESPACIOS .121 409 01 WS- NOMBRE DEL FORMATO DE ARCHIVOS PIC X (128)VALOR ESPACIOS .
01 WS-COPIA DE ARCHIVOS-STATUS PIC XX VALOR "00" .01 WS-LINE-printer-name PIC X (16) VALOR ESPACIOS
.01 WS-LINE-NUMERO PIC S9 (6) COMP
VALOR CERO .01 WS-PAGE-LINE-CONTADOR PIC S9 (4) COMP
VALOR 999 .01 WS-page-number PIC S9 (4) COMP
VALOR CERO .01 WS-PRINT-COMANDO PIC X ( 128) .
*01 WS-ESCAPE-CARÁCTER PIC X VALOR X "1B" .
*01 WS-RUMBO-LINE PIC X (132) .01 WS-CURRENT-FECHA PIC X (21) .01 WS-ED4S PIC ZZZZ- .
042 209 01 WS-SWITCH-PRINT PIC X VALOR DEL ESPACIO.
" , WS-NOMBRE-DEL PROGRAMA , "COMENZAR AT -"FUNCION ACTUAL-DATE .
1002 - GET-archivo de entrada .DISPLAY "A) ENTRAR NOMBRE DE ENTRADA DE ARCHIVOS
ENTRADA Archivo no encontrado "IR AL 1002 - GET-archivo de entrada .
DISPLAY "A) ENTER IMPRESIÓN DE ARCHIVOS (TRABAJO FILE) NOMBRE"CON NO AVANZAR .
ACEPTAR WS-NOMBRE-PRINT-Archivo .DISPLAY "A) Entrar Nombre de la impresora
DETALLE DE LA SECCIÓN
COPIAR
DECLARACIÓN WITH.COPY
DISPLAY "D) AT.COPY NOMBRE DE ARCHIVO ABIERTO = \", WS-NOMBRE-COPIA DE ARCHIVOS,
DISPLAY "D) AT.COPY NOMBRE DE ARCHIVO ABIERTO = \", WS-NOMBRE-COPIA DE ARCHIVOS ", \"050 709 OPEN DE ENTRADA COPIA DE ARCHIVOS050,709 SI WS-COPIA-ARCHIVO-ESTADO ES NO IGUAL QUE "00"050 709 MOVIMIENTO " *** COPIAR ARCHIVO ANTERIOR NO
MOVER WS-LINE-NÚMERO DE O-LINE-número.061909 * ESPACIOS traslade a, o-FILLER-1.061909 * MOVIMIENTO COPIA-RECORD DE
En el último ejemplo, tanto el OC y ANSI85 pruebas se han ajustadopara hacer frente a la falta de funcionalidad ISAM.
Para configurar el entorno actual para compilar / ejecutar desde cualquierade los anteriores(Es decir, sin hacer un "make install" desde cualquier directorio), luegoya sea "fuente" o ejecutar como parte del entorno actual(Con.) Los siguientes archivos desde el directorio de construcción -pruebas / atconfigpruebas / atlocal
(Tenga en ese orden)
Así, por ejemplo.. / Home/oc20110710vbisam/tests/atconfig. / Home/oc20110710vbisam/tests/atlocal
fijará compilador / runtime a este entorno en el shell actual.
Tenga en cuenta que tanto las pruebas de OC y las pruebas ANSI85 hacer estointernamente(Bastante obvio lo contrario no estaríamos probando lo correcto).
Por supuesto, desde cualquiera de los directorios del ejemplo anterior sepuede hacerun final "make install".
3.19.3 Opciones Autotest
Al desarrollar el sistema OpenCOBOL en torno a las herramientas GNU build, los
desarrolladores reciben un gran número de opciones de forma gratuita .
make check can include TESTSUITEFLAGS.
Los TESTSUITEFLAGS permite opciones que incluyen:
make check TESTSUITEFLAGS = "lista" a la lista de las pruebas y las
descripciones disponibles
"-Verbose" para mostrar un poco más de información durante las pruebas
"-Jobs = n" para ejecutar las pruebas n en paralelo. En los sistemas de núcleo
múltiple, la velocidad de seguimiento es bastante dramática. En 425 pruebas,
normalmente 1 minuto 22 segundos,-jobs = 4 corrió en 36 segundos (en un
pequeño poco AMD Athlon (tm) II X2 215 Processor). Los más núcleos, el más
dramático de la mejora.
4 Palabras reservadas
.. Palabras sidebar :: COBOL reservados
4.1 ¿Cuáles son las palabras reservadas OpenCOBOL?
Una de las clases de datos OpenCOBOL ( categoría de pruebas).
SI variables ES ALPHABETICDISPLAY "alfabética" END-DISPLAY
END-IF
4.1.13 ALFABÉTICO-BAJA
Una de las clases de datos OpenCOBOL ( categoría de pruebas).
SI variables ES ALFABÉTICO-BAJADISPLAY "alfabética-inferior" END-DISPLAY
END-IF
4.1.14 ALFABÉTICO-SUPERIOR
Una de las clases de datos OpenCOBOL ( categoría de pruebas).
DISPLAY variables "alfabética-superior
4.1.15 ALFANUMÉRICO
INICIALIZAR registro de datos- SUSTITUCIÓN ALFANUMÉRICO POR literal-valor
4.1.16 ALFANUMÉRICO editado
INICIALIZAR datos a grabarSUSTITUCIÓN ALFANUMÉRICO-EDITADO POR identificador-1
4.1.17 TAMBIÉN
Una característica de gran alcance, condicional múltiple expresión de EVALUAR .
EVALUATE variable ALSO second-testWHEN "A" ALSO 1 THRU 5 PERFORM first-caseWHEN "A" ALSO 6 PERFORM second-caseWHEN "A" ALSO 7 THRU 9 PERFORM third-caseWHEN OTHER PERFORM invalid-case
El nombre de archivo real utilizado depende de un ajuste de configuración. En la
configuración por defecto, nombre de archivo de mapeo se establece en sí .
Ver ¿Qué son los archivos de configuración en tiempo de compilación
OpenCOBOL? para obtener más información.
# Si es así, los nombres de archivo se resuelven en tiempo de ejecuciónutilizando# Variables de entorno.# Por ejemplo, dada ASSIGN TO "DATAFILE", el actual# Nombre del archivo será# 1. el valor de la variable de entorno 'DD_DATAFILE "o# 2. el valor de la variable de entorno 'dd_DATAFILE "o# 3. el valor de la variable de entorno 'DATAFILE "o# 4. el "DATAFILE" literal# Si no, el valor de la cláusula de asignación es el nombre del archivo.## Valor: 'sí', 'no'nombre del archivo de mapas: sí
Todavía no se ha implementado BIT operación sobre el terreno. Ver ¿Qué STOCK Call
Library sí ofrece OpenCOBOL? CBL_OR de alternativas que permitan operaciones bit a
bit.
Por ejemplo:
OCOBOL >> FUENTE FORMATO SE FIJA*> ***************************************** ***********************> Autor: Brian Tiffin*> Fecha: 20110626*> Objetivo: Demostrar alternativa para B-OR*> Tectónica: COBC-x pedacitos*>
datos de la división .WORKING-STORAGE sección .01 s1 pic 999 Uso comp-5 .01 t2 pic 999 Uso comp-5 .01 len pic 9 .01 resultado uso binaria de longitud .
*>
*> CBL_OR toma el valor de origen, destino y duración de 2 ó 4 6.
GoBack .finales del programa los bits .
dar:
$ COBC-x bits.cob$. / Bits002 006 1 0000000000
Para una solución de código fuente COBOL para operaciones de bits, Paul Chandler
tuvo la gentileza de publicar BITWISE.cbl y una lista completa se incluye a nivel de
pantalla "REC-TEST no se asignó antes 'ALLOCATE REC-TESTpantalla "REC-TEST asignaron de nuevo, lleno de '
REC-TEST ( 1 : 9 )de extremo pantalla
MÁSdisplay 'REC-TEST se asignó antes "
END-IFaceptar mychar
**
GRATIS DIRECCIÓN DE REC-TESTdisplay 'REC-TEST
Fin de MEMALL programa ---------------------------------------
01/04/44 BIP
Toca el timbre del terminal durante DISPLAY salida. Alias para CAMPANA
DISPLAY "beeeeep" LINEA 3 COLUMNA 1 CON TONO FIN-DISPLAY .
4.1.45 ANTES
Establece un REALIZAR bucle para probar la condición antes de ejecutar el cuerpo del
bucle. Ver DESPUÉS de la alternativa. ANTES es el valor predeterminado.
MOVE 1 TO counterPERFORM WITH TEST BEFORE
UNTIL counter IS GREATER THAN OR EQUAL TO limiterCALL "subprogram" USING counter RETURNING result END-CALL MOVE result TO answers(counter)ADD 1 TO counter END-ADD
Una cláusula que causa EXIT realizar para volver a la parte superior de un
bucle. Consulte SIEMPRE para un ejemplo.
4.1.120 DATOS
Una mágica DIVISION . Una de las principales fuerzas de COBOL es las reglas que
rodean la DIVISION DE DATOS y definiciones de registros pictóricos.
4.1.121 DATOS PUNTERO
Una característica COBOL objeto aún no admitida.
4.1.122 FECHA
Un ACEPTAR fuente. 6 y 8 dígitos fechas gregorianas dígitos.
1. ACEPTAR ident-1 DE FECHA
2. ACEPTAR ident-2 DE FECHA AAAAMMDD
Identificación de la división .programa-id . fechas .
datos de la división .WORKING-STORAGE sección .01 de fecha 2 de
03 Fecha-yy pic 9 (2) .03 de fecha mm pic 9 (2) .03 de fecha dd pic 9 (2) .
01 de fecha 3 de03 Fecha-aaaa pic 9 (4) .03 de fecha mm pic 9 (2) .03 de fecha dd pic 9 (2) .
procedimiento de división .aceptar fecha-segunda de la fecha final de aceptar
*> Justo antes del 3er milenio, los programadores admitidos <**> que 2 años de almacenamiento de dígitos era una mala idea y ambigua <*aceptar fecha-tercera de fecha AAAAMMDD final aceptan
mostrar fecha y segundo espacio fecha-tercera final display
Un ACEPTAR fuente. Acceda a la fecha actual en formato juliano. Devoluciones
formatos yyddd y AAAADDD.
1. ACEPTAR ident-1 DEL DÍA
2. ACEPTAR ident-2 DEL DÍA AAAADDD
OCOBOL >> FUENTE FORMATO SE FIJA*> ***************************************** ***********************> Autor: Brian Tiffin*> Date: 2011182 (01 de julio)*> Finalidad: Aceptar a partir del día en forma Julian*> Tectónica : COBC-x days.cob*>
datos de la división .WORKING-STORAGE sección .01 julian-segundo .
EVALUATE a ALSO b ALSO TRUEWHEN 1 ALSO 1 THRU 9 ALSO c EQUAL 1 PERFORM all-lifeWHEN 2 ALSO 1 THRU 9 ALSO c EQUAL 2 PERFORM lifeWHEN 3 THRU 9 ALSO 1 ALSO c EQUAL 9 PERFORM disabilityWHEN OTHER PERFORM invalid
END-EVALUATE
4.1.190 EXCEPCIÓN
Permitir la detección del problema CALL.
LLAME "CBL_OC_DUMP" EN EXCEPCIÓN CONTINUE END-CALL
4.1.191 EXCEPCIÓN-OBJETO
UNSUPPORT objeto COBOL referencia del elemento de datos.
4.1.192 EXCLUSIVO
Control de modo de bloqueo de archivos.
4.1.193 EXIT
OpenCOBOL apoya
SALIR
SALIR DEL PROGRAMA
SALIR EJECUTAR [ CICLO ]
SALIR SECCIÓN
SALIR DEL PÁRRAFO
Controles de flujo del programa. SALIR REALIZAR EL CICLO provoca un inline realizar
para devolver el control a la VARYING , HASTA o TIMES cláusula, probando el
En primer lugar. Una característica Report Writer reconocido pero en la actualidad no
es compatible.
4.1.206 FLOAT-EXTENDIDO
OpenCOBOL reconoce pero todavía no soporta FLOAT extendida y se termine
anormalmente una compilación.
4.1.207 FLOAT-LONG
OpenCOBOL apoya de punto flotante de largo.
Identificación de la división .programa-id . treses .
datos de la división .WORKING-STORAGE sección .01 fshort utilización de flotación corto .01 Flong utilización de flotación larga .01 fpic pic 9V9 (35) .
procedimiento de división .compute fshort = 1 / 3 final calcularpantalla "tan corto" fshort final displaycompute Flong = 1 / 3 final calcularpantalla "siempre" Flong final displaycompute fpic = 1 / 6 de extremo calcularpantalla " como pic " fpic final displaycompute fpic redondeado = 1 / 6 de extremo calcularmostrará "" redondeada fpic final displayGoBack .
fin del programa triples .
muestra:
$. / Tripleslo más corto ,333333343267440796siempre ,333333333333333315como pic 0,16666666666666666666666666666666666redondeada 0,16666666666666666666666666666666667
select optional indexingassign to "indexing.dat"organization is indexedaccess mode is dynamicrecord key is keyfield of indexing-recordalternate record key is splitkey of indexing-record
with duplicates.
Establece un identificador de control de indexación para OCCURS matrices de datos.
01 TABLA-DATA .05 TABLA-ELEMENTOS
QUE OCURRA 1 DE 100 VECES EN FUNCIÓN DE multitud de tamañoINDEXADO POR cursor-var .
10 campo 1 PIC X .
4.1.242 INDIQUE
GRUPO indican es un INFORME SECCIÓN aún no soportado RD cláusula que especifica
que el tema de impresión es ouput sólo en la primera aparición de su grupo de
informes para que iniciar, controlar descanso o página antelación.
4.1.243 INHERITS
Una cláusula de COBOL objeto no admitido.
4.1.244 INICIAL
Un modificador para el PROGRAMA-ID cláusula, que hace que toda la división de
datos para ser ajustado a un estado inicial cada vez que el subprograma es ejecutado
ocobol >> FUENTE FORMATO SE FIJA*> ***************************************** ***********************> Autor: Brian Tiffin*> Fecha: 20111226*> Finalidad: Pequeña muestra de la cláusula PRIMERA división
procedimiento de división .pantalla "Inside sin-inicial con:" el valor final de la pantallamultiplicar el valor por 2 da el valor
de tamaño del errorde visualización "tamaño de desbordamiento " extremo pantalla
final multiplicanGoBack .finales programa sin-inicial .
Da:
[Btiffin @ home cobol] $. / InitialclauseInterior con-inicial: 42En el interior, sin inicial: 42Interior con-inicial: 42En el interior, sin inicial: 84tamaño de desbordamientoEn el interior, sin inicial: 84tamaño de desbordamiento
Conjuntos INICIALES el valor a 42 para todos y cada entrada, sin-inicial se multiplica
por 42, 84, 168 (o tendría).
4.1.245 INITIALIZE
Una muestra del verbo INITIALIZE envió a opencobol.org por humanos
x .77 mynumeric pic 9 .01 REC-TEST BASA .
03 REC-TEST-PART1 PIC X (10) valor de todas '9 ' .03 REC-TEST-PART2 PIC X (10) valor de todas las "A" .
01 fillertest .03 fillertest-1 PIC 9 (10) valor 2222222222 .03 relleno PIC X valor '|' .03 -2 fillertest PIC X (10) valor de todas las "A" .03 relleno PIC 9 (03) valor 111 .03 relleno PIC
final displaydisplay fillertestfinal displayaceptar mychar
*initialize fillertestdisplay 'fillertest'
"después de
''después de inicializar la sustitución numérica por
''después de inicializar la sustitución alfanuméricos
''después de inicializar la sustitución alfanumérica por
todos
''después de inicializar con
''después de inicializar todos a valorar:'
final displaydisplay fillertestfinal displayaceptar mychar
*ALLOCATE REC-TESTpantalla "REC-TEST después
después initalize todos
Fin del programa INITTEST -------------------------------------
Salidas:
fillertest de inicio:2222222222 | AAAAAAAAAA111.fillertest después de inicializar:0000000000 | 111.fillertest después de inicializar la sustitución numérica de 9:0000000009 | 111.fillertest después initialize alfanuméricos sustituir por "X":0000000009 | X 111.fillertest después de inicializar la sustitución alfanumérica por todos "X":0000000009 | XXXXXXXXXX111.fillertest después de inicializar con el relleno:0000000000 000fillertest después de inicializar todos a valorar:2222222222 | AAAAAAAAAA111.REC-TEST después de la asignación:
REC-TEST después initalize todo valor:9999999999AAAAAAAAAA
4.1.246 inicializado
Un modificador de la ALLOCATE verbo, llenando el objetivo con un valor por defecto.
77 base-var PIC X (9) BASADA EN VALOR "asignados" .77 Puntero-var USO PUNTERO .
datos de la división .WORKING-STORAGE sección .01 ORIGINAL pic XXXX / XX / XXBXX / XX / XXXXXXX / XX .01 DATEREC pic XXXX / XX / XXBXX / XX / XXXXXXX / XX .
procedimiento de división .
mover la función cuando compilado a DATEREC ORIGINAL
CONTROLAR DATEREC CAMBIO TODO "/" POR ":" DESPUÉS DE INICIALDEL ESPACIO
mostrar"la función intrínseca AL-RECOPILADA" ORIGINAL
Palabra legibilidad. A es menor que B es equivalente a B. A MENOS
4.1.258 JUSTO
Alias para JUSTIFICADA .
4.1.259 JUSTIFICADOS
Tweaks reglas de almacenamiento en wierd SOLO maneras, disminuyendo el vudú
detrás de MOVE instrucciones, dijo con sarcasmo .
77 str1 pic x (40) justifica la derecha .
4.1.260 CLAVE
Uso múltiple, significa siempre clave:
- KEY relativa es- CLAVE DE REGISTRO ALTERNATIVA ES- NO CLAVE NO VÁLIDA- ORDENAR al descender nombre CLAVE KeyField- START indexación CLAVE ES MENOS QUE KeyField
4.1.261 TECLADO
Un valor especial para la entrada estándar
archivo de control .seleccione cgi-inasignar al teclado .
4.1.262 ETIQUETA
Un sello discográfico. Al igual que con la mayoría de los sellos discográficos, cayendo
select optional data-file assign to file-nameorganization is line sequentialfile status is data-file-status.
select mini-report assign to "mini-report".
DATOS DE DIVISION .ARCHIVO SECCIÓN .FD archivo de datos .01 datos de registro .
88 EndOfData valor alto-valores .02 datos-line PIC X (80) .
FD mini-informelinaje es 16 líneas
con base en 15líneas en el top 2líneas en la parte inferior 2 .
01 informe-line pic x (80) .
WORKING-STORAGE SECCIÓN .01 de comando argumentos PIC X (1024) .01 de nombre de archivo pic x (160) .01 de archivo de datos de estado de pic 99 .01 lc pic 99 .01 informe-line a quemarropa .
02 relleno pic x (05) Valor espacios .02 relleno PIC X (34)
VALOR "ESTE Página en blanco" .02 relleno pic x (05) Valor espacios .02 relleno pic x ( 18) Valor todo "*" .
01 informe-data-line .02 cuerpo-tag pic 9 (6) .02 línea 3 pic x (74) .
01 informe-line-header .02 relleno pic x (6) VALOR "PAGE:" .02 páginas no pic 9999 .02 de relleno PIC X (24) .02 relleno pic x (5) VALOR "LC:" .02 header-tag pic 9 (6) .02 relleno PIC X (23) .02 relleno pic x (6) VALOR "FECHA" .02 páginas Fecha de pic x (6) .
01 página de recuento de pic 9999 .
PROCEDIMIENTO DE DIVISION .
accept command-arguments from command-line end-accept.string
command-arguments delimited by spaceinto file-name
end-string.if file-name equal spaces
move "linage.cob" to file-nameend-if.
abiertos de entrada de archivo de datos .leer datos de archivos
a finpantalla
"Archivo:" función de ajuste ( nombre de archivo )"Error al abrir el"
extremo-displayir a temprana salida de
fin de leer .
abrir la salida mini-informe .
escribir informe-linedel informe-line a quemarropa
final de escritura .
move 1 to page-count.accept page-date from date end-accept.move page-count to page-no.write report-line
from report-line-headerafter advancing page
end-write.
realizar ReadWrite-loop hasta EndOfData .
mostrar"Terminación normal, nombre de archivo:"la función del ajuste ( nombre de archivo )"estado de fin:"archivo de datos de estado
de extremo pantalla .estrecha mini-informe .
* Goto considera perjudicial? Bah! :)temprana salida .cerca del archivo de datos .salida del programa .dejar de correr .
**************************************************************** readwrite-loop.move data-record to report-line-datamove linage-counter to body-tagwrite report-line from report-line-data
end-of-page add 1 to page-count end-add move page-count to page-nomove linage-counter to header-tagwrite report-line from report-line-header
after advancing pageend-write
end-write read data-file
at end set endofdata to trueend-read .
************************************************** **************** Comentario* linaje se ha fijado en una página lógica line 20* 16 líneas de la carrocería* 2 líneas superiores* A pie de página en el 15 (dentro del número de muertos)* 2 abajo líneas* Construir con:* $ COBC-x-Wall-Wtruncate linage.cob* Evaluar con:. * $ / linage* Esta será leído en linage.cob y producir un mini-informe inútil* $ cat-n mini-informe* ************************************************** **************FIN PROGRAMA linaje-demo .
Uso
$ except.cob. / linage
Produce un mini-informe de:
****************** ESTA PÁGINA EN BLANCO INTENCIONALMENTE ******************
PÁGINA: 0.001 LC: 000000 FECHA: 090206000001 DIVISIÓN DE IDENTIFICACIÓN.000002 PROGRAMA-ID. MiniProg.000003 DIVISIÓN MEDIO AMBIENTE.000004 sección de configuración.000005 FUENTE-COMPUTER. LINUX.000006 OBJETO DE ORDENADOR. LINUX.000007 ESPECIAL nombres.000008 SECCIÓN DE ENTRADA-SALIDA.000009 ARCHIVO-CONTROL.000010 PrintFile SELECT ASSIGN TO "XXRXWXX"000.011 archivo de estado RXWSTAT.000.012 datos de la División.000013 SECCIÓN FILE.000014 FD PrintFile.
PÁGINA: 0.002 LC: 000015 FECHA: 090206000001 01 PRINTREC PIC X (132).000002 WORKING-STORAGE SECTION.000003 01 RXWSTAT PIC XX.000004 01 str pic x (4).000005 PROCEDIMIENTO DE DIVISION.
000006 SECCIÓN A00-MAIN.000007 001-MAIN-PROCEDIMIENTO.000008 PrintFile entrada abierta.000009 DISPLAY "Estado del archivo:" RXWSTAT.000010 DISPLAY "EXCEPCIÓN DE ARCHIVOS:" FUNCIÓN EXCEPCIÓN DE ARCHIVOS.000011 DISPLAY "Longitud de vuelta:"000012 LONGITUD FUNCIÓN (FUNCTION EXCEPCIÓN-FILE).000013 DISPLAY "EXCEPCIÓN DE ESTADO:" FUNCIÓN EXCEPCIÓN-STATUS.000014 DISPLAY "EXCEPCIÓN-EXPOSICIÓN:" FUNCIÓN DE EXCEPCION-declaración.
PÁGINA: 0.003 LC: 000015 FECHA: 090206000001 STRING "toolong" TAMAÑO DELIMITADO EN RXWSTAT.000002 DISPLAY "EXCEPCIÓN DE ESTADO:" FUNCIÓN EXCEPCIÓN-STATUS.000003 DISPLAY "EXCEPCIÓN-EXPOSICIÓN:" FUNCIÓN DE EXCEPCION-declaración.000004 DISPLAY "EXCEPCIÓN-UBICACIÓN:" FUNCIÓN EXCEPCIÓN-UBICACIÓN.000005 Parada Marcha.
Ver except.cob bajo la EXCEPCIÓN-estado de la función de entrada.
4.1.278 linaje-CONTADOR
Un sustantivo OpenCOBOL interna o Registro Especial . El valor es de sólo lectura y se
mantiene durante la escritura a los archivos que tienen un linajecláusula. Útil para
informes rápidos y diseños de página lógicos.
4.1.279 LÍNEA
Toma LINE SECUENCIAL archivos. Control de la línea de sección de la pantalla.
4.1.280 LINEA SIN RECETA
Registro especial para el soportado Report Writer.
4.1.281 LÍNEAS
Sección de control de la línea de la pantalla, la pantalla se produce el control y
desplazamiento área.
4.1.282 VINCULACIÓN
A SECCION del DATOS DIVISION. Se utiliza para los datos del marco de control de
llamadas cuando la unidad de ejecución actual no puede estar a cargo de la ubicación
de almacenamiento de trabajo. El valor predeterminado es referencia sin inicializar
La cláusula PICTURE es fácilmente una de las mayores fortalezas de
COBOL. Totalmente detallado definiciones de datos pictóricos. La complejidad interna
se deja a los autores del compilador, mientras que los desarrolladores y de gestión
son libres para describir los datos en un muy alto nivel conceptual.
Los dos personajes de imagen más comunes son el 9 y X, para datos numéricos y
alfanuméricos, respectivamente. Para los datos alphbetic, A puede ser utilizado.
Además de imágenes de almacenamiento de datos, una amplia gama de editar las
imágenes se permitió el control de la entrada y el formato de salida.
+, -, A, B, N, X, Z, "*", 'CR', 'DB', E, S, V, P,,. símbolo de moneda
OpenCOBOL ofrece soporte completo de las normas de todos los alfa, especificadores
de almacenamiento alfanuméricos y numéricos, así como soporte completo para
edición y cláusulas numérico de edición.
Un ejemplo de algunas de las opciones de IMAGEN
* >> Formato de fuente es libre*> ***************************************** ****************************> Autor: jrls (John Ellis)*> Fecha: Oct-2008Ejemplos de resultados con formato: *> Aplicaciones el uso de cadenas pic.*> ******************************************** ************************
Identificación de la división .programa-id . picstring .datos división .WORKING-STORAGE sección .*> <*
05 relleno pic x (11) valor "DISP1" .05 relleno pic x (11) valor "Pant2" .05 relleno pic x (11) valor "Pant3" .05 de relleno PIC X (11) valor "disp4" .05 relleno pic x (12) valor "disp5" .05 relleno pic x (9) Valor "an1" .05 relleno pic x (14) valor "teléfono" .05 relleno pic x (10) Valor "date" .
*> <*01 headerLines pic x (90) valor de todos "-" .*> <*01 displayformats .
05 linenum pic 99 valor de 1 .05 DISP1 pic zzz, zz9.99 valor cero .05 de relleno pic x valor espacios .05 Pant2 pic $ zz, zz9.99 valor cero .05 relleno pic x valor espacios .05 Pant3 pic ---, - 9,99 valor cero .05 relleno pic x valor espacios .05 disp4 pic $ -z, zz9.99 valor cero .05 relleno pic x valor espacios .05 disp5 pic-zz, zz9.zz- blanco cero valor cero .05 relleno pic x valor espacios .
*> <* an1 es en realidad un campo de cadena debido los espacios en blancoincrustados, lo que le ponen los espacios de valor.
05 AN1 pic 99b99b99 valor espacios .05 relleno pic x valor espacios .05 teléfono pic bxxxbxxxbxxxx valor espacios .05 relleno pic x valor espacios .05 dispdate pic 99/99/9999 valor cero .
*><**************************************************** move 220.22 to disp1,
disp2.move -220.22 to disp3,
disp4,disp5.
inspeccionar disp5 reemplazar primero "-" por "(" ,primero "-" por ")" .
mover 10122008 a dispdate .*> <****************************************** ***********> <* Por favor, tenga en cuenta los resultados del movimiento 'abcd' a an1.*> <* an1 se mostrará como 00 00 00 ya que los datos alfa fue*> <* trasladado a su lugar de datos numéricos.*> <*
*> <* El campo teléfono mostrará "abc def ghij" porque*> <* 'b' en la foto
mostrar displayformats .
añadir 1 al linenum .mover cero a disp4 ,
disp5 .*> <*********************************** ******************> <* Aquí después de mover los datos a an1 y el teléfono, yo uso el*> <* inspeccionar declaración para sustituir el
inspeccionar an1 reemplazar todo "" por "-" .
inspeccionar teléfono sustituyendo primero "," por "(" ,primero "" por ")" ,primero "" por "-" .
mostrar displayformats .
inspeccionar teléfono conversión "23456789" a "adgjmptw" .pantalla del teléfono .
05 LÍNEA 01 COLUMNAS 01 VALOR "Form" .05 LÍNEA PLUS 3 COLUMNA 01 VALOR valor 4 .
4.1.347 PUNTERO
Asigna una variable de uso restringido para la celebración de direcciones.
01 c-asa USO ES PUNTERO .
LLAME "open-lib" VOLVER c-manejarEN EXCEPCIÓN
DISPLAY "No se puede vincular abierto-lib" END-DISPLAYPARADA EJECUTAR VOLVER 1
FIN-CALLSI c-manejar EQUAL NULL
DISPLAY "No se puede abrir-lib" END-DISPLAYPARADA MARCHA DE DEVOLVER 1
END-IF
LLAME "use-lib" USO POR VALOR mango C POR CONTENIDO "Hello" y x "00"LLAMADA "close-lib" USO POR VALOR c-manejar
*> Interfaz con el C ABI es un poco Teenie-Weenie del vudú*> pasar la referencia o el uso Vuelta Si C establece el valor. Use*> valor cuando desee C tenga su puntero, no el*> dirección de referencia del puntero COBOL. Así que la mayoría son ensu*> por referencia (o regresar) y más uso, incluyendo*> resumen de C ABI herramientas, está utilizando por valor.*> <*
4.1.348 POSICIÓN
Alias de Columna en los diseños de la sección de pantalla. También una obsoleta,
reconoció, pero no se admite:
CINTA DE ARCHIVO múltiple incluya archivos 1 POSICIÓN 1 archivo-2 POSICION 80
4.1.349 POSITIVO
Condiciones de clase.
SI cantidad ES POSITIVODISPLAY "Aún no se rompió" END-DISPLAY
END-IF
4.1.350 PRESENTE
Informe cláusula escritor utilizado para el campo opcional y salida de grupo.
88 escrito los nombres valoran "Adición, sobrescribir. 00 a fin" .88 de lectura-names valor "¿Qué disco? 00 para dejar de fumar" .
77 problema PIC X (80) .
pantalla de la sección .01 -pantalla de detalle .
05 línea 1 columna 1 del título-line erase eos .05 línea 2 columna 1 valor "Record:" .05 pic 9 (2) línea 2 columna 16 mediante nicknum .05 línea 3 columna 1 valor "Nombre:" .05 PIC X (48) línea 3 la columna 16 con primer nombre .05 línea 4 columna 1 el valor "Nombre:" .05 PIC X (64) línea de 4 columnas 16 con apellido .05 de la línea 5 la columna 1 valor "las
relaciones:" .05 x pic (32) línea 5 la columna 16 con la relación .05 PIC X (80) línea 6 la columna 1 del problema .
01 de pantalla muestran .05 línea 1 columna 1 del título-line erase eos .05 línea 2 columna 1 valor "Record:" .05 pic 9 (2) línea 2 columna 16 mediante nicknum .05 de la línea 3 la columna 1 el valor "Nombre : " .05 x pic (48) línea 3 la columna 16 del primer nombre .05 línea 4 columna 1 valor Last name ":" .05 PIC X (64) línea 4 la columna 16 del apellido .05 de la línea 5 la columna 1 valor de Relación ": "
.05 x pic (32) línea 5 la columna 16 de la relación .05 pic x (80) línea 6 la columna 1 del problema .
no válidos clavesde lectura parientes próximo fin de leer
extremo de inicio
*> Cierre y abra de iocercanos parientes
abiertas io familiares
*> Solicitar números y nombres para añadir hasta 00set de escritura-en nombres a ciertoconjunto satisfecho con falsarealizar relleno archivo a través de relleno-file-end
hasta satisfechos
cercanos parientes
*> Solicitar los números para ver los nombres de hasta 00abiertos de entrada parientes
set reading-names to true set satisfied to false perform record-request through record-request-end
until satisfied
realizar cerca-shop.terminando .
GoBack .
*> Obtener algunos datos de los usuarios a
.fill-file-end ..
*> Obtener claves
*> La magia del número relativo de registro
record-request-end ..
*> <* Salirdel primer taller .
cercanos parientes .GoBack .
.gama de programas familiares .
con pantallas de muestra:
Añadir, sobrescribir. 00 para terminarRegistro: 04Nombre: Brad____________________________________________Apellido: Tiffin__________________________________________________________Relación: brother_________________________
teniendo en cuenta las nuevas incorporaciones de registro o sobrescribe los números
claves existentes, y:
¿Qué disco? 00 para dejar de fumarRegistro: 03Nombre: BrianApellido: TiffinRelación:
donde escribiendo un nicknum número récord recupera el registro relativo.
4.1.383 RELEASE
Suelte un registro a una ORDENAR . Utilizado con INPUT PROCEDIMIENTO de verbo
* >> Formato de fuente es libre*> ***************************************** ****************************> Autor: jrls (John Ellis)*> Fecha: Oct-2008Ejemplos de resultados con formato: *> Aplicaciones el uso de cadenas pic.*> ******************************************** ************************
Identificación de la división .programa-id . picstring .datos división .WORKING-STORAGE sección .*> <*
01 de cabeza .05 relleno pic xxx valor "ln" .05 relleno pic x (11) valor "DISP1" .05 relleno pic x (11) valor "Pant2" .05 relleno pic x (11) valor "Pant3" .05 de relleno PIC X (11) valor "disp4" .05 relleno pic x (12) valor "disp5" .05 relleno pic x (9) Valor "an1" .05 relleno pic x (14) valor "teléfono" .05 relleno pic x (10) Valor "date" .
*> <*01 headerLines pic x (90) valor de todos "-" .*> <*01 displayformats .
05 linenum pic 99 valor de 1 .05 DISP1 pic zzz, zz9.99 valor cero .05 de relleno pic x valor espacios .05 Pant2 pic $ zz, zz9.99 valor cero .05 relleno pic x valor espacios .05 Pant3 pic ---, - 9,99 valor cero .05 relleno pic x valor espacios .05 disp4 pic $ -z, zz9.99 valor cero .05 relleno pic x valor espacios .05 disp5 pic-zz, zz9.zz- blanco cero valor cero .05 relleno pic x valor espacios .
*> <* an1 es en realidad un campo de cadena debido los espacios en blancoincrustados, lo que le ponen los espacios de valor.
05 AN1 pic 99b99b99 valor espacios .05 relleno pic x valor espacios .05 teléfono pic bxxxbxxxbxxxx valor espacios .05 relleno pic x valor espacios .05 dispdate pic 99/99/9999 valor cero .
inspeccionar disp5 reemplazar primero "-" por "(" ,primero "-" por ")" .
mover 10122008 a dispdate .*> <****************************************** ***********> <* Por favor, tenga en cuenta los resultados del movimiento 'abcd' a an1.*> <* an1 se mostrará como 00 00 00 ya que los datos alfa fue*> <* trasladado a su lugar de datos numéricos.*> <**> <* El campo teléfono mostrará "abc def ghij" porque*> <* 'b' en la foto
mostrar displayformats .
añadir 1 al linenum .mover cero a disp4 ,
disp5 .*> <*********************************** ******************> <* Aquí después de mover los datos a an1 y el teléfono, yo uso el*> <* inspeccionar declaración para sustituir el
inspeccionar an1 reemplazar todo "" por "-" .
inspeccionar teléfono sustituyendo primero "," por "(" ,primero "" por ")" ,primero "" por "-" .
mostrar displayformats .
inspeccionar teléfono conversión "23456789" a "adgjmptw" .pantalla del teléfono .
Sección de control de línea / columna relativa Pantalla durante la presentación.
01 form-1 AUTO .05 LÍNEA 01 COLUMNAS 01 VALOR "Form" .05 LÍNEA PLUS 3 COLUMNA 01 VALOR valor 4 .
4.1.347 PUNTERO
Asigna una variable de uso restringido para la celebración de direcciones.
01 c-asa USO ES PUNTERO .
LLAME "open-lib" VOLVER c-manejarEN EXCEPCIÓN
DISPLAY "No se puede vincular abierto-lib" END-DISPLAYPARADA EJECUTAR VOLVER 1
FIN-CALLSI c-manejar EQUAL NULL
DISPLAY "No se puede abrir-lib" END-DISPLAYPARADA MARCHA DE DEVOLVER 1
END-IF
LLAME "use-lib" USO POR VALOR mango C POR CONTENIDO "Hello" y x "00"LLAMADA "close-lib" USO POR VALOR c-manejar
*> Interfaz con el C ABI es un poco Teenie-Weenie del vudú*> pasar la referencia o el uso Vuelta Si C establece el valor. Use*> valor cuando desee C tenga su puntero, no el*> dirección de referencia del puntero COBOL. Así que la mayoría son ensu*> por referencia (o regresar) y más uso, incluyendo*> resumen de C ABI herramientas, está utilizando por valor.*> <*
4.1.348 POSICIÓN
Alias de Columna en los diseños de la sección de pantalla. También una obsoleta,
reconoció, pero no se admite:
CINTA DE ARCHIVO múltiple incluya archivos 1 POSICIÓN 1 archivo-2 POSICION 80
88 ineof valor 1 cuando establece que falsa es 0 .
77 Satisfacción pic 9 .88 satisfechos valor 1 cuando se establece a falso es 0 .
77 nicknum PIC 9 (2) .
77 del título-line pic x (34) .88 escrito los nombres valoran "Adición, sobrescribir. 00 a fin" .88 de lectura-names valor "¿Qué disco? 00 para dejar de fumar" .
77 problema PIC X (80) .
pantalla de la sección .01 -pantalla de detalle .
05 línea 1 columna 1 del título-line erase eos .05 línea 2 columna 1 valor "Record:" .05 pic 9 (2) línea 2 columna 16 mediante nicknum .05 línea 3 columna 1 valor "Nombre:" .05 PIC X (48) línea 3 la columna 16 con primer nombre .05 línea 4 columna 1 el valor "Nombre:" .05 PIC X (64) línea de 4 columnas 16 con apellido .05 de la línea 5 la columna 1 valor "las
relaciones:" .05 x pic (32) línea 5 la columna 16 con la relación .05 PIC X (80) línea 6 la columna 1 del problema .
01 de pantalla muestran .05 línea 1 columna 1 del título-line erase eos .05 línea 2 columna 1 valor "Record:" .05 pic 9 (2) línea 2 columna 16 mediante nicknum .05 de la línea 3 la columna 1 el valor "Nombre : " .05 x pic (48) línea 3 la columna 16 del primer nombre .05 línea 4 columna 1 valor Last name ":" .05 PIC X (64) línea 4 la columna 16 del apellido .05 de la línea 5 la columna 1 valor de Relación ": "
.05 x pic (32) línea 5 la columna 16 de la relación .05 pic x (80) línea 6 la columna 1 del problema .
no válidos clavesde lectura parientes próximo fin de leer
extremo de inicio
*> Cierre y abra de iocercanos parientesabiertas io familiares
*> Solicitar números y nombres para añadir hasta 00set de escritura-en nombres a ciertoconjunto satisfecho con falsarealizar relleno archivo a través de relleno-file-end
hasta satisfechos
cercanos parientes
*> Solicitar los números para ver los nombres de hasta 00abiertos de entrada parientes
set reading-names to trueset satisfied to falseperform record-request through record-request-end
until satisfied
realizar cerca-shop.terminando .
GoBack .
*> Obtener algunos datos de los usuarios a
.fill-file-end ..
*> Obtener claves
*> La magia del número relativo de registro
record-request-end ..
*> <* Salirdel primer taller .
cercanos parientes .GoBack .
.gama de programas familiares .
con pantallas de muestra:
Añadir, sobrescribir. 00 para terminarRegistro: 04Nombre: Brad____________________________________________Apellido: Tiffin__________________________________________________________Relación: brother_________________________
teniendo en cuenta las nuevas incorporaciones de registro o sobrescribe los números
claves existentes, y:
¿Qué disco? 00 para dejar de fumarRegistro: 03Nombre: BrianApellido: TiffinRelación:
donde escribiendo un nicknum número récord recupera el registro relativo.
4.1.383 RELEASE
Suelte un registro a una ORDENAR . Utilizado con INPUT PROCEDIMIENTO de verbo
SORT.
LIBERAR registros 1 DE identificador-1
4.1.384 RESTO
El acceso a restos enteros durante la división.
DIVIDIRhex-val POR 16 DANDO izquierda nibble RESTO derecha nibble
END-DIVIDE
4.1.385 EXTRACCIÓN
Una cláusula de cierre.
CLOSE nombre-1 REEL DE EXTRACCIÓN
Especifica que el archivo se almacenó en varias cintas / discos extraíbles. No todos
los sistemas son compatibles con dichos dispositivos.
4.1.386 renombra
OpenCOBOL apoya reagrupación de nivel 02 a 49 elementos de datos con nivel 66 y
cambia el nombre.
OCOBOL >> FUENTE FORMATO SE FIJA*> ***************************************** ***********************> Autor: Brian Tiffin*> Fecha: 20110606*> Objetivo: Demostración de datanames 66 de nivel*> Tectónica: COBC *>
Identificación de la división .programa-id . tamizaje .
datos de la división .WORKING-STORAGE sección .01 algunos datos- pic s9 (9) .
pantalla de la sección .01 -pantalla de detalle .
03 línea 1 columna 1 valor "línea de título" .03 línea 2 columna 1 valor "área" .03 de la línea 2 la columna 16 con algunos-datos .
*> ************************************************ ************ <*procedimiento de división .display de pantalla detalle final displayacepta -pantalla de detalles finales aceptarGoBack .
terminar el programa de cribado .
ser una pobre representación de la gran cantidad de control de atributo de campo
permitido en la sección de pantalla OpenCOBOL.
Atributos de campo de la pantalla incluyen:
Justificado a la derecha
Blanco cuando ZERO
OCURRE entero multiplicado val
BELL, BIP
AUTO, AUTO-PASE, AutoTerminate
SUBRAYA
OVERLINE
ASEGURE
REQUERIDO
COMPLETO
PROMPT
REVERSE-VIDEO
LINEA EN BLANCO
PANTALLA EN BLANCO
BORRAR EOL
BORRAR EOS
SIGN es el principal CARÁCTER INDEPENDIENTE
SIGN está detrás CARÁCTER INDEPENDIENTE
NÚMERO DE LÍNEA ES [MÁS] entero-val
Número de columna es [MÁS] entero-val
PLANO-COLOR ES entero-val DESTACADO, LOWLIGHT
Background-color es un entero-val BLINK
IMAGEN ES foto-cláusula USING identificador
IMAGEN ES foto-cláusula FROM identificador, literal
IMAGEN ES foto-cláusula TO identificador
VALUE es literal
Durante ACCEPT, USANDO campos son de lectura / escritura, DESDE campos son
leídos y AL campos son escribir.
Ver ¿Cuáles son los valores de color sección Screen OpenCOBOL? de valores de color.
4.1.411 SD
ORDENAR descriptor de datos de archivo.
SD especie-file-1ACTA CONTIENE 80 PERSONAJES .
4.1.412 BUSCAR
Un cuadro de gran alcance y el verbo de búsqueda de archivos. Ver búsqueda
lineal para un ejemplo.
4.1.413 SEGUNDOS
Cláusula de no admitido de lectura / escritura REINTENTAR el bloqueo.
4.1.414 SECCIÓN
Código fuente COBOL se organiza en DIVISION , SECCIÓN , párrafos y
oraciones. OpenCOBOL apoya secciones con nombre de usuario y reconoce la
SELECT fileresourceASSIGN TO external-nameFILE STATUS IS identifierCOLLATING SEQUENCE IS alphabet-nameLOCK MODE IS MANUAL WITH LOCK ON MULTIPLE RECORDSRECORD DELIMITER IS STANDARDRESERVE num AREASHARING WITH NO OTHERORGANIZATION IS INDEX
ACCESS MODE IS DYNAMICRECORD KEY IS key-fieldALTERNATE RECORD KEY IS key-field-2 WITH DUPLICATESALTERNATE RECORD KEY IS key-field-3.
sin embargo, el nombramiento de un archivo rápido puede ser tan simple como
SELECT mifichero ASIGNAR A "name.txt" .
que habrá un incumplimiento LINEA SECUENCIAL archivo.
OCOBOL >> FUENTE FORMATO SE FIJA******************************************* ************************ Autor: Brian Tiffin* Fecha: 02-Sep-2008* Objetivo: Un ejemplo verbo ORDENAR OpenCOBOL* Tectónica: COBC-x sorting.cob*. / clasificación <input> Salida* o simplemente*. / selección* para el teclado y la pantalla
entorno de la división .configuración sección .
* Esto establece un orden de clasificación más baja que superiores aexcepción de A y un
especial-names .alfabeto mezclado es "AabBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTu
- "UvVwWxXyYzZ0123456789" .
input-output section.file-control.
select sort-inassign keyboardorganization is line sequential.
select sort-outassign display organization is line sequential.
select sort-workassign "sortwork".
datos de la división .file sección .fd tipo-in .
01 in-rec pic x (255) .fd tipo de salida .
01 fuera rec pic x (255) .sd clase-trabajo .
01 obra-rec pic x (255) .
trabajo-storage sección .01 en bucle bandera pic x valor de poco valor .
procedure division.sort sort-work
on descending key work-reccollating sequence is mixedinput procedure is sort-transformoutput procedure is output-uppercase.
mostrar una especie de retorno al final de visualización .GoBack .
****************************************************************** sort-transform.move low-value to loop-flagopen input sort-inread sort-in
at end move high-value to loop-flagend-read perform
until loop-flag = high-valuemove FUNCTION LOWER-CASE(in-rec) to work-recrelease work-recread sort-in
at end move high-value to loop-flagend-read
end-perform close sort-in.
****************************************************************** output-uppercase.move low-value to loop-flagopen output sort-outreturn sort-work
at end move high-value to loop-flagend-return perform
until loop-flag = high-valuemove FUNCTION UPPER-CASE(work-rec) to out-recwrite out-rec end-write return sort-work
at end move high-value to loop-flagend-return
end-perform close sort-out.
salir del programa .finales del programa de clasificación .
Aquí hay un fragmento que describe variedades de mesa por [jrls_swla]
mesa de definir
01 NBR-de-columnas PIC 9 (4) El valor cero.01 Uso tcindex2 es índice.01 dbtables.
03 mesas-columnas se produce 1 a 1000 vecessegún NBR-de-columnasascendente tcTable clave tcColumn
indexados por tcindex.05 pic x tcTable (64) espacios de valor.05 tcColumn pic x (64) espacios de valor.
05 tcOrder pic 9 (4) El valor cero.05 TCTYPE pic x (10) espacios de valor.05 tcMaxLen pic 9 (4) El valor cero.
*> <*01 aliasName.
05 pic x valor "t".05 Anval pic 9 (3) valor cero.
01 showdata.05 sdTable pic x (17) espacios de valor.05 sdColumn pic x (17) espacios de valor.05 sdType pic x (10) espacios de valor.05 sdOrder pic-zzzzz.05 sdMaxLen pic zzzzz.
carga de la mesa
realizar diferentes filas de 1 por 1hasta las filas> dbNumRowsllamar "dbnextrow" utilizando por valor dbResult,
por ColumnBuff referencia,por referencia CbuffDesc
volver dbResultañadir 1 al NBR-de-columnasestablecer tcindex por 1mover cbTable a tcTable (tcindex)mover cbColumn a tcColumn (tcindex)mover cbType a TCTYPE (tcindex)mover cbOrder a tcOrder (tcindex)mover cbMaxLen a tcMaxLen (tcindex)si NBR-de-columns = 1
añadir 1 al Anvalmás
establecer tcindex2 a tcindexestablecer tcindex2 por 1si cbTable <> tcTable (tcindex2)
realizar diferentes tcindex de 1 por 1hasta tcindex> NBR-de-columnasmover tcTable (tcindex) para sdTablemover tcColumn (tcindex) para sdColumnmover tcOrder (tcindex) para sdOrder
mover TCTYPE (tcindex) para sdTypemover tcMaxLen (tcindex) para sdMaxLenpantalla showdata
FINAL realizar.
Ejercicio para el público. ¿Podría el código anterior se simplifica mediante el uso de
MOVE CORRESPONDING cbRecord to table-columns(tcindex)...MOVE CORRESPONDING table-columns(tcindex) to showdata
con algunos cambios de nombre de campo acertadas?
4.1.432.1 Una herramienta de apoyo OCSORT
Hay una utilidad de tipo externo hace referencia en ocsort ¿Qué es?
4.1.433 clasificación-fusión
Se utiliza en el párrafo IO-CONTROL con la cláusula MISMO:
Mismo tipo de combinación AREA DE nombrearchivo-1.
La palabra clave de clasificación-fusión y la palabra clave ORDENAR son equivalentes
en este caso.
4.1.434 ORDENAR-RETURN
Un especial-usuario utilizado por las rutinas de ordenación OpenCOBOL.
+000000000 Para el éxito
+000000016 Por no
Un programador puede establecer ORDENAR-RETURN en un procedimiento de
ingreso.
4.1.435 FUENTE
Directiva del compilador controlar la manipulación del código fuente.
>> FUENTE FORMATO SE FIJA>> FUENTE FORMATO ES GRATIS
OpenCOBOL permite el uso de esta directiva en el capricho del
programador. COBC defecto FIJO manejo fuente de formato, por lo que la Directiva
01 -var num1 pic 9 .01 num4-var pic 99v99 .01 Num9-var pic s9 (9) .01 num18-var pic s9 (18) .01 num18c-var pic s9 (18) el uso de un borrador .01 num18p-var pic s9 (18) Uso comp-3 .01 edit-var pic $ zzzz9.99 .
01 -string var pic x (10) valor "abc" .
01 nueva línea pic x valor x '0 a ' .
procedimiento de división .pantalla
"num1-var len =" función byte de longitud ( num1-var ) de nuevalínea
"num4-var len =" función byte de longitud ( num4-var ) de nuevalínea
"Num9-var len =" función byte de longitud ( Num9-var ) de nuevalínea
"num18-var len =" función byte de longitud ( num18-var ) denueva línea
"num18c-var len =" función byte de longitud ( num18c-var ) denueva línea
"num18p-var len =" función byte de longitud ( num18p-var ) denueva línea
"edit-var len =" función byte de longitud ( edit-var ) de nuevalínea
"12 len =" función byte de longitud ( 12 ) de nueva línea"12.12 len =" función byte de longitud ( 12 . 12 ) de nueva
línea"1234567890,123 =" función
byte de longitud ( 1234567890 . 123 ) de nueva línea
"String-var len =" función byte de longitud ( string-var ) denueva línea
"cadena de ajuste =" funciónbyte de longitud ( función de ajuste ( string-var )) de
nueva línea
"Char-var len =" función byte de longitud ( ca-var ) de nuevalínea
"a corto var len =" función byte de longitud ( corto var ) denueva línea
"long-var len =" función byte de longitud ( largo var ) nuevalínea
"doble-var len =" función byte de longitud ( doble var )
final displayGoBack .salida del programa .
Salidas:
num1-var len = 1num4-var len = 4Num9-var len = 9num18-var len = 18num18c-var len = 8num18p-var len = 10edit-var len = 912 len = 212.12 len = 41234567890.123 = 13string-var len = 10cadena de ajuste = 00000003ca-var len = 1corto var len = 2largo var len = 4doble var len = 8
4.2.7 FUNCTION CHAR
La función CHAR devuelve un campo alfanumérico un carácter cuyo valor es el
carácter en el orden de clasificación de corriente que tiene la posición ordinal
igual al valor del argumento entero. El argumento debe ser mayor que 0 y menor
o igual al número de posiciones en la secuencia de clasificación. Los errores en el
argumento de rango retorno 0 (el bajo valor por defecto).
Ver ASCII o EBCDIC y los detalles de la cláusula alfabeto.
Indicación de la función CHAR (66).
Sería la salida A en el juego de caracteres ASCII. Tenga en cuenta que esto puede
ser diferente de lo que algunos esperan. OpenCOBOL CHAR es 1-128 0-127 no
como un programador de C se puede utilizar para.
Y para añadir un poco de confusión, la mayoría de las computadoras personales
utilizan un juego de caracteres ampliado, por lo general erróneamente llamado
ASCII con un rango de 0 a 255. Un nombre más apropiado puede ser ISO-8859-1
América 1. Ver ASCII para más detalles precisos. Este autor es a menudo culpable
de este nombre incorrecto de la utilización del término ASCII.
Los errores de dominio se producen para valores de año de menos de 1.600 y
más de 999 999. No hay ninguna validación de la fecha de entrada.
Debido a la ventana deslizante, esta función depende de la fecha de la evaluación
DISPLAY FUNCTION DATE-TO-YYYYMMDD(000101)DISPLAY FUNCTION DATE-TO-YYYYMMDD(500101)DISPLAY FUNCTION DATE-TO-YYYYMMDD(610101)DISPLAY FUNCTION DATE-TO-YYYYMMDD(990101)
DISPLAY FUNCTION DATE-TO-YYYYMMDD(990101, 50, 1900)DISPLAY FUNCTION DATE-TO-YYYYMMDD(990101, -10, 1900)DISPLAY FUNCTION DATE-TO-YYYYMMDD(990101, 50, 2000)DISPLAY FUNCTION DATE-TO-YYYYMMDD(990101, 50, 2100)