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.