Tutoriales Básicos - Editor ISPF
Escrito por Javier
Esta entrada está dedicada al editor ISPF. Este editor sirve para modificar la información
que contienen los dataset. Aunque es un editor antiguo, es muy potente y permite realizar
muchas tareas utilizando el teclado. A continuación explico algunos de los comandos que
más utilizo.
Para entender bien todas las opciones que tenemos podemos dividir los comandos en varios
tipos: comandos de línea, comandos primarios y comandos primarios + comandos de línea.
Entramos en algún dataset o miembro en modo edición.
Si el miembro no tiene datos, encontraremos lo siguiente.
Pulsaremos una vez Intro, para que se quiten todas las líneas.
Comandos de línea.
Son aquellos comandos que se utilizarán a nivel de línea. Estos comandos sólo afectarán a
la línea o líneas de texto que elijamos. En caso de que afecten a varias líneas, se les llama
comandos de bloque.
Un ejemplo de comando de línea que sólo afecta a una línea, y dónde debemos usarlo, es el
siguiente. Nos fijamos que estos comandos se escriben en la parte izquierda y afectaría a la
línea donde lo escribamos. En este caso, borraríamos la tercera línea.
NOTA: No es necesario borrar los números para dar los comandos. Lo borro para que se
vea más claro dónde aplico el comando.
El mismo comando, pero que afecta a un bloque de líneas, es decir, a varias líneas, es el
siguiente. Estos comandos se caracterizan por tener una línea de comienzo y una de fin. Si
para borra una línea poníamos una “D” en la línea afecta, para borrar un bloque deberemos
indicarlo con “DD” al inicio y al final de las líneas afectadas. En este caso, borraríamos la
tercera, cuarta y quinta línea.
Si sólo ponemos “DD”, una vez, nos aparecerá un mensaje indicando que el comando de
bloque está incompleto porque no hemos indicado un final y no puede afectar sólo a una
línea.
Una vez vista la diferencia entre comando de línea normal y de bloque, vamos a ver
algunas de las opciones que tenemos.
INSERTAR LÍNEAS - I.
Si queremos insertar una sola línea, pondremos una “I” y pulsaremos Intro.
Para añadir varias líneas, pondremos “I” y el número que deseemos. Por ejemplo, I5 para
añadir 5 líneas.
Para este comando no hay opción de comando de bloque.
COPIAR LÍNEAS - C.
Algunos comandos, como este, tienen la particularidad de que hay que indicar dónde
queremos copiar esa información, es decir, antes (B – before) o después (A – after) de la
línea que elijamos. Si no ponemos el parámetro “B” o “A” en la línea deseada, aparecerá el
mensaje “MOVE/COPY is pending” y no se realizará la acción.
Un ejemplo: para copiar la segunda línea después de la quinta, pondríamos una C en la
línea 2 y una A en la línea 5. En vez de poner la A, también podríamos poner una B en la
línea 6 y el resultado sería el mismo.
Vemos que la segunda línea se ha copiado después de la quinta.
También tenemos la opción de copiar poniendo “C” y un número de líneas, pero pienso que
esta opción no es muy útil porque te obliga a contar el número de líneas que quieres copiar
y perderías tiempo. Más adelante veremos un caso donde si es muy útil usarlo.
Ahora, utilizaremos el comando de bloque cuando queremos copiar varias líneas ya que es
más rápido y visual. Un ejemplo: copiaremos las líneas 3, 4 y 5, después de la línea número
6 (que tiene el texto “SEGUNDA LINEA”.
MOVER LÍNEAS – M.
Al igual que con el comando para copiar, para mover líneas deberemos indicar dónde las
queremos mover (before o after). Por ejemplo, mover la línea 5 después de la 9.
También podemos utilizar “M” y un número de líneas, pero tampoco me parece muy útil.
En su lugar usaremos el comando de bloque. Por ejemplo, moveremos las líneas 8 y 9
después de la 10.
REPETIR LÍNEAS – R.
Repetiremos la línea deseada después de la línea donde demos el comando. Esta opción no
permite “before o after”. Por ejemplo: repetir la línea 4.
También podemos repetir un número concreto de veces la misma línea. Por ejemplo: repetir
2 veces la línea 7.
También lo podremos usar como comando de bloque. Por ejemplo, repetir desde la línea 1
a la 4.
BORRAR LÍNEAS – D.
Borraremos la línea deseada usando el comando “D”. Por ejemplo, borrar la línea 17.
También podremos borrar un número concreto de líneas. Por ejemplo, borrar 2 líneas desde
la línea 12.
También como comando de bloque. Por ejemplo: borrar desde la línea 5 a la 12.
CONVERTIR UNA LÍNEA A LETRAS MINÚSCULAS/MAYÚSCULAS (lc –
lowercase y uc – uppercase).
Poner “LC” en la línea seleccionada para convertirla de mayúsculas a minúsculas
Se usa “UC” en la línea elegida para convertirla de minúsculas a mayúsculas de nuevo.
DIVIDIR UNA LÍNEA A PARTIR DE LA POSICIÓN DEL CURSOR (ts)
Imaginemos que estamos escribiendo una línea y no va a caber, tendríamos que insertar una
nueva línea y copiar/pegar el texto en la línea nueva y borrarlo de la anterior. Con este
comando, lo haremos automáticamente. Simplemente escribimos “TS” en la línea deseada
y ponemos el cursor en la parte de la línea que queremos dividir.
Inserta una línea nueva que, si no queremos utilizar, simplemente pulsaremos Intro de
nuevo.
Estos serían algunos de los comandos a nivel de línea más interesantes.
Ahora vamos a ver los comandos primaros que afectan todo el fichero y se escriben en la
línea “Command”.
GUARDAR (SAVE)
Con SAVE guardaremos el fichero. Si salimos con F3, también se guardarán.
CANCELAR (CANCEL).
Para salir sin guardar los cambios, usaremos CANCEL.
CAMBIO AUTOMÁTICO A MAYÚSCULAS (CAPS ON/OFF).
Cuando escribimos en minúsculas y pulsamos intro, si tenemos la opción “CAPS ON”
puesta, el texto que hayamos escrito se cambiará automáticamente a mayúsculas. Para
habilitarlo usaremos CAPS ON y para deshabilitarlo usaremos CAPS OFF.
SCROLL.
Esto no es un comando como tal, es una opción que vemos en el panel. Sirve para indicar
cómo iremos bajando/subiendo por la pantalla cuando pulsemos F7/F8.
En caso de tener SCROLL -> PAGE, bajará/subirá por pantallas completas, es decir, si
nuestro terminal muestra 25 líneas del fichero, se moverá 25 líneas y mostrará los datos a
partir de la 26.
Si tenemos SCROLL -> CSR, bajará/subirá dependiendo dónde tengamos el cursor
posicionado. Si lo tenemos posicionado en la línea “Command”, actuará igual que
SCROLL -> PAGE.
MOVERSE AL FINAL O AL PRINCIPIO (M).
Si tenemos varias pantallas de datos y queremos ir hasta el final, no es necesario pulsar F8
repetidas veces. Si ponemos la letra “M” y pulsamos F8, iremos hasta el final directamente.
Para volver al principio, pondremos “M” y pulsamos F7.
BUSCAR UN TEXTO (F – FIND).
Para buscar un texto concreto en el fichero usaremos el comando FIND, o la letra F, y el
texto que deseemos buscar. El texto deberá estar entre comillas simples si tiene más de una
palabra. Cuando queramos ver si ese texto aparece más veces, iremos pulsado F5 para
buscar la siguiente.
Si nos encontramos al final del fichero podremos buscar hacia “arriba” poniendo el
parámetro PREV al final.
REEMPLAZAR TEXTO (C – CHANGE)
Podremos reemplazar un texto usando el comando CHANGE, o la letra C, seguido del texto
original y del texto nuevo. Si el cambio afecta a varias líneas, podremos pulsar F6 para ir
cambiándolo de una en una. Un ejemplo:
Podemos añadir el parámetro ALL al final para indicar que el cambio se haga a la vez en
todas las líneas que coincidan con la búsqueda.
RECOVERY (ON/OFF)
La opción RECOVERY ON, junto al comando UNDO, permite deshacer los cambios de las
últimas modificaciones hechas. Primero activaremos la opción “RECOVERY ON” y luego
ya podremos utilizar UNDO.
HILITE
Este comando, o su abreviatura HI, permite que el texto salga por colores según el lenguaje
que estemos usando. Coloreará las palabras clave y otros signos, haciendo el código más
visual. También podremos usar directamente “HI ON” para que lo haga automáticamente
según el lenguaje que detecte (JCL, COBOL, etc.).
Marcaremos la opción Coloring “2” y, opcionalmente, marcaremos la opción “Parentheses
matching”.
SUBMIT
Comando para ejecutar JCLs. Antes de usarlo, tenemos que estar muy seguros de que
queremos ejecutar el código para no provocar incidencias según el código que sea.
VER NUMERACIÓN COLUMNAS (COLS)
Hay ocasiones en las que es necesario saber en qué columna está un determinado texto,
para poder ver una numeración de las columnas, usaremos COLS.
Veremos que aparece una línea con guiones al principio del fichero. Cada guion es una
columna. Este comando también se puede usar a nivel de línea.
Si queremos quitar la línea de COLS, volveremos a escribir el mismo comando.
Por último veremos comandos primarios que deben ser usados junto a comandos de
línea para que funcionen. Esos comandos son: CREATE o REPLACE, CUT/PASTE y
COPY.
CREATE o REPLACE
Permite crear o reemplazar un miembro copiando la información de otro miembro. Por
ejemplo, imaginemos que tenemos un JCL que no sabemos cuántas líneas tiene, pero
queremos copiarlo entero a nuevo miembro. Lo haremos de la siguiente forma:
En la primera línea pondremos “C99999” y en la línea de comandos pondremos CREATE o
REPLACE y el nombre del miembro. También podremos copiar sólo algunas líneas
escribiendo el comando de bloque CC-CC. Por ejemplo:
CREATE PRUEBA2
De esta forma creará el miembro PRUEBA2 en la misma librería donde nos encontramos,
copiando todo su contenido ya que hemos puesto C99999 en la primera línea.
Si ponemos sólo CREATE sin poner lo que queremos copiar, aparecerá un mensaje
indicando “CREATE is pending”.
Si queremos crear o reemplazar un miembro que se encuentra en otra librería pondremos
nombre_librería(nombre_miembro), por ejemplo:
CUT/PASTE
Permite coger las líneas que queremos de un fichero y pegarlas a otro miembro. Como en el
caso anterior, habrá que indicar las líneas que queremos copiar.
Ahora iremos al miembro dónde lo queremos pegar y pondremos PASTE. Deberemos
indicar la línea con “B” para before o “A” para after.
COPY
Esta opción permite copiar todos los datos de otro miembro sobre el fichero que estamos
trabajando en ese momento. Para usar el comando pondremos:
COPY nombre_libreria(nombre_miembro)
Deberemos indicar la línea con “B” para before o “A” para after.
Estas son algunas de las opciones que permite el editor de ISPF. Normalmente son las que
más utilizo. En caso de acordarme de alguna más, actualizaré esta entrada. Espero que os
sirva de ayuda.