Introducción Al Uso De IRAF


  1. Introducción

  2. IRAF y CL

  3. Iniciando IRAF
    3.1 Paquetes y tareas
    3.2 Algunos comandos
    3.3 Fin de ejecución

  4. Recomendaciones Básicas
    4.1 Ejecución de tareas
    4.2 Datos de entrada y salida a tareas
    4.3 Manipulación de los parámetros de las tareas

  5. Medio Ambiente
    5.1 Variables del sistema
    5.2 Manejo de archivos y directorios

  6. Imágenes
    6.1 Definición y tipos
    6.2 Imágenes en cinta magnética
    6.3 Operaciones con imágenes

  7. Tópicos de CL
    7.1 Registro de comandos
    7.2 Mecanismo histórico
    7.3 Comandos de Unix cómo tareas
    7.4 Tareas en Background y colas
    7.5 Tópicos avanzados

1. Introducción

Estas páginas son para familiarizar al nuevo usuario en el uso del sistema
IRAF (Image Reduction and Analysis Facility), usado para la reducción y análisis de imágenes astronómicas.

Aquí solamente se verán aspectos generales para usar los comandos, manipular sus argumentos, usar las cintas magnéticas e impresoras del área, iteración con Unix, etc. Cabe aclarar que esto es solo una guía rápida y no pretende sustituir los manuales.

Para la parte enfocada al procesado de las imágenes se recomienda ver los manuales del sistema IRAF y los reportes técnicos que se han ido desarrollando por los propios usuarios.

Se usara la siguiente notación: Para indicar el mensaje de la maquina en espera de un comando (prompt) se usa letra negrita, para indicar lo que el usuario debe de teclear se usa letra itálica negrita y para mostrar lo que despliegue el comando se usa itálica simple.


2. IRAF y CL

IRAF es un sistema para analizar imágenes y datos en general, pero se usa particularmente para imágenes astronómicas. Sus diversas funciones son enfocadas a las características específicas de un instrumento y otras funciones son de carácter general. El sistema consiste de cuatro piezas básicas que son:

Lenguaje de comandos.      - (CL, interfaz del usuario con el sistema)
Paquetes de aplicación.    - (Algoritmos para analizar datos reales)
Sistema operativo virtual. - (VOS Interfaz del sistema huésped)
CL (Command Language) - La función básica de cl es proporcionar una interfaz entre el usuario y todos los paquetes de aplicación de IRAF. Muchos de los programas en los paquetes son funciones estándar para análisis de datos, de los cuales la mayoría son iterativos. La ejecución se controla con parámetros que el usuario puede modificar.

3. Iniciado IRAF

Estando en una estación de trabajo Sun, bajo el ambiente de ventanas OpenWindows se llama al menú general o de fondo y se selecciona el submenú [Iraf] y se ejecuta ya sea "saoimage" o "ximtool". También se activa con el mismo submenú un "xterm" o un "xgterm", dependiendo de la configuración que se tenga por default (ver contenido del archivo "login.cl" que se encuentra en su HOME), y esa ventana automáticamente ejecutará el interprete de comandos de IRAF, es decir cl.

Si se esta en otro ambiente de ventanas, se puede hacer esto mismo desde una ventana de comandos Unix y correr dichos programas en background, además del interprete de comandos cl.

Y en la ventana de comandos aparecerá lo siguiente:


NOAO SUN/IRAF Revision 2.10.4-p2 Thu May 16 20:31:31 MST 1996
This is the EXPORT version of Sun/IRAF V2.10.4 for Solaris 2.5.
Welcome to the IRAF.  To . . .

   dataio.          language.     plot.        stsdas.
   dbms.            lists.        proto.       system.
   hst_pipeline.    noao.         rvsao.       tables.
   images.          obsolete.	  softools.    utilities.
cl>
3.1 Paquetes y tareas
Un paquete es un conjunto de tareas o comandos que están lógicamente conectados. Para cargar o tener acceso a un paquete únicamente se necesita teclear su nombre y dar [Return].

