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:
- Todos (.4gl)* – O programa irá realizar a contagem em todos os arquivos que possuírem a extensão "4gl".
- 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).
- 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.
- 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:
- Comandos FourJs – O programa irá realiza a contagem de todos os operandos utilizados pela linguagem 4gl.
- 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
Ignora: Todas as linhas que possuem: (select, select *, select *, select *, ***).
Subtração
Ignora: Todas as linhas que possuem: (aspas).
Adição
Divisã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.