COOP1000 Contador de Operandos/Operadores
Este programa permite a contagem de Operadores/Operandos dos programas, módulos e funções.
Ele não faz parte do sisdia, portanto, para iniciar sua execução deve-se utilizar o comando fglrun coop1000 1 no prompt do linux.
Para uma correta execução é necessário que o usuário não utilize o mouse para selecionar suas preferências. Pede-se que seja utilizado <ENTER> para selecionar a opção e as setas para navegar entre elas. Após o campo "Verifica Possíveis Anomalias" o programa irá automaticamente iniciar sua contagem, ou seja, é Obrigatório que o usuário passe por este campo.
O programa encontra-se (logicamente) divido em 3 partes.

1ª Parte
O programa exibe um pequeno resumo das quantidades aproximadas de programas/funções/módulos encontradas na instancia.

O usuário então pode escolher qual categoria deseja listar. O programa permite 4 opções diferentes:

  1. Todos (.4gl)* – O programa irá realizar a contagem em todos os arquivos que possuírem a extensão "4gl".
  2. Funções de Ajuda (h_)* – O programa irá realizar a contagem de todas as funções cujo nome inicie-se com "h_". Estas funções são tipicamente funções de ajuda (CTRL+E).
  3. Funções do Sistema (f_)* – O programa irá realizar a contagem de todas as funções cujo nome inicie-se com "f_". Funções utilizadas para realizar cálculos ou operações utilizadas por vários programas.
  4. Programas – O programa irá realizar a contagem de todos os arquivos que possuam a seguinte estrutura: 4 primeiros caracteres do nome são letras (de A à Z) e os 4 últimos números (de 0 à 9).


2ª Parte
Após a escolha da categoria é permitido que o usuário informe o que o programa deverá contar. As opções são:

  1. Comandos FourJs – O programa irá realiza a contagem de todos os operandos utilizados pela linguagem 4gl.
  2. Operadores Lógico-Matemáticos – O programa irá realizar a contagem de todos os Operadores Lógico-Matemáticos utilizados nos programas.