Para cargar o tener acceso a las tareas del paquete plot se teclea esa palabra y mostrará las tareas del paquete:

cl> plot
calcomp      gkidir	. . .
contour	. . .
. . .
Al ejecutar cl, automáticamente carga varios paquetes y con el comando siguiente podemos saber que paquetes ya están cargados:
cl> package
plot
images
user
system
lists
clpackage
language
noao
utilities
proto
tv
dataio 
cl distingue entre las letras mayúsculas y minúsculas para el nombre de un comando o los argumentos.

Una lista de todos los paquetes y sus respectivas tareas se obtiene al teclear "??" y con "?" se lista únicamente los nombres de las tareas del paquete activo o con "?nombre-del_paquete" listará las tareas del paquete especificado, siempre que haya sido cargado previamente. Los nombres de los paquetes y tareas pueden darse de forma abreviada (los primeros tres o cuatro caracteres, evitando la ambigüedad). Si la abreviatura no es única se tendrá un mensaje de error.

Para saber en que paquete se encuentra una tarea, el comando help proporciona esta información. Por ejemplo, si deseamos saber donde esta la tarea precess, se debe de teclear:

cl> help precess
PRECESS (Oct87)               noao.astutil              PRECESS(Oct87)
NAME
	precess -- general astronomical coordinate  precession
USAGE
. . .
En la parte superior central de la ayuda aparece la ruta de la tarea, que en este caso será noao.astutil. Para ejecutar la tarea precess, se deberá cargar este paquete tecleando:
cl> astutíl
airmass         asttimes	. . .
asthedit        ccdtime   	. . .
. . .
as>
Notar que en nuestro caso la tarea noaoya se encuentra cargada, de no ser así, se tendría que cargar antes del paquete astutil.

3.2 Algunos comandos
El comando help con argumentos da la ayuda de un paquete o tarea, según sea el caso, si se da sin argumentos da la ayuda del paquete activo:

cl> help
	dataio - Data format conversion package (RFITS, etc.)
	  dbms - Database management . . .
	images - General . . .
. . .

cl> help page PAGE (Nov86) system PAGE (Nov86) NAME page -- display a file or files one . . . . . .

Para desplegar el contenido de un archivo de texto, se ejecuta:
cl> page logín.cl
# LOGIN.CL -- User login file for the IRAF command language.
# Identify login.cl version (checked in images.cl).
if (defpar ("logver"))
	logver = "IRAF V2.10 . . .
set	home	= "/home/moises/"
set	imdir	= "/home/moises/pix/"
. . .
La tarea page despliega el contenido por pantallas, con [Return] despliega la linea siguiente, con la tecla "espacio en blanco" despliega la siguiente pantalla y con "q" termina.

Para obtener la lista de archivos en el directorio corriente se da:

cl> dir
HS.SSOL.GEN	bin 		bin.ssun	local	pkg
IS.PORT.GEN	bin.generic	dev	. . .
. . . 
La impresión de archivos de texto se realiza con el siguiente comando:
cl> lprint login.cl
Y Para conocer lo que existe en la cola de impresión se da:
cl>!lpstat
lw-5487		tonatiuh!moises		2892	Jul 18 16:51 on lw
Con el número del trabajo, se puede eliminar de la cola de impresión de la manera siguiente:
cl> !cancel lw-5487
request "lw-5487" cancelled
3.3 Fin de ejecución
Para terminar el uso de un paquete se teclea bye, regresando al paquete previo. Ejemplo:
as> bye
	dataio.	language.	. . .
	dbms.	. . .
	. . . 
cl>
Para terminar el uso de IRAF se teclea logout desde donde este el usuario:
no> logout
Si se uso OpenWindows la ventana se eliminara automáticamente, en caso contrario se tendrá el prompt del sistema operativo.
moises@tonatiuh%

4. Recomendaciones Básicas

