Los objetos de IBM® i, como módulos, archivos y programas, se compilan a partir del origen que contiene su proyecto. Cada archivo de origen del proyecto se puede asociar con un conjunto de mandatos para compilarlo. La asociación de un conjunto de mandatos se define en un programa de creación.
También se pueden crear otros tipos de objetos de IBM i, como áreas de datos, programas de servicio y listas de autorizaciones. Estos tipos de objetos no se compilan a partir de miembros fuente sino que se definen completamente mediante mandatos. También pueden utilizarse conjuntos de mandatos para definir estos tipos de objetos.
Los conjuntos de mandatos contienen mandatos de CL, que pueden contener variables. Como estas variables se pueden definir en el momento de la compilación, los conjuntos de mandatos se pueden considerar plantillas para la creación de objetos o para realizar otras tareas que pueda ser necesario que tengan lugar durante la compilación de un proyecto.
Los conjuntos de mandatos se pueden definir en la especificación de compilación del proyecto que los utiliza, o se puede hacer referencia a ellos mediante conjuntos de mandatos externos de otros proyectos definiendo primero una referencia de proyecto y luego denominando a los conjuntos de mandatos desde el proyecto que se quiere utilizar. Se puede utilizar esta prestación para definir un conjunto común de conjuntos de mandatos que utilice cada proyecto.
Hay dos tipos de conjuntos de mandatos: generales y condicionales. Los conjuntos de mandatos generales se utilizan para realizar tareas que tienen que ejecutarse en cada compilación. Funcionan bien para la configuración, para establecer alteraciones temporales para compilaciones, para empaquetado y para limpieza. Los conjuntos de mandatos condicionales se pueden ejecutar o no según el estado de la salida del programa de creación que la utiliza. Es decir, los mandatos de un conjunto de mandatos podrían ejecutarse si el objeto de salida de un programa de creación existe pero está desfasado, o si el objeto de salida no existe.
Los mandatos de un conjunto de mandatos se agrupan en secciones de proceso. Los conjuntos de mandatos generales sólo pueden tener una sección de proceso. Los conjuntos de mandatos condicionales realizan su proceso en función del estado de los objetos de salida definidos para los programas de creación que los utilizan. Los conjuntos de mandatos condicionales tienen dos secciones, una que se ejecuta si hay un objeto de salida pero es más antiguo que sus entradas o sus referencias y otra que se ejecuta si el objeto de salida no existe. Un buen ejemplo de dónde puede resultar necesario esto es si se quiere crear un archivo físico utilizando CRTPF si este no existe y cambiarlo utilizando CHGPF si este no existe. Las áreas de datos y otros objetos que mantienen datos pueden necesitar un proceso especial similar. Si no es necesario tener dos secciones diferentes, se puede definir la sección de "no existe" para que ejecute los mismos mandatos que la sección "existe pero está desfasado".
Un programa de creación ejecutará un conjunto de mandatos en función del tipo de proceso de entrada que se haya especificado en el programa de creación que lo utilice. Los mandatos del conjunto de mandatos siempre se ejecutan en el orden que se especifica, pero pueden ejecutarse más de una vez en función del tipo de entrada con el que está asociado en el programa de creación.
Si no se especifica ninguna lista de objetos de origen o de miembros, se ejecutará un conjunto de mandatos condicionales al menos una vez. Esto es adecuado para ejecutar mandatos que puedan tomar listas de objetos como parámetros, como CRTPGM.
Los conjuntos de mandatos generales siempre se ejecutan exactamente una vez. Son adecuados para mandatos o conjuntos de mandatos que no crean objetos pero que podrían ser parte necesaria de la configuración de la compilación, como establecer sustituciones para compilaciones.
Consulte Jazz.net para obtener más información.