3ª Parte
A última escolha do usuário consiste na verificação ou não de anomalias na contagem feita pelo programa. Esta opção quando selecionada irá procurar dentro do programa por "{". Caso ele encontre alguma "Abre Chave" dentro do programa ele irá informar ao usuário que a contagem PODE não estar exata devido a um bloco do programa ter sido comentado.
Após o término de sua execução o programa gera dois arquivos com os resultados das contagens. Um arquivo corresponde a contagem dos Comandos FourJs e o outro corresponde aos Operadores lógico matemáticos. Ambos os arquivos são armazenados no diretório report.
Estes arquivos possuem a extensão "csv". Esta extensão permite que ambos os arquivos sejam importados pelo Microsoft Excel.
Abaixo segue a lista dos Comandos/Operadores que o programa conta e também o que ele despreza em sua contagem.

  • Todas as linhas que o programa encontrar "--" ou "#" independentemente de sua posição na linha serão excluídas da contagem, por serem em sua maioria caracteres responsáveis por COMENTÁRIOS dentro dos programas. Esta regra é válida para todos os Operadores/Comandos e por isso não será citada na listagem abaixo.
    Operadores Lógico-Matemáticos:

    Nome do Operador

    Ignora

    IF

    Ignora: Todas as linhas que possuem: (end, update, declare, form, exit, continue, define, "char(, integer, smallint, format, clear).

    FOR

    Ignora: Todas as linhas que possuem: (end, update, declare, form, exit, continue, define, "char(, integer, smallint, format, clear).

    WHILE

    Ignora: Todas as linhas que possuem: (end, update, declare, form, exit, continue, define, "char(, integer, smallint, format, clear).

    CASE

    Ignora: Todas as linhas que possuem: (end, update, declare, form, exit, continue, define, "char(, integer, smallint, format, clear).

    Multiplicação (estrela)

    Ignora: Todas as linhas que possuem: (select, select *, select *, select *, ***).

    Subtração (menos)

    Ignora: Todas as linhas que possuem: (aspas).

    Adição (mais)

     

    Divisão (seleção)

    Ignora: Todas as linhas que possuem: (display, column, error, message, erro_log).

    Menor (<)

    Ignora: Todas as linhas que possuem: (error, display, message, erro_log, column, prompt, <ESC>, <ENTER>).

    Maior (>)

    Ignora: Todas as linhas que possuem: (error, display, message, erro_log, column, prompt, <ESC>, <ENTER>).

    Diferença (!=)

     

    Igual (=)

     

    AND

     

    OR

    Ignora: Todas as linhas que possuem: (order, column, erro_log, command, orcamen, origi).

    NOT

    Ignora: Todas as linhas que possuem: (notfound).


    Comando FourJs:

    Nome do Operador

    Ignora

    AFTER

     

    BEFORE

     

    BEGIN

     

    CANCEL

    Ignora: Todas as linhas que possuem: (cancela, exite, existe, êxito, "(unload)")

    CLEAR

     

    CLOSE

     

    COMMAND

     

    CONSTRUCT

    Ignora: Todas as linhas que possuem: (exit, before, end, continue, after, menu_manut, command, ldisplay, on key, fgl_, startlog, declaresp, _declare, deferi, dbload, unload, upload, .load, returning).

    CURRENT

     

    DECLARE

    Ignora: Todas as linhas que possuem: (exit, before, end, continue, after, menu_manut, command, ldisplay, on key, fgl_, startlog, declaresp, _declare, deferi, dbload, unload, upload, .load, returning).

    DEFER

    Ignora: Todas as linhas que possuem: (exit, before, end, continue, after, menu_manut, command, ldisplay, on key, fgl_, startlog, declaresp, _declare, deferi, dbload, unload, upload, .load, returning).

    DEFINE

     

    DISPLAY

    Ignora: Todas as linhas que possuem: (exit, before, end, continue, after, menu_manut, command, ldisplay, on key, fgl_, startlog, declaresp, _declare, deferi, dbload, unload, upload, .load, returning).

    ERROR

    Ignora: Todas as linhas que possuem: (whenever, dde, finished)

    EXIT

    Ignora: Todas as linhas que possuem: (cancela, exite, existe, êxito, "(unload)")

    FETCH

     

    FINISH

    Ignora: Todas as linhas que possuem: (whenever, dde, finished)

    FOREACH

    Ignora: Todas as linhas que possuem: (exit, before, end, continue, after, menu_manut, command, ldisplay, on key, fgl_, startlog, declaresp, _declare, deferi, dbload, unload, upload, .load, returning).

    INITIALIZE

     

    INPUT

    Ignora: Todas as linhas que possuem: (exit, before, end, continue, after, menu_manut, command, ldisplay, on key, fgl_, startlog, declaresp, _declare, deferi, dbload, unload, upload, .load, returning).

    LET

    Ignora: Todas as linhas que possuem: (delet, smallint, "char(, integer)

    LIKE

     

    LOAD

    Ignora: Todas as linhas que possuem: (exit, before, end, continue, after, menu_manut, command, ldisplay, on key, fgl_, startlog, declaresp, declare, deferi, dbload, unload, upload, .load, returning). Ignora: Todas as linhas que possuem: (exit, before, end, continue, after, menu_manut, command, ldisplay, on key, fgl, startlog, declaresp, _declare, deferi, dbload, unload, upload, .load, returning).

    MENU

    Ignora: Todas as linhas que possuem: (exit, before, end, continue, after, menu_manut, command, ldisplay, on key, fgl_, startlog, declaresp, _declare, deferi, dbload, unload, upload, .load, returning).

    MESSAGE

    Ignora: Todas as linhas que possuem: (exit, before, end, continue, after, menu_manut, command, ldisplay, on key, fgl_, startlog, declaresp, _declare, deferi, dbload, unload, upload, .load, returning).

    NEED

    Ignora: Todas as linhas que possuem: (into)

    OPEN

    Ignora: Todas as linhas que possuem: (delet, smallint, "char(, integer)

    OPTIONS

     

    PROMPT

    Ignora: Todas as linhas que possuem: (exit, before, end, continue, after, menu_manut, command, ldisplay, on key, fgl_, startlog, declaresp, _declare, deferi, dbload, unload, upload, .load, returning).

    RETURN

    Ignora: Todas as linhas que possuem: (exit, before, end, continue, after, menu_manut, command, ldisplay, on key, fgl_, startlog, declaresp, _declare, deferi, dbload, unload, upload, .load, returning).

    ROLLBACK

     

    START

    Ignora: Todas as linhas que possuem: (exit, before, end, continue, after, menu_manut, command, ldisplay, on key, fgl_, startlog, declaresp, _declare, deferi, dbload, unload, upload, .load, returning).

    UNLOAD

    Ignora: Todas as linhas que possuem: (cancela, exite, existe, êxito, "(unload)").

    WHENEVER

     

    SELECT

    Ignora: Todas as linhas que possuem: (selects, prepare, declare, execute, ltipo).

    DELETE

    Ignora: Todas as linhas que possuem: (before, cancel, after, fgl_, lock, insert_).

    INSERT

    Ignora: Todas as linhas que possuem: (before, cancel, after, fgl_, lock, insert_).

    UPDATE

    Ignora: Todas as linhas que possuem: (_upadte, lupdate).


    Observação quanto ao desempenho do programa:
    As opções de Contagem ("Comando FourJs"e "Operadores Lógico-Matemáticos") e a verificação de anomalia são diretamente responsáveis pelo desempenho do programa. Quanto mais opções estiverem marcadas mais o programa irá demorar em colher informações.