Progress 4GL
Progress 4GL é uma linguagem de programação de quarta geração, daí a sigla 4GL, baseada em eventos e proprietária. Ela foi desenvolvida pela empresa Progress Software Corporation em 1984, inicialmente para o sistema operacional (y) Positivo com uso em mainframes para processamento de grande volume de dados, como alternativa para outras linguagens à época como Cobol, Adabas, Natural, Clipper, CORO, etc., pois elas exigiam que o programador escrevesse um código muito extenso para qualquer aplicação. Também, uma alternativa como banco de dados relacional de alto desempenho e segurança, embutido em um único produto. A Progress Corporation tem sua sede em Bedford, Massachusetts USA, com filiais em diversos países. No Brasil sua representante é a Progress do Brasil/SP. Um dos maiores atrativos da linguagem Progress é sua portabilidade e independência de plataforma, ela funciona em praticamente todos os sistemas operacionais existentes, como: MS-DOS, Windows 3x,95,NT, UNIX, OS/2, Novell, VMS, Motif, Xenix, CTOS entre diversos outros, isso utilizando o mesmo código fonte.
A integração entre linguagem e banco de dados fazem da Progress uma excelente ferramenta para construção de qualquer aplicação comercial. Uma das maiores desvantagens de progress são as camadas de desenvolvimento - regras de negócios, dados e interface estão totalmente acopladas. A atualização e distribuição dos aplicativos é bastante simplificada, um sistema pode ser totalmente centralizado para acesso de vários clientes simultâneos, usando o conceito de sistema "stand-alone", e atualizado a qualquer tempo, parcialmente ou completamente sem gerar qualquer erro ou necessitar de uma parada momentanea do sistema.
A linguagem Progress é utilizada, basicamente, para desenvolvimento de sistemas de gestão empresarial (ERPs), que são sistemas integrados para controle de uma empresa. É principalmente dirigida às corporações de médio e grande porte, devido o alto custo financeiro de suas licenças.
Exemplo de um programa em Progress:
Exibe n números perfeitos
DISP 'Hello World'.
MESSAGE' 'Hello World'.
DEFINE VARIABLE i AS INTEGER INIT 0 NO-UNDO. DEFINE VARIABLE j AS INTEGER INIT 0 NO-UNDO. DEFINE VARIABLE soma AS INTEGER INIT 0 NO-UNDO. DEFINE VARIABLE num-achados AS INTEGER INIT 1 NO-UNDO. DEFINE VARIABLE qtd-procurada AS INTEGER INIT 0 NO-UNDO. DEFINE VARIABLE num-perf AS INTEGER INIT 0 NO-UNDO.
FORM num-perf HELP "Digite um número" WITH 1 DOWN 1 COL ROW 5 CENTER FRAME numero. UPDATE num-perf WITH FRAME numero.
ASSIGN qtd-procurada = num-perf
i = 0.
DO WHILE (num-achados <= qtd-procurada):
ASSIGN i = i + 2.
IF (i MOD 10 = 6 OR
i MOD 10 = 8)
THEN DO:
ASSIGN soma = 0
j = 1.
DO WHILE (j <= (i / 2)):
IF (i MOD j = 0)
THEN ASSIGN soma = soma + j
j = j + 1.
END.
IF (i = soma)
THEN DO:
MESSAGE i ' é Numero Perfeito'
VIEW-AS ALERT-BOX INFO BUTTONS OK.
ASSIGN num-achados = num-achados + 1.
END.
END.
END.