Introducción a Tiny Cobol
Jonathan Riddell, jr@jriddell.org
v0.2 Noviembre de 2001
Una breve introducción a Tiny Cobol para aquellos que empiezan con
Tiny Cobol o con Cobol en general (traducción libre de Juan J. Martínez
<reidrac@usebox.net>, Abril de 2003).
Este Documento
Objetivo
Esta es una breve introducción a Tiny Cobol para aquellos que empiezan con
Tiny Cobol o Cobol en general, llevando al lector a mirar através de
Cobol, mediante un programa sencillo y otro más complicado usando make.
Nuevas versiones de este documento
La última versión de este documento se puede encontrar en la página
web de Tiny Cobol en http://tiny-cobol.sourceforge.net.
Copyrights
N.t.: Las condiciones de copia y distribución se mantienen en el
idioma original.
This document is Copyright Jonathan Riddell 2001.
You may copy and distribute it only under the terms of the GNU Free
Documentation License, available at http://www.gnu.org/copyleft/fdl.html
Agradecimientos
Gracias al aquipo de Tiny Cobol y especialmente a Rildo Pragana
(http://www.pragana.net/),
nuestro líder lleno de fe.
Gracias a Richard Bland, mi instructor y maestro en todo lo relacionado
con Cobol.
Agradecimientos también a las gente de Debian por incluir un programa
sgmltools que funciona. Se aprecia mucho.
Traducciones
No hay traducciones de este documento todavía, pero cualquier ayuda
es bienvenida.
N.t.: En el momento de esta traducción ya se dispone de
traducciones al italiano, brasileño y español (castellano).
Y sí, este documento está en inglés británico. Los paréntesis son
así (), y los periodos son algo que las chicas tienen cada mes.
Considérese afortunado de que no lo escribiera en
escocés.
Introducción a Cobol y a Tiny Cobol
Sobre Cobol
Cobol es uno de los lenguajes de tercera generación más veteranos. Fue
desarrollado en 1959 (en la misma época que Fortran) para reemplazar
a lenguajes ensamblador específicos del procesador (los lenguajes de
segunda generación). El primer estándar ANSI fue el del 68 (aunque era
usado comunmente desde 1961). Los estándar posteriores fueron el del
74 y el del 85. La mayoría de los programas usados hoy día se ajustan al
estándar del 85 (y así lo hace Tiny Cobol).
Las principales ventajas de Cobol sobre lenguajes competidores
(como C) eran la alta velocidad en entrada/salida que podía
conseguir, la aritmética de coma fija para contabilidad exacta,
y sintaxis similar al inglés que favorece la documentación y
la legibilidad. Esto lo hizo muy útil para trabajos con
procesamiento de grandes cantidades de datos como hacer el
seguimiendo de un millón de cuentas bancarias cada noche o
procesar pagos combinados. La sintaxis similar al inglés
hizo que los programas fueran fáciles de entender, así las
aplicaciones para los negocios podían ser facilmente modificadas
durante su tiempo de vida según iban cambiando las reglas del
negocio.
Cobol es significativamente diferente de lenguajes estructurados
en blocques como pueden ser Pascal, C y los descendientes de C. No
tiene bloques de estructuras y por lo tanto no hay forma de esconder
variables; hay más libertad a la hora de escribir el programa; los
números son más parecidos a la aritmética humana, por ejemplo: los
números de coma fija o los números decimales se usan generalmente
en lugar de la coma flotante; la entrada/salida está orientada a
registros, no orientada a flujo; la recursividad no está permitida
y el lenguaje en si mismo es mucho mayor porque no se emplean
librerías.
N.t.: Se ha empleado librerías en todo el documento, aunque la
traducción correcta es bibliotecas. Coloquialmente se traduce library de
esta forma, por lo que he optado por la claridad.
Se puede encontrar más información sobre Cobol en el FAQ de Cobol
en http://www.cobolreport.com/faqs/cobolfaq.htm
Sobre Tiny Cobol
Tradicionalmente la clase de gente que usa Software Libre no es
la clase de gente que usa Cobol. Esto es lo que el archivo de
jerga (en inglés, The Jargon File) dice sobre
el tema:
COBOL /koh'bol/ n.
[COmmon Business-Oriented Language] (Sinónimo de malvado.) Un débil,
prolijo y flácido lenguaje empleado por los operadores de tarjetas
perforadas para hacer cosas aburridas sin importancia en dinosaurios
mainframe. Los hackers creen que todos los programadores de COBOL son
amoldadores de código que no hay que tener en cuenta, y ningún hacker
que se respete a si mismo admitirá nunca haber aprendido este lenguaje.
Su propio nombre se pronuncia raramente sin expresiones rituales de
disgusto u horror. Una de estas expresiones, muy popular, es la famosa
observación de Edsger W. Dijkstra que dice: "El uso de COBOL lisia la
mente; su enseñanza deberia, por consiguiente, ser tomada como un
acto criminal".
De hecho se trata de una crítica bastante dura. Pero para contradecir
un poco esta postura hay muy buenas razones por las cuales Cobol
es relevante hoy día.
Hay alrededor de 100 billones de lineas de Cobol en uso hoy día.
Gran cantidad de desarrollo aun se realiza en Cobol - se
calcula que hay alrededor de un millón de desarrolldadores
en todo el mundo y que dos billones de linas de Cobol se
escriben cada año.
Hay una demanda considerable de programadores de Cobol para
trabajar en sistemas heredados.
En muchos cursos universitarios de enseña Cobol.
Usted podría discrepar con el autor del archivo de jerga.
Entonces, si Cobol es aun relevante hoy día, significa que
que será relevante para una buena cantidad de usuarios de
Software Libre, y eso quiere decir que es útil y muy
importante que exista un un compilador Libre de Cobol.
En este punto es cuando Tiny Cobol entra en escena. Su creación
está encabezada por Rildo Pragana y fue realizado en primer lugar
para el entorno restringido de DOS. Tiny Cobol está ahora disponible
para el entorno mucho más amigable para el programador, Linux, y
también ha avanzado un gran trecho.
La Competición
Cobol para
GCC, es un proyecto para desarrollar un compilador
de Cobol que se integrará con la Colección de Compiladores
de GNU, GCC. Aun no ha llegado a un estado usable.
Instalación
Obteniendo Tiny Cobol
Tiny Cobol solo funciona actualmente con Linux o FreeBSD en
la arquitectura i386. Ha sido compilado satisfactoriamente en
la plataforma Win32 empleando las herramientas de cygwin, pruebe
buscando en los archivos de la lista de distribución si está
interesado en elo (puede que hayan binarios disponibles). Parece
que no será posible compilarlo en otros sistemas, aunque le
invitamos a que lo intente.
N.t.: En el momento de esta traducción se dispone también de
un port para BeOS, y Win32 posee ya un port nativo gracias a MinGW.
Puede descargar Tiny Cobol desde su página web en Sourceforge:
http://tiny-cobol.sourceforge.net.
Están disponibles algunas versiones en RPM, pero la mayor
parte de la gente simplemente querrá descargar las versiones
comprimidas con GZIP. El tamaño del fichero es de menos de medio
megabyte.
Copies el fichero en algún lugar como /usr/local/src y
descomprímalo (el paquete creará su propio directorio en el
proceso). Entre en el directorio creado y ojee el fichero
README, y lea con detenimiento el fichero INSTALL. El fichero
INSTALL le dirá que librerías necesita; si no tiene esas librerías
entonces instálelas desde los paquetes de su distribución o
descárgelas de los sitios sugeridos. También verá como necesita
GCC instalado, si no lo tiene instalado no llegará demasiado lejos
así que instálelo ahora, nuevamente desde paquetes de su distribución
o descargándolo desde GNU.
Compilando e Instalando
Para preparar la compilación, vaya al directorio de Tiny Cobol
y escriba ./configure (hay varias opciones para emplear con
configure, consulte el fichero INSTALL para más detalles). Entonces
escriba `make' para compilar. No necesita ser root para realizar
este paso.
Ahora cambie de directorio, `cd test_suite' y escriba `make tests'.
Usted podrá ver un flujo de resultados según el recién compilado
compilador va trabajando con los programas de prueba. No todos
estos programas funcionarán, recuerde que este software se
encuentra en estado alfa, pero la mayoría deberían.
Ahora vaya al directorio original y escriba 'make install',
lo que compiará la librería, el compilador y el preprocesador
y otros pocos ficheros para que pasen a estar listos para usar.
Necesitará ser root para este paso. Los binarios se instalan
en /usr/local/bin, las librerias en /usr/local/lib y todos los
otros ficheros en /usr/local/share/htcobol, a no ser que se
especifique de otra forma con el programa configure.
¡Ayuda, no ha funcionado!
Si algo ha ido mal y no sabe como areglarlo, lea este documento
otra vez. Asegúrese de que tiene instalados todos los elementos
importantes, como GCC y las librerías necesarias (debería ser
posible conseguir ambas cosas independientemente de la
distribución de Linux que emplee). Después lea la página web de
Tiny Cobol en
http://tiny-cobol.sourceforge.net.
¿Qué aun no ha conseguido solucionarlo? Suscríbase a la lista
de correo de tiny-cobol-users y pregunte a las personas allí
apuntadas. Puede apuntarse en http://lists.sourceforge.net/mailman/listinfo/tiny-cobol-users
o enviando un correo electrónico a tiny-cobol-users-request@lists.sourceforge.net
con la palabra subscribe en el cuerpo del mensaje. La dirección para
enviar es tiny-cobol-users@lists.sourceforge.net.
También debería revisar los archivos por si su pregunta se hubiera
preguntado con anterioridad. Los archivos se encuentran en
http://lists.sourceforge.net/archives/tiny-cobol-users/.
También hay una lista de distribución en brasileño (portugués) en
http://listas.cipsga.org.br/cgi-bin/mailman/listinfo/cobol-br
y una página en brasileño en
http://br.tinycobol.org
.
Primer programa
Editores
Como en la mayoría de los lenguajes de programación, un programa en
Cobol es simplemente un fichero de texto, el cual usted edita
con su editor de textos favorito.
Afortunadamente, para evitar guerras religiosas, tanto Vim como
Emacs trabajan con Cobol.
Emacs
No hay un modo Cobol que venga como estándar para GNU Emacs.
En su lugar, descargue una copia de cobol.el del proyecto
Cobol para GCC. Usted puede descargar el fichero directamente
desde su CVS en
http://cvs.sourceforge.net/cgi-bin/cvsweb.cgi/gcc/cobol/cobol.el?cvsroot=CobolForGCC.
Abra Emacs y compile el fichero Lisp con M-x byte-compile-file.
Mueva el fochero cobol.elc resultante a
/usr/share/emacs/20.7/lisp/textmodes/ o el equivalente para
su instalación. Finalmente añada este código al fichero .emacs
(o .gnu-emacs en algunas distribuciones) en su directorio home:
(autoload 'cobol-mode "cobol" "COBOL Editing mode" t)
(setq auto-mode-alist
(append '(("\\.cpp$" . c++-mode)
("\\.hpp$" . c++-mode)
("\\.lsp$" . lisp-mode)
("\\.scm$" . scheme-mode)
("\\.pl$" . perl-mode)
("\\.cbl$" . cobol-mode)
("\\.CBL$" . cobol-mode)
("\\.COB$" . cobol-mode)
("\\.cob$" . cobol-mode)
("\\.CPY$" . cobol-mode)
("\\.cpy$" . cobol-mode)
) auto-mode-alist))
;; Auto font lock mode
(defvar font-lock-auto-mode-list
(list 'c-mode 'c++-mode 'c++-c-mode 'emacs-lisp-mode 'lisp-mode
'perl-mode 'scheme-mode 'scribe-mode 'shell-script-mode 'cobol-mode
'dired-mode)
"List of modes to always start in font-lock-mode")
(defvar font-lock-mode-keyword-alist
'((c++-c-mode . c-font-lock-keywords)
(perl-mode . perl-font-lock-keywords)
(cobol-mode . cobol-font-lock-keywords)
(dired-mode . dired-font-lock-keywords))
"Associations between modes and keywords")
(add-hook 'cobol-mode-hook
'(lambda ()
(set (make-local-variable 'dabbrev-case-fold-search) t)
(set (make-local-variable 'dabbrev-case-replace) t))
Abra un fichero Cobol en Emacs y escriba `M-x cobol-mode' y
`M-x font-lock-mode' para conseguir bonitos colores. Gracias al
equipo de Cobol para GCC por hacer este modo para Emacs.
VIM
Para una guía para trabajar con Cobol en Vim vaya a
http://dimensional.com/~sitaram/cobol/.
Otros
Hay gran cantidad de editores disponibles. Uno interesante es THE,
un editor que imita editores mainframe tales como Xedit.
Está disponible desde http://www.lightlink.com/hessling/
Primer programa
Aquí hay un Hola Mundo en Cobol:
* Hello World Program
* GPL Copyleft Jonathan Riddell 2001
IDENTIFICATION DIVISION.
PROGRAM-ID. hello.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.
DISPLAY "hello ," WITH NO ADVANCING
DISPLAY "world!"
STOP RUN.
La estructura del programa es bastante simple, cuatro secciones de
las cuales dos tienen contenido. El PROGRAM-ID es un nombre simple
para el programa, usted puede opcionalmente proporcionar otra
informacion en IDENTIFIATION DIVISION. ENVIRONMENT DIVISION puede
(opcionalmente ahora) contener información acerca su configuración,
tal como el compilador que está usando. DATA DIVISION contiene
declaraciones de variables que podríamos necesitar. Finalmente
PROCEDURE DIVISION contiene las instrucciones del propio programa.
Usted notará que hay gran cantidad de mayúsculas en el código.
Usar mayúsculas para las palabras reservadas de Cobol mantiene
el programa más compatible hacia atrás con otros compiladores
y asegura que las las palabras reservadas se mantienen diferenciadas
de los literales y variables. Con Tiny Cobol usted es perfectamente
libre de no usar mayúsculas, lo que hará que su Bloq Mayús no se
estropee tan rápido.
La otra cosa a notar es el espaciado. Debido a los viejos días de las
tarjetas perforadas, Cobol mantiene un control estricto de dónde
debe encontrarse el cada parte del código:
columna 1-6 : número de linea.
columna 7 : area de indicación,
asterisco para comentar lineas,
menos para continuación de lineas,
barra para saltar página en listados de
compilación, y en otro caso espacio.
columna 8-11 : Margen A, aquí comienza una división, sección,
identificadores de párrafo y algunos números de
nivel.
columna 12-72 : Margen B, para todo lo que no pertenece al Margen A.
columna 73-80 : área de identificación del programa.
Tiny Cobol no le fuerza a seguir este régimen, pero hacerlo
mantendrá sus programas más ordenados, evitará
que otros compiladores se quejen por el espaciado y hará feliz
al modo Cobol en Emacs. No obstante, Tiny Cobol insiste en
tener el asterisco que denota comentario en la primera o segunda
columna.
Ahora a por la compilación del programa. Guarde el código anterior
como hello.cob y escriba el siguiente comando:
htcobol hello
Hay posibilidades de que htcobol advierta de que $COBDIR no está
presente, en el caso de que haya instalado en el directorio por
defecto esto no debería ser un problema, pero si usted cambió el
directorio o si no desea ser molestado por estraños mensajes de
advertencia, entonces añada `export COBDIR=/usr/local/share/htcobol'
o similar a sus fichero .bashrc o .profile. También le dirá que
está procesando parámetros del compilador (literal: `Processing
compiler parameters'), eso es buena señal.
htcobol producirá los ficheros hello.lis y hello.s. hello.lis
es una conversión del código Cobol a algo más amigable para el
compilador. hello.s es código ensamblador, el equivalente al
código máquina en términos legibles por el ser humano.
Actualización: Tiny Cobol ya no necesita compilar
a código ensamblador y en su lugar compila directamente a
programa ejecutable. Por lo tanto, los siguientes dos pasos
pueden descartarse.
Si su shell no puede encontrar un programa llamado htcobol
en primer lugar compruebe que su variable $PATH le permite acceder
a /usr/local/bin/htcobol o a lugar donde usted lo haya instalado
(emplee echo $PATH). Si apunta bien, entonces vuelva a comprobar
que se configuró, compiló e instaló correctamente.
Si usted escribió mal el código anterior, habrá notado que
Tiny Cobol no es muy bueno todavía informando de errores. De
hecho, lo único que usted obtendrá es un fallo de segmentación
(literal: `Segmentation Fault'. Compruebe
otra vez que escrtibió todo correctamente, que no olvidó alguna
puntuación y que los asteriscos de los comentarios se encuentran
en la primera columna.
N.t.: El informe de errores ha evolucionado mucho desde que se
escribió el artículo original, esta información está anticuada.
El siguiente paso es compilar el fichero en ensamblador file.s
en código máquina. La orden para hacer esto es:
as -o hello.o hello.s
as forma parte del la Colección de Compiladores GNU, GCC,
y su usted no lo tiene instalado es porque tiene una
distribución muy divertida (teniendo en cuenta que usted
ya ha compilado Tiny Cobol). Consulte la documentación de su
distribución sobre como instalarlo.
hello.o es un fichero objeto, pero no un fichero ejecutable
porque no ha sido enlazado con las librerias necesarias.
Esta es la orden final:
gcc -o hello hello.o -lhtcobol -lm
Si usted ha llegado tan lejos, probablemente no tenga ningún
problema con esta parte, pero si gcc no ha encontrado las librerías
libhtcobol o libm entonces usted tendría que actualizar la
base de datos de las librerias del sistema con la orden ldconfig.
Finalmente tenemos el programa funcional que puede ser ejecutado con:
./hello
Y debería obtener la siguiente salida:
Hello, world!
La cual era bastante predecible. Si observa el código del
programa debería ser obvio lo que hace DISPLAY y que hace
WITH NO ADVANCING (imprime sin un salto de linea).
Programación adicional
Otro programa
Aquí hay un programa ligeramente más complicado, cópielo en un fichero
y grábelo como addition.cob.
IDENTIFICATION DIVISION.
PROGRAM-ID. addition.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 myvar PIC 999 .
77 a PIC 99V999 VALUE 1.777 .
77 b PIC 99V99 VALUE ZERO .
77 c PIC 9V9 VALUE 5.5 .
77 d PIC 9v9 VALUE 5.5 .
PROCEDURE DIVISION.
DISPLAY "Please enter a number"
ACCEPT myvar
DISPLAY "That number was ", myvar
ADD a TO b ROUNDED
DISPLAY "b is ", b
ADD c TO d
DISPLAY "d is ", d
STOP RUN.
Usted puede compilarlo con los mismos pasos que empleó para
hello.cob, si encuentra algún fallo de segmentación (literal:
`Segmentation Fault', compruebe el código
del programa antes de abandonar.
N.t.: Se refiere a errores de compilación.
Si usted es novato con Cobol, hay un poco que entender.
En primer lugar tenemos algunas variblas declaradas en
WORKING-STORAGE SECTION de DATA DIVISION. Cobol necesita que
todas las variables se declaren de esta forma. Las otras secciones
DATA DIVISION tratan con ficheros y el enlazado.
Aquí todas las declaraciones de variables empiezan por `77'. Esto
significa que la variable seencuentra en el nivel 77: no tiene
estructura interna y no hay una relación definida con otra variable,
no forma parte de un registro (o lo que C llama estructuras).
El nombre de la primera variable es myvar; los nombres de las
variables pueden estar tanto en mayúsculas como en minúsculas, pero
con Tiny Cobol debe ser consistente en todo su programa.
La claúsula PIC especifica el tipo de variable. Usando nueves
se indica que se trata de una variable decimal y empleando 3
nueves decimos que la variable puede tomar los valores desde 0
a 999. Se puede poner una `S' delante de los nueves para que
la variable sea con signo. Una `V' es la declaración PIC significa
que la variable tiene un punto decimal asumido en la posición de V.
Para variables grandes puede escribir 9(15), lo que describe a una
variable que posee 15 posiciones.
Empleando Aes (varias A) en lugar de nueves define una variable
alfabética, y empleando Xes (varias X) se define una variable
alfanumérica. Finalmente un valor inicial se puede asignar a la
variable empleando VALUE.
Los programadores de Cobol sin experiencia pueden estar
preguntándose como se indica un final de sentencia. Los finales
de bloque se marcan con un punto y aparte, pero las sentencias no
se marcan en absoluto, en su lugar el compilador de Cobol reconoce
que una nueva sentencia comienza cuando lee una de las diferentes
palabras reservadas de Cobol. Los finales de linea no son importantes
en Cobol. Otra cosa a señalar en el código anterior son las comas
añadidas. Las comas son completamete opcionales en Cobol, puede
ponerlas en cualquier punto que desee o en ningún sitio y no
hay ninguna diferencia. Úselas con mesura y conseguirá un código
mucho más claro.
Cuando se ejecuta el programa debería preguntar por un número,
y entonces mostrar ese número junto a los dos cálculos que
realiza. El número no puede ser mayor de los 3 espacios reservados
para él, sino tan solo los tres últimos caracteres se cogen.
Si se proporcionan menos de tres caracteres, se completa con ceros
a la izquierda. Caracteres no numéricos mostrarán código para
corregir errores.
La suma de las variables a y b debería funcionar bien, aunque
notará que la respuesta se redondea tal y como pedimos.
La suma de c y de no se llevará a cabo debido a que la respuesta es
demasiado grande para caber en la variable d. Cambie c a, digamos,
1.5 y todo funcionará correctamente.
Make
Actualización: Tiny Cobol ahora compila directamente
a un programa ejecutable, en lugar de código ensamblador. Mucho de
lo que sigue es por lo tanto obsoleto (aunque los conceptos
deberían ser útiles).
Ya debería empezar a estar harto de la rutina de htconol, as,
gcc. Bien, existe una forma mejor, make. Make toma como entrada
un fichero llamado Makefile y usa las instruciones en él para
realizar el trabajo sobre lo que necesita ser compilado en un
sencillo paso. También comprueba que fichero necesita ser compilado
antes de hacer nada, si ninguna de las dependencias del programa han
cambiado desde la última compilación, no es necesario hacer nada.
Las reglas de Makefile tienen la siguiente forma:
objetivo: dependencias
orden
El objetivo (el cual debe ser escrito en la primera columna) es
el fichero que quiere conseguir. Las dependencias son los ficheros
que son necesarios para conseguir el objetivo. La orden (que debe
estar en una segunda linea y precedida de un TAB) es la orden que
normalmente se escribe en el shell para generar el objetivo.
Aquí podemos ver el Makefile para addition:
#makefile simple para un programa cobol en un solo fichero
addition:addition.o
gcc -o addition addition.o -lhtcobol -lm
addition.o:addition.s
as -o addition addition.s
addition.s:addition.cob
htcobol addition
Guárdelo como Makefile en el mismo directorio de addition.cob
y escriba make. Debería compilar, ensamblar y enlazar por usted.
Por defecto make interpretará la primera regla en el fichero.
Esta regla es para crear el binario addition, pero este último
depende de addition.o, por lo que debe hacerse primero. addition.o
depende de addition.s, así que esa es la primera regla que make
ejecuta. Ahora se puede crear addition.o y finalmente addition.o
está actualizado y permite crear addition. Si usted intenta escribir
make otra vez, make no hará nada porque ninguno de los ficheros ha
cambiado y no hay necesidad de hacer nada (make mira la fecha de los
ficheros para determinarlo). Cambie addition.cob ligeramente y
ejecute run, y el proceso se lleva a cabo otra vez.
Make avanzado
Pero el Makefile anterior tiene un problema: ¿qué ocurre si
queremos adaptarlo para trabajar con otro programa? Hay algunos
cuantos 'addition' a cambiar, y con un programa más complicado
eso podría ser un trabajo importante. Afortunadamente make tiene
bastantes buenos trucos en la manga. Aquí tiene un makefile
más avanzado:
#makefile para un programa cobol de un solo fichero
PROGRAM := addition
LIBS := -lhtcobol -lm
OBJECTS := $(PROGRAM).o
$(PROGRAM):$(OBJECTS)
gcc -o $(PROGRAM) $(OBJECTS) $(LIBS)
#regla para cualquier fichero acabando en .o
#depende de el mismo prefijo con .s
# $@ es el objetivo
%.o:%.s
as -o $@ $<
%.s:%.cob
htcobol $(PROGRAM)
El Makefile comienza con algunas variable. PROGRAM es el nombre
del programa que estamos haciendo. Se puede observar que se usa
en la primera regla (precedido de un signo dolar y delimitado
por paréntesis). LIBS contiene las librerias que necesitamos para
compilar el programa. OBJECTS contiene todos los nombres de objeto
necesarios, en este caso es solo uno y tiene el mismo nombre que
el programa pero con una .o al final, y así es como se ha declarado.
La segunda regla se ajusta a cualquier objetivo acabado en .o (%.o)
y requiere el mismo fichero con un sufijo .s (%.s es una dependencia).
La variable automática $@ se ajusta al nombre del objetivo y
$< se ajusta a la primera dependencia. A partir de este punto
usted ya debería poder seguir los pasos hasta el objetivo final.
Si quiere adaptar este Makefile a otro programa Cobol,
todo lo que tiene que hacer es cambiar el valor de la variable
$PROGRAM.
El final
Esto es todo por ahora. Probablemente debería haber aquí otro
capítulo con un programa que usara más de un fichero y el
preprocesador, pero eso por hoy queda más allá de mis conocimientos.
Quizás también falten algunos enlaces a recursos sobre Cobol.
Jonathan Riddell, jr@jriddell.org
Traducción por Juan J. Martínez, reidrac@usebox.net