4.1 Ejecución de la tarea
Al ejecutar una tarea, se puede dar en la misma línea los parámetros y el redireccionamiento. Los parámetros de la tarea que no se definieron y no son de default, al momento de la ejecución el sistema pedirá se teclee su valor.

La forma general es:

cl> tarea  [ expresión ... ]  [ param=valor ]  [ < archivo   ]
			      [ param+/- ]     [ >   archivo ]
					       [ >>  archivo ]
					       [ >&  archivo ]
					       [ >>& archivo ]
es decir:
   tarea       - El nombre de la tarea.
   expresión   - Una lista opcional de argumentos separados por espacios.
   param=valor - Palabra llave y su valor  - o -
   param+/-    - utilizándolo como switch.
Estos son los parámetros de la tarea. Y el redireccionamiento se entiende como:
   <   - La entrada de datos desde un archivo.
   >   - La salida a un archivo.
   >>  - Anexar la salida al archivo.
   >&  - Enviar la salida estándar y la de error a un archivo.
   >>& - Anexar la salida estándar y la de error a un archivo.
Para continuar una lista de argumentos demasiado larga se teclea "\" al final de la línea.
Ejemplo:
pl> graph pix[*,51],pix[*,10],pix[*,15] po+ marker=circle \
>>>  xlabel=columna ylabel=intensidad \
>>>  title="lineas 5,10 y 15"
las comillas se usan únicamente cuando la cadena de caracteres lleva espacio.

Se pueden ejecutar varias tareas sobre la misma línea de comando anexando el símbolo ";", por ejemplo:

cl> clear; dir; beep
Si la secuencia es muy grande y no cabe en una línea se usa el símbolo "{" para iniciar y símbolo "}" para terminar la secuencia. Ejemplo:
cl> {
>>> clear
>>> directory
>>> beep
>>> }
a esto se le nombra declaración compuesta, y se ejecuta como una unidad simple.

4.2 Datos de entrada y salida a tareas
Cuando alguna tarea requiere de varias líneas como argumentos y estos se dan por el teclado, para indicar que es toda la información se teclea [Ctrl][Z] que equivale a un "eof (end of file)". También dichos parámetros pueden darse desde un archivo y no hay necesidad del "eof".

Por ejemplo, para ejecutar la tarea precess se edita el archivo "coordl95O.txt" con el editor:

as> edit coordl950.txt
se pone en este archivo las líneas de ascensión recta y declinación, usando notación decimal o sexagésima (12.5 -o- 12:30:04.2), y los los resultados pueden enviarse a un archivo.
as> precess coordl950.txt > coordl984.txt
Cuando son muchas las coordenadas se puede ejecutar la tarea en background usando el símbolo "&". Ejemplo:
as> precess coordl950.txt > coord.txt &
Además el resultado de un comando puede ser la entrada para el siguiente usando "|" (pipe). Ejemplo:
cl> help rfits | lprint 
4.3 Manipulación de los parámetros de la tarea
Cada tarea por lo general tiene parámetros que se pueden listar con la tarea lparam. Ejemplo:
cl> lparam delete 
	file 		=	list of files to be deleted
	go_ahead 	=	delete or not?
	(verify		= no)	verify operation before deleting each file?
	(default-action	= yes)	default delete action for verify query
	(all versions	= yes)	delete all versions of a file?
	(sub files	= yes)	delete any subfiles of a file?
	(mode		= ql)
Los parámetros que no tienen paréntesis se llaman parámetros posicionales y los que están entre paréntesis se llaman parámetros ocultos. Si los parámetros posicionales no se encuentran, el sistema pregunta por ellos al momento de ejecutar la tarea.

cl se encarga de grabar los parámetros de las tareas usadas en el subdirectorio uparm, y los actualiza cuando el usuario los modifica. Si los parámetros son dados en la línea de comando, sus valores no son actualizados.

Para restaurar los valores de default de una tarea o un paquete se utiliza el siguiente comando:

