title: Data Language/Interface
text: # Data Language/Interface
  
  Data Language/Interface (abreviado DL/1 o DL/I) es el lenguaje de programación para acceder a las bases de datos de IMS y a su sistema de comunicación.
  Se implementa desde cualquier lenguaje existente realizando llamadas a un programa puente llamado DFSLI000. Este software contiene puntos de entrada para gestionar varios lenguajes de programación, por ejemplo, para llamar a PLITODLI desde un programa PL/1 o CBLTDLI desde un programa COBOL. El programa DFSLI00 se enlaza desde el programa real, pasa la información a IMS y posteriormente devuelve datos y un código de retorno.
  En cualquier base de datos IMS full-function, el elemento más pequeño que se puede consultar es el segmento. Cada segmento se compone de campos, donde normalmente uno de ellos será un campo clave. Los segmentos en la base de datos están organizados de forma jerárquica, al segmento del nivel más alto se denomina segmento raíz. Existen restricciones en cuanto al número de segmentos distintos: un máximo de 255 segmentos diferentes en 15 niveles. Sin embargo, no hay ningún límite en el número de ocurrencias de cada tipo de segmento, más allá de los límites físicos del espacio de almacenamiento.
  La estructura de la base de datos se presenta a la aplicación mediante PCB (Bloque de Control de Programa, o Program Control Block), este es uno de los parámetros que se pasan al DFSLI000. Además de PCB para acceso a bases de datos, existes PCB para mensajería y acceso a bases de datos en ficheros secuenciales.
  Cuando la aplicación accede a un segmento de la base de datos puede usar una SSA (Argumento de Búsqueda de Segmento, Segment Search Argument) como parámetro , para especificar uno o varios segmentos específicos. La SSA contiene normalmente el tipo de segmento y el valor de cualquier campo clave.
  El primer parámetro en una llamada de DL/1 es el código de función: un campo de cuatro crácteres que indican la función de la llamada. Por ejemplo: “GU ” (Get Unique), “GN ” (Get Next), “REPL” (Replace), and “ISRT” (Insert).