Objetos do IBM® i, como módulos, arquivos e programas, são construídos a partir da origem contida em seu projeto. Cada arquivo de origem de seu projeto pode ser associado a um conjunto de comandos para construí-lo. A associação de um conjunto de comandos com um conjunto de membros de origem é definida em um construtor.
Outros tipos de objetos do IBM i, como áreas de dados, programas de serviços e listas de autorização, também podem ser criados. Esses tipos de objetos não são construídos a partir de membros de origem, mas são definidos inteiramente por comandos. Você pode usar conjuntos de comandos para definir estes tipos de objetos também.
Conjuntos de comandos contêm comandos CL, que podem conter variáveis. Como estas variáveis podem ser definidas na hora da construção, os conjuntos de comandos podem ser considerados como modelos para a criação de objetos ou para cumprir várias outras tarefas que poderiam precisar ocorrer durante a construção de um projeto.
Os conjuntos de comandos podem ser definidos na especificação de construção do projeto que os usa ou podem ser mencionados como conjuntos de comandos externos de outros projetos definindo primeiramente uma referência de projeto e, em seguida, nomeando os conjuntos de comandos desse projeto que você deseja usar. É possível usar esse recurso para definir um conjunto comum dos conjuntos de comandos que cada projeto usa.
Há dois tipos de conjuntos de comandos: geral e condicional. Conjuntos de comandos gerais são usados para executar tarefas que precisam ser executadas em cada construção. Estes funcionam bem para configuração, estabelecendo substituições para compilações, compactação e limpeza. Conjuntos de comandos condicionais podem ser executados ou não com base no estado da saída do construtor que o está usando. Isto é, os comandos em um conjunto de comandos podem ser executados se o objeto de saída de um construtor existir, mas estiver desatualizado ou se o objeto de saída não existir mesmo.
Os comandos de um conjunto de comandos são agrupados nas seções de processamento. Os conjuntos de comandos gerais têm apenas uma seção de processamento. Conjuntos de comandos condicionais executam seu processamento dependendo do estado dos objetos de saída definidos para os construtores que os usam. Os conjuntos de comandos condicionais possuem duas seções, uma das quais será executada se um objeto de saída existir, mas for mais antigo que suas entradas ou dependências, e a outra será executada se o objeto de saída não existir mesmo. Um bom exemplo de onde isso pode ser necessário é se você desejar criar um arquivo físico usando CRTPF, se ele não existir, e alterá-lo usando CHGPF se ele realmente existir. Áreas de dados e outros objetos que contenham dados podem precisar de processamento especial semelhante. Se não houver necessidade de que as seções sejam diferentes, você pode configurar a seção "não existe" para executar os mesmos comandos que a seção "existe".
Um construtor irá executar um comando com base no tipo de processamento de entrada que você especificou no construtor que o utiliza. Os comandos do conjunto de comandos são sempre executados na ordem que você especifica, mas podem ser executados mais de uma vez, dependendo do tipo de entrada que você associou a ele no construtor.
Se você não especificar uma lista de objetos de origem ou membros, um conjunto de comandos condicionais será executado no máximo uma vez, se o objeto de saída associado ao construtor exigi-lo. Isto é adequado para executar comandos que podem tomar listas de objetos como parâmetros como CRTPGM.
Os conjuntos de comandos gerais são sempre executados exatamente uma vez. Eles são adequados para comandos ou conjuntos de comandos que não criam objetos, mas poderiam ser uma parte necessária da configuração de construção, como estabelecer substituições para compilações.
Consulte o Jazz.net para obter mais informações.