cl> unlearn delete
cl> unlearn system
Para restaurar todos los valores de default fácilmente, se borran archivos del subdirectorio uparm:
cl> delete uparm$*.par
La edición de los parámetros es un paso muy importante en toda tarea IRAF, ya que de dichos parámetros dependen los resultados de la reducción y análisis de las imágenes. Para editarlos se usa la siguiente tarea:
cl> eparam delete
IRAF
Image Reduction and Analysis Facility
PACKAGE = system TASK = delete files = list of files to be delet (verify = . . . . . .
el cursor se posiciona por medio de las flechas en el campo que se desee modificar, y aceptará la modificación después dar [Return]. Para terminar se da [Ctrl][Z] o [Ctrl][D]. Y para interrumpir la edición se da [Ctrl][C].


5. Medio Ambiente

Parte de las facilidades de cl, es la conexión con el sistema operativo huésped. Así, para ejecutar comandos de UNIX se usa el prefijo "!". Ejemplo:

cl> !pwd
/home/moises
cl>
5.1 Variables del sistema
cl mantiene una tabla de variables de medio ambiente que afectan las operaciones de todos las tareas IRAF, y se usan para definir nombres lógicos de directorios, para asociar nombres de dispositivo lógicos con dispositivos físicos y para proveer control de funciones de bajo nivel del sistema de archivos de Entrada/Salida. Se puede definir nuevas variables o redefinir viejas variables con set, para ver las ya definidas se usa el comando sin argumentos:
cl> set | page
twodspec=noao$twodspec/
surfphot=noao$surfphot/
...
El valor individual de una variable de medio ambiente puede ser desplegado con show:
cl> show printer 
lw
5.2 Manejo de archivos y directorios
cl permite el uso de caracteres especiales para el manejo óptimo de nombres de archivos, por ejemplo, para listar todos los archivos con extensión "cl" se da:
cl> dir *.cl
logfile.cl		login.cl
si tenemos un grupo de archivos donde sus nombres varían por una letra, se puede sustituir la posición de esa letra con "?":
cl> dir igual?.otros
iguall.otros       igual2.otros       igual3.otros       . . .
. . .
o se puede especificar un rango de caracteres con [inicio-rango]
cl> dir igual[1-4].otros
iguall.otros      igual2.otros      igual3.otros      igual4.otros
cuando se pone más de un archivo en un comando, estos se separan con comas:
cl> del filel,file2,file3
con la tarea files se pueden generar una lista de nombres de archivos:
cl> files *.otros > todos
y esta lista puede ser accesada con "@", como parámetros de entrada en la tarea.
cl> dir @todos
igual1.otros      igual2.otros      . . .
Existen dos operadores de caracteres, el de concatenación "||" y el de substitución "%". Por ejemplo, para producir una lista de archivos cuyo nombre termina con "_o" se da:
cl> files lib$*.com||_o
lib$fio-o.com
lib$prc_o.com
O cambiar la extensión de "com" a "dat", se da:
cl> files líb$*.%com%dat%
lib$fio.dat
lib$prc.dat
Para conocer el subdirectorio donde se encuentra el usuario, se teclea:
cl> path
tonatiuh!/home/moises/
Para crear un directorio se usa mkdir y para cambiarse de directorio se usa cd, con la misma idea que en Unix.


6. IMÁGENES

6.1 Definición y tipos
Una imagen IRAF es un arreglo de datos n-dimensional con un encabezado que describe y define los atributos físicos de la imagen. Aunque se pueden soportar hasta 7 dimensiones, en la práctica muchas imágenes son de una o dos, y muchos programas son hechos para operar en este número de dimensiones. El tipo de dato usado para almacenar un pixel, depende de la aplicación y la variedad de selecciones previas.

Una imagen IRAF se almacena en disco en dos archivos separados, uno que contiene el encabezado de la imagen y se encuentra en el directorio de trabajo y otro que contiene los pixeles y no necesariamente se encuentra en ese mismo directorio. El encabezado de la imagen para IRAF es muy importante, porque proporciona la información necesaria para su procesamiento (tiempo de exposición, ascensión recta, etc.) y da al usuario y al sistema de reducción la información de los análisis que ya se han realizado con ella.

Hay dos formatos de almacenamiento que soporta IRAF y son: OIF (Old Iraf Format) y el STF (SDAS group data Format). El OIF tiene extensión "imh" para el encabezado de la imagen y "pix" para el de los pixeles. El STF tiene tres caracteres para la extensión, donde el último carácter debe de ser "h" excepto "imh", por ejemplo "hhh". El sistema IRAF es distribuido con el formato estándar OIF, así, al copiar una imagen no es necesario especificar el formato. Pero si se pone una extensión diferente con terminación "h", entonces creará la imagen con formato STF. La variable de medio ambiente que contiene el tipo de formato se llama "IMTYPET", si esta variable no está definida, entonces tomará como default el formato OIF.

6.2 Imágenes en cinta magnética
Generalmente las imágenes que llegan del observatorio de Cananea o de otro centro de observación, están en formato FITS. Cómo se mencionó en el párrafo anterior, IRAF maneja su propio formato para la reducción y análisis de las imágenes.

El paquete dataio, tiene las tareas rfits que transcribe de FITS a OIF y wfits que transcribe de OIF a FITS. Para ejecutar estas tarea, se deben de realizar unos pasos previos; primero se debe de asignar la unidad de cinta magnética, ejecutar unos comandos de reconocimiento, después leer o escribir la información según sea el caso y por último, deshabilitar la unidad de cinta. Este último paso es muy importante, puesto que el no hacerlo, provoca que otro usuario le sea imposible usar dicha unidad.

Ejemplo:

cl> dataio		#Carga el paquete, si no está cargado.
da> alloc mta-dat		#Habilita la unidad de cinta magnética
da> devstatus mta-dat	#Proporciona el estado de la unidad
#Magtape unit mta-dat status Mon 11:32:08 21-Jul-97 user moises
file = -l
record = -l
nfiles = 0
tapeused = 0 Kb
pflags = 0
Para leer las imágenes 1,2,3 y 7 de la cinta magnética dar:
da> rfits mta-dat 1-3,7 img
File: img001 m51 B 6OOs Size=512x512
File: img002 m51 B 6OOs Size=512x512
File: img003 m51 B 6OOs Size=512x512
File: img007 m51 B 6OOs Size=512x512
Para escribir a cinta magnética nueva o sin información dar:
da> wfits img*.imh mta-dat newtape+
File 1: img001.imh -> mta-dat[1] m51 B 6OOs Size=512x512
	   pixtype=short bitpix=16 blkfac=10 scaling=none
	   2 Header 183 Data logical (2880 bytes) records written
File 2: img002.imh -> mta-dat[EOT] m51 B 6OOs Size=512x512
	   pixtype=short bitpix=16 blkfac=10 scaling=none
	   2 Header 183 Data logical (2880 bytes) records written
File 3: img003.imh -> mta-dat[EOT] m51 B 6OOs Size=512x512
	   pixtype=short bitpix=16 blkfac=10 scaling=none
	   2 Header 183 Data logical (2880 bytes) records written
File 4: img007.imh -> mta-dat[EOT] m51 B 6OOs Size=512x512
	   pixtype=short bitpix=16 blkfac=10 scaling=none
	   2 Header 183 Data logical (2880 bytes) records written
Para anexar información a la cinta magnética usada dar:
da> wfits ho*.imh mta-dat newtape- 
File 1: ho001.imh -> mta-dat[EOT] m51 B 6OOs Size=512x512
	   pixtype=short bitpix=16 blkfac=10 scaling=none
	   2 Header 183 Data logical (2880 bytes) records written
File 2: ho002.imh -> mta-dat[EOT] m51 B 6OOs Size=512x512
	   pixtype=short bitpix=16 blkfac=10 scaling=none
	   2 Header 183 Data logical (2880 bytes) records written
. . .
Para finalizar (ES MUY IMPORTANTE!!!) dar:
da> dealloc mta-dat
6.3 Operaciones con imágenes
Las imágenes pueden ser usadas en su totalidad o por secciones, para realizarlo se utiliza la siguiente notación matricial:
	Sección                        Se refiere a:

imagen Toda la imagen imagen[] Toda la imagen imagen[i,j] El pixel (i,j) imagen[*,*] Toda la imagen en dos dimensiones imagen[*,-*] Toma el eje Y en orden inverso imagen[*,*,b] La banda "b" de la imagen en 3 dimensiones imagen[*,*:s] Submuestra en el eje Y, tomándolos de S en S imagen[*,1] La línea 1 de la imagen imagen[c,*] La columna "c" de la imagen imagen[i1:i2,j1:j2] Subrango de la imagen imagen[i1:i2:sx,j1:j2:sy] Subrango con submuestra
y combinaciones de ellas.
Comó ejercicio realice los siguiente ejemplos con la imagen "pix" que se encuentra en el subdirectorio "dev$":
pl> graph dev$pix[*,10]		#Gráfica de la línea 10
pl> contour dev$pix[*:16,*:16]	#Gráfica de contornos con submuestra de 16, en ambos ejes
Para visualizar una imagen en dos dimensiones se usa la tarea display, dando el nombre de la imagen y el número del frame. Ejemplo:
cl> display dev$pix 1
El tamaño de esta ventana puede ser modificada con las predefiniciones del archivo imtoolrc, su contenido se despliega de la manera siguiente:
cl> page dev$imtoolrc
# IMTOOLRC -- Predefined frame buffer configuration . . .
. . .
# Format: configno   nframes width   height
		1  	2	512	512	# imtl:imt512
		2  	2	800	800	# imt2:imt800
		3  	2	1024	1024	# imt3:imt1024
. . .
Para definir el nuevo tamaño de despliegue se realizan estos pasos:
cl> set stdimage = imt800
cl> display dev$pix 1
La tarea automáticamente define el tamaño de la imágen dentro de la ventana de despliegue.

7. Tópicos De CL

7.1 Registro de comandos
cl tiene la opción de registrar todos los comandos usados de una sesión de trabajo, siempre y cuando el parámetro keeplog sea verdadero.

cl> keeplog = yes
Por default el nombre del archivo donde deposita la información es logfile.cl .Y se puede cambiar el nombre de la manera siguiente:
cl> logfile = "nombre.log"
Estos dos parámetros "keeplog" y "logfile" son parámetros de cl, dado que cl es una tarea.
Con el siguiente comando se puede tener más información sobre esto:
cl> help language.cl
CL (Jun86)			language		CL (Jun86)
NAME
	cl	-- call the CL as a task
	clbye	-- like cl(), but closes current script file too
PARAMETERS
...
7.2 Mecanismo histórico
cl tiene un mecanismo para recordar los comandos ejecutados. Así con la tarea history se despliegan los últimos quince comandos:
cl> history
. . .
88 set | page
89 show printer
Y dando un numero como argumento, muestra los últimos n-comandos.
cl> history 2
102 help graph | lprint
103 history 2
Se pueden llamar a comandos individuales de la siguiente forma:
cl> ^101		#Llama al comando de la posición 101
cl> ehist -3		#Al tercer comando previo
cl> ^ur			#Al comando que Inicie con "ur"
cl> ehíst ?mark?	#Al comando que contenga la cadena "mark"
o cambiar argumentos de comandos previos con:
	^^  -  Hace referencia al primer argumento del comando
	^$  -  Al último argumento del comando
	^*  -  A todos los argumentos del comando
	^O  -  Al nombre de la tarea
	^N  -  Al argumento N
Ejemplo:
cl> dir lib$*.h,home$login.cl
lib$chars.h	. . .
lib$clio.h	. . .

cl> lprint ^^ lprint lib$*.h,home$login.cl

Una de las facilidades del mecanismo histórico, es la habilidad para repetir un comando. Ejemplo:
ut> urand 200 2 | graph po+
 . . . 
ut> ^^title = '200 random numbers'
urand 200 2 | graph po+ title = '200 random numbers'
en este caso "^^" se refiere al último comando ejecutado. La notación no es ambigua, pues el símbolo "^^" aparece al inicio de la línea del comando. Y no hay confusión con el uso de "^^" para referirse al primer argumento.

7.3 Comandos de Unix como tareas
Podemos definir comandos de UNIX como tareas de cl, utilizando el comando task. En este ejemplo se declaran los comandos de Unix mail y grep como tareas de cl:

cl> task $mail $grep = $foreign
Puedes ver en el archivo login.cl ejemplos de este tipo de definición de comandos Unix como tareas.

7.4 Tareas en background y colas
Cuando existen tareas que consumen mucho tiempo, estas pueden ejecutarse en background con el símbolo "&". Por ejemplo:

pl> contour m92 dev=stdplot &
[3]
pl>
el valor numérico [n], (donde n esta entre 3 y 6, dependiendo de la capacidad de la máquina), es una identificación que el sistema le asigna a la tarea y uno de sus usos es para notificar que el comando terminó su ejecución.
pl> [3] done
pl>
Si el proceso en background encuentra necesaria la entrada de parámetros entonces manda el siguiente mensaje:
pl> [3] stopped waiting for parameter input
cuando el usuario crea conveniente dar los parámetros, lo podrá hacer con:
pl> service 3
se puede asignar una prioridad al proceso, indicándolo en la línea del comando. Por ejemplo:
cl> bigjob &4
[5]
indicará que la tarea "bigjob" tendrá una prioridad de nivel cuatro. También se puede usar la prioridad relativa con "&-1", donde esto expresa que se dará una prioridad uno menos que la prioridad corriente de cl.

IRAF soporta tres colas lógicas de trabajo en batch que son:

    FAST    -  Para trabajos cortos y de alta prioridad.
    BATCH   -  Para trabajos medianos.
    SLOW    -  Para trabajos grandes que necesitan mucho tiempo de ejecución.
Para asignar la tarea a alguna cola, se da el nombre de esta al final.
cl> bigjob &fast
En ocasiones es necesario esperar a que termine una tarea de background para poder utilizar sus resultados en procesos subsecuentes, para esto se utiliza el comando:
cl> wait 3; beep
al cual se le indica la tarea deseada usando el valor que el sistema le asigno y que al término de su ejecución mande un sonido de alerta.

Para conocer el estado de todas las tareas en background se usa el comando:

cl>  jobs
[1] 0:12 Done		procesos
[2] 0:44 Running	proceso2
[3] 0:31 +Running	proceso3
Una tarea que se encuentre corriendo iterativamente, se puede abortar con [Ctrl][C]. Para las tareas en background, se utiliza el comando kill y el número dado por cl cuando se ejecuta la tarea en esa modalidad:
cl> kill 3
[3] exit 503
7.5 Tópicos avanzados
cl por default trabaja en modo comando, pero puede ser usado en modo programación, puesto que tiene operadores, control de proposiciones, funciones matemáticas, definición de variables y declaración de arreglos, etc. es decir, los elementos de un lenguaje de programación. Y dado que pueden construirse programas con cl estos pueden ser definidos como tareas. Un ejemplo sencillo es el siguiente. Primero se edita el archivo que contiene las proposiciones de cl y se escribe:
cl> edit taskname.cl
{
print('Hello, world !!')
}
y se identifica como tarea por medio de un nombre de la manera siguiente:
cl> task $my_new_task = taskname.cl
de esta manera tenemos definida una nueva tarea.

Para más información de este último punto, se sugiere ver el manual de IRAF llamado, "User Handbook Volume lA".