Você está na página 1de 302

Dominando o Progress

E scrito por Márcio Brener Costa

Re visã o Té cnica

Fernanda Magalhães Favilla

Paulo Afonso Israel Freire

Patrícia Alves de Freitas

Daniela Martino dos Santos

Agradeço a todos os meus amigos da CASSI pelo insentivo e


companheirismo que sempre recebi para realização desta obra.

Obrigado em especial aos meus Amigos da juventude, Giuler


Alberto, Júlio Pacheco e Roberto Catanhede e a minha família pela
ajuda nos meus primeiros passos na descoberta do Mundo da
I nformática.

Um grande abraço para todos amigos de Brasília!.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Dominando o Progress

“Fa ça o que é cert o ainda que sej a o m ais difícil.”

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Dominando o Progress
Copyright  2 0 0 0 M árcio Brener

Todos os dir eit os r eser v ados par a o aut or dest a obr a.

Toda ou qualquer par t e dest a publicação poder á ser


r epr oduzida ou t r ansm it ida por qualquer m eio, sej a est e
elet r ônico, m ecânico, de fot ocópia, de gr av ação ou out r os
sem pr év ia aut or ização, desde que cit ado o Aut or (Márcio
Brener Cost a – brener@zipm ail.com .br) .

Progress, Report Builder, AppServer e WebSpeed são Marcas


Registradas da Progress Software Corporation EUA.

I BM/ DB2 é Marca Registra da I nternational Bussines Machine -


I BM.

Oracle é Marca Registrada da Oracle I nc.

Windows 3.11, Windows 95, Windows 98, Windows NT, Windows


2000 são Marcas Registradas da Microsoft .

NetTerm é Marca Registrada da I nterSoft I nternational I nc.

KeaX! é Marca Registrada da Attachmate

Vipper e PCase são Marcas Registradas da 4Tool Software

OpenLink é Marca Registrada da OpenLink

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Dominando o Progress

Í ndice
Capítulo 1 ............................................................ 20
Apresentando o Progress........................................ 20
O que é o Progress? ....................................................... 20
Como funciona?.............................................................. 21
I nstalando o software..................................................... 22
Apresentando os aplicativos............................................ 26
Capítulo 2 ............................................................ 33
Configuração do Produto ........................................ 33
Configuração do Progress no Windows ........................... 33
O arquivo progress.ini ................................................... 35
Listagem do Arquivo progress.ini .................................... 36
Configurando o Progress para UNI X................................ 42
Variáveis de ambiente .................................................... 42
Arquivos ......................................................................... 47
Arquivos comuns .......................................................... 47
Arquivos temporários .................................................... 47
Banco de Dados............................................................ 48
Sessão cliente .............................................................. 49
Protocolos disponíveis..................................................... 49
Capítulo 3 ............................................................ 50
Criando & Definindo os Dados................................. 50
Criando um banco de dados ........................................... 50

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Dominando o Progress
Como funciona o Banco de Dados...................................52
Criando tabelas, campos, índices, etc..............................53
Criando uma tabela.........................................................55
Criando os campos .........................................................59
Validando os Campos......................................................61
A propriedade Validation ................................................ 62
Triggers..........................................................................63
O que um Trigger?........................................................ 63
Criando índices ...............................................................65
Aparência do Campo (View-As) .......................................69
Sequences ......................................................................70
O que são Sequences?................................................... 70
Como usar um Sequence?.............................................. 70
Metaschema ...................................................................71
O que é o Metaschema?................................................. 71
Capítulo 4 .............................................................73
Aprendendo a linguagem.........................................73
Desenvolvendo o código .................................................73
O primeiro programa ..................................................... 73
Como fazer a interface com o usuário? ............................ 73
Conectando o banco de dados ........................................74
Aprendendo a sintaxe .....................................................77
Definindo variáveis ........................................................ 77
View-As ....................................................................... 83
Definindo Frames.......................................................... 86

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Dominando o Progress
Definindo Queries ........................................................... 95
O quê é uma Query?..................................................... 95
BROWSES....................................................................... 97
Utilizando a Query no Browse ....................................... 103
OPEN QUERY ............................................................. 103
ASSI GN ..................................................................... 105
Comandos de I mpressão e Manipulação de Arquivos .... 106
OUTPUT .................................................................... 106
PARÂMETROS............................................................. 106
I NPUT ....................................................................... 110
Eventos ........................................................................ 114
Lista de Eventos ......................................................... 114
Preprocessadores ......................................................... 143
O que são preprocessadores?....................................... 143
Utilização ................................................................... 143
&SCOPED-DEFI NE....................................................... 143
&GLOBAL-DEFI NE....................................................... 144
&UNDEFI NE ............................................................... 145
DI RETI VAS PREPROCESSADAS ..................................... 145
Operadores................................................................... 146
&I F, &THEN, &ELSEI F, &ELSE, &ENDI F ......................... 146
MESSAGE ..................................................................... 147
PARÂMETROS............................................................. 147
Criando MENUS ............................................................ 150
MENU ........................................................................ 150

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Dominando o Progress
BOTÕES........................................................................ 155
PARÂMETROS............................................................... 159
I mportação e Exportação de Dados .............................. 162
Limites do Progress....................................................... 163
Banco de Dados.......................................................... 163
VARI ÁVEI S................................................................. 164
NOMENCLATURAS....................................................... 165
Funções........................................................................ 166
ABSOLUTE ................................................................. 166
ACCUM ...................................................................... 166
ALI AS ........................................................................ 167
AMBI GUOUS............................................................... 167
ASC........................................................................... 168
AVAI LABLE................................................................. 168
CAN-DO..................................................................... 169
CAN-FI ND .................................................................. 169
CAN-QUERY ............................................................... 170
CAN-SET .................................................................... 171
ENCODE..................................................................... 171
CHR........................................................................... 172
CODEPAGE-CONVERT.................................................. 172
CONNECTED............................................................... 173
COUNT-OF ................................................................. 173
CURRENT-CHANGED ................................................... 174
CURRENT-LANGUAGE.................................................. 175

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Dominando o Progress
CURRENT-RESULT-ROW .............................................. 175
CURRENT-ROW-MODI FI ED .......................................... 176
CURRENT-VALUE ........................................................ 176
DATASERVERS ........................................................... 176
DATE......................................................................... 176
DAY .......................................................................... 177
DBCODEPAGE............................................................. 177
DBCOLLATI ON............................................................ 178
DBNAME.................................................................... 178
DBPARAM .................................................................. 178
DBRESTRI CTI ONS....................................................... 179
DBTASKI D.................................................................. 179
DBTYPE..................................................................... 180
DBVERSI ON ............................................................... 180
DECI MAL ................................................................... 181
DEFI NED ................................................................... 181
DYNAMI C-FUNCTI ON .................................................. 182
ENTERED................................................................... 183
ENTRY....................................................................... 183
ETI ME ....................................................................... 184
EXP........................................................................... 184
EXTENT ..................................................................... 184
FI LL .......................................................................... 185
FI RST........................................................................ 185
FI RST-OF................................................................... 186
FRAME-COL................................................................ 187

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Dominando o Progress
FRAME-DB.................................................................. 187
FRAME-DOWN ............................................................ 187
FRAME-FI ELD ............................................................. 188
FRAME-FILE ............................................................... 188
FRAME-I NDEX ............................................................ 188
FRAME-LI NE............................................................... 189
FRAME-NAME ............................................................. 189
FRAME-ROW .............................................................. 189
FRAME-VALUE ............................................................ 190
GATEWAYS ................................................................ 190
GET-BYTE .................................................................. 190
GET-CODEPAGES........................................................ 190
GET-COLLATI ONS....................................................... 191
GET-DOUBLE.............................................................. 191
GET-FLOAT ................................................................ 192
GET-LONG.................................................................. 192
GET-POI NTER-VALUE .................................................. 192
GET-SHORT................................................................ 192
GET-SI ZE................................................................... 192
GET-STRI NG............................................................... 193
GET-UNSI GNED-SHORT ............................................... 193
I NDEX ....................................................................... 193
I NTEGER.................................................................... 193
I S-ATTR-SPACE .......................................................... 194
KBLABEL .................................................................... 194
KEYCODE................................................................... 195

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Dominando o Progress
KEYFUNCTI ON............................................................ 195
KEYLABEL .................................................................. 196
KEYWORD.................................................................. 197
KEYWORD-ALL ........................................................... 197
LAST ......................................................................... 197
LASTKEY.................................................................... 198
LAST-OF .................................................................... 198
LC............................................................................. 198
LDBNAME .................................................................. 198
LEFT-TRI M................................................................. 199
LENGTH..................................................................... 199
LI NE-COUNTER .......................................................... 199
LI ST-EVENTS.............................................................. 199
LI ST-QUERY-ATTRS .................................................... 200
LI ST-SET-ATTRS......................................................... 200
LI ST-WI DGETS........................................................... 200
LOCKED..................................................................... 201
LOG .......................................................................... 201
LOOKUP..................................................................... 201
MAXI MUM .................................................................. 202
MESSAGE-LI NES......................................................... 202
MI NI MUM .................................................................. 202
MONTH ..................................................................... 203
NEW.......................................................................... 203
NEXT-VALUE .............................................................. 203
NOT ENTERED............................................................ 203

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Dominando o Progress
NUM-ALI ASES............................................................. 204
NUM-DBS................................................................... 204
NUM-ENTRI ES ............................................................ 204
NUM-RESULTS............................................................ 205
OPSYS ....................................................................... 205
OS-DRI VES................................................................. 206
OS-ERROR ................................................................. 206
OS-GETENV................................................................ 206
PAGE-NUMBER ........................................................... 207
PAGE-SI ZE ................................................................. 207
PDBNAME .................................................................. 207
PROGRAM-NAME......................................................... 208
PROGRESS................................................................. 208
PROMSGS .................................................................. 208
PROPATH................................................................... 209
PROVERSI ON.............................................................. 209
QUERY-OFF-END......................................................... 209
RANDOM.................................................................... 210
RECI D........................................................................ 211
RECORD-LENGTH........................................................ 212
REPLACE.................................................................... 212
RETRY ....................................................................... 213
RETURN-VALUE .......................................................... 214
RI GHT-TRI M............................................................... 214
R-I NDEX .................................................................... 214
ROUND ...................................................................... 215

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Dominando o Progress
ROWI D...................................................................... 215
SCREEN-LINES ........................................................... 215
SDBNAME .................................................................. 215
SEARCH..................................................................... 216
SEEK ......................................................................... 216
SETUSERI D ................................................................ 216
SQRT ........................................................................ 216
STRI NG ..................................................................... 217
SUBSTI TUTE .............................................................. 217
SUBSTRI NG................................................................ 218
TERMI NAL ................................................................. 219
TI ME......................................................................... 219
TODAY ...................................................................... 220
TO-ROWI D................................................................. 220
TRANSACTI ON ........................................................... 220
TRI M......................................................................... 221
TRUNCATE................................................................. 221
USERI D ..................................................................... 221
VALI D-EVENT ............................................................. 222
VALI D-HANDLE........................................................... 222
WEEKDAY .................................................................. 222
WI DGET-HANDLE ....................................................... 223
YEAR......................................................................... 223
Capítulo n ........................................................... 224
Utilitários & Parâmetros do Banco de Dados Progress 224

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Dominando o Progress
Utilitários do Banco de Dados Progress ......................... 224
PARÂMETROS............................................................. 226
Parâmetro .................................................................. 230
Descrição ................................................................... 230
-1.............................................................................. 230
-a arquivo .................................................................. 230
-aibufs n .................................................................... 230
-aistall ....................................................................... 231
-b.............................................................................. 231
-basekey texto ............................................................ 231
-B n ........................................................................... 232
-bibufs n .................................................................... 232
-brl............................................................................ 233
-Bt n .......................................................................... 233
-C qualificador ............................................................ 233
-c n ........................................................................... 233
-cache arquivo ............................................................ 234
-charset Código de Página............................................ 234
-checkdbe .................................................................. 234
-convmap arquivo........................................................ 234
-cp parâmetros ou arquivo ........................................... 235
-cpcase tabela............................................................. 235
-cpcoll coleção ............................................................ 235
-cpdb Código Página.................................................... 236
-cpinternal Código Página ............................................. 236

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Dominando o Progress
-cpprint Código Página ................................................ 236
-cprcodein Código Página............................................. 236
-cprcodeout Código Página ........................................... 237
-cpstream .................................................................. 237
-cpterm ..................................................................... 237
-cs n, i ....................................................................... 237
-ct n .......................................................................... 238
-d mdy....................................................................... 238
-D n .......................................................................... 238
-db banco de dados .................................................... 239
-debug ...................................................................... 239
-decdtm ..................................................................... 239
-dictexps.................................................................... 239
-directio..................................................................... 240
-dt ............................................................................ 240
-E ............................................................................. 240
-esqllog ..................................................................... 241
-esqlnopad ................................................................. 241
-evtlevel parâmetro ..................................................... 241
-F.............................................................................. 241
-fc n .......................................................................... 241
-fldisable.................................................................... 242
-g arquivo .................................................................. 242
-G n .......................................................................... 242
-h n........................................................................... 242
-H servidor ................................................................. 243

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Dominando o Progress
-H servidor ................................................................. 243
-hardlimit ................................................................... 243
-hs s.......................................................................... 243
-i............................................................................... 244
-ininame arquivo ......................................................... 244
-inp n ........................................................................ 245
-is ............................................................................. 245
-k.............................................................................. 245
-L n ........................................................................... 246
-ld nome .................................................................... 246
-lng linguagem............................................................ 247
-logfile arquivo ............................................................ 247
-logname arquivo ........................................................ 247
-m1 ........................................................................... 247
-m2 ........................................................................... 247
-m3 ........................................................................... 248
-Ma n......................................................................... 248
-maxport n ................................................................. 248
-Mf n ......................................................................... 248
-Mi n.......................................................................... 249
-minport n.................................................................. 249
-Mm n........................................................................ 249
-mmax n .................................................................... 249
-Mn ........................................................................... 249
-Mp n ........................................................................ 250
-Mpb n....................................................................... 250

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Dominando o Progress
-Mr n ......................................................................... 250
-Mv n ........................................................................ 250
-Mxs n ....................................................................... 250
-n n........................................................................... 251
-N protocolo ............................................................... 251
-nb n ......................................................................... 251
-Nd device ................................................................. 251
-NL............................................................................ 252
-Nn Cliente................................................................. 252
-Nv n......................................................................... 252
-o impressora ............................................................. 252
-p procedure .............................................................. 253
-P senha .................................................................... 253
-param texto .............................................................. 253
-pf arquivo ................................................................. 253
-plm .......................................................................... 253
-pls ........................................................................... 254
-populate ................................................................... 254
-pp diretório ............................................................... 254
-pwqdelay.................................................................. 254
-pwqmin n ................................................................. 254
-pwscan n .................................................................. 255
-pwsdelay n ............................................................... 255
-pwwmax n ................................................................ 255
-q ............................................................................. 255
-Q............................................................................. 256

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Dominando o Progress
-Q2 ........................................................................... 256
-r .............................................................................. 256
-rand n ...................................................................... 256
-rg............................................................................. 257
-RO ........................................................................... 257
-rptint n ..................................................................... 257
-rq............................................................................. 257
-rr ............................................................................. 257
-s n ........................................................................... 258
-S serviço................................................................... 258
-Sn serviço ................................................................. 259
-spin n ....................................................................... 259
-stream Código Página................................................. 259
-stsh n ....................................................................... 259
-SYBc n...................................................................... 259
-SYBt n ...................................................................... 260
-t .............................................................................. 260
-T diretório................................................................. 260
-TB n ......................................................................... 260
-TM n ........................................................................ 260
-tok n ........................................................................ 261
-trig diretório .............................................................. 261
-tstamp...................................................................... 261
-usrcount n ................................................................ 261
-U usuário .................................................................. 261
-vw ........................................................................... 262

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Dominando o Progress
-VO versão................................................................. 262
-v6colon .................................................................... 262
-v6q .......................................................................... 262
-xc coleção................................................................. 262
-y.............................................................................. 263
-yc ............................................................................ 263
-yd ............................................................................ 263
-yx ............................................................................ 264
-yy ano ...................................................................... 265
Banco de Dados Multi−Volumes.............................. 266
O que é o banco multi- volumes?................................... 266
Por que usar Banco Multi-Volumes?.............................. 267
Criando a estrutura multi- volumes ................................ 268
Formação do arquivo de estrutura ................................ 268
Criando o Banco ........................................................... 269
MAGNUS............................................................. 272
Apresentação................................................................ 272
Como o MAGNUS funciona?.......................................... 272
Lista de Diretórios do MAGNUS (principais) .................... 273
Funcionamento do MENU.............................................. 274
Validando o acesso ao Programa .................................. 276
Bancos Históricos ......................................................... 277
Desenvolver em Windows para usar no UNI X... ............ 279
Criar Bancos para Testes/ Desenvolvimento................... 284
Criando os bancos....................................................... 284

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Dominando o Progress
UNI X AI X ................................................................... 286
Windows NT............................................................... 287
Utilizando zoom de cadastro Datasul............................. 289
Capítulo n ........................................................... 293
Softwares, Utilitários & Sites diversos...................... 293
NetTerm ....................................................................... 293
Configure as teclas de acordo com o MAGNUS................ 294
Kea!X............................................................................ 295
PCase ........................................................................... 296
Viper............................................................................. 297
ERWin .......................................................................... 297
Sites sobre Progress ..................................................... 299

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Capítulo 1

Apresentando o Progress

O que é o Pr ogr e ss?

A linguagem Progress foi desenvolvida pela em presa


Pr ogr ess Soft w ar e Cor por at ion em 1984, inicialm ent e
par a sist em a oper acional UNI X com uso em m ainfram es
par a pr ocessam ent o de gr ande volum e de dados, com o
alt er nat iv a par a out r as linguagens da época com o Cobol,
Adabas, Nat ur al, Clipper , et c, que ex igiam do
program ador escrever um código m uit o ext enso para
qualquer aplicação. Tam bém um a alt er nat iva com o Banco
de Dados Relacional de alt a per for m ance e segur ança,
em but ido em um único produt o.

A Pr ogr ess Cor por at ion t em sua sede em Bedfor d,


Massachuset t s USA, com filiais em div er sos países. No
Br asil sua r epr esent ant e é a Pr ogr ess do Br asil/ SP.

Um a das m aior es at r at iv os do Pr ogr ess é sua


por t abilidade e independência de plat afor m a. Ele funciona
em pr at icam ent e t odos os sist em as oper acionais
exist ent es com o DOS, Window s 3x,95,NT, UNI X, OS/ 2,
Novell, VMS, Mot if, Xenix, CTOS ent r e diver sos out r os,
isso u t ilizando o m esm o código font e.

Seu Banco de Dados Relacional é de alt íssim a


perform ance e ext rem a segurança, igual ou at é m esm o

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Apresentando o Progress 21
superior ao bancos m ais populares do m ercado com o
Oracle, DB/ 2 I BM, Sybase, MS- SQL Server, ent re out ros.

A per feit a int egr ação ent r e linguagem e banco de


dados fazem do Pr ogr ess um a ex celent e fer r am ent a par a
const r ução de qualquer aplicação com er cial. I sso por que
as cam adas de desenv olv im ent o - r egr as de negócios,
dados e int er face est ão t ot alm ent e int er ligadas, o que
ev it a qualquer redundância ou ret rabalho em qualquer
cam ada da aplicação.

A at ualização e dist r ibuição dos aplicat iv os em


Pr ogr ess t am bém é bast ant e sim plificada. Um sist em a
pode ser t ot alm ent e cent r alizado par a acesso de v ár ios
client es sim ult âneos e at ualizado a qualquer t em po,
parcialm ent e ou com plet am ent e sem gerar qualquer erro
ou necessit ar de um a par ada m om ent ânea do sist em a.

Com o funciona o Progress?

O funcionam ent o do Pr ogr ess é bast ant e sim ples. A


configur ação t ípica e m ais com um é a inst alação e
arm azenam ent o cent r alizado do Pr ogr ess ser v idor e
client e, bancos de dados e aplicações em um ser v idor
disponív el par a acesso de div er sos client es em r ede.

Há t am bém div er sas out r as configur ações possív eis par a


um a aplicação Pr ogr ess: m últ iplos ser v idor es, bancos de
dados dist r ibuídos ent r e ser v idor es e/ ou plat afor m as
dist int as, com o ser á v ist o no capít ulo Ar quit et ur as de
aplicação. A figur a a seguir exem plifica m elhor um a
configur ação m ais sim ples.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


22 Dominando o Progress

Arquit et ura de
aplicação

Servidor de rede com


instalação do Progress
server e client;
Sessão multi-usuário
dos bancos de dados;
Aplicativos em Progress

I nst a la ndo o soft w a r e

Ser á apr esent ada a inst alação do Pr ov ision par a Window s

Os pr é- r equisit os par a inst alação são apenas m ídia( s) e


licença( s) para com eçar a usar .
Tela inicial de instalação
Este é a primeira tela para instalação
do Progress versão 8.x para sistema
operacional Microsoft Windows
95/ 98/ NT

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Apresentando o Progress 23
Ser á pr eciso especificar na t ela de inst alação o
Nom e da Em presa, o Núm ero de Série e Códigos de
Cont r ole par a v alidar o pr odut o e pr osseguir a inst alação.

Você pode t am bém acrescent ar out ros produt os à


m esm a inst alação, especificando os núm er os de sér ies e
v alidador es.

I nform e os dados e clique no bot ão Additional


Products para acrescent ar à list a de program as,
confor m e m ost r ado na figur a acim a dest acado em azul

A pr óx im a t ela solicit a a localização par a inst alação


do Pr ogr ess, você pode especificar o dr ive o dir et ór io
aonde ser ão copiados os ar quiv os. Por padr ão o dir et ór io
suger ido é " DLC" , m as você pode alt er á- lo par a out r o de
sua escolha. Todos os dados infor m ados na inst alação
ser ão incluídos na configur ação do Pr ogr ess cont ida no
arquivo DLC/ progress.cfg, o qual validará a execução de
t odos os aplicat iv os Pr ogr ess.

J Como é padrão do Progress o diretório DLC toda sua


literatura o cita por padrão também. Então saiba que a

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


24 Dominando o Progress
nomenclatura DLC sempre se refere à localização de
instalação do Progress.

A pr óx im a t ela solicit a o gr upo de program as a ser


cr iado no ser vidor e o dir et ór io padr ão aonde o Pr ogr ess
salvar á ar quivos de pr ogr am as, t em por ár ios ent r e out r os.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Apresentando o Progress 25

Após o t ér m ino da inst alação ser ão cr iados esses


ícones no gr upo de pr ogr am as infor m ado na inst alação,
com o a figura abaixo:

A figur a acim a dem onst r a os ut ilit ár ios do Pr ogr ess


Pr ov ision, um t ipo de licença full da Pr ogr ess sim ilar por
ex em plo ao Micr osoft Visual Basic Pr ofessional ou Delphi
Client / Server.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


26 Dominando o Progress

Apr e se nt a ndo os a plica t ivos

Desk t op
É um aplicativo desenvolvido em Progress 4GL
modo gráfico que apresenta os botões dos
aplicativos Progress disponíveis.
Arquivo: _desk.p

Procedure Editor

Aplicat iv o em Pr ogr ess 4GL par a escr it a do código


font e, execução de pr ocedur es, debuger , com pilação e
qualquer procedim ent o por m eio de código.

Arquivo _ edit.p

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Apresentando o Progress 27

Dat a Adm inist rat ion

Aplicat iv o desenv olv ido em Pr ogr ess 4GL par a


adm inist r ação e m anut enção dos bancos de dados.

Com ele você pode:

Cr iar , conect ar e alt er ar definições de bancos de dados;

Visualizar r elat ór ios de est r ut ur as de t abelas, cam pos,


índices;

Definir segur ança dos dados, salv ar definições e cont eúdo


dos dados, edit ar par âm et r os, et c.

Arquivo: _adm in.p

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


28 Dominando o Progress

Data Dictionary

Com Dicionár io de Dados você pode m odelar a


est r ut ur a de t abelas, cam pos, índices, seqüências e
t r igger s.

Tam bém um aplicat iv o t ot alm ent e em Pr ogr ess 4GL

Arquivo: _dict.p

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Apresentando o Progress 29

Application Com piler

Com o o próprio nom e diz é um aplicat iv o par a


com pilação de procedures ( program as) .

Ele possibilit a com pilar um dir et ór io ou um a ár v or e


de dir et ór ios, especificar ar quiv os iniciados por um a sub-
palav r a ou apenas ex t ensão, confir m ar sobr eposição de
pr ocedur es j á ex ist ent es, et c.

Tam bém desenvolvido em Progress 4GL

Arquivo: _com p.p

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


30 Dominando o Progress

User Configuration

Ut ilit ário desenvolvido em Progress 4GL para criação


e edição de scr ipt s de conex ão e/ ou de inicialização do
Pr ogr ess.

Arquivo: _script.p

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Apresentando o Progress 31

Report Builder

Ut ilit ár io do Pr ogr ess par a cr iação de r elat ór io


t ot alm ent e gr áficos em MS- Window s.

Com ele v ocê pode usar t abelas, inser ir gr áficos,


usar e cr iar funções definidas pelo usuár io.

þ Este aplicativo Progress é disponível apenas para


ambiente MS-Windows 3.x/ 95 ou NT.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


32 Dominando o Progress

UI B ( User I nt erface Builder)

O User I nt eface Builder é um ut ilit ár io desenv olv ido


em Pr ogr ess 4GL par a edição r ápida e gr áfica de
pr ogr am as baseados no Window s.

Ele foi int r oduzido a par t ir da v er são 7 par a


Window s t r azendo consigo div er sas inov ações e conceit os
quant o à or ient ação a obj et os, encapsulam ent o,
polim or fism o e her edit ár iedade, com o um início par a
ent r ada da linguagem Pr ogr ess na Quar t a Ger ação, daí
Progress 4GL.

Arquivo: _uib.p

þ Este utilitário não fará parte da abordagem deste livro.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Capítulo 2

Configuração do Software

Configur a çã o do Pr ogr e ss no W indow s

O Pr ogr ess por abr anger div er sos sist em as


oper acionais t em algum as difer enças quant o à
configuração do am bient e para funcionar adequadam ent e.
Por exem plo, em UNI X, MS- DOS e Nov ell as
par am et r izações são est abelecidas por m eio de linha de
com ando e definições de v ar iáv eis de am bient e, no
Window s 95 ou NT os par âm et r os são r egist r ados por
m eio de ar quiv os I NI s, ou ainda na Regist r y – com o é o
nov o padr ão int r oduzido pela v er são 8.2 e super ior es.

A inst alação do Pr ogr ess 8.x par a Window s gr ava as


infor m ações r elat iv as às pr opr iedades do aplicat iv o na
Regist r y do Window s, e t am bém em ar quivo I NI cham ado
progress.ini com o na v er são 7.x , localizado no dir et ór io
DLC/ bin.

As ent r adas na Regist r y est ar ão nos dir et ór ios


HKEY_CURRENT_USER ou HKEY_LOCAL_MACHI NE nest a
seqüência, na past a Softw are, em um a sub- past a
cham ada PSC ( Progress Soft ware Corporat ion) , conform e
m ost r a a figur a abaixo:
34 Dominando o Progress

Configuração na Regist ry

As configur ações cont idas na Regist r y t am bém


est ão no ar quiv o I NI e podem ser usada par a definir as
pr opr iedades par a o funcionam ent o e apar ência das
aplicações.

Você t am bém pode r egist r ar as configur ações


cont idas em um ar quiv o I NI par a a Regist r y do Window s
de um a m áquina client e, at r av és do um aplicat iv o em
DLC\ bin\ ini2reg.exe, v ej a a figur a a seguir :
Configuração do 35

I nclui um arquivo I NI na Registry do W indow s

O a r qu ivo pr ogr e ss.in i

Os par âm et r os V6Display, V6Colon, V6Fram e,


V6 FKeys, V6 Keys, DefaultFont FixedSys,
DefaultFixedFont FixedSys definem um a apar ência
par a a aplicação igual a ut ilizada na v er são Pr ogr ess 6,
com t ela na dim ensão de 80 linhas por 21 colunas, ár ea
de m ensagens e ár ea de st at us e font e pr opor cional, de
36 Dominando o Progress
acordo com a configuração para funcionam ent o do
MAGNUS versão I .

þ Caso você não conheça, o M AGN US é um Sistema de


Gestão Empresarial, o mais popular no Brasil.
Desenvolvido totalmente em Progress pela Datasul,
uma empresa brasileira sediada em Joinvile Santa
Catarina.

List a ge m do Ar qu ivo pr ogr e ss.in i

[Startup]
V6Display=no
V6Colon=no
V6Frame=no
V6FKeys=no
V6Keys=no
ImmediateDisplay=yes
MultitaskingInterval=100
DefaultFont=FixedSys
DefaultFixedFont=FixedSys
DLC=C:\DLC
Use-3D-Size=Yes
PROBUILD=C:\DLC\PROBUILD
PROPATH=.,D:\MAGNUS,C:\DLC\PROBUILD\EUCAPP\EUC.PL,C:\DLC\PR
OBUILD\EUCAPP,C:\DLC\gui,C:\DLC,C:\DLC\bin
OLD-PROPATH=.,C:\DLC\PROBUILD\EUCAPP\EUC.PL,C:\DLC\PROBUILD\EUCAPP
PROCFG=C:\DLC\PROGRESS.CFG
PROMSGS=C:\DLC\PROMSGS
PROMON=C:\TEMP\ESTAT.LST

[Colors]
;********************************************************************
; THE DEFINITION OF COLOR 0 THROUGH 15 IS PRIVATE TO THE PROGRESS ADE.
; MODIFYING COLORS 0 THROUGH 15 MAY PREVENT THE PROGRESS ADE FROM RUNNING.
; The following color definitions correspond to the ADE standards.
; 0 to 15 - reserved
color0=0,0,0
color1=0,0,128
color2=0,128,0
color3=0,128,128
color4=128,0,0
color5=128,0,128
Configuração do 37
color6=128,128,0
color7=128,128,128
color8=192,192,192
color9=0,0,255
color10=0,255,0
color11=0,255,255
color12=255,0,0
color13=255,0,255
color14=255,255,0
color15=255,255,255
color16=255,255,0

NORMAL=0,15
INPUT=15,0
MESSAGES=15,1

[Default Window]
;x=
;y=
;rows=
;columns=

[fonts]
;***********************************************************************
; THE DEFINITION OF FONT 0 THROUGH 7 IS PRIVATE TO THE PROGRESS ADE.
; MODIFYING FONTS 0 THROUGH 7 MAY PREVENT THE PROGRESS ADE FROM RUNNING.
; The following fonts definitions correspond to the ADE standards.
; ? - DefaultFont from Startup Section
; 0 - DefaultFixedFont from Startup Section (1 char per PPU)
; 1 - Proportional System Font
; 2 - Editor Font for 4GL program entry
; 3 - TTY Simulator (should be fixed)
; 4 - Dynamically-sized widgets, eg status-line, selection-list
; 5 - Static widgets, eg. combo-boxes
; 6 - Dynamic, bold (TranMan2)
; 7 - Reserved
font0=Courier New, size=8
font1=MS Sans Serif, size=8
font2=Courier New, size=8
font3=Courier New, size=8
font4=MS Sans Serif, size=8
font5=MS Sans Serif, size=10
font6=MS Sans Serif, size=8, bold
font7=MS Sans Serif, size=8
font8=Courier New, size=12
font9=MS Sans Serif, size=8
font10=Garamond, size=20
font11=MS Sans Serif, size=8
38 Dominando o Progress
[WinChar Startup]
DLC=C:\DLC
PROBUILD=C:\DLC\PROBUILD
PROPATH=.,C:\DLC\PROBUILD\EUCAPP\EUC.PL,C:\DLC\PROBUILD\EUCAPP
;DLC=
;PROCFG=
;PROMSGS=
;PROPATH=

[WinChar Colors]
color0=WHITE/BLUE "NORMAL"
color1=BLACK/GRAY "INPUT, UNDERLINE"
color2=BLACK/GRAY "MESSAGES, REVERSE"
color3=BLUE/WHITE "HIGHLITE, HELP"
color4=BLINK-RED/WHITE "URGENT"

;NORMAL=WHITE/BLUE
;INPUT=BLACK/GRAY
;MESSAGES=BLACK/GRAY

[WinChar Default Window]


;rows=25
;rows=50

[WinChar Keys]
;GO=F1,CTRL-X

[Debug-Init]
;******************************************************************************
; THE FOLLOWING INFORMATION IS PRIVATE TO THE DEBUGGER. IT SHOULD NEVER BE
; MODIFIED EXCEPT BY THE DEBUGGER PROGRAM.
Location=1,146,15,460,464
Pane0=1,46," "
Pane1=1,14,""
Pane2=1,16,"Commands in Queue: 0"
Pane3=1,25,""
DebuggerName=PRODEBUG.EXE

[Debug-Macros]
Macro0=r, run &file
Macro1=c, continue
Macro2=s, step
Macro3=n, next
Macro4=b, break &file &line
Macro5=cb, cancel break &file &line
Macro6=sb, show breaks
Macro7=ss, show stack
Configuração do 39
Macro8=u, up
Macro9=d, down
Macro10=di, display &text
Macro11=sm, show macros

[Debug-Buttons]
Button0=Run,run &file
Button1=Cont,continue
Button2=Step,step
Button3=Next,next
Button4=Break,break &file &line
Button5=Stack,show stack
Button6=Up,up
Button7=Down,down
Button8=Disp,display &text
Button9=Exit,exit

[ProADE]
;DividerFgColor=15
;DividerBgColor=1
;OKBoxFgColor=1
;OKBoxBgColor=8
;FillinFgColor=0
;FillinBgColor=8
;Editor4GLFgColor=DEFAULT
;Editor4GLBgColor=DEFAULT
;Editor4GLFgSmallColor=0
;Editor4GLBgSmallColor=8
;FixedFont=0
;StandardFont=1
;Editor4GLFont=2
;EditorTabStop=4

[Proedit]
SaveSettings=yes
BufList=
ExitWarning=yes
SaveBufList=no
MinimizeBeforeRun=no
RestoreAfterRun=yes
PauseAfterRun=yes
AutoCleanup=yes
EditorFont=8
New=SHIFT-F3
Open=F3
Close=F8
40 Dominando o Progress
NewProcedureWindow=CTRL-F3
Save=F6
SaveAs=SHIFT-F6
Undo=CTRL-Z
Cut=CTRL-X
Copy=CTRL-C
Paste=CTRL-V
Find=CTRL-F
FindNext=F9
FindPrevious=SHIFT-F9
Replace=CTRL-R
GotoLine=CTRL-G
List=CTRL-L
NextBuffer=F7
PreviousBuffer=SHIFT-F7
Run=F1
CheckSyntax=SHIFT-F2
Debug=SHIFT-F4
CompilerMessages=CTRL-E

[RBStartup]
;RBSTARTUP=

[ReportBuilderSaveList]
ActionBar=1
FormatBar=1
FieldNames=0
SortFieldNames=0
ShowHiddenTables=0
PasteArgs=1
ShHzRul=1
ShVtRul=1
ShGrd=1
Maximize=1
NotFirstTime=1
Library=
Report=Teste

[ReportBuilderPreferences]
InstantRep=2
PromptFields=1
ScrBarHz=1
ScrBarVt=1
PromptConnection=0

[ReportBuilderDefaults]
Configuração do 41
DefMeas=1
PgLM=1
BotM=50
LeftM=50
RightM=50
TopM=50
RulPit=10
VRulPit=10
Pts=120
SnapTo=1
Color=0
WidthRep=1
WidthColor=8
FaceName=Arial
LogF=No
LogT=Yes
LibDir=
DatabaseDir=
ImgDir=
UDFDirectory=
MemExt=TXT
ImgExt=BMP
ImageQuality=0

[uib]

[Procomp]
SaveSettings=yes
FileSpec01=.,*.p *.w
DefFileSpec=*.p *.w
LogFile=compile.log
ShowStatus=yes
RemoveOldRs=yes
IfNoR=no
SubDirs=yes
SaveNewRs=yes
XrefAppend=no
ListAppend=no
PageLength=60
PageWidth=80
V6Frame=yes
StreamIO=no

A list agem acim a é a ut ilizada par a o funcionam ent o


do MAGNUS v er são I em Window s.
42 Dominando o Progress
Configur a ndo o Pr ogr e ss pa r a UN I X

Após a inst alação por m eio de fit a ou CD, apenas


edit e a( s) pr ofile( s) set ando as v ar iáv eis de am bient e.

Exem plo de script

TERM=vt220 ; export TERM


DLC=/sistemas/dlc ; export DLC
PATH=/usr/bin:$DLC:$DLC/bin:/sistemas/magnus ; export PATH
PROCFG=$DLC/progress.cfg ; export PROCFG
PROMSGS=$DLC/promsgs ; export PROMSGS
PROPATH=$DLC,$DLC/bin,$DLC/tty,/sistemas/magnus
export PROPATH
$DLC/bin/mpro –pf magnus.pf

Va r iá ve is de a m bie n t e

Variável Definição

ACCESS Especifica quem t er á per m issão no


Pr oCont r ol em am bient e Window s NT
Exemplo

ACCESS= Adm inist rat or

D LC I nfor m a a localização da inst alação do


Pr ogr ess
Exemplo

SET DLC= C: \ DLC ( DOS/ Windows)

DLC= / app/ dlc ; export DLC ( UNI X)

D LCRES I nfor m a a localização do aplicat iv o


Pr ogr ess Result s
Configuração do 43

Exemplo

DLC= / usr/ m yres ; export DLC

EVTLEVEL Especifica o nív el de infor m ações a ser em


gr av adas no Ev ent Log em Window s NT

Parâm etros

N ON E - nenhum a inform ação;

BRI EF - apenas er r os e aler t as;

NORMAL - er r os, aler t as e os m esm os


gravados no arquivo .lg;

FULL - t odas m ensagens


Exemplo

EVTLEVEL= BRI EF

PATH List a de dir et ór ios par a uso do Sist em a


Oper acional
Exemplo

( UN I X )
PA TH = $ PA TH : $ D LC: $ D LC/ b i n : / m a g n u s : / r h p l u s
e x p o r t PA T H

( D OS/ Wi n d o w s)
S ET PA T H = % PA T H % ; % D LC% ; % D LC% / b i n ; M : \MAGNUS; M:\RHPLUS

PROAPSV Localização do ex ecut áv el do Pr ogr ess


Applicat ion Server
Exemplo

PROAPSV=/$DLC/bin/_proapsv (UNIX)

PROAPSV=%$DLC%\bin\_proapsv.exe (Windows NT)


44 Dominando o Progress

PROCFG Localização do ar quivo de configur ação


do Pr ogr ess
Exemplo

PROCFG= C: \ DLC\ PROGRESS.CFG

PROCON V Localizaçãdo ar quiv o de Códigos de


Páginas a ser ut ilizado na sessão client e
Exemplo

PROCONV= C: \ DLC\ CONVMAP.CP

PROEXE Localização do ar quiv o ex ecut áv el do


Pr ogr ess

Exemplo

SET PROEXE= c: \ dlc\ prowin32.exe

PROLOAD Localização do dir et ór io de inst alação do


aplicat iv o Pr oBuild
Exemplo

SET PROLOAD= % DLC% \ probuild

PROM SGS Localização do ar quiv o de m ensagens


Pr ogr ess
Exemplo

PROMSGS= $DLC/ prolang/ prom sgs.por

( arquivo de m ensagens em port uguês)


Configuração do 45

PROPATH List a de dir et ór ios a ser ut ilizado pela


sessão Pr ogr ess
Exemplo

(DOS/Windows)
SET PROPATH=%PATH%;%DLC%;%DLC%\BIN;M:\MAGNUS

(UNIX)
PROPATH=/usr/bin:$PATH:$DLC:$DLC/bin:/magnus
export PROPATH

PROSRV Localização do ar quiv o ex ecut áv el do


ser vidor de dados
Exemplo

PROSVR= % DLC% \ bin\ _m prosrv.exe


( DOS/ Window s)

PROSTARTUP Define o ar quivo de par âm et r os ( .pf) a


ser usado com o padr ão pela sessão
Pr ogr ess, caso om it ido o padr ão
assum ido será o arquivo st art up.pf dent ro
do dir et ór io do Pr ogr ess.
Exemplo

(DOS/Windows)
PROSTARTUP=M:\magnus\magnus.pf

(UNIX)
PROSTARTUP=/magnus/magnus.pf
export PROSTARTUP

PROTERM CAP Define o ar quivo de configur ação de


t er m inal par a sessão em am bient e
car act er . Caso om it ido ser á assum ido
com o padrão o arquivo prot erm dent ro do
dir et ór io do Pr ogr ess
46 Dominando o Progress

Exemplo

PROTERMCAP=$DLC/protermcap ; export PROTERMCAP

TERM Define o t ipo de t er m inal de um a sessão


client e
Exemplo

(UNIX)
TERM=vt200 ; export TERM

PROM ON Define o arquivo para gravação de


est at íst icas de pr ogr am as

I Lembre-se que em UNI X as variáveis são case-


sensitive, isto é, há distinção entre maiúsculas e
minúscula, como também para o valores das variáveis!
Configuração do 47

Ar quivos

Ar qu ivos com u n s

progress.cfg Configuração do Progress

PROMSGS Mensagens do Pr ogr ess

.pf Par âm et r os sessão ser v idor / client e

.cp Definição de Códigos de Página

.df Definição de est r ut ur a de bancos/ t abelas

.d Dados de t abelas

.fd Descr ições do Bulk loader

.csh Cont eúdo ou cache do Met aschem a

.rpt Licença de uso de r elat ór ios

.v Validação

. pl Bibliot eca de pr ocedur es

Ar qu ivos t e m por á r ios

. lbi Befor e- I m age local de t r ansações

.dbi Definições de t abelas t em por ár ias

.ped Procedures t em porárias

J Quando você edita uma procedure,


48 Dominando o Progress
seja no Procedure Editor ou UI B as
alterações são salvas em um arquivo
temporário com extensão .PED no
diretório temporário definido na
sessão a cada execução da mesma.
Então se houver algum problema e a
sessão seja incerrada sem que antes
você salve suas alterações, procure
no diretório temporário os arquivos
.PED, um deles contém a procedure
até o momento da última execução.

.sr t Or ganização de r egist r os.

Geralm ent e criado quando ordenado


cam pos que não sej am index ados.

.t rp Definições do Dicionár io de Dados


t em por ár ias, ant es de ser em confir m adas
( Com m it ) no banco.

Ba n co de D a dos

.db Banco de Dados

.dn Ar quivo ext endido de banco


m ult i−volum es

.bi Befor e- I m age

.bn Ar quivo ext endido do Befor e- I m age


m ult i−volum es

. ai Aft er −I m age

.na Ar quivo ext endido do Aft er - I m age



Configuração do 49
m ult i−volum es

. lg Log de ev ent os do Banco

.lk Lock de conexão do Banco

.tl Log de t r ansações

. ds Descr ição de est r ut ur as

Se ssã o clie n t e

.p Procedure

.w Pr ocedur e UI B ( Window s)

.i Arquivo include

Prot ocolos disponíveis

NETBI OS TCP/ I P

SNA DECnet

SPX TLI

WI PC ( Servidor/ Client e DDE


Window s)

CTOS
Capítulo 3

Criando & Definindo os


Dados

Cr ia ndo um ba nco de da dos

Ex ist em t r ês m aneiras de criar um banco de dados em


Progress, com o será m ost rado baixo:

1 ° No Dat a Adm inist r at or m enu Dat abase opção Cr eat e,


ent ão infor m e a localização e o nom e do nov o banco
de dados a ser cr iado.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 51
Você t em a opção criar um banco de dados vazio, um a
cópia do spor t s ( um banco de exem plo do Pr ogr ess)
ou a par t ir de um out r a j á ex ist ent e.

2 ª At r av és de ut ilit ár io de banco de dados Pr oDB, em


linha de com ando.

Exemplo:

C:\ D LC\ bin\ prodb.exe cadast ro

Ent ão ser á solicit ado a par t ir de qual banco de dados


ser á cr iado, com as m esm a opções do Dat a
Adm inist r at ion, confor m e abaixo:
C:\ARQUIVOS>C:\DLC\BIN\PRODB cadastro
demo to get the system demonstration database, or
sports to get the sports demonstration database, or
isports to get the international sports database, or
empty to get the system empty database, or
anyname to get a copy of that database. :

Lem bre- se que a v ar iáv el de am bient e DLC dev e est ar


configurada adequadam ent e para pode criar o novo
banco de dados.

3ª Por código font e no Procedure Edit or, conform e o


código abaix o:
create database "c:\arquivos\cadastro" replace no-error.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


52 Dominando o Progress

Com o funciona o Ba nco de D a dos

Em Progress o banco
de dados é const it uído
de, pelo m enos, dois
ar quiv os básicos, o
próprio Banco de Dados
com ext ensão DB e o
Cont r ole de Tr ansações
com ex t ensão BI
( Before- I m age) .

Est es dois ar quiv os funcionam em conj unt o par a


ger enciar t odos as solicit ações dos aplicat iv os a eles
ligados.

O arquivo de " I m age Ant erior" ( Before I m age) t em um


papel im por t ant íssim o de assegur a a t ot al e com plet a
int egr idade física e r efer encial dos dados, com o por
ex em plo índices, v alidações, t ipos e for m at os at r av és do
" ENGI NE DATABASE" e confirm ar est as t ransações para
gr av ação e/ ou deleção no banco de dados após um a
com plet a consist ência dos dados ex ist ent es.

þ Os métodos para criação de um banco de dados


mostrados se aplicam apenas para Bancos de Volume
Único ou Simples, existem técnicas em Progress mais
sofisticadas para criação de bancos de dados em
Múltiplos Volumes, conforme será mostrado no capítulo
Performance.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 53

Cr ia ndo t a be la s, ca m pos, índice s, e t c

Par a m odelagem de dados é ut ilizado o aplicat iv o Dat a


Dict ionar y que pode ser ex ecut ado de div er sos m odos,
por m eio de linha de com ando ou m enu.

Linha de com ando: DLC/ bin/ prowin32.exe –p _dict .p

þ Sempre que informado uma localização de aplicativo


para o Progress esta será apresentada com barra
invertida, como padrão do UNI X e também padrão
Progress, ainda que em Windows.

þ ProWin32 refere-se apenas ao Progress em ambiente


gráfico(MS-Windows, OSF/ Motif e outros).

No Pr ocedur e Edit or escolha o m enu Tools opção Dat a


Dict ionar y .A figur a abaix o descr ev e cada det alhe do
ut ilit ár io.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


54 Dominando o Progress

• Habilit a a m anipulações dos bancos de dados


conect ados, confor m e a list agem Dat abases;

‚ Habilit a a m anipulação de t abelas, confor m e o banco


de dados selecionado na list agem Dat abases;

ƒ Habilit a a m anipulação de SEQUEN CES para o banco


de dados selecionado. Ser á ex plicado o Sequence
nest e capít ulo;

„ Habilit a a edição de t abelas confor m e o banco de


dados selecionado;

… Habilit a a edição de índices confor m e a t abela


selecionada na list agem Tables;

†‡ˆ Disponibiliza as opções confor m e os it ens acim a


escolhidos.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 55

Cr ia ndo um a t a be la

A figur a abaix o m ost r a a j anela de pr opr iedades da t abela


no Dat a Dict ionar y.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


56 Dominando o Progress

As propr iedades abaix o definem cada opção da figur a


ant erior.

Propriedade Descrição

Table N am e Define o nom e da t abela a ser cr iada.

Est e nom e dev e ser iniciado por um a let r a


de A a Z, com no m áxim o 32 caract eres e
não cont er nenhum caract er inválido, t ipo
ast erisco, vírgula, parênt eses, ent re out ros

I No Progress você pode inserir "-"


(hífen) para nomear tabelas, campos,
variáveis e outros.

Dum p File I nform a o nom e do arquivo de DUMP para


ex por t ação das definições e dos dados da
t abela.

Est e nom e poder t er at é 8 caract eres


alfanum ér icos e t am bém não dev e
apr esent ar sinais inv álidos não
reconhecidos para o nom e de arquivo, de
acor do com os pr incípios dos Sist em as
Oper acionais em ger al, ex em plo
( * ,?,% ,&,et c) .

þ I ndependente da plataforma o
arquivo para DUMP será sempre
tamanho 8 e por padrão o Progress
ao exportar o arquivo definirá a
extensão D(arquivo de dados =
dump.d) e DF(arquivo de definições =
dump.df). I sso para manter

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 57
compatibilidade do banco de dados
caso seja mudado para outro sistema
operacional.

Hidden Ocult a a t abela da list agem . Est a opção


não é disponív el no m om ent o de cr iação,
m as pode ser selecionada após a
confir m ação de gr avação da t abela no
banco.

Frozen Você pode congelar as definições da t abela


após a conclusão e gr av ação no banco de
dados.

Label Define um nom e de at é 30 car act er es


quaisquer par a ex ibição de infor m ações de
av isos ou er r os par a a t abela em t em po de
execução do aplicat ivo, com o por exem plo
a inform ação de t ravam ent o de um a
t abela por out r o usuár io, ex em plo:

Tabela cust om er t em o label Cust om er , o


qual ser á m ost r ado no av iso, confor m e a
figur a abaixo:

Description Tex t o descr it iv o par a infor m ações ou


anot ações a r espeit o da t abela.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


58 Dominando o Progress

Replication I nfor m a um a out r a t abela dest ino que ser á


espelh o dest a t abela.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 59

Cria ndo os ca m pos

A figur a abaixo m ost r a as pr opr iedades par a a cr iação de


um cam po.

Propriedade Descrição

Field N am e Nom e do cam po com at é 32 caract eres


alfanum ér icos, sem acent os ou sinais
inv álidos.

D a t a Type Define o t ipo de dado do cam po em :


I NTEGER, DECI MAL, CHARACTER,
LOGI CAL, DATE, RAW ou RECI D.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


60 Dominando o Progress

I Após o campo ser criado o Tipo de


Dado não poderá ser alterado,
como também não poderá ser
removido caso exista algum índice
da tabela a que partença.

For m a t Define um form at o ou m áscara de


acor do com o t ipo de dado para ent rada
e v isualização do cam po.
Exemplos:
->>>,>>9.99 (DECIMAL)
999 (INTEGER)
99/99/9999 (DATE)
Masculino/Feminino (LOGICAL yes/no)

Label Define um t ex t o infor m at iv o a ser


exibido com o cam po, t ant o par a
apr esent ação em coluna, lat er al e
t am bém em inform ações com o regras
de índices e out r os.

Colum n Label Define um t ex t o infor m at iv o par a


apr esent ação quando em coluna.

I nitial Value At ribui um valor inicial para o cam po


após o r egist r o ser cr iado.

Order Define am a ordem do cam po dent ro da


t abela.

Por padr ão est a or dem é incr em ent ada


de 10 em 10 e não pode r epet ir , m as
pode ser alt er ada e cont er qualquer
int er valo de núm er o int eir o.

Decim als Define o núm er o de casas decim ais num

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 61
lim it e de 10 e m ínim o de 0 par a dados
do t ipo DECI MAL

Description Tex t o descr it ivo ou infor m at ivo par a o


cam po.

Help Text I nfor m a um t ext o de Aj uda ou


I nform ação sobre o cam po para ser
ex ibido na ár ea de st at us da aplicação
quando est e est iv er sendo edit ado.

M andat ory Define o preenchim ent o de um cam po


com o obrigat ório.

Ca se - Sensit ive I nform a que um cam po t ipo


CHARACTER far á dist inção ent r e let r as
m aiúsculas e m inúsculas se ut ilizado em
um índice ou para um a com paração.

Ex t e nt Define o cam po com o um array de n


elem ent os, nom endo- os com o:

CAMPO[ n elem ent o]

I Esta propriedade do campo não


poderá ser alterada após o campo
criado!

Va lida ndo os Ca m pos

Você pode v alidar os dados e ev ent os par a um


cam po at r av és da pr opr iedade Validat ion ou por m eio de
Triggers.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


62 Dominando o Progress
A pr opr ie da de V a lida t ion

O m eio m ais fácil e r ápido par a v alidação é a


pr opr iedade Validat ion do cam po.

Você especifica as cláusulas de v alidação par a


valor es per m it idos e um a m ensagem de r et or no a ser
infor m ada par a o usuár io caso as cláusulas não sej am
sat isfeit as, confor m e a pr óx im a figur a dem onst r a.

As v er ificações são ex ecut adas dur ant e a


at ualização do cam po com o " feedback " de m ensagens e
help dest e par a o usuár io, m ost r ados na bar r a de st at us
na j anela da aplicação.

J Você pode, também, incluir uma I nclude na validação


do campo. Exemplo: { inc/ empresa.inc} , esta I nclude
deve retornar um erro para a validação do campo,
RETURN ERROR, caso as condições não forem
satisfeitas!

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 63

Validação do
Campo
A validação permite
apenas a gravação
se o usuário for Adm
ou Super, caso
contrário informa ao
usuário "Usuario
invalido! Apenas
permitido para Adm
ou Super".

Tr igge r s

O qu e u m Tr igge r ?

Um Trigger, com o na própria t radução da palavra, é


um " gat ilho" que é dispar ado par a ev ent os da t abela ou
cam po com o CREATE, UPDATE e DELETE, e a part ir da
v er são 8 do Pr ogr ess est es m esm os ev ent os par a
Replicação de dados.

O Tr igger é um m ecanism o m ais sofist icado e


com plet o par a validação de CAMPOS ou TABELAS. Ele é
um a procedure em Progress, um arquivo a part e do banco
de dados que é dispar ado par a os ev ent os de CRI AÇÃO,
DELECÃO de um a t abela ou ATUALI ZAÇÃO de um cam po.

I Os Triggers em Progress são arquivos não armazenados


no banco de dados. As informações armazenadas são
apenas localização e verificação do conteúdo ao
contrário de outros bancos como MS-SQL Server, DB/ 2
ou Oracle. Então sempre mantenha os Trigger bem
armazenados e seguros!

A pr óx im a t ela ex em plifica a sint ax e de um Tr igger .

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


64 Dominando o Progress

Propriedades do Trigger

Event o/ Propriedade Descrição

Eve nt Define qual o ev ent o ex ecut ar a o


t rigger: ASSI GN, DELETE ou
UPDATE

Procedure I nform a o arquivo do Trigger

J Use sempre a localização


definida pelo PROPATH com
barra do tipo UNI X,

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 65
exemplo: inc/ cliente.p

Che ck CRC Ver ifica se o Tr igger foi alt er ado


depois de definido no banco de
dados.

Overridable I nform e se o Trigger pode ser


edit ado ou m odificado m esm o
dur ant e ut ilização.

I A ordem de execução dos procedimentos no banco de


dados Progress é: Validação do Campo (Validation),
Trigger do Campo e Trigger da Tabela do banco de
dados, respectivamente nesta ordem.

Cr ia ndo índice s

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


66 Dominando o Progress

A criação, bem com o a m anut enção de índices em


Pr ogr ess é t ot alm ent e sim plificada. Ao cont r ár io de out r os
bancos de dados com o MS- SQL Server, por exem plo, você
não pr ecisa especificar div er sos par âm et r os e at r ibut os
com o t ax a de cr escim ent o, or ganização física, e out r os
apenas at r ibut os básicos.

Propriedade Descrição

I ndex N am e Nom e do índice par a ident ificação com


at é 32 car act er es alfanum ér icos. Deve
iniciar por um a let ra, não deve cont er
let r as inv álidas com o ç, ó, ê, com o
t am bém caract eres reservados.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 67

Description Tex t o descr it iv o ou inform at ivo para o


índice

Prim ary Define que o índice ser á o padr ão


ut ilizado par a pr ocur as ou or denação da
t abela.

Pode haver apenas um índice prim ário


par a a t abela, e esse índice t am bém não
pode ser ex cluído.

Para excluir um índice prim ário você


deve definir qual out r o índice ser á
pr im ár io ant es de efet uar a ex clusão.

Act ive Define o índice com o At iv o ou I nat iv o.

Caso o índice est ej a inat iv o ele não ser á


at ualizado aut om at icam ent e, com o
t am bém não poder á ser ut ilizado par a
pesquisa ou or denação.

Unique I nfor m a que não ser á aceit a duplicação


de v alor es no índice.

M Caso você defina um campo tipo


CHARACTER como case-sensitive e
crie um índice único para este
campo, ele aceitará valores
duplicados, ainda que não idênticos,
exemplo: Maria/ maria, Joao/ joao,etc

þ Lembre-se que o índice único é


sempre a Chave Primária (Primary
Key) para o relacionamento entre

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


68 Dominando o Progress
tabelas!

W ord I ndex Define um índice par a cam po do t ipo


CHARACTER organizado por palavras
cont idas em cada r egist r o.

þ Este índice consome bastante


espaços em disco, como também
onera bastante a performance do
banco, sendo aconselhado apenas
se realmente não houver uma outra
solução.

Abbreviat ed Cria um índice abreviado para cam po t ipo


CHARACTER ut ilizando apenas algum as
palav r as ou car act er es iniciais do
cont eúdo do cam po.

Ascending ou Define a ordem para um cam po dent ro


do índice.
Desceding
Com o padr ão inicial t odos os cam pos são
definidos com o ascendent es.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 69

Apa r ê ncia do Ca m po ( Vie w - As)

Em Pr ogr ess os cam pos são obj et os int r ínsecos,


com car act er íst icas com o t ipo de v isualização, ou em
out r as palav r as t ipo de obj et o.

Você pode definir por exem plo que o cam po lógico


sex o sej a um a TOGGLE- BOX par a ex ibição e at ualização,
sem necessidade de nenhum a linha de código par a t al.

Depois de definido o t ipo de v isualização par a o


cam po faça o t est e com o código abaix o:
Exemplo:

create cliente.
update cliente.sexo.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


70 Dominando o Progress
Tipos disponíveis: COMBO- BOX, EDI TOR, SELECTI ON-
LI ST, FI LL- I N, TEXT e RADI O- SET

Se qu e n ce s

O qu e sã o Se qu e n ce s?

Um Sequence nada m ais é que um cont ador que


pode ser at r ibuído a um cam po de um a t abela, igual a
cam po t ipo I DENTY SQL ANSI .

Com o u sa r u m Se qu e n ce ?

Ut ilize um Sequence em um a Trigger CREATE


ut ilizando um a as funções NEXT- VALUE ou CURRENT-
VALUE.
Exemplo:

TRIGGER PROCEDURE FOR Create OF Customer.

/* Automaticamente define um novo código para o cliente*/

ASSIGN Customer.Cust-Num = NEXT-VALUE(Next-Cust-Num).

J A modelagem dos dados é uma das principais etapas


para o sucesso de qualquer aplicativo. Então faça seu
modelo da melhor maneira possível afim de evitar
problemas ou retrabalho posterior!

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 71

M e t a sche m a

O qu e é o M e t a sch e m a ?

Met aschem a ou Met adados são t abelas de t abelas,


ist o é, são t abelas int r ínsecas do pr ópr io banco de dados
que cont êm as definições de t abelas, índices, cam pos,
v iew s, et c, com o t am bém par a m anipulação de dados do
pr ópr io funcionam ent o do banco de dados.

Est as t abelas est ão ocult as, m as podem ser


consult adas facilm ent e at r av és do Dat a Adm inist r at ion,
opção Repor t s, Det ailed Tables e m ar cando a opção Show
Hidden.

O funcionam ent o e r elacionam ent o dest as t abelas


são facilm ent e m anipulados par a qualquer t ipo de
consult a ou alt er ação de algum as infor m ações.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


72 Dominando o Progress

Tabelas do M et aschem a

_ Db I nfor m ações do Banco de Dados

_ Field I nfor m ações sobr e cam pos das t abelas

_ Field- Trig I nform ações sobr e t r igger s dos cam pos

_ File I nfor m ações sobr e as t abelas do banco

_ File- Trig I nfor m ações sobr e os t r igger s das t abelas

_ I ndex I nfor m ações sobr e os índices das t abelas

_ I ndex - Field I nfor m ações sobr e os cam pos dos índices

_ Sequence I nform ações sobre os sequences

_ Use r I nfor m ações sobr e os usuár ios do banco

_ View I nfor m ações sobr e View s

_ View - Col I nfor m ações sobr e os cam pos das View s

_ View - Re f I nfor m ações sobr e as t abelas das View s

Fluxogram a

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 73

Capítulo 4

Aprendendo a linguagem

D e se nvolve ndo o código

O pr im e ir o pr ogr a m a

Com o é t r adição ent r e os pr ogr am ador es o nosso


prim eiro program a será o " HELLO WORLD! " , escreva o
t ext o de código m ost r ado abaixo, escolha o m enu Com pile
e opção Run.
display "Hello World!".

Para salvar o program a – em linguagem Progress


cham ado procedure – escolha o m enu File opção Sav e As,
coloque em um dir et ór io de t r abalho e defina um nom e
com a ext ensão P( procedure) com o padrão do Progress,
isso salv ar á seu código.

Com o fa z e r a in t e r fa ce com o u su á r io?

Em Pr ogr ess a int er face com usuár io é bast ant e


int er at iv a, ele aut om at icam ent e lhe disponibiliza
m ensagens de t ela, for m at os, v alidações e v isualização
que j á for am pr ev iam ent e est abelecidas no banco de
dados, o que lhe pouca um gr ande t r abalho com o
t am bém t or na m ais fácil a padr onização de um sist em a.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


74 Dominando o Progress
Você pode fazer um pr ogr am a de inser ção apenas
com um a linha de código, exem plo: inser t cust om er
( pront o est a criado um program a de inserção) .

Cone ct a ndo o ba nco de da dos

Após v ocê j á t er cr iado o banco de dados a conex ão


é bast ant e fácil.

Você t êm dois m odos de conexão em um banco,


Pr ogr ess ou Não Pr ogr ess: Mono- Usuário ou Multi-
Usuário .

I niciarem os um a conexão m ono- usuár io, que é m ais


sim ples e ideal par a t est es em ger al.

No Dat a Adm inist r at ion escolha o m enu Dat abase


opção Connect , ent ão ser á apr esent ada a t ela abaix o:

Especifique o banco de dados e clique em OK.

Caso não sej a especificado o nom e lógico do banco


( Logical Nam e) ser á assum ido o m esm o nom e do banco
físico.

Pode- se t am bém conect ar um banco por código no


Procedure Edit or, exem plo:

Sint axe: CONNECT –db [ Localização do banco] –1 ....

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 75
connect –db c:\arquivos\sports.db -1

criando um program a para inclusão

O código abaix o ex em plifica um pr ogr am a bast ant e


sim ples par a inclusão de dados em um a t abela.
Exemplo

repeat:
insert customer with 1 columns.
end.

O código acim a cr ia um loop habilit ando a inser ção,


I NSERT, de dados na t abela, o com plem ent o do com ando
WI TH SI DE- LABELS define que o t ex t o dos cam pos est ão
alinhados ao lado esquer do da ár ea de at ualização dos
m esm o, ut ilizando t am bém o for m at o, infor m ação ou
aj uda no r odapé da j anela e v alidação j á definidos.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


76 Dominando o Progress
Not e que a apar ência da t ela é a dev ida à
configuração com aspect o do Progress versão 6,
parâm et ros V6Fram e, V6Colon, ...

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 77

Apr e n de n do a sin t a x e

D e fin in do v a r iá v e is
SI NTAXE
DEFI NE
[ [ NEW [ GLOBAL] ] SHARED] VARI ABLE variável
{ { AS Tipo} | { LI KE Cam po} } { [ NO- UNDO]
[ BGCOLOR n] [ COLUMN- LABEL Text o] [ DCOLOR n]
[ DECI MALS n] [ EXTENT n] [ FONT n] [ FGCOLOR n]
[ FORMAT Text o]
[ I NI TI AL const ant e | [ const ant e[ ,const ant e] ...] } } ]
[ LABEL Text o[ , Text o] ...]
[ MOUSE- POI NTER ex pr essão]
[ [ NOT] CASE- SENSI TI VE] [ PFCOLOR n]
[ VI EW- AS Tipo] } [ TRI GGERS]

A definição de um a v ar iáv el no Pr ogr ess v ai além da


especificação do t ipo de dado. Um a v ar iáv el par a o
Pr ogr ess é um a ent idade com o at r ibut os e ev ent os, ou
sej a, um Obj et o( W idget ) .

Na v ar iáv el é possív el configur ar t odos os at r ibut os


de um Obj et o com o por exem plo LABEL, COR, FORMATO,
VI SUALI ZAÇÃO, EVENTOS, et c.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


78 Dominando o Progress

PARÂMETROS

NEW SHARED VARI ABLE Variável

Define um a var iável a ser com par t ilhada ent r e


pr ocedur es, dir et am ent e ou indir et am ent e a par t ir da
declaração at ual. A procedure cham ada t em que nom ear
a m esm a v ar iáv el em infor m ando que est á j á est á
pr ev iam ent e inst anciada.

NEW GLOBAL VARI ABLE Variável

Define um a var iável a ser com par t ilhada ent re t odas


as pr ocedur es pr eviam ent e execut adas

SHARED VARI ABLE Variável

Define um variável que foi previam ent e criada por


um procedure ant erior com as cláusulas DEFI NE NEW
SHARED VARI ABLE ou DEFI NE NEW GLOBAL SHARED
VARI ABLE [ Declarações] .

VARI ABLE Variável

Define um a v ar iáv el cuj o v alor só est á disponív el


dent r o da pr ocedur e at ual.

AS Tipo

I ndica o Tipo de Var iáv el a ser definida. Os t ipos são


CHARACTER, DATE, DECI MAL, HANDLE, I NTEGER,
LOGI CAL, MEMPTR, RAW, RECI D, ROWI D e WI DGET-
HANDLE.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 79

LI KE Cam po de Dado

I ndica que a v ar iáv el a ser definida her dar á t odas as


car act er íst icas do cam po or iginal escolhido. Os
at ribut os/ valores herdados são FORMAT, LABEL, COLUMN-
LABEL, I NI TI AL, DECI MALS, EXTENT e VI EW- AS Opção.

NO- UNDO

Quando um valor de um a variável é m udada


dur ant e um a t r ansação e est á é desfeit a, o Pr ogr ess
r est aur a o seu valor ant er ior . Caso você a var iável não
sej a definida com est a at r ibuição o v alor não ser á
r einiciado caso sej a desfeit a a t r ansação.

Par a m elhor per for m ance use est a opção apenas


quando necessár io, por que no NO- UNDO adiciona um
nov o elem ent o a ser m anipulado na t r ansação o que
oner a m ais a aplicação.

BGCOLOR n

Especifica a cor de fundo da variável para um


am bient e gr áfico. Est a opção é ignor ada em am bient e
caract er.

[ NOT] CASE- SENSI TI VE

I ndica que a v ar iáv el faz dist inção ent r e Maiúsculas


e Minúsculas em um a com par ação que a ut ilize. Por
padr ão a v ar iáv el não dist ingue a caix a da let r a.

Par a t r ocar o at r ibut o de sensibilidade à caix a do


t ex t o use NOT CASE- SENSI TI VE.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


80 Dominando o Progress

COLUMN- LABEL Texto

Tex t o do ident ificação a ser ex ibido com a v ar iáv el.


Caso v ocê queir a usar m ais de um a linha na ex ibição
dest e use um a ex clam ação ( ! ) ant es do t ex t o a ser
ex ibido na linha infer ior .
define variable nome as character
column-label "Nome do!Cliente".
update nome.

DCOLOR n

Especifica a cor dos caract eres da variável para um


am bient e gr áfico. Est a opção é ignor ada em am bient e
caract er.

DECI MALS n

Especifica o núm er o de casas decim ais de 0 a 10


par a um a var iável do t ipo decim al. Com o padr ão o
Pr ogr ess at r ibui aut om at icam ent e 10 casas decim ais se
est a declar ação for om it ida.

EXTENT n

Declara um a variável com um Array e define o seu


t am anho no lim it e de 28000 elem ent os. Par a r em over o
at r ibut o de Ar r ay de um a var iável defina seu t am anho
com o 0.

FGCOLOR n

Especifica a cor de fundo da variável para um


am bient e gr áfico. Est a opção é ignor ada em am bient e
caract er.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 81

FONT n

Especifica a font e de apr esent ação da v ar iáv el.

FORMAT Expressão

Especifica o for m at o par a a apr ensent ação e uso da


var iável.

I NI TI AL Expressão

Especifica o v alor inicial de um a v ar iáv el. Não pode


ser at r ibuído o v alor de um a função ou const ant e
Pr ogr ess.

LABEL Texto

Define o t ex t o de ex ibição da v ar iáv el. Use & par a


sublinhar a let r a usada na t ecla de aceler ação ut ilizada
pelo MS- Window s( ALT Let r a) . Se necessár io ut ilizar um &
lit er alm ent e no t ex t o de ex ibição use && par a inclui- lo.

MOUSE- POI NTER Expressão

Especifica o pont eir o do m ouse padr ão usado na


at ualização ou ex ibição da v ar iáv el.

PFCOLOR n

Especifica a cor da v ar iáv el na at ualização por


declaração PROMPT- FOR. Est a opção é ignor ada em
int er faces gr áficas.

VI EW - AS Expressão

Define o t ipo de v isualização ou obj et o da v ar iáv el.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


82 Dominando o Progress

TRI GGER

Define os ev ent os ut ilizados na at ualização da


variável.
define variable nome as character
triggers:
on return message 'Fim da atualizacao'
view-as alert-box.
end.
update nome.

Exemplo

/* ex0031.p */

define variable dia as integer format "9" initial 1


triggers:
on entry message 'Escolha as datas'.
end.

define variable ano as integer format "9999" initial 2000.


define variable ndias as character format "x(12)"
extent 7 initial ['Domingo','Segunda','Terca',
'Quarta','Quinta','Sexta',
'Sabado'].

define variable mes as character format "x(12)"


view-as combo-box list-items
'Janeiro', 'Fevereiro', 'Marco',
'Abril', 'Maio', 'Junho',
'Julho', 'Agosto', 'Setembro',
'Outubro', 'Novembro', 'Dezembro'
mouse-pointer 'glove' no-undo initial 'Novembro'.

update dia
ano
mes.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 83

V ie w - As

Define o t ipo do obj et o da v ar iáv el m ost r ada na


t ela.
SI NTAXE
VI EW- AS
{ Com bo- Box| Edit or|
{ FI LL- I N [ NATI VE] [ Tam anho] } | Radio- Set |
Select ion- List | Slider |
{ TEXT [ Tam anho] } |
{ TOGGLE- BOX [ Tam anho] } } [ Toolt ip Tex t o]
PARÂMETROS

COMBO- BOX

Especifica que um cam po ou var iável ser á


apresent ada com o um Com bo- Box. Pode cont er valor es
t ipo Car act er , I nt eir o, Decim al, Lógico e Dat a.

EDI TOR

Visualização t ipo Edit or de Tex t o par a um cam po ou


variável. Suport a funções de Copia, Colar , Delet ar ,
Quebr a de Palav r as, Aut o- I dent ação, Bar r as de Rolagem ,
Sub- Menu, et c.

FI LL

Caix a de Tex t o par a v alor es de qualquer t ipo. É o


t ipo de v isualização/ obj et o padr ão par a at ualização de um
cam po ou variável no Progress.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


84 Dominando o Progress

RADI O- SET

Most r ado com um a sér ie de opções par a escolha de


apenas um a. Pode r eceber valor t ipo Car act er , I nt eir o,
Decim al, Lógico e Dat a.

SELECTI ON- LI ST

Visualização com o um a list a par a seleção. Apenas


aceit a v alor es car act er e é apt a a m últ iplas seleções.

TEXT

I ndica que um cam po ou variável será apenas um


t ex t o ex ibido na t ela, sem nenhum a m anipulação ou
at ualização do cont eúdo.

TOGGLE- BOX

Exibe com um a Caixa de Opção com valor lógico


YES/ NO. Aceit a apenas v alor lógico.
Exemplo

/* ex0032.p */

define variable texto as character


view-as editor
inner-lines 20
inner-chars 60
scrollbar-vertical
scrollbar-horizontal
column-label 'Editor de Texto'
no-undo mouse-pointer "glove".

define variable meses as character format "x(12)"


view-as combo-box
list-items 'Janeiro','Fevereiro','Marco',
'Abril','Maio','Junho','Julho',
'Agosto','Setembro','Outubro',
'Novembro','Dezembro'

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 85
initial 'Maio'.

define variable salvar as logical label 'Salva Informacao'


view-as toggle-box initial yes format "Sim/Nao".

define variable dia as character


view-as selection-list
inner-lines 7 inner-chars 12
list-items 'Domingo','Segunda','Terca','Quarta',
'Quinta','Sexta','Sabado'
initial 'Terca'.

define variable ano as integer


view-as radio-set
radio-buttons "1998", 1998, "1999", 1999.

form texto
meses
dia
ano
salvar
with frame f-editor
title "Edicao de Texto"
row 2 centered overlay
view-as dialog-box
side-labels.

assign input frame f-editor texto:tooltip = 'Edite seu texto'


input frame f-editor meses:tooltip = 'Escolha um mes'
input frame f-editor dia:tooltip = 'Escolha um dia'
input frame f-editor ano:tooltip = 'Escolha um ano'
input frame f-editor salvar:tooltip = 'Salva informacao'.

update texto
meses
dia
ano
salvar
with frame f-editor.

message "Voce escolheu..." skip(1)


"Dia:" dia:screen-value skip
"Mes:" meses:screen-value skip
"Ano:" ano skip
"Salvar:" salvar skip
"Observacao:" texto
view-as alert-box.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


86 Dominando o Progress
D e fin in do Fr a m e s
SI NTAXE
DEFI NE [ [ NEW] SHARED] FRAME Nom e do Fram e
[ I t em 1, I t em 2, I t em n, ...]
[ { HEADER| BACKGROUND} I t em 1, I t em 2, I t em n, ...]
WI TH [ ACCUM [ Tam anho Máxim o] [ AT Posição]
[ ATTR- SPACE| NO- ATTR- SPACE]
[ CANCEL- BUTTON Bot ão] [ CENTERED]
[ COLOR] [ COLUMN n] [ n COLUMNS]
[ DEFAULT- BUTTON Bot ão]
[ [ n] DOWN] [ EXPORT] [ FONT n]
[ FRAME Nom e do Fram e] [ KEEP- TAB- ORDER] [ NO-
BOX]
[ NO- HI DE] [ NO- LABELS] [ USE- DI CT- EXPS]
[ NO- VALI DATE] [ NO- HELP] [ NO- UNDERLI NE]
[ OVERLAY]
[ PAGE- BOTTOM| PAGE- TOP] [ RETAI N n] [ ROW n]
[ SCREEN- I O| STREAM- I O] [ SCROLL n] [ SCROLLABLE]
[ SI DE- LABELS] [ SI ZE n BY n]
[ STREAM St ream ] [ THREE- D] [ TI TLE Text o] [ TOP-
ONLY]
[ USE- TEXT] [ V6FRAME [ USE- REVVI DEO| USE-
UNDERLI NE] ]
[ VI EW- AS DI ALOG- BOX] [ WI DTH n] [ I N WI NDOW
Janela]

Um Fram e na linguagem Progress é um form ulário ou


sim plism ent e For m . Ele é um obj et o t ipo cont ainer , onde
out r os obj et os est ão acoplados ou sobr epost os, igual por
exem plo um a j anela do MS- Window s com div er sas caix as
de t ex t os, bot ões, labels, e out r os.

A j anela acim a equiv ale a um fr am e que possui


div er sos obj et os em seu int er ior , inclusiv e out r os fr am es.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 87

PARÂMETROS

NEW SHARED FRAME Nom e do Fram e

Declar a que o fr am e ser a com par t ilhados dir et am ent e


ou indir et am ent e pela pr ocedur e at ual e out r as
ex ecut adas post er ior m ent e. Par a as nov as pr ocedur es
usar em a definição dev e- se ent ão declar ar da m esm a
form a com DEFI NE SHARED FRAME Nom e do Fram e.

SHARED FRAME Nom e do Fram e

Obt em a definição de um fr am e pr eviam ent e cr iado


por um a procedure ant erior. Quando ut ililizado DEFI NE
SHARED FRAME você não deve acrescent ar ou alt erar
qualquer car act er íst ica pr ev iam ent e est ipulada, caso v ocê
queir a que o fr am e t enha as m esm as condições pr é-
definidas, por que às declar ações at r ibuídas se t or nar ão
part e do fram e ao ret ornar à procedure ant erior ou ao
execut ar novas procedures.

I TEM

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


88 Dominando o Progress
É o obj et o a ser adicionado ao fr am e. Est e
Obj et o( Widget ) pode ser um desses t ipos: FI LL- I N,
COMBO- BOX, SELECTI ON- LI ST, SLI DER, FRAME,
RECTANGLE, TOGGLE- BOX, RADI O- SET, EDI TOR,
OBJETO- COM ou TEXT, com as seguint es at r ibuições:

ATRI BUTOS DOS I TENS

AT ROW n COLUMN n
[ LEFT| COLON| RI GHT- ALI GED]

Define a linha e coluna aonde est ar á


posicionado o obj et o dent r o dofr am e com as
opções de alinham ent o à Esquer da, pelo Tex t o
infor m at ivo ou à Dir eit a.

TO n

Especifica que o posicionam ent o do obj et o


ser á de um a posição n par a t r ás.

BGCOLOR n

Cor de background do obj et o em int erface


gr áfica.

DCOLOR n

Cor do obj et o em int er face gr áfica.

FGCOLOR n

Cor do pr im eir o plano do obj et o em am bient e


gráfico.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 89

FONT n

Font e do obj et o em am bient e gr áfico.

PFCOLOR

Cor de prom pt - for par a o obj et o em am bient e


gráfico.

VI EW - AS Tipo

Tipo de obj et o par a ex ibição/ at ualização na


t ela.

SPACE( n)

n espaços em branco.

SKI P( n)

n salt os de linha.

LABEL Texto

Tex t o infor m at iv o a ser ex ibido com o obj et o.

COLUMN- LABEL Texto

Tex t o infor m at iv o a ser ex ibico com obj et o


m ost r ado em colunas.

TABELA/ REGI STRO

Repr esent a um a t abela ou um r egist r o


indiv idual a ser acr escent ado ao fr am e.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


90 Dominando o Progress

EXCEPT Cam po n, Cam po n

Não acr escent a n cam pos de um a t abela em um


fram e - os coloca com o exceção.

HEADER [ PAGE- TOP| PAGE- BOTTOM|


BACKGROUND]

Define o fram e com o um cabeçalho,rodapé ou


obj et o de fundo.

PAGE- TOP/ PAGE- BOTTOM

Apresent a o fram e na part e superior/ inferior


da saída de im pr essão Tela, Ar quiv o ou
I m pressora.

BACKGROUND

Especifica que o fr am e ser a m ost r ado com o


obj et o de fundo. Tipicam ent e usado par a
apr esent ação de im agens ou r et angulos.

ACCUM

Acum ula valor es do fr am e usando as funções MAX,


MI N, TOTAL e SUBTOTAL

ATTR- SPACE/ NO- ATTR- SPACE

Reser va/ Não Reser va espaço( s) par a o


elem ent o/ t ex t o dent r o do fr am e

CANCEL- BUTTON

Nom e do bot ão padr ão de cancelam ent o dent r o do


fram e

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 91
CENTERED

Cent r aliza o fr am e na t ela

COLOR

Especificação da cor .

WHI TE, BLUE, GRAY, YELLOW, RED, GREEN, et c

ESPECI FI CAÇÃO FONTE E FUNDO

AMBI ENTE GRÁFI CO( GUI I NTERFACE)

BGCOLOR – background

FGCOLOR – foreground

AMBI ENTE CARACTER( TTY I NTERFACE)

DCOLOR – background

PFCOLOR – foreground

ROW n

Linha inicial do fr am e

COLUMN n

Coluna inicial do fr am e

n COLUMNS

Núm ero de colunas do fram e

DEFAULT- BUTTON

Bot ão padrão do fram e ao pressionar Ret urn/ Ent er

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


92 Dominando o Progress
[ n] DOW N

Núm er o de v ezes que os elem ent os ser ão


m ost r ados/ r olados no fr am e

EXPORT

Est a ex pr essão só é v álida par a inst r ução SQL

FONT n

Núm er o da font e a ser ut ilizada no fr am e, apenas


par a int er faces gr áficas( Window s, Mot if, OS/ 2,
Linux, et c)

KEEP- TAB- ORDER

Mant ém a ordem ( zorder) dos elem ent os do fram e


ao uso do Ent er ou TAB

NO- BOX

Desabilit a a bor da do fr am e. Est a opção não pode


ser declar ada com a especificação

TI TLE Texto

Tít ulo do fr am e

NO- HI DE

Não apaga o fr am e par a a pr óxim a apr esent ação do


m esm o

NO- LABELS

Desabilit a os labels dos elem ent os cont idos no


fram e

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 93
NO- UNDERLI NE

I nibe o sublinhado sob os labels quando m ost r ados


em coluna.

NO- VALI DATE

Dasabilit a as v alidações cont idas nos elem ent os do


fram e.

OVERLAY

Mant êm t odos os fr am es de fundo, est e par âm et r o


deve ser usado sem pr e na declar ação do fr am e

RETAI N n

Núm er o de v ezes par a v isualização/ r olagem dos


elem ent os dent r o do fr am e.

SCREEN I O/ STREAM I O

Define a saída do fram e TELA ou STREAM

SCROLL n

Núm er o de v ezes que os elem ent os do fr am e ser ão


ex ibidos dent r o do m esm o.

SCROLLABLE

Define aut o scr oll par a o fr am e, ou sej a, cr ia


ut om at icam ent e as bar r as de r olagem no fr am e

SI DE- LABELS

Most r a os labels dos elem ent os ao lado dos m esm os

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


94 Dominando o Progress

THREE- D

Most ra o fram e em aparência 3D


Exemplo:

define variable c-nome as character format "x(30)" label "Nome".


form c-nome at row 2 column 12 colon-aligned
with frame f-janela3d
title "Exemplo de Janela 3D"
three-d side-labels view-as dialog-box
size 50 by 5.

update c-nome
with frame f-janela3d.

TI TLE Texto

Tít ulo do fr am e a ser ex ibido

V6 FRAME/ USE- REVVI DEO/ USE- UNDERLI NE

Tipo do fr am e. Apar ência ut ilizada na v er são


Pr ogr ess 6, Cor r ev er sa ou Habilit a sublinhado

VI EW - AS DI ALOG- BOX

Most r a o fr am e com o um a j anela t ipo pop- up

W I DTH n

Largura do fram e no m áxim o de 640 caract eres

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 95

I N W I NDOW N Janela

Most r a o fr am e em um a j anela específica. A j anela


padr ão é a j anela at ual( CURRENT- WNDOW)

D e finindo Que r ie s

O qu ê é u m a Qu e r y ?

Quer y é um a pesquisa e/ ou seleção de dados únicos,


r elacionados ou agr upados a ser em ut ilizados em um
Br ow se de r egist r os.

DEFI NE QUERY

Define um a query que pode ser abert a com ( OPEN


QUERY) ou ( GET) e associado a um BROWSE.
SI NTAXE
DEFI NE [ [ NEW] SHARED] QUERY Nom e da Query
FOR Buffer [ Cam pos] [ , Buffer [ Cam pos] ] ...
[ CACHE n] [ SCROLLI NG]
PARÂMETROS

NEW SHARED QUERY Nom e da Query

Define a query com o com part ilhada ent re


procedures

SHARED QUERY Nom e da Query

Redefine um a query j á definida em um a procedure


ant erior

QUERY Nom e da Query

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


96 Dominando o Progress
At ribui o nom e da query

FOR Buffer [ Cam pos] [ , Buffer [ Cam pos] ] ...

Define o Buffer e/ ou cam po( s) da( s) t abela( s) a


ser em ut ilizadas pela quer y

Você pode, t am bém , at r ibuir um a t abela e cit ar os


cam pos com FI ELDS( Cam pos ...) ou exceções com
EXCEPT( Cam pos ...)
Exemplo

Usando FI ELDS( )
define query q-customer for customer fields(cust-num name).

Usando EXCEPT( )
define query q-customer for customer except(balance).

CACHE n

Define o núm er o de r egist r os a ser em colocados em


buffer de m em ór ia quando os cam pos est iv er em locados
( NO- LOCK) . Os regist ros em buffer propicionam m elhor
perform ance para a m anipulação da query e dim inui o
acesso ao banco de dados, com m enor t r áfego de I / O
para a rede .

Por padrão o Progress coloca 50 regist ros em buffer


par a quer ies com o apenas um a t abela, e quer ies com
duas ou m ais t abelas cont idas é definido 30 r egist r os em
buffer . Caso você não queir a colacar regist ros em buffer
define CACHE 0.

SCROLLI NG

Especifica que a quer y ser á apt a a delocar ent r e


r egist r os em conj unt o com a cláusula REPOSI TI ON. Caso

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 97
você não especifique a query com o SCROLLI NG apenas
poder á ser ut ilizado os cam ando FI RST, NETXT, PREV,
LAST com GET para m ovim ent ar ent re os regist ros da
query.

BROW SES

Browse é um quadro, com o um planilha, onde você


nav ega por dados, ger alm ent e r egist r os de um a t abela de
um a banco de dados.
SI NTAXE
DEFI NE [ [ NEW] SHARED] BROWSE Nom e do Browse
QUERY Nom e da Query
[ SHARE- LOCK| EXCLUSI VE- LOCK| NO- LOCK]
[ NO- WAI T]
DI SPLAY { Colunas | { Regist ros [ EXCEPT Cam po ...] } }
[ OPÇÕES do CAMPO] WI TH n [ TOOLTI P Text o]
WI TH [ OPÇÕES]
PARÂMETROS

NEW SHARED BROW SE Nom e do Brow se

Define um browse com par t ilhado ent r e pr ocedur es

SHARED BROW SE Nom e do Brow se

Obt em um a definição j á declarada em um a procedure


ant erior

BROW SE Nom e do Brow se

Define o nom e do br ow se

QUERY Nom e da Query

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


98 Dominando o Progress
Define o nom e da quer y a ser associado com o br ow se

SHARE- LOCK| EXCLUSI VE- LOCK| NO- LOCK

Especifica o est at us dos r egist r os da quer y m anipulados


pelo br ow se

NO- W AI T

I nform a que um regist ro locado não inform ará, e não


aguar dar á liber ação par a at ualização

DI SPLAY { Colunas| { Registros [ EXCEPT Cam po...] } }

I nform a os regist ros da query a ser em ex ibidos pelo


br ow se.

OPÇÕES DE DI SPLAY
SI NTAXE
Nom e do Cam po, Var iável ou Expr essão
[ FORMAT Form at o] [ { LABEL Text o} | NO- LABELS]
[ COLUMN- LABEL Text o] [ COLUMN- BGCOLOR Cor]
[ COLUMN- DCOLOR Cor] [ COLUMN- FGCOLOR Cor]
[ COLUMN- FONT Font e] [ COLUMN- PFCOLOR Cor]
PARÂMETROS

FORMAT Nom e do Cam po

Det er m ina o for m at o de v isualização do cam po,


var iável ou expr essão no br ow se

LABEL Texto | COLUMN- LABEL Texto

Det er m ina o label da coluna no br ow se

NO- LABELS

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 99
I nfor m a que o cam po não t er á label no br ow se

COLUMN- BGCOLOR Cor

Det erm ina a cor de background da coluna no


brow se

COLUMN- DCOLOR Cor

Det erm ina a cor de background da coluna no


brow se em am bient e caract er ( t t y)

COLUMN- FGCOLOR Cor

Det erm ina a cor de foreground da coluna no browse

COLUMN- FONT Fonte

Det er m ina a font e de exibição da coluna no br ow se

COLUMN- PFCOLOR Cor

Det erm ina a cor de foreground da coluna no browse


em am bient e caract er ( t t y)

þ Algumas convenções do Progress são baseados no


UNI X, devido esta ser a primeira plataforma da
linguagem. TTY significa “ambiente caracter e/ ou
ANSI ”, e GUI “gráfico”.

þ Exemplo: if session: display-type = “gui ou tty” then...


þ Como também outras definições como a barra de
diretórios utilizada pelo UNI X e no Progress também do
mesmo modo “/ ” (barra simples).

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


100 Dominando o Progress

J Lembre-se que a fonte é um número contido na


configuração do Progress

HABI LI TANDO A COLUNA PARA ATUALI ZAÇÃO


SI NTAXE
ENABLE Cam po
[ HELP Text o] [ VALI DATE( Condição, Text o) ]
PARÂMETROS
PARÂMETROS

ENABLE Cam po

Habilit a a coluna par a at ualização

HELP Texto

At r ibui a m ensagem de aj uda a ser ex ibida na barra


de st at us quando da at ualização do cam po.

VALI DATE( Condição, Texto)

Det er m ina a v alidação do cam po e o t ex t o


infor m at iv o dest a v alidação

W I DTH n

Especifica a lar gur a da coluna do br ow se

TOOLTI P Texto ( MS- W indow s)

Cr ia um t ex t o de aj uda e/ ou infor m at ivo quando o m ouse


apont ado par a o br ow se

OPÇÕES DO BROW SE
SI NTAXE

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 101
WI TH { [ n] DOWN [ WI DTH n] | [ SI ZE x BY y] }
[ FGCOLOR Cor] [ BGCOLOR Cor]
[ DCOLOR Cor] [ PFCOLOR Cor]
[ LABEL- FONT Font e] [ LABEL- DCOLOR Cor]
[ LABEL- FGCOLOR Cor] [ LABEL- BGCOLOR Cor]
[ MULTI PLE| SI NGLE]
[ SEPARATORS| NO- SEPARATORS]
[ NO- ASSI GN]
[ NO- ROW- MARKERS] [ NO- LABELS] [ NO- BOX]
[ FONT Font e] [ TI TLE Text o]
PARÂMETROS

n DOWN

Det er m ina o núm er o de linhas a exibir no br ow se

W I DTH n

Det er nina a largura do brow se

SI ZE x by y

Det er m ina as dim ensões do br ow se

MULTI PLE| SI NGLE

M ULTI PLE – Habilit a seleção de m últ iplos r egist r os


no br ow se. Caso ex ist a algum a coluna habilit ada
par a at ualização ( ENABLE Coluna) não ser á possív el
fazer seleção m últ ipla, m esm o se declar ado
MULTI PLE no brow se.

SI N GLE – Desabilit a seleção de m últ iplos r egist r os


no brow se

SEPARATORS| NO- SEPARATORS

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


102 Dominando o Progress
I nclui/ Ex clui separ ador es ent r e os r egist r os ex ibidos
no brow se

NO- ROW - MARKERS

Não m ost r a m ar cador es lat er ais do br ow se quando


algum cam po est iv er habilit ado par a at ualização

NO- LABELS

Não m ost r a os labels das colunas do br ow se

NO- BOX

Rem ove o cont orno do browse

FONT Fonte

Define a font e do br ow se

TI TLE [ BGCOLOR Cor] [ DCOLOR Cor]


[ FGCOLOR Cor] [ FONT Fonte] Texto

Define o t it ulo de ex ibição br ow se


Exemplo

/* ex0036 */

define query q-customer for customer scrolling.


define browse b-customer query q-customer
display customer.cust-num
customer.name column-bgcolumn 15 column-fgcolor 2
customer.address
enable name address
with 15 down separators
title 'Customers'.

open query q-customer for each customer share-lock.

update b-customer.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 103

Ut iliza ndo a Que r y no Br ow se

OPEN QUERY
SI NTAXE
OPEN QUERY Nom e da Query { FOR| PRESELECT}
EACH Regist ro [ , { EACH| FI RST} Regist ro]
[ [ BY Regist ro ou Expressão DESCENDI NG] ]
[ I NDEXED- REPOSI TI ON]
[ MAX- ROWS n Colunas]

PARÂMETROS

OPEN QUERY Nom e da Query

I nform a qual query será abert a

FOR | PRESELECT EACH Registro

Det er m ina o escopo da quer y , ou sej a, a seleção dos


r egist r o a ser em ut ilizados pela m esm a

EACH | FI RST

Det er m ina a abr angência dos r egist r os a ser em aber t os


ou FI RST par a apenas os pr im eir os r egist r os de um a
seleção.

BY Registro ou Expressão [ DESCENDI NG]

I nform a a query qual o regist ro de ordem ou um a


expressão de det erm inará a ordem da query

I NDEXED- REPOSI TI ON

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


104 Dominando o Progress
Ot im iza out r os pr ocessos de m anuseio da quer y com o
REPOSI TI ON TO ROWI D

MAX- ROW S n Colunas

Lim it a a quant idade de r egist ros ret ornados por um a


query.

Est a opção é v álida som ent e quando a quer y t iv er a


declar ação SCROLLI NG explícit a.
Exemplo:

/* ex0038 */

define variable cidade like customer.city no-undo.

define query q-customer for customer scrolling.


define browse b-customer query q-customer
display customer.cust-num
customer.name
customer.address
customer.city
with 10 down scrollable title "Pressione F5
para filtro".

open query q-customer for each customer where


customer.city begins
'Boston' no-lock.

form b-customer with frame f-customer row 3 centered.

on "get":u, "F5":u of b-customer in frame f-customer do:


message "Informe a cidade" update cidade.
open query q-customer for each customer where
customer.city matches '*'
+ cidade + '*' no-lock.

end.

update b-customer with frame f-customer.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 105

ASSI GN

At ualiza os dados par a fr am es, v ar iáv eis ou r egist r os.


SI NTAXE
ASSI GN { [ FRAME Nom e do Fram e] | [ BROWSE] Regist r o
[ = Expressão] [ WHEN Condição] } .[ NO- ERROR]

ASSI GN { Regist ro [ EXCEPT Regist ro...] } [ NO- ERROR]

PARÂMETROS

ASSI GN [ FRAME Nom e do Fram e] [ BROW SE]


Registro

At ualiza os v alor es em buffer par a cam pos e v ar iáv eis


num fram e ou browse

WHEN Expressão

Det er m ina um a condição par a a at ualização pelo com ando


ASSI GN

NO- ERROR

Não causa e/ ou m ost ra nenhum erro quando ocorrido no


ASSI GN

Registro EXCEPT

I nfor m a os r egist r o que não ser ão afet ado pelo com ando
ASSI GN

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


106 Dominando o Progress

Com a ndos de I m pr e ssã o e


M a n ipu la çã o de Ar quivos

OUTPUT
Habilit a a saída de dados par a im pr essão, ar quiv o ou ár ea
de t r ansfer ência quando em am bient e MS- Window s
SI NTAXE
OUTPUT [ STREAM Nom e da St ream ] TO
{ PRI NTER| Arquivo| Disposit ivo|
TERMI NAL| VALUE( expression) |
" CLI PBOARD" }
[ APPEND] [ ECHO| NO- ECHO] [ KEEP- MESSAGES]
[ NO- MAP| { MAP Ent rada do Prot erm Cap} ]
[ PAGED]
[ PAGE- SI ZE { Const ant e| VALUE( Expressão) } ]
[ UNBUFFERED]
[ NO- CONVERT|
{ CONVERT [ TARGET Código de Página]
[ SOURCE Código de Página] } ]

PARÂMETROS

OUTPUT [ STREAM Nom e da Stream ] TO

Habilit a a saída de dados par a im pr essão em im pr essor a,


arquivo ou área de t ransferência do MS-
Window s( Clipboar d) , com a escolha de saída em um a
St ream ( Canal de I nput / Out put no Progress) .

PRI NTER

Ecoa a saída de dados par a a im pr essor a.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 107
Quando em MS- Window s a im pr essor a de saída ser á a
im pressora padrão pré- definida.

Em MS- DOS o padr ão ser á o m esm o que a saída PRN

No UNI X ser á ut ilizado o spooler do com ando ( lp ou lpr ) .

Arquivo

I nform a ao com ando OUTPUT para saída em um arquivo.


Exem plo: OUTPUT TO / t m p/ cadast r o.lst UNBUFFERED.

Dispositivo

Especifica o disposit iv o de saída par a a im pr essão.


Exem plo: OUTPUT TO COM2 UNBUFFERED, OUTPUT TO
\ \ SERVI DOR1\ HP

Term inal

Define a saída de im pr essão par a a t ela

Value

I nfor m a um valor de saída par a a im pr essão. Exem plo:


OUTPUT TO VALUE( SEARCH( Arquivo) ) UNBUFFERED
APPEND.

"Clipboard"

Ecoa os dados de saída par a a Ár ea de Tr ansfer ência dos


Window s

APPEND

Cont inua a saída de im pr essão ao fim de um ar quiv o

ECHO/ NO- ECHO

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


108 Dominando o Progress
Suprim e o eco dos dados

KEEP- MESSAGES

Desabilit a m ensagens dur ant e a saída de im pr essão, por


exem plo erros ocorridos durant e o processo

PAGED

I nfor m a que a saída ser á paginada

PAGE- SI ZE

I nfor m a o núm er o de linhas par a cada página na saída de


im pr essão

UNBUFFERED

Não coloca os dados de saída em buffer , cada car act er é


env iado par a a saída dest ino im ediat am ent e, com o em
um arquivo.

NO- CONVERT

Não faz nenhum t ipo de conv er são quant o aos Códigos de


Página definidos

CONVERT TARGET Código de Página SOURCE Código


de Página

Conv er t e os car act er es de saída de acor do com os


Códigos de Página Or igem e Códigos de Página Dest ino.
Exemplo:

/* ex0039.p */

output to d:\temp\teste.txt paged page-size 62 unbuffered.

form header

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 109
fill("-", 130) format "x(130)" skip
today format "99/99/9999"
"Relatorio de Clientes" at 30
"Pagina:" at 120 page-number format "999" to 130 skip
fill("-", 130) format "x(130)"
with frame f-cabecalho no-box width 130 page-top.

for each customer no-lock transaction:

view frame f-cabecalho.

display customer.cust-num
customer.name
customer.address
customer.city
customer.phone
customer.sales-rep
with column 15 width 130.
end.

output close.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


110 Dominando o Progress

I N PUT
Habilit a a ent r ada de dados a par t ir de um ar quiv o

PUT [ STREAM st ream ] [ UNFORMATTED]


[ { expression [ FORMAT st ring] [ { AT| TO} expression] } |
{ SKI P[ ( expression) ] } | { SPACE[ ( expression) } ] ...
-----------------------------------------------------------
PUT [ STREAM st ream ] CONTROL expression ...
-----------------------------------------------------------

SEEK

Ret or na um pont eir o indicando o fim do ar quivo ou a


posição de um ar quivo aber t o.

SEEK ( I NPUT| OUTPUT)

SEEK( I NPUT)

Ret or na a posição no ar quiv o aber t o

SEEK( OUTPUT)

Ret or na a posição do fim do ar quiv o


Exemplo:

define variable posicao as integer no-undo.


input from value(search('clientes.txt')) unbuffered.
assign posicao = seek(input).

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 111

input close.

display posicao.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


112 Dominando o Progress

SEEK

Posiciona um pont eir o par a escr it a ou leit ur a em um a


posicao do ar quiv o aber t o.

SEEK { I NPUT| OUTPUT| { STREAM Nom e da St ream } } TO


{ n| END}

SEEK I NPUT

Posiciona em um pont o do ar quiv o aber t o par a leit ur a

SEEK OUTPUT

Posiciona em um pont o do ar quiv o aber t o par a escr it a

SEEK STREAM Nom e da St ream

I nform a ao com ando SEEK a St ream a ut ilizar

TO n| END

I ndica um a posição ou o fim do ar quivo

Exem plo:

define v ar iable posicao as int eger .

define v ar iable t ex t o as char act er .

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 113

out put t o t est e. out append no- echo.

assign posicao = seek ( out put ) .

put unfor m at t ed 't est e de pr ogr am a'.

out put close.

input fr om t est e.out unbuffer ed no- echo.

seek input t o posicao.

set t ex t o.

display t ext o form at 'x( 30) '.

input close.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


114 Dominando o Progress

Eve nt os

O Pr ogr ess 4GL é um a linguagem or ient ada a obj et os


e ev ent os. Apesar de um a or ient ação a obj et os não
com plet a com o em Delphi, C+ + e/ ou Java, m as a
pr incípio baseada, com o ex em plo, t am bém , Visual Basic.

List a de Eve n t os

A N Y - K EY

Ev ent o genêr ico ou de abr agência t ot al, at ingido por


qualquer t ecla, com binação de t eclas ou ev ent o do
m ouse.

Aplica- se pa ra :

BROWSE RADI O- SET


BUTTON SELECTI ON- LI ST
COMBO- BOX SLI DER
EDI TOR TOGGLE- BOX
FI LL- I N
Exemplo:

define variable nome as character.

on "any-key":u anywhere do:


hide message.
message string(time, "hh:mm:ss").

end.

update nome.

A N Y - P R I N T A BLE

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 115
Ocor r e quando solicit ada um a im pr essão de um obj et o e
não há nenhum t r igger definido par a o ev ent o específico
do obj et o

Aplica- se pa ra :

BROWSE RADI O- SET


BUTTON SELECTI ON- LI ST
COMBO- BOX SLI DER
EDI TOR TOGGLE- BOX
FI LL- I N

BA CK S P A CE

Quando pr essionada um t ecla de back space no obj et o

Aplica- se pa ra :

FI LL- I N

BA CK - T A B

Ocor r e quando solicit ado um r et r ocesso e/ ou passagem


par a o obj et o ant er ior , em Window s com o padr ão Shift +
Tab.

Aplica- se pa ra :

BROWSE RADI O- SET


BUTTON SELECTI ON- LI ST
COMBO- BOX SLI DER
EDI TOR TOGGLE- BOX
FI LL- I N

BELL

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


116 Dominando o Progress
Ocor r e quando pr essionada um a t ecla m apeada par a a
função BELL no obj et o

Aplica- se pa ra :

BROWSE I MAGE
BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP TEXT
FI LL- I N TOGGLE- BOX
FRAME WI NDOW

CH O O S E

Aplica- se a bot öes e m enus quando escolhido

Aplica- se pa ra :

BUTTON MENU- I TEM ( não t oggle- box)


Exemplo:

define button b-ok label '&OK' auto-go.

form b-ok with frame f-escolha.

on "choose":u of b-ok in frame f-escolha


message 'Botao Ok pressionado' view-as alert-box.

update b-ok with frame f-escolha.

CLEA R

Aplica- se a um a caix a de t ex o, FI LL- I N, quando


pr essionada um a t ecla, ou com binação de t eclas par a
apagar o cont eúdo, em Window s o padr ão é Cont r ol Z.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 117
Aplica- se pa ra :

FI LL- I N

D EFA U LT - A CT I O N

Aplica- se a br ow ses e list as de seleção quando ocor r e


duplo clique ou ENTER no obj et o.

Aplica- se pa ra :

BROWSE SELECTI ON- LI ST

D ELET E- CH A R A CT ER

Ocor r e quando pr essionado Delet e no obj et o

Aplica - se pa ra :

FI LL- I N

D ES ELECT I O N

Quando v alor es são desm ar cados em um br ow se ou list a


de seleção m últ ipla

Aplica- se pa ra :

BROWSE RADI O- SET


BUTTON RECTANGLE
COMBO- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE

EM P T Y - S ELECT I O N

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


118 Dominando o Progress
Quando um obj et o de cont eúdo v azio é clicado

Aplica- se pa ra :

FRAME DI ALOG- BOX

EN D - BO X - S ELECT I O N

Ocor r e quando o bot ão do m ouse é liber ado após a


seleção de um a ár ea.

Aplica- se pa ra :

FRAME DI ALOG- BOX

EN D - ER R O R

Aplica- se a obj et os ou bloco de int er ação quando ocor r ido


algum t ipo de er r o ou solicit ada a finalização, ger alm ent e
ESC ou F4.

Quando ist o acont ece a um bloco de int er ação, os v alor es


das v ar iáv eis sem a declar ação NO- UNDO e/ ou valor es
at r ibuídos em banco de dados são desfeit os, caso est es
v alor es ainda não est ej am confir m ados na t abela.

EN D - ER R O R EV EN T

Ocor r e quando o usuár io pr essiona um a t ecla que


equivalhe à função END- ERROR.

Applies To:

BROWSE I MAGE
BUTTON RADI O- SET
COMBO- BOX RECTANGLE

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 119
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP TEXT
FI LL- I N TOGGLE- BOX
FRAME WI NDOW

EN D - M O V E

Ocor r e ao finalizar um a ação de ar r ast ar e solt ar um


obj et o.

Aplica- se pa ra :

BROWSE RADI O- SET


BUTTON RECTANGLE
COMBO- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE

EN D - R ES I Z E

Ocor r e ao finalizar um r edim ensionam ent o da j anela.

Aplica- se pa ra :

BROWSE RADI O- SET


BUTTON RECTANGLE
COMBO- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE

EN D K EY

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


120 Dominando o Progress
Quando pr essionada um a t ecla de finalização de t ar efa,
por padrão F4 e/ ou ESC.

Aplica- se pa ra :

BROWSE I MAGE
BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP TEXT
FI LL- I N TOGGLE- BOX
FRAME WI NDOW

EN T R Y

Quando o obj et o r ecebe foco.

Aplica- se pa ra :

BROWSE FRAME
BUTTON RADI O- SET
COMBO- BOX SELECTI ON- LI ST
DI ALOG- BOX SLI DER
EDI TOR TOGGLE- BOX
FI LL- I N WI NDOW

ER R O R

Evocado quando qualquer er r o não especificado é


causado, t ant o par a obj et o, com o par a blocos em
t r ansação.

Aplica- se pa ra :

BROWSE I MAGE
BUTTON RADI O- SET

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 121
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP TEXT
FI LL- I N TOGGLE- BOX
FRAME WI NDOW
Exemplo:

for each _user on error undo, retry transaction:


update _user.
end.

GO

Est e ev ent o é um a confir m ação sim ult ânea de um ou


v ár ios obj et os em est ado de inser ção, funcionando com o
ENTER cont ínuo. O exem plo abaixo dem onst r a um a
com binação de vár ios event os r eunidos par a um m esm o
pr óposit o.

Aplica- se pa ra :

BROWSE I MAGE
BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP TEXT
FI LL- I N TOGGLE- BOX
FRAME WI NDOW
Exemplo:

form customer.cust-num
customer.name
with frame f-customer side-labels
row 3 centered title "Alteracao".

on "return":u, "go":u, "tab":u, "entry":u, "leave":u of

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


122 Dominando o Progress
customer.cust-num do:
find customer where
customer.cust-num =
input frame f-customer customer.cust-num
no-lock no-error.
if available customer then display
customer.name with frame f-customer.
else clear frame f-customer no-pause.
end.

repeat on error undo, retry transaction:


prompt-for customer.cust-num with frame f-customer.
update customer.name with frame f-customer.
end.

H ELP

Quando solicit ada a t ecla configur ada par a Help, com o


padr ão a t ecla em Window s é F1, m as caso o Pr ogr ess
est ej a configur ado par a V6 a t ecla padr ão ser á F2, t an t o
em Window s com o em UNI X, DOS, Nov ell, et c.

Aplica- se pa ra :

BROWSE I MAGE
BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP TEXT
FI LL- I N TOGGLE- BOX
FRAME WI NDOW

I T ER A T I O N - CH A N GED

Ocorre quando qualquer int eração/ ação com o m ouse é


feit a em um br ow se.

Aplica- se pa ra :

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 123
BROWSE

LEA V E

Ocor r e quando o obj et o per de o foco.

Aplica- se pa ra :

BROWSE FRAME
BUTTON RADI O- SET
COMBO- BOX SELECTI ON- LI ST
DI ALOG- BOX SLI DER
EDI TOR TOGGLE- BOX
FI LL- I N WI NDOW

LEFT - M O U S E- CLI CK

Quando o bot ão esquer do do m ouse é pr essionado sobr e


o obj et o.

Aplica- se pa ra :

BROWSE MENU- I TEM


BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE WI NDOW
MENU

LEFT - M O U S E- D BLCLI CK

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


124 Dominando o Progress
Quando o bot ão esquer do do m ouse é pr essionado
duplam ent e sobr e o obj et o.

Aplica- se pa ra :

BROWSE MENU- I TEM


BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE WI NDOW
MENU

LEFT - M O U S E- D O W N

Quando o bot ão esquer do do m ouse é m ant ido


pr essionado sobr e o obj et o.

Aplica- se pa ra :

BROWSE MENU- I TEM


BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE WI NDOW
MENU

LEFT - M O U S E- U P

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 125
Quando o bot ão esquer do do m ouse é liber ado do obj et o
out r or a escolhido.

Aplica- se pa ra :

BROWSE MENU- I TEM


BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE WI NDOW
MENU

M EN U - D R O P

É iniciado quando com o m ouse e feit a um a ação de dr ag


and dr op, ar r ast ar e solt ar .

Aplica- se pa ra :

MENU SUB- MENU

M I D D LE- M O U S E- CLI CK

Quando é pr essionado o bot ão do m eio do m ouse, caso


est e est ej a h abilit ado pelo Win dow s.

Aplica- se pa ra :

BROWSE MENU- I TEM


BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


126 Dominando o Progress
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE WI NDOW
MENU

M I D D LE- M O U S E- D BLCLI CK

Quando ocorre duplo- clique com o bot ão do m eio do


m ouse sobr e o obj et o escolhido.

Aplica- se pa ra :

BROWSE MENU- I TEM


BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE WI NDOW
MENU

M I D D LE- M O U S E- D O W N

Quando pr essionado o bot ão do m eio do m ouse sobre o


obj et o.

Aplica- se pa ra :

BROWSE MENU- I TEM


BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 127
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE WI NDOW
MENU

M I D D LE- M O U S E- U P

Quando liber ado o bot ão do m eio do m ouse sobr e o


obj et o out r or a escolhido.

Aplica- se pa ra :

BROWSE MENU- I TEM


BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE WI NDOW
MENU

M O U S E- EX T EN D - CLI CK

Quando clicado e liber ado o bot ão do m ouse sobr e o


obj et o. O m esm o que MOUSE- MOVE- CLI CK.

Aplica- se pa ra :

BROWSE MENU- I TEM


BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


128 Dominando o Progress
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE WI NDOW
MENU

M O U S E- EX T EN D - D BLCLI CK

Quando clicado duplam ent e o bot ão do m ouse sobr e o


obj et o.

Aplica- se pa ra :

BROWSE MENU- I TEM


BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE WI NDOW
MENU

M O U S E- EX T EN D - D O W N

Quando m ant ido pr essionado o bot ão do m ouse sobr e o


obj et o.

Aplica- se pa ra :

BROWSE MENU- I TEM


BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 129
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE WI NDOW
MENU

M O U S E- EX T EN D - U P

Quando liber ado o bot ão do m ouse sobr e o obj et o.

Aplica- se pa ra :

BROWSE MENU- I TEM


BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE WI NDOW
MENU

M O U S E- M EN U - CLI CK

Quando escolhido um it em de m enu.

Aplica- se pa ra :

BROWSE MENU- I TEM


BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP SUB- MENU

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


130 Dominando o Progress
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE WI NDOW
MENU

M O U S E- M EN U - D BLCLI CK

Quando escolhido com duplo clique um it em de m enu.

Aplica- se pa ra :

BROWSE MENU- I TEM


BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE WI NDOW
MENU

M O U S E- M EN U - D O W N

Quando m ant ido pr essionado o bot ão do m ouse sobr e o


it em de m enu.

Aplica- se pa ra :

BROWSE MENU- I TEM


BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 131
FRAME TOGGLE- BOX
I MAGE WI NDOW
MENU

M O U S E- M EN U - U P

Quando liber ado o bot ão do m ouse sobr e um it em de


m enu.

Aplica- se pa ra :
BROWSE MENU- I TEM
BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE WI NDOW
MENU

M O U S E- M O V E- CLI CK

Quando escolhido um obj et o com um clique do m ouse. O


m esm o que MOUSE- EXTENT- CLI CK.

Aplica- se pa ra :

BROWSE MENU- I TEM


BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT
FRAME TOGGLE- BOX

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


132 Dominando o Progress
I MAGE WI NDOW
MENU

M O U S E- M O V E- D BLCLI CK

Quando clicado duplam ent e sobr e um obj et o.

Aplica- se pa ra :

BROWSE MENU- I TEM


BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE WI NDOW
MENU

M O U S E- M O V E- D O W N

Quando m ant ido pr essionado o bot ão do m ouse sobr e o


obj et o.

Aplica- se pa ra :

BROWSE MENU- I TEM


BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT
FRAME TOGGLE- BOX

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 133
I MAGE WI NDOW
MENU

M O U S E- M O V E- U P

Quando liber ado o bot ão do m ouse sobr e o obj et o out r or a


escolhido.

Aplica- se pa ra :

BROWSE MENU- I TEM


BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE WI NDOW
MENU

M O U S E- S ELECT - CLI CK

Ocor r e quando se clica e liber a o bot ão do m ouse.

Aplica- se pa ra :

BROWSE MENU- I TEM


BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE WI NDOW

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


134 Dominando o Progress
MENU

M O U S E- S ELECT - D BLCLI CK

Ocor r e quando se clica duplam ent e o m ouse sobr e um


obj et o.

Aplica- se pa ra :

BROWSE MENU- I TEM


BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE WI NDOW
MENU

M O U S E- S ELECT - D O W N

Ocor r e quando se seleciona um obj et o com o bot ão do


m ouse pr essionado.

Aplica- se pa ra :

BROWSE MENU- I TEM


BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE WI NDOW

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 135
MENU

M O U S E- S ELECT - U P

Ocor r e quando se seleciona um obj et o com o bot ão do


m ouse e est e é liber ado.

Aplica- se pa ra :

BROWSE MENU- I TEM


BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE WI NDOW
MENU

N EX T - FR A M E

Quando pr essionado um a t ecla ocor r endo a passagem


para out ro fram e.

Aplica- se pa ra :

BROWSE FI LL- I N
BROWSE CELL RADI O- SET
BUTTON SELECTI ON- LI ST
COMBO- BOX SLI DER
EDI TOR TOGGLE- BOX

O FF- EN D

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


136 Dominando o Progress
Quando solicit ado o últ im o elem ent o de um a list a em um
com bo- box , ex em plo: ut ilizando as t eclas Cont r ol
PageDow n.

Aplica- se pa ra :

BROWSE

O FF- H O M E

Quando solicit ado o pr im eir o elem ent o de um a list a em


um com bo- box , ex em plo: ut ilizando as t eclas Cont r ol
PageUp.

Aplica- se pa ra :

BROWSE

P R EV - FR A M E

Quando solicit ado um a t ecla par a v olt ar ao fram e


ant erior.

Aplica- se pa ra :

BROWSE FI LL- I N
BROWSE CELL RADI O- SET
BUTTON SELECTI ON- LI ST
COMBO- BOX SLI DER
EDI TOR TOGGLE- BOX

R ECA LL

Rest aur a o v alor inicial cont ido em um a caix a de edição.

Aplica- se pa ra :

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 137
BROWSE FI LL- I N
BROWSE CELL RADI O- SET
BUTTON SELECTI ON- LI ST
COMBO- BOX SLI DER
EDI TOR TOGGLE- BOX

R ET U R N

Quando pr essionado ENTER em um obj et o.

Aplica- se pa ra :

FI LL- I N BROWSE CELL

R I GH T - M O U S E- CLI CK

Quando clicado sobr e o obj et o.

Aplica- se pa ra :

BROWSE MENU- I TEM


BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE WI NDOW
MENU

R I GH T - M O U S E- D BLCLI CK

Quando pr essionado duplo clique sobr e o obj et o.

Aplica- se pa ra :

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


138 Dominando o Progress
BROWSE MENU- I TEM
BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE WI NDOW
MENU

R I GH T - M O U S E- D O W N

Quando pr essionado o bot ão dir eit o do m ouse sobr e o


obj et o.

Aplica- se pa ra :

BROWSE MENU- I TEM


BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE WI NDOW
MENU

R I GH T - M O U S E- U P

Quando liber ado o bot ão dir eit o do m ouse sobr e o obj et o.

Aplica- se pa ra :

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 139
BROWSE MENU- I TEM
BUTTON RADI O- SET
COMBO- BOX RECTANGLE
DI ALOG- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI ELD- GROUP SUB- MENU
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE WI NDOW
MENU

S ELECT I O N

Quando selecionado algum t ex t o ou it em em um obj et o.

Aplica- se pa ra :

BROWSE RADI O- SET


BUTTON RECTANGLE
COMBO- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE

S T A R T - BO X - S ELECT I O N

Quando iniciado ev ent o de m ar cação de ár ea na j anela.

Aplica- se pa ra :

FRAME ou DI ALOG BOX com a propriedade BOX-


SELECTABLE igual a TRUE.

START- MOV E

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


140 Dominando o Progress
Quando iniciado o ev ent o m ov e da j anela.

Aplica- se pa ra :

BROWSE RADI O- SET


BUTTON RECTANGLE
COMBO- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE

S T A R T - R ES I Z E

Quando iniciado o ev ent o de r edim ensionam ent o da


j anela.

Aplica- se pa ra :

BROWSE RADI O- SET


BUTTON RECTANGLE
COMBO- BOX SELECTI ON- LI ST
EDI TOR SLI DER
FI LL- I N TEXT
FRAME TOGGLE- BOX
I MAGE

TAB

Quando pr essionado a t ecla de TAB no obj et o.

Aplica- se pa ra :

BROWSE FI LL- I N
BROWSE CELL RADI O- SET
BUTTON SELECTI ON- LI ST
COMBO- BOX SLI DER

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 141
CONTROL- FRAME TOGGLE- BOX
EDI TOR

V A LU E- CH A N GED

Quando é m odificado o valor para brow ses, com bo- box,


f ill- in, r adio- set , select ion - list , slider , t oggle- box e m enu-
it em .

Aplica- se pa ra :

BROWSE SLI DER


COMBO- BOX TOGGLE- BOX
RADI O- SET MENU- I TEM ( t oggle- box)
SELECTI ON- LI ST

W I N D O W - CLO S E

Ev ocado quando é fechada a j anela v ia m ouse ou t ecla de


f inalização.

Aplica- se pa ra :

DI ALOG- BOX WI NDOW

W I N D O W - M A X I M I Z ED

Quando a j anela é m ax im izada.

Aplica- se pa ra :

WI NDOW

W I N D O W - M I N I M I Z ED

Quando a j anela é m inim izada.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


142 Dominando o Progress
Aplica- se pa ra :

WI NDOW

W I N D O W - R ES I Z ED

Quando a j anela é r edim ensionada.

Aplica- se pa ra :

WI NDOW

W I N D O W - R ES T O R ED

Quando é r est aur ado o t am anho inicial da j anela.

Aplica- se pa ra :

WI NDOW

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 143

Preprocessa dores

O que sã o pr e pr oce ssa dor e s?

Os preprocessadores no Progress funcionam com o


com andos e/ ou inst r uções lit er ais a ser em pr e- u t ilizados
para o funcionam ent o de um program a. Sim plesm ent e
com o um a palavra- chave que equivale a pr ópr ia
linguagem ou list a de inst r uções e/ ou v alor es par a
ut ilização.
Exemplo

&scoped-define p-exemplo display today.

{&p-exemplo}

No ex em plo acim a foi definido um pr epr ocessador local,


disponív el apenas par a a pr ocedur e at ual, definido com o
p- exem plo que equiv ale a inst r ução “ display t oday ” .

Ut iliz a çã o

Após definido o pr epr ocessador use CHAVES, E-


COMERCI AL, PREPROCESSADOR.

& SCOPED - D EFI N E

Define um pr epr ocessador v isív el apenas par a a


pr ocedur e onde est á declar ado.
SI NTAXE
&SCOPED- DEFI NE Preprocessador Expressão

Preprocessador

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


144 Dominando o Progress
O Nom e do pr ocessador a ser inst anciado na pr ocedur e.

Expressão

Um a list a de com andos ou inst r uções.


Exemplo

&scoped-define p-campos customer.cust-num~


customer.name~
customer.address

for each customer no-lock:


display {&p-campos}.
end.

& GLOBAL- D EFI N E

Define um pr epr ocessador global par a com par t ilham ent o


ent re procedures.
SI NTAXE
&GLOBAL- DEFI NE Preprocessador Expr essão

Preprocessador

O Nom e do pr ocessador a ser inst anciado na pr ocedur e.

Expressão

Um a list a de com andos ou inst r ução


Exemplo

&global-define p-exemplo cust-num,~


name,~
address,~
phone

select

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 145
{&p-exemplo}
from
customer nolock

& UN DEFI N E

Exclui a definição de um preprocessador.


SI NTAXE
&UNDEFI NE Nom e do Preprocessador

Exem plo
&scoped-define p-exemplo ‘Exemplo de Preprocessador’

&undefine p-exemplo

/* nada será apresentado porque o preprocessador não mais


existe */
&undefine p-exemplo

display {&p-exemplo}.

DI RETI VAS PREPROCESSADAS

Dir et iv as pr epr ocessadas são av aliadas apenas em t em po


de ex ecução, isso é, sua sint ax e e cont eúdo são v alidados
apenas quando solicit ados sob um a condição v álida.

Foi im plem ent ada a par t ir da v er são 7 do Pr ogr ess.


Exemplo

&scoped-define campos cust-num name

&if substring(proversion, 1, 1) = '8' &then


for each customer fields({&campos}) no-lock:
display {&campos}
with title 'Progress versao >= 8'.
end.
&else

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


146 Dominando o Progress
for each customer no-lock:
display cust-num name
with title 'Progress versao <= 7'.
end.
&endif

No exem plo acim a é ver ificada a ver são do Run- Tim e


Progress para execução de um a sint ax e condiciona. Caso
a v er são sej a 8 são infor m adas cláusulas v álidas par a
est a v er são, caso cont r ár io som ent e inst r uções v álidas
par a as ver sões infer ior es à 8.

Ope r a dor e s

& I F, & TH EN , & ELSEI F, & ELSE, & EN D I F

OBSERV AÇÃO : apenas algum as funções e com andos são


v álidos par a ut ilização com dir et iv as pr epr ocessadas.

I nst ruções válidas

ABSOLUTE LEFT- TRI M R- I NDEX


ASC LENGTH RANDOM
DATE LI BRARY REPLACE
DAY LOG RI GHT- TRI M
DECI MAL LOOKUP ROUND
ENCODE SQRT ENTRY
MAXI MUM STRI NG ETI ME
MEMBER SUBSTI TUTE EXP
MI NI MUM SUBSTRI NG FI LL
TI ME I NDEX MONTH
TODAY I NTEGER NUM- ENTRI ES
TRI M KEYWORD OPSYS
TRUNCATE KEYWORDALL PROPATH
WEEKDAY LC PROVERSI ON
YEAR

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 147

M ESSAGE

Most ra um a m ensagem inform at iva para o usuário.


SI NTAXE
MESSAGE [ COLOR Cor] { Text o | { SKI P [ ( n) ] } } ...
[ VI EW- AS ALERT- BOX [ Tipo] [ BUTTONS Bot ões]
[ TI TLE Text o] ]
[ { SET| UPDATE} field { { AS Tipo} | { LI KE Cam po} }
[ FORMAT Text o] [ AUTO- RETURN] ]
[ I N WI NDOW Janela]

PARÂMETROS

COLOR Cor

Nom e ou núm ero da cor do t ex t o da m ensagem .

Texto

Tex t o da m ensagem .

SKI P ( n)

Quant idade de linhas a ser em salt adas ent r e t ex t os da


m ensagem .

VI EW - AS Tipo ( W indow s/ X- W indow s)

Define o t ipo da m ensagem ( MESSAGE, QUESTI ON,


I NFORMATI ON, ERROR, WARNI NG) .

BUTTONS Botões

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


148 Dominando o Progress
Os bot ões de opção da m ensagem , caso est a m ensagem
ret orne um valor lógico ( YES- NO, YES- NO- CANCEL, OK,
OK- CANCEL, RETRY- CANCEL) .

TI TLE Texto

Tit ulo da j anela do cont ex t o da m ensagem .

SET/ UPDATE Cam po

Cam po a ser at ualizado na m ensagem .

AS/ LI KE Tipo FORMAT

Definem o t ipo e o for m at o da v ar iáv el ou cam po a ser a


at ualizado na m ensagem .

AUTO- RETURN

Aceit a < ENTER> par a finalizar a at ualização da


m ensagem .

I N W I NDOW Janela

Define a j anela de cont ex t o onde ser á ex ibida a


m ensagem .
Exemplos

for each customer share-lock:


display customer.cust-num
customer.name
with frame f-customer.

message 'Confirma exclusao?'


update l-confirma as logical format 'Sim/Nao'.

if l-confirma then do:


delete customer.
end.
end.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 149

for each customer share-lock:


display customer.cust-num
customer.name
with frame f-customer.

message 'Confirma exclusao?' view-as alert-box question


buttons yes-no
update l-confirma as logical format 'Sim/Nao'.

if l-confirma then do:


delete customer.
end.
end.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


150 Dominando o Progress

Cr ia ndo M EN US

M EN U

Cria um m enu de opções.


SI NTAXE

DEFI NE [ [ NEW] SHARED] MENU Nom e do Menu


[ FGCOLOR Cor] [ BGCOLOR Cor]
[ DCOLOR Cor] [ PFCOLOR Cor]
[ FONT Font e] [ { TI TLE Text o} | MENUBAR]
[ { LI KE Menu} ] I t em do Menu

PARÂMETROS

NEW SHARED

Define um novo m enu a ser com part ilhado ent re


procedures.

SHARED

Define um m enu j á com part ilhado por um a procedure


ant erior.

MENU Nome do Menu

I nform a o nom e do m enu a ser criado.

BGCOLOR Cor

Cor de fundo do m enu.

DCOLOR Cor

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 151
Cor de fundo do m enu para int erface não gráfica.

FGCOLOR

Cor de segundo plano.

PFCOLOR

Cor de segundo plano par a int er face não gr áfica.

FONT Fonte

Font e a ser ex ibida no m enu.

MENUBAR

I nform a que o m enu será m ost rado com o um a barra de


m enu.

TI TLE Texto

Define o Tít ulo do m enu a ser ex ibido.

LI KE Menu

Obt ém / Her da as pr opr iedades e valor es de um m enu j á


definido.

I tem do Menu

Especifica qual o t ipo de m enu ser á cr iado:

SUB- MENU Sub- Menu [ DI SABLE] [ LABEL Texto]

Define um sub- m enu a ser adicionado em um m enu j á


ex ist ent e.

RULE

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


152 Dominando o Progress
I nsere um a separação em um sub- m enu.

SKI P

I nsere um int ervalo ent re opções de um m enu.

Definições do I tem do Menu

MENU- I TEM I t em do Menu


[ ACCELERATOR Tecla( s) ] [ BGCOLOR Cor]
[ DCOLOR Cor] [ DI SABLED] [ FGCOLOR Cor]
[ FONT Font e] [ LABEL Text o] [ PFCOLOR Cor]
[ READ- ONLY] [ TOGGLE- BOX] [ Trigger]

I tem do Menu

Define o nom e do it em a ser adicionado ao m enu.

ACCELERATOR Tecla( s)

Define t eclas de aceler ação par a o acesso a opção


do m enu, com binações do t eclado com o
SHI F+ Tecla, CTRL+ Tecla, ALT, et c.

BGCOLOR Cor

Cor de fundo do m enu.

DCOLOR Cor

Cor de fundo do m enu para int erface não gráfica.

DI SABLED

Desabilit a a opção do m enu.

FGCOLOR

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 153
Cor de segundo plano.

PFCOLOR

Cor de segundo plano par a int er face não gr áfica.

LABEL

Define o t ex t o de apr esent ação da opção do m enu.

FONT Fonte

Font e a ser ex ibida no m enu.

READ- ONLY

Desabilit a a opção do m enu par a escolha do


usuár io.

TOGGLE- BOX

Define que a opção do m enu ser á um a opção de


m arcação.

Trigger

Define t r igger s par a associação de ev ent os a opção do


m enu.
Exemplos

define sub-menu tabela


menu-item tabela-customer label '&Customer'
menu-item tabela-salesrep label '&Sales'
menu-item tabela-sair label 'Sai&r'.

define menu principal menubar


sub-menu tabela label 'Tabela'.

form customer
with frame f-customer 1 columns

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


154 Dominando o Progress
title 'Customer' centered overlay.
view frame f-customer.

on choose of menu-item tabela-customer do:


for each customer with frame f-customer:
process events.
display customer.
end.
end.

assign current-window:menubar = menu principal:handle.

wait-for choose of menu-item tabela-sair.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 155

BOTÕES
SI NTAXE
DEFI NE BUTTON Bot ão [ AUTO- GO| AUTO- ENDKEY]
[ DEFAULT] [ BGCOLOR Cor] [ DCOLOR Cor]
[ FGCOLOR Cor] [ FONT Font e]
[ I MAGE- DOWN I m agem ] [ { I MAGE| I MAGE- UP}
I m agem ]
[ I MAGE- I NSENSI TI VE I m agem ]
[ MOUSE- POI NTER Pont eir o] [ LABEL Text o]
[ LI KE Bot ão] [ PFCOLOR Cor]
[ SI ZE Largura BY ALTURA] [ NO- FOCUS]
[ NO- CONVERT- 3D- COLORS]
[ TOOLTI P Text o] [ TRI GGER]

PARÂMETROS

DEFI NE BUTTON Botão

Declar a um nov o bot ão. Caso o am bient e sej a est ilo


car act er ( UNI X/ DOS/ Novell,et c) a apar ência dest e bot ão
ser á igual a um a opção de m enu.

AUTO- GO

Declar a que os ev ent os dest e bot ão ser ão ex ecut ados


assim que escolhidos.

AUTO- ENDKEY

Define aut om at icam ent e que o bot ão é um bot ão de


finalização, declar ando o ev ent o de escolha com o ev ent o
de saída ( ENDKEY) .

DEFAULT

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


156 Dominando o Progress
Define o bot ão com o padr ão, ou sej a, foco inicial do
fram e.

BGCOLOR Cor

Cor de background do bot ão.

FGCOLOR Cor

Cor de foreground do bot ão.

DCOLOR Cor

Cor de background para am bient e caract er.

PFCOLOR Cor

Cor de foreground para am bient e caract er.

FONT Fonte

Define a font e par a ex ibição do t ex t o do bot ão.

I MAGE| I MAGE- UP File arquivo.bm p


W indow s| arquivo.xpm Motif

Define a im agem do bot ão quando em est ado nor m al.

I MAGE- DOW N File arquivo.bm p


W indow s| arquivo.xpm Motif

Define a im agem do bot ão quando pr essionado.

I MAGE- I NSENSI TI VE File arquivo.bm p


W indow s| arquivo.xpm Motif

Define a im agem do bot ão quando desabilit ado.

MOUSE- POI NTER Ponteiro

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 157
Define o est ilo do pont eir o do m ouse quando apont ado
par a o bot ão.

Par a obt er os est ilos de pont eir os consult e o t ópico LOAD-


MOUSE- POI NTER( )

LABEL Texto

I nfor m a o t ex t o a ser ex ibido no bot ão.

LI KE Botão

Her da as pr opr iedades e v alor es de um bot ão já


ex ist ent e.

SI ZE Largura BY Altura

Define as dim ensões do bot ão.

NO- FOCUS

Desabilit a o foco par a o bot ão.

NO- CONVERT- 3 D- COLORS ( MS- W indow s)

Desabilit a a conv er são de cor es da im agem do bot ão.

Por padrão o Progress convert e as cores para um a faixa


RGB pré- definida, às v ezes dist or cendo a apar ência da
im agem , ent ão usa- se est a opção par a ev it ar est e t ipo de
problem a.

TOOLTI P Texto ( MS- W indow s)

Define um t ex t o de ex ibição quando o pont eir o do m ouse


est iv er sobr e o bot ão

TRI GGER

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


158 Dominando o Progress
Declar a as t r igger s a ser em ex ecut adas par a os ev ent os
do bot ão.
Exemplo

define button b-ok auto-go default


label '&Ok' tooltip 'Teste'
image-up file 'igp/sum.bmp'
image-down file 'igp/delete.bmp'
image-insensitive file 'igp/cut.bmp'
mouse-pointer 'glove'
auto-go.

form b-ok with frame f-botoes row 5 centered.

on choose of b-ok in frame f-botoes


message 'Botao OK pressionado' view-as alert-box.

update b-ok with frame f-botoes.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 159
UPDATE
Habilita a digitação de valores para um campo ou variável

SINTAXE
UPDATE [UNLESS-HIDDEN]
[{Tabela|Campo|Variável [Formato] [WHEN Expressão]}|
{VIEW-AS Tipo)}|
{Campo|Variável = Expressão n }|{[AT Coluna|TO Coluna
COLON-ALIGNED|LEFT-ALIGNED|RIGHT-ALIGNED]}|
{^}|{SPACE [(n)]}|{SKIP [(n)]}]...
[GO-ON(Key-Label...)] [Frame] [EDITING:]
[NO-ERROR]

PARÂM ETROS

[ UNLESS- HI DDEN]

Não habilit a a digit ação par a cam pos de um a t abela cuj o


at r ibut o HI DDEN sej a ver dadeir o.

UPDATE Tabela| Cam po| Variável

I nfor m a a t abela, cam po e/ ou v ar iáv el a ser habilit ada


par a digit ação ou at ualização.

FORMAT Form ato

Define o for m at o de ent r ada dos dados par a at ualização.

W HEN Expressão

Condiciona a digit ação de um cam po e/ ou var iável apenas


se sat isfeit a algum a condição est abelecida.

VI EW - AS Tipo

Define o t ipo de v isualização, obj et o do cam po ou


var iável. Tipos disponív eis ( TEXT, FI LL- I N, EDI TOR,
TOGGLE- BOX, RADI O- SET, SELECTI ON- LI ST, COMBO-
BOX) .

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


160 Dominando o Progress
Cam po| Variável = Expressão n

At r ibui valores a um cam po ou variável.

Exem plo: updat e cust om er.nam e = “ Marcio Brener” .

AT Coluna | TO Coluna

AT - Define a coluna de apr ensent ação do cam po par a


at ualização à esquer da.

TO – Define a coluna de apr esent ação do cam po par a


at ualização à dir eit a.

COLON- ALI GNED| LEFT- ALI GNED| RI GHT- ALI GNED

I nfor m a o alinham ent o do cam po em r elação a coluna


definida em AT Coluna ou TO Coluna.

SPACE( n)

Dem onst r a n espaços em um fr am e par a at ualização.

SKI P n

Salt a n linhas ent r e cam pos.

GO- ON( Key- Label)

I nfor m a qual ser á a t ecla de at ualização dos cam pos e/ ou


v ar iáv eis.

Fram e

I nfor m a o fr am e associado à at ualização dos cam pos e/ ou


v ar iáv eis.

EDI TI NG

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 161
Habilit a a edição de ev ent os a ser em r elacionados.

þ Esta forma de EDI ÇÃO DE EVENTOS procedural não é


indicada. Este tipo de manipulação de exemplos era
utilizado até a versão 6 do Progress. É mantida por
questões de compatibilidade. Use ON Evento OF Objeto
I N FRAME Frame.

NO- ERROR

Não apr esent a er r os do fr am e par a a at ualização.

J Não é uma boa forma fazer as configurações em uma


cláusula de UPDATE. A forma mais adequada é definir
todos os parâmetros em um FRAME e associa-lo a uma
cláusula de UPDATE.

Exem plo

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


162 Dominando o Progress

I m por t a çã o e Ex por t a çã o de D a dos

A im por t ação e ex por t ação de dados no Pr ogr ess é


bast ant e sim plificada, com poucas linhas de código é
possível fazer um pr ogr am a com plet o de im por t ação e
expor t ação par a ar quivo t ext o ou banco de dados, com o
dem onst r ado a seguir :

Com ando I MPORT

I MPORT [ STREAM Nom e da St ream ] [ DELI MI TER Caract er


Delim it ador] { Regist ro [ EXCEPT Cam po [ Cam po] ...] ou
^ } [ UNFORMATTED] [ NO- ERROR]

Par âm et r os

St re

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 163

Lim it es do Progress

Est es v alor es se r efer em ao Pr ogr ess v er são 8.x .

Ba n co de D a dos

TABELAS O m áxim o do t am anho do banco


de dados.

Í N DI CES Sem lim it es por t abela, com


núm ero m áxim o de índices por
t abela de acordo com o t am anho
dos blocos do Sist em a
Oper acional.

Blocos Máxim o
512 2048
1024 4096
2048 8192
4096 16384

REGI STROS De 1 a 32.000 byt es.

CAM POS At é o t am anho m áx im o da t abela.

W ORKFI LES Tam anho m ínim o de 64 byt es,


com o m áx im o lim it ado pela
quant idade de m em ór ia da
m áquina client e.

M ULTI - VOLUM ES At é 256 ar quiv os est endidos, com


o t am anho m áxim o de acordo com
o t am anho dos blocos do Sist em a
Oper acional.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


164 Dominando o Progress

BLOCOS M ÁXI M O

512 byt es 32GB


1024 byt es ( 1K) 64GB
2048 byt es ( 2K) 128GB
4096 byt es ( 4K) 256GB

N ÚM ERO DE At é 2 0 4 8 sessões sim ult âneas


USUÁRI OS m ult i- usuár ios em UNI X ou
Window s NT.

TRAN SAÇÕES 1 t ransação por usuário com o


SI M ULTÂN EAS m áxim o de 2048 t ransações.

ORD EN AÇÃO D E De 1 a 16 cam pos ou expr essões.


REGI STROS
De 1 a 197 car act er es iniciais do
t ex t o.

V ARI ÁV EI S

CH ARACTER 3.000 caract eres.

DATE 01/ 01/ 32768 A/ C at é


12/ 31/ 32767 D/ C.

D ECI M AL 50 dígit os par a int eir os m ais


decim ais.

I N TEGER - 2,147,483,648 at é
+ 2,147,483,647.

LOGI CAL Yes/ No, Tr ue/ False.

EN TRAD A E SAÍ D A 1 a 3.000 caract eres por cam po.


D E D AD OS
E scrito por Márcio Brener - http://www.geocities.com/marcio-brener
Criando & Definindo os Dados 165
D E D AD OS

N ÚM ERO DE 80 a 132 colunas para


COLUN AS N A TELA apr esent ação.

N ÚM ERO DE 1 a 255 colunas par a saída de


COLUN AS N A im pr essão.
I M PRESSORA

STREAM S 1 a 5 st ream s por procedure.

N OM EN CLATURAS

PATH UNI X: 1 - 60 Caract eres

WI NDOWS: 1 - 255

WI NDOWS NT usando NTFS: sem


lim it es.

BAN CO D E D AD OS De 1 a 11 caract eres.

VARI ÁVEI S, De 1 a 12 caract eres.


STREAM S,
PROCED URES

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


166 Dominando o Progress

Funçõe s

ABSOLUTE

SI N TAXE - ABSOLUTE( Decim al/ I nt eiro) Decim al/ I nt eiro

Ret or na um valor int eir o ou decim al o m esm o for m at o.


Exemplo

message absolute(172.34 - 12.32) view-as alert-box.


/* Retorno igual a 160,02 */

ACCUM

SI N TAXE - ACCUM Valor de Agregação

Acum ula v alor es pelo t ot al da som a de um agr upam ent o.


Est e valor de ret orno não pode ser recebido por um a
v ar iáv el, apenas m ost r ado.
Exemplo

/* ex0001.p */

for each order no-lock:


display order-num
cust-num
order-date
promise-date
ship-date
with centered.

for each order-line of order no-lock:


display line-num
item-num
qty
price
(qty * price) label "Valor Total".
accumulate qty * price (total).
display (accum total qty * price) label "Valor Acumulado"

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 167
with centered title "Detalhes".
end.
display (accum total qty * order-line.price) label
"Total"
with centered title "Ordem".
end.
display (accum total qty * order-line.price) format "-
>>>,>>>,>>9.99"
with view-as dialog-box title "Total Geral".
pause.

ALI AS

SI N TAXE - ALI AS( I nt eiro) Ca ra ct er

Ret or na o Nom e Lógico do( s) banco( s) de dados


conect ado( s) .
Exemplo

message "Alias:" alias(1) skip


"Nome Lógico:" ldbname(alias(1)) view-as alert-box.

AM BI GUOUS

SI N TAXE - AM BI GUOUS N om e da Ta bela ( ret orno Lógico)

Ret orna um valor lógico para o result ado de um a procura.


Caso um a procura única de um valor sej a encont rado em
duplicidade, isso ret ornará com o verdadeiro em um a
condição.
Exemplo:

/* ex0002.p */
/* O resultado do find retorná mais de uma ocorrência */
find customer where customer.name begins "a" no-error.
if available customer then
message "Apenas um valor encontrado" view-as alert-box.
else if ambiguous customer then
message "Mais de um valor encontrado" view-as alert-box.
else

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


168 Dominando o Progress
message "Nenhum valor encontrado" view-as alert-box.

ASC

SI N TAXE

ASC( Caract er, [ Código de Página Dest ino] , ( Código de


Página Origem ) I nt eiro

Ret orna o valor ASC de um caract er. Os Códigos de


Página de Or igem e Dest ino por padr ão são obt idos do
arquivo de configur ação inicial do Pr ogr ess " st ar t up.pf" ,
ou do ar quiv o de par am et r os do aplicat iv o, caso esse
t enha um a configur ação do Código de Página.
Exemplo

/* ex0003.p */
/* Retorna 231 */
message asc("ç") view-as alert-box.
/* Retorna 254 */
message asc("ç", "iso8859-1", "ibm850") view-as alert-box.
/* Retorna 135 */
message asc("ç", "ibm850", "iso8859-1") view-as alert-box.

AVAI LABLE

SI N TAXE - AVAI LABLE N om e da Tabela ( ret orno Lógico)

Ret or na o sucesso/ insucesso de um a pr ocur a ou r egist r o


disponív el.
Exemplo

find first customer where customer.name begins "Al" no-


error.
if available customer then
message "Procura com Sucesso" view-as alert-box.
else
message "Nenhum nome encontrado" view-as alert-box.
for each customer:

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 169
if available customer then message "Procura OK!".
end.

CAN - D O

SI N TAXE

CAN - DO( Cadeia Caract er, Valor Caract er) Lógico

Test a se um v alor est á cont ido em um a cadeia delim it ada


por vírgula.
Exemplo

/* Retorna com VERDADEIRO */


message can-do("Brasil,Alemanha,Japao", "Japao") view-as alert-box.

/* Retorna com FALSO */


message can-do("Brasil,Alemanha,Japao", "EUA") view-as alert-box.

CAN - FI N D

SI N TAXE

[ N OT] CAN - FI N D ( [ FI RST | LAST] Re gist r o

[ OF N om e da Tabela] ou [ W H ERE Expressão] [ USE-


I NDEX Í ndice]

ou

[ USI N G [ FRAM E N om e do Fr a m e ] Ca m po [ AN D [ FRAM E


N om e do Fra m e] Ca m po] ]

[ SH ARE- LOCK| N O- LOCK] [ N O- W AI T] [ N O- PREFETCH ] )

Valida um a pesquisa segundo os cr it ér ios infor m ados.


Exemplo

/* ex0004.p */

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


170 Dominando o Progress
form customer.cust-num at row 1 column 10 colon-aligned
validate(can-find(customer where
customer.cust-num = input frame f-customer
customer.cust-num),
"Cliente nao cadastrado")

customer.name at row 2 column 10 colon-aligned


with frame f-customer row 5 centered
title "Alteracao" side-labels.

repeat:
prompt-for customer.cust-num
with frame f-customer.
find customer using input frame f-customer
customer.cust-num.

update customer.name
with frame f-customer.
end.

CAN - QUERY

SI N TAXE

CAN - QUERY( Handle do Obj et o, Propriedade [ Caract er] )


Lógico

Ver ifica se um Obj et o( Widget ) cont ém um det er m inada


.propriedade.
Exemplo

/* ex0005.p */

define variable attribute as character format "x(24)" label "Propriedade".


define variable queryable as logical view-as toggle-box label "Query".
define variable setable as logical view-as toggle-box label "Set".
define variable temp-handle as widget-handle.
define variable widget-type as character format "x(24)" label "Objeto".

form widget-type attribute setable queryable


with frame f-frame
title "Exemplo da Funcao CAN-QUERY"
centered row 2.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 171
repeat:
update widget-type attribute with frame f-frame.

create value(widget-type) temp-handle.


assign queryable = can-query(temp-handle, attribute)
setable = can-set(temp-handle, attribute).

display queryable setable.


delete widget temp-handle.
end.

CAN - SET

SI N TAXE - CAN - SET( Handle do Obj et o, N om e d


Propriedade [ Charact er] )

Ver ifica se um Obj et o pode r eceber um a Propriedade


específica.
Exemplo

/* Retorna Falso */
message can-set(session:handle, "list-items") view-as alert-box.

/* Retorna Verdadeiro */
message can-set(session:handle, "data-entry-return") view-as alert-box.

EN COD E

SI N TAXE - EN CODE( Tex t o) Ca ra ct er

Recebe um t ext o e o r et or na cr ipt ogr afado.


Exemplo

/* Retorno igual a dVXxjWfn */


message ENCODE("Progress") view-as alert-box

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


172 Dominando o Progress
CH R

SI N TAXE

CHR( I nt eiro, [ Código de Página Origem ] ,


[ Código de Página Dest ino] ) Caract er

Convert e um int eiro para o seu caract er correspondent e.

O I nt eger ent re 1 e 255 corresponde a um caract er


sim ples, passív el a v isualização e im pr essão em div er sos
t er m inais. Par a v alor es super ior es a 255 e infer ior es a
65535 a função t ent ar á v er ificar o by t e equiv alent e, caso
não encont r ado um byt e nulo será ret ornado.

Código de Página Origem / Dest ino é m apa de


car act er es ut ilizado par a a ent r ada/ saída do car act er , que
podem ser om it idos, ent ão ser ão ut ilizados os Códigos de
Páginas pr ev iam ent e ut ilizados na configur ação do
Progress, conform e o arquivo em DLC/ convm ap.cp e o
param et ros - cpst r eam e - cpint er nal.
Exemplo

display chr(232) skip


chr(232, "ibm850", "iso8859-1") skip
chr(232, "iso8859-1", "ibm850").

COD EPAGE- CON V ERT

SI N TAXE

COD EPAGE- CON VERT( Ca ra ct er ,


[ Código de Página Dest ino] ,
[ Codigo de Página Origem ] )

Conv er t e um t ex t o de acor do com os Códigos Páginas


especificados.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 173
Maior es det alhes no Tópico Códigos de Página .

CON N ECTED

SI N TAXE

CON N ECTED( N om e Lógico do Banco de Dados) Lógico

I nform a se o Banco de Dados est á conect ado na


aplicação.
Exemplo

if not connected("sports") then


connect -db value(search("sports.db")) -ld sports -1.

COUN T- OF

SI N TAXE - COUN T- OF( Ca m po do BREAK- BY) I nt eiro

Ret orna o núm ero de ocorrências de um regist ro dent ro


de seleção agrupada.
Exemplo

/* ex0010.p */
for each customer no-lock break by state:
display cust-num name sales-rep state.
accumulate state (sub-count by state).
if last-of(state) then
display 100 * (accum sub-count by state state) /
count-of(state) format ">>9.9999%"
(total) column-label "% Total de!Consumidores"
with title "Vendas por Estados" centered.
end.
pause.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


174 Dominando o Progress

CURREN T- CH AN GED

SI N TAXE

CURREN T- CHAN GED N om e da Tabela [ ret orno Lógico]

I nform a se o r egist r o cor r ent e est á alt er ado.


Exemplo

/* ex0011.p */
assign session:data-entry-return = yes.

/*
Para observar este exemplo adequadamente
abra duas janelas do Procedure Editor, entao
execute este codigo nas duas janelas.
Visualize o valor na primeira, e na segunda
altere o valor e tente altera-lo novamente na
primeira. Sera retornada uma advertencia
informando que o valor visualizado na primeira
janela nao mais condiz com o valor do registro
atual.
*/

form customer.name
customer.balance
with frame f-update row 5 centered title "Mudanca de Valores".

on "go":u of frame f-update do:


do transaction:
find current customer exclusive-lock.
if current-changed customer then do:
message "Este valor foi alterado por outro usuario"
skip
"Por favor insira novamente a modificacao."
view-as alert-box.
display customer.name customer.balance with frame f-update.
return no-apply.
end.
assign customer.name customer.balance.
end.
find current customer no-lock.
end.

find first customer no-lock.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 175
display customer.name customer.balance with frame f-update.
do on endkey undo, leave:
enable customer.name customer.balance with frame f-update.
wait-for "go":u of frame f-update.
end.

CURREN T- LAN GUAGE

SI N TAXE - CURREN T- LAN GUAGE [ ret orno Ca ra ct er]

I nform a a linguagem at ual de acordo com a configuração


do param et ro - lng [ I diom a] .
Exemplo

message "O parametro -lng atual é" current-language


view-as alert-box.

CURREN T- RESULT- ROW

SI N TAXE

CURREN T- RESULT- ROW ( N om e da Query [ Ca ra ct er] )


I nteiro

Ret orna o núm ero da linha na Query.


Exemplo

/* ex0012.p */

define query q-customer for customer scrolling.


define browse b-customer query q-customer
display current-result-row("q-customer") column-label "Nº"
country
cust-num
name
with title "Lista de Clientes por Pais"
centered 10 down separators.
open query q-customer for each customer no-lock by country.

update b-customer with centered row 5.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


176 Dominando o Progress

CURREN T- ROW - M OD I FI ED

SI N TAXE

CURREN T- ROW - MODI FI ED N om e da Tabela [ Lógico]

I nfor m a se o v alor de um a colum a foi alt er ado.

CURREN T- VALUE

SI N TAXE

CURREN T- VALUE( Sequence, [ N om e Lógico do Banco] )


I nteiro

Ret orno o valor corrent e de um Sequence do banco de


dados.
Exemplo

message "O ultimo Cliente é" current-value(next-cust-num)


view-as alert-box.

D ATASERV ERS

SI N TAXE - D ATASERVERS [ r e t or no List a Caract er]

I nfor m a um a list a de Tipos de Bancos de Dados


supor t ados na configur ação/ ver são Pr ogr ess - Or acle,
ODBC, Sybase, MS- SQL, et c.

D ATE

SI N TAXE - DATE( Text o ou M ês,Dia,Ano) ret orno Dat a

Conv er t e um t ex t o em dat a ou a seqüência Mês, Dia, Ano


com o int eir os par a dat a.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 177
Se infor m ado o par âm et r o com o t ex t o est e dev e est á no
form at o pré- definido pela configur ação do Pr ogr ess,
pa râ m et ro - d .

Exemplo

/* 31 de Janeiro de 2019 */
display date("31/01/2019") format "99/99/9999".
display date(01, 31, 2019) format "99/99/9999".
pause.

D AY

SI N TAXE - DAY( Dat a) I nt eiro

Ret or na o dia do m ês de um a dat a ent r e 1 e 31.


Exemplo

message "Hoje é o dia" day(today) "do mes" view-as alert-box.

D BCOD EPAGE

SI N TAXE

DBCODEPAGE( I nt eiro ou N om e Lógico do Banco de


Dados) Caract e r

I nfor m a o Código de Página at r ibuído a um Banco de


Dados conect ado.
Exemplo

define variable i as integer no-undo.


do i = 1 to num-dbs:
display ldbname(i) dbcodepage(i) format "x(20)".
pause.
end.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


178 Dominando o Progress
D BCOLLATI ON

SI N TAXE

DBCOLLATI ON ( I nt eiro ou N om e Lógico do Banco de


Dados) Caract er

Ret or na o Código de Página, obt ido do ar quiv o


convm ap.cp, de um Banco de Dados conect ado.
Equiv alent e ao par âm et r o - cpcoll especificado no " st ar t "
do Banco.
Exemplo

define variable i as integer no-undo.


do i = 1 to num-dbs:
display ldbname(i) dbcollation(i) format "x(20)".
pause.
end.

D BN AM E

SI N TAXE - DBN AME ret orno Caract er

Ret or na o Nom e Físico do Banco de Dados, incluindo a


localização ( dir et ór io) .
Exemplo

display "Database:" to 10 dbname format "x(40)" skip


"Usuario:" to 10 userid.
pause.

D BPARAM

SI N TAXE

DBPARAM( I nt eiro ou N om e Lógico do Banco de Dados)


List a Ca ra ct er

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 179
Ret or na um a List a Delim it ada infor m ado os par am et r os
ut ilizados na conex ão do Banco.
Exemplo

define variable i as integer no-undo.

do i = 1 to num-dbs:
display "Banco:" to 12 pdbname(i) format "x(60)" skip
"Logico:" to 12 ldbname(i) format "x(60)" skip
"Parametros:" to 12 dbparam(i) format "x(60)".
pause.
end.

D BRESTRI CTI ON S

SI N TAXE

D BRESTRI CTI ON S( I nteiro ou N om e Lógico do Banco de


Da dos) List a Ca ra ct er

Ret or na um a List a Delim it ada infor m ado as Rest r ições na


conexão do Banco de Dados.
Exemplo

define variable i as integer no-undo.

do i = 1 to num-dbs:
display "Banco:" to 12 pdbname(i) format "x(60)" skip
"Logico:" to 12 ldbname(i) format "x(60)" skip
"Parametros:" to 12 dbparam(i) format "x(60)"
"Restricoes:" to 12 dbrestrictions(i) format "x(60)".
pause.
end.

D BTASKI D

SI N TAXE

DBTASKI D( I nt eiro ou N om e Lógico do Banco de Dados)


I nteiro

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


180 Dominando o Progress
Ret or na o I dent ificado da Tr ansação At ual no Banco de
Dados.
Exemplo

display "Nenhuma Transacao atual" format "x(50)"


dbtaskid(1).

/* Inicio de uma Transacao */


create customer.

display "Uma Transacao ativa (CREATE), ID" format "x(50)"


dbtaskid(1).
pause.

D BTYPE

SI N TAXE

DBTYPE( I nt eiro ou N om e Lógico do Banco de Dados)


Ca ra ct er

Ret or na o Tipo de Banco de Dados, Pr ogr ess ou out r os.


Exemplo

define variable i as integer no-undo.

do i = 1 to num-dbs:
display "Banco:" to 12 pdbname(i) format "x(60)" skip
"Logico:" to 12 ldbname(i) format "x(60)" skip
"Parametros:" to 12 dbparam(i) format "x(60)" skip
"Restricoes:" to 12 dbrestrictions(i) format "x(60)" skip
"Tipo:" to 12 dbtype(i) format "x(60)".

pause.
end.

D BVERSI ON

SI N TAXE

DBVERSI ON ( I nt eiro ou N om e Lógico do Banco de Dados)


Ca ra ct er

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 181
Ret or na a Ver são do Banco de Dados.
Exemplo

/* ex0013.p */
define variable i as integer no-undo.

do i = 1 to num-dbs:
display "Banco:" to 12 pdbname(i) format "x(60)" skip
"Logico:" to 12 ldbname(i) format "x(60)" skip
"Parametros:" to 12 dbparam(i) format "x(60)" skip
"Restricoes:" to 12 dbrestrictions(i) format "x(60)" skip
"Tipo:" to 12 dbtype(i) format "x(60)" skip
"Versao:" to 12 dbversion(i) format "x(60)" with
frame f-informacao centered row 5
title "Informacoes dos Bancos de Dados".
pause.
end.

D ECI M AL

SI N TAXE - DECI MAL( I nt eiro/ Caract er/ Dat a) Decim al

Transform a um a expressão em Decim al.


Exemplo

define variable i as integer initial 192.


define variable d as decimal initial
569789215745369445.9283832.

display decimal(today) format ">>>,>>>,>>9" skip


decimal("9283.12") format ">>>,>>>,>>9" skip
decimal(i) format ">>>,>>>,>>9" skip.
message d view-as alert-box.
pause.

D EFI N ED

SI N TAXE - DEFI N ED( Preprocessador) Lógico

Ret or na se um Pr epr ocessador foi inst anciado. Som ent e


ut ilizado par a condições pr epr ocessadas ( &if) .
Exemplo

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


182 Dominando o Progress

&scoped-define frase 'Powered by Progress'

&if defined(frase) &then


message 'Preprocessador teste igual a' {&frase}
view-as alert-box.
&else
message 'Processador nao definido' view-as alert-box.
&endif

D YN AM I C- FUN CTI ON

SI N TAXE

DYN AM I C- FUN CTI ON ( Função [ I n Handle] [ Parâm et ro 1 ,


Pa râ m et ro 2 , ...] )

Execut a um a Função do Usuário em t em po de


execução( Run Tim e) .

Exem plo
/* ex0014.p */

define variable i as integer no-undo.


define variable nfuncao as character no-undo
extent 2 initial ["Data", "Hora"].

do i = 1 to extent(nfuncao):
message dynamic-function(nfuncao[i]) view-as alert-box.
end.

function Data returns character:


return "A data é" + string(today, "99/99/9999").
end function.

function Hora returns character:


return "Agora são" + string(time, "hh:mm:ss").
end function.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 183
EN TERED

SI N TAXE - [ FRAM E N om e do Fr a m e ] Ca m po EN TERED

I nfor m a se um cam po de um fr am e foi m odificado desde


a últ im a at ualização.
Exemplo

define variable nome as character format "x(15)".

repeat:
form nome
with frame f-update.

update nome with frame f-update.

if frame f-update nome entered then


message "Novo nome" input frame f-update nome.
else
message "Nenhuma modificacao".
end.

EN TRY

SI N TAXE

EN TRY( n Elem ent o, List a, [ Delim it ador] ) Caract er

Ret or no o Tex t o de um elem ent o cont ido em um a List a.

O Delim it ador da list a pode ser om it ido, ent ão ser á


assum ido com o delim it ação padr ão o car act er " ,"
( vírgula) .
Exemplo

define variable dia as character no-undo.

assign dia = "Domingo;Segunda;Terca;Quarta;Quinta;Sexta;Sabado".

message "Hoje é" entry(weekday(today), dia, ";") view-as alert-box.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


184 Dominando o Progress
ETI M E

SI N TAXE - ETI ME( Lógico) I nt eiro

Ret or na o t em po em m ilissegundos a par t ir do início da


sessão Pr ogr ess. Se passado um v alor Lógio Posit iv o ( YES
ou TRUE) à função o seu t im er é zerado.
Exemplo

pause 0 before-hide.

/* Zera o Timer */
etime(yes).

for each customer no-lock:


display customer with 1 columns.
end.

message "Este codigo foi executado em" etime "milisegundos"


view-as alert-box.

EX P

SI N TAXE - EXP( Base, Expoent e) Decim al

Exponenciação de um Valor Base X n Ex poent e.


Exemplo

/* 2 elevado ao cubo */
display exp(2, 3).
pause.

EX TEN T

SI N TAXE - EXTEN T( Variável) I nt eiro

Ret orna o t am anho do array de um a variável.


Exemplo

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 185

define variable i as integer.


define variable dia as character extent 7
initial ['Domingo',
'Segunda',
'Terca',
'Quarta',
'Quinta',
'Sexta',
'Sabado'].

do i = 1 to extent(dia):
message dia[i] view-as alert-box.
end.

FI LL

SI N TAXE - FI LL( Te x t o, Re pe t içã o) Caract er

Replica um Tex t o n v ezes infor m ado.


Exemplo

define variable nome as character format "x(30)".

repeat:
update nome.
display nome skip
fill('*', length(nome)) format "x(30)".
end.

FI RST

SI N TAXE - FI RST( Cam po de Agrupação) Lógico

Ret orna um valor lógico verdadeiro da prim eira int eração


de agr upam ent o, ent ao se é a pr im eir a ocor r ência em
um a claúsula DO, FOR EACH, REPEAT com BREAK BY
ant erior é ret ornado com o verdadeiro.
Exemplo

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


186 Dominando o Progress
/* ex0015.p */
define variable order-value as decimal.

for each order:


display order-num.
for each order-line of order break by qty * price:
/*
Quando for o primeiro Item da Ordem o
valor da Ordem sera zerado para agrupa-lo
ate o fim dos Itens
*/

if first(qty * price) then order-value = 0.


order-value = order-value + qty * price.
display line-num
item-num qty * price
column-label "Preco!Global".
end.
display order-value.
end.

FI RST- OF

SI N TAXE - FI RST- OF( Cam po de Agrupação) Lógico

Ret orna um valor lógico verdadeiro se é o prim eira


ocorrência do agrupam ent o em um a claúsula DO, FOR
EACH, REPEAT com BREAK BY.
Exemplo

/* ex0016.p */
for each order no-lock
break by order.order-num:
if first-of(order.order-num) then do:
find customer of order no-lock.
display customer.cust-num
customer.name
order.order-num
with centered title "Ordem".

for each order-line of order no-lock:


display order-line except order-line.order-num
with centered title "Itens".

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 187
end.
end.
end.

FRAM E- COL

SI N TAXE - FRAM E- COL( N om e do Fra m e) I nt eiro

Ret or na a posição da coluna de um a fr am e.


Exemplo
form "Teste"
with frame f-teste row 5 centered.
view frame f-teste.

message "O frame teste esta na coluna" frame-col(f-teste)


view-as alert-box.

FRAM E- D B

SI N TAXE - FRAM E- DB [ ret orno Caract er]

Ret or na o Nom e o Banco de Dados no Fr am e at ual.

FRAM E- D OW N

SI N TAXE - FRAM E- DOW N [ ret orno I nt eiro]

Ret or na o núm er o at ual da linha dent r o do fr am e at ual.


Exemplo

/* ex0018.p */
define variable resposta as logical format "Sim/Nao".
assign resposta = yes.

repeat:
find next customer no-error.
display customer.cust-num
customer.name
with 15 down centered row 3.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


188 Dominando o Progress

if frame-line = frame-down then


message "Continua?" update resposta.

if not resposta or not available customer then leave.


end.

FRAM E- FI ELD

SI N TAXE - FRAM E- FI ELD [ ret orno Ca ra ct er]

Ret orna o Cam po ou Variavel at ual de um Fram e.

FRAM E- FI LE

SI N TAXE - FRAM E- FI LE [ ret orno Ca ra ct er]

Ret or na a Tabela At ual usada em um Fr am e.

FRAM E- I N D EX

SI N TAXE - FRAM E- I N DEX [ ret orno I nt eiro]

Ret orna o Núm ero do Í ndice( Array) do fram e at ual.


Exemplo
define variable opcao as character
extent 4 initial ['Primeiro',
'Segundo',
'Terceiro',
'Sair'].

repeat while frame-index NE 4:


display opcao
with frame f-opcao
no-labels 1 columns centered
row 5.
choose field opcao with frame f-opcao.
message "Opcao" frame-index.
end.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 189
FRAM E- LI N E

SI N TAXE - FRAM E- LI N E [ ret orno I nt eiro]

Ret or na Linha at ual do fr am e at ual.

FRAM E- N AM E

SI N TAXE - FRAM E- N AM E [ ret orno Caract er]

Ret or na o Nom e do fr am e at ual.

FRAM E- ROW

SI N TAXE - FRAM E- ROW ( N om e do Fram e) I nt eiro

Ret or na a posição da linha super ior de um fr am e.


Exemplo

/* ex0020.p */
display "^" with frame f-teste.

repeat while keyfunction(lastkey) <> "end-error":


view frame f-teste.

if keyfunction(lastkey) = "cursor-down" and


frame-row(f-teste) < screen-lines - 1 then
assign frame f-teste:row = frame-row(f-teste) + 1.

if keyfunction(lastkey) = "cursor-up" and


frame-row(f-teste) > 1 then
assign frame f-teste:row = frame-row(f-teste) - 1.

if keyfunction(lastkey) = "cursor-right" and


frame-col(f-teste) < 78 then
assign frame f-teste:col = frame-col(f-teste) + 1.

if keyfunction(lastkey) = "cursor-left" and


frame-col(f-teste) > 1 then
assign frame f-teste:col = frame-col(f-teste) - 1.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


190 Dominando o Progress

hide message no-pause.


message 'Linha' frame-row(f-teste)
'Coluna' frame-col(f-teste).
pause.
end.

FRAM E- VALUE

SI N TAXE - FRAM E- VALUE ( ret orno Ca ra ct er)

Ret or na o valor do fr am e at ual.

Exem plo na função KEYFUNCTI ON

GATEW AYS

SI N TAXE - GATEW AYS [ ret orno Ca ra ct er]

Most r a a list a de Bancos de Dados passív eis à conex ão,


exat am ent e igual à função DATASERVERS.

GET- BYTE

SI N TAXE - GET- BYTE( Cam po, Posição) Caract er

Ret or na um subt ex t o de um cam po de um a t abela não


Pr ogr ess

GET- COD EPAGES

SI N TAXE - GET- COD EPAGES [ List a Ca r a ct e r ]

Ret or na um a list a dos Códigos de Páginas disponív eis.


Exemplo

define variable i as integer.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 191
do i = 1 to num-entries(get-codepages):
display entry(i, get-codepages) format "x(20)"
with 20 down title "Codigos de Pagina"
centered.
down.
end.

GET- COLLATI ON S

SI N TAXE

GET- COLLATI ON S( Código de Pá gina ) [ List a Ca ra ct er]

Ret or na um a list a dos I diom as disponív eis de acor do com


o seu Código de Página.
Exemplo

/* ex0022.p */
define variable i as integer.
define variable j as integer.

do i = 1 to num-entries(get-codepages):
display entry(i, get-codepages) format "x(20)".

do j = 1 to num-entries(get-collations(entry(i, get-
codepages))):
display entry(j, get-collations(entry(i, get-
codepages)))
with 20 down centered.
down.
end.
end.

GET- D OUBLE

SI N TAXE - GET- DOUBLE( Cam po, Posição) Float

Ret orna um valor t ipo Float 8 byt es de um cam po de um a


t abela não Pr ogr ess.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


192 Dominando o Progress
GET- FLOAT

SI N TAXE - GET- DOUBLE( Cam po, Posição) Float

Ret or na um valor t ipo Float 4 byt es de um cam po de um a


t abela não Pr ogr ess.

GET- LON G

SI N TAXE - GET- DOUBLE( Cam po, Posição) Longo

Ret orna um valor t ipo longo de 32 bit de um cam po de


um a t abela não Pr ogr ess

GET- POI N TER- VALUE

SI N TAXE

GET- POI N TER- VALUE( Variável M EM PTR) I nt eger

Ret orna um valor int eiro de um a variável t ipo MEMPTR

GET- SH ORT

SI N TAXE - GET- SORT( Cam po, Posição) Longo

Ret orna um valor longo 16 bit de um cam po de um a


t abela não Pr ogr ess

GET- SI ZE

SI N TAXE - GET- SI ZE( Variável M EM PTR)

Ret or na um valor int eir o em byt es de um a r egião da


m em ória de t ipo MEMPTR

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 193
GET- STRI N G

SI N TAXE - GET- STRI N G( Cam po, Posição)

Ret or na um a st r ing de t er m inação nula de um a vár iav el


t ipo MEMPTR

GET- UN SI GN ED - SH ORT

SI N TAXE - GET- BYTE( Cam po, Posição) Caract er

Ret or na um subt ex t o de um cam po de um a t abela não


Pr ogr ess

I N D EX

SI N TAXE - I N DEX( Text o, Sub- Texto, [ I nício] ) I nteiro

Ret or na a Posição de um Sub- Tex t o dent r o de um Tex t o.


Exemplo

define variable alfabeto as character.


define variable letra as character.

assign alfabeto = "abcdefghijklmnopqrstuvwxyz".

update letra.

message "A Letra" letra "é a" index(alfabeto, letra)


"do Alfabeto"
view-as alert-box.

I N TEGER

SI N TAXE

I N TEGER( Expressão Caract er/ Dat a/ Lógico) I nt eiro

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


194 Dominando o Progress
Convert e um a expressão para um valor int eiro.

Se um t ext o est e dever á t er um for m at o válido cont endo


de 0 a 9 com o digit os, " ," m ilhar e " ." decim al;

Se um valor lógico ser á at r ibuído 1 par a Yes/ Tr ue, 0 para


No/ False;

Se um a dat a est e r et or ná o núm er o de dias a par t ir da


dat a 01/ Jan/ 4713 A/ C.
Exemplo

display integer("838.483") skip


integer("999,999") skip
integer(today) skip
integer(yes).

I S- ATTR- SPACE

SI N TAXE - I S- ATTR- SPACE [ ret orno Ca ra ct er]

I nfor m a se o t er m inal cor r ent e faz espaçam ent o


aut om át ico de car act er es.

KBLABEL

SI N TAXE - KBLABEL( Função do Teclado) Caract er

Ret or na o nom e( s) / com binação( ões) da( s) t ecla( s) da


função.
Exemplo

repeat:
display
keyfunction(lastkey) format "x(20)" label
"Funcao" at 01
kblabel(keyfunction(lastkey)) format "x(20)" label
"Tecla(s)" at 25.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 195
pause.
end.

KEYCOD E

SI N TAXE - KEYCODE( Função do Teclado) I nt eiro

Ret orna o núm ero correspondent e à t ecla ou com binação


da função.
Exemplo

repeat:
display
keyfunction(lastkey) format "x(20)" label "Funcao" at 01
kblabel(keyfunction(lastkey)) format "x(20)" label "Tecla(s)" at 25
keycode(keyfunction(lastkey)) format "->>>9" label "Codigo" at 70.
pause.
end.

KEYFUN CTI ON

SI N TAXE - KEYFUN CTI ON ( Códiga da Tecla)

Ret or no o dia da sem ana em int eir o.


Exemplo

/* ex0021.p */
find first customer.
message "Frente e Traz muda o registro".
repeat:
find current customer.
display cust-num
name
address
city
state
postal-code
with centered row 3 overlay
frame f-customer 1 columns.

set address
city

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


196 Dominando o Progress
state
postal-code
with frame f-customer
editing:
readkey.
apply lastkey.
display
"atualizando:" frame-field format "x(20)" skip
" da tabela:" frame-file skip
" com valor:" frame-value format "x(20)" skip(2)
with centered row 15 overlay.

if keyfunction(lastkey) = "cursor-right" or
keyfunction(lastkey) = "cursor-left" then
do:

case keyfunction(lastkey):
when "cursor-right" then find next customer.
when "cursor-left" then find prev customer.
end.

display cust-num
name
address
city
state
postal-code
with frame f-customer.
end.
end.
end.

KEYLABEL

SI N TAXE - KEYLABEL( Código da ( s) Tecla ( s) ) Ca ra ct er

I nfor m a as t eclas ou a com binação de acor do com o


código infor m ado.
Exemplo

/* ex0023.p */
/* Tecle F3 para ver melhor o resultado */
repeat:
display
keyfunction(lastkey) format "x(20)" label "Funcao" at 01

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 197
kblabel(keyfunction(lastkey)) format "x(20)" label "Tecla(s)" at 21
keylabel(lastkey) format "x(20)" label "Teclas" at 51.
pause.
end.

KEYW ORD

SI N TAXE - KEYW ORD( Tex t o) Ca ra ct er

I nfor m a se um Text o equivale a um a expr essão r eser vada


Pr ogr ess.
Exemplo

define variable nome as character format "x(20)".

repeat on error undo, retry:


update nome.
message keyword(nome) view-as alert-box.

if keyword(nome) <> ? then do:


message nome + " é uma palavra reservada Progress".
undo, retry.
end.
end.

KEYW ORD - ALL

SI N TAXE - KEYW ORD - ALL( Te x t o) Ca r a ct e r

Sim ilar a função KEYWORD. Ver ifica se um Tex t o equiv ale


algum a ex pr essão r eser v ada Pr ogr ess consider ando t odas
as abr ev iações possív eis dos com andos e funções.

LAST

SI N TAXE - LAST( Cam po de Agrupação) Lógico

Sim ilar a função FI RST. Ret orna um valor lógico


verdadeiro da prim eir a int er ação de agr upam ent o, ent ao

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


198 Dominando o Progress
se é a últ im a ocor r ência em um a claúsula DO, FOR EACH,
REPEAT com BREAK BY ant erior é ret ornado com o
verdadeiro.

LASTKEY

SI N TAXE - LASTKEY [ ret orno I nt eiro]

Ret or na um int eir o que r epr esent a o v alor da últ im a t ecla


ou com binação pr essionada.

LAST- OF

SI N TAXE - LAST- OF( Cam po de Agrupação) Lógico

Ret or na um v alor lógico v er dadeir o se é o últ im a


ocorrência do agrupam ent o em um a claúsula DO, FOR
EACH, REPEAT com BREAK BY.

LC

SI N TAXE - LC( Te x t o) Ca r a ct e r

Convert e um Text o para m inúsculo.

LD BN AM E

SI N TAXE

LDBN AME( I nt eiro ou N om e Lógico do Banco de Dados)


Ca ra ct er

Ret or na o Nóm e Lógico do Banco de Dados na sessão


corrent e.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 199
LEFT- TRI M

SI N TAXE - LEFT- TRI M ( Tex t o) Ca ra ct er

Rem ove espaços em br anco a esquer da de um Text o.

LEN GTH

SI N TAXE - LEN GTH( Text o) I nt eiro

Ret or na o t am anho de um t ex t o.

LI N E- COUN TER

SI N TAXE - LI N E- COUN TER [ ret orna I nt eiro]

Ret orna o núm ero da linha corrent e para um a saída


paginada.
Exemplo

output to value(session:temp-directory + 'teste.txt')


paged.
for each customer:
display line-counter label "Nro"
cust-num
name
address
city
state
with width 620.
end.

LI ST- EV EN TS

SI N TAXE

LI ST- EVEN TS( H andle do Obj et o, [ Plat aform a] ) List a

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


200 Dominando o Progress
Ret or na um a List a dos Ev ent os disponív eis de um Obj et o.
O par âm et r o Plat afor m a pode ser set ado com " GUI " par a
am bient e gr áfico ou " TTY" par a am bient e car act er .
Exemplo

display list-events(current-window) format "x(70)".

LI ST- QUERY- ATTRS

SI N TAXE - LI ST- QUERY- ATTRS( H andle do Obj e t o) List a

Ret or na um a List a dos At r ibut os disponív eis de um


Obj et o.
Exemplo

display list-query-attrs(current-window) format "x(70)".

LI ST- SET- ATTRS

SI N TAXE - LI ST- SET- ATTRS( H a ndle do Obj et o) List a

Ret or na um a List a dos At r ibut os passív eis à at r ibuição de


um Obj et o.
Exemplo

display list-set-attrs(current-window) format "x(70)".

LI ST- W I D GETS

SI N TAXE

LI ST- W I DGETS( Handle do Obj et o, [ Plat aform a] ) List a

Ret or na um a List a dos Obj et os que cont êm um


det er m inado Ev ent o. O par âm et r o Plat afor m a pode ser

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 201
set ado com " GUI " para am bient e gráfico ou " TTY" para
am bient e car act er .
Exemplo

display list-widgets("return") format "x(70)".

LOCKED

SI N TAXE - LOCKED Regist ro [ ret orno Lógico]

Ret or na o est ado de lock um regist ro.

Exem plo

If locked Nome da Tabela then...

LOG

SI N TAXE - LOG( Valor, [ Base] ) Decim al

Obt ém o Log de um Valor .

LOOKUP

SI N TAXE

LOOKUP( Su b- t ext o, List a, [ Delim it ador] ) I nt eger

Ret orna a posição de um Sub- t ex t o dent r o de um a List a.


Caso o Delim it ador não sej a infor m ado est e ser á por
padrão " ," ( vírgula) .
Exemplo

define variable dia as character.

assign dia =
'Domingo,Segunda,Terca,Quarta,Quinta,Sexta,Sabado'.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


202 Dominando o Progress
message 'Terca é o dia' lookup('Terca', dia) 'da semana'
view-as alert-box.

M AXI M UM

SI N TAXE

MAXI MUM( Valor 1 , Valor 2 , Valor n, ...) Decim al

Ret or na o Maior v alor dos par âm et r os passados.


Exemplo

/* Valor retorno 9188 */


display maximum(293.4, 38, 1, 32, 9384, 9188).

M ESSAGE- LI N ES

SI N TAXE - M ESSAGE- LI N ES [ ret orna I nt eiro]

Ret or na o núm er o de Linhas disponív eis na ár ea de


m ensagens.
Exemplo

define variable i as integer.

do i = 1 to message-lines:
message "Esta é a linha" i.
end.

M I N I M UM

SI N TAXE

MI NI MUM( Valor 1 , Valor 2 , Valor n, ...) Decim al

Ret or na o Menor v alor dos par âm et r os passados.


Exemplo

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 203
/* Valor retorno 1 */
display minimum(293.4, 38, 1, 32, 9384, 9188).

M ON TH

SI N TAXE - MON TH( Dat a) I nt eiro

Ret or na o m ês de um a dat a.

N EW

SI N TAXE - N EW ( Registro) Lógico

I nfor m a se um r egist r o ainda não foi escr it o no Banco de


Dados, apenas cr iado.
Exemplo

create customer.
if new customer then
message "Novo registro" view-as alert-box.
find first customer.
if new customer then
message "Novo registro" view-as alert-box.

N EX T- VALUE

SI N TAXE - NEXT- VALUE( Sequence) Decim al/ I nt eiro

Ret orna o Próxim o valor de um a seqüência.


Exemplo

display next-value(next-cust-num).

N OT EN TERED

SI N TAXE

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


204 Dominando o Progress
[ FRAM E N om e do Fra m e] Ca m po N OT EN TERED

I nfor m a se um cam po de um fr am e foi m odificado desde


a últ im a at ualização.

I gual a função ENTERED

N UM - ALI ASES

SI N TAXE - N UM- ALI ASES [ ret orno I nt eiro]

Ret or na o núm er o de Aliases dos Bancos de Dados est ão


defin idos n a sessão at u al.

N UM - D BS

SI N TAXE - N UM- DBS [ ret orno I nt eiro]

Ret or na o núm er o de Bancos de Dados conect ados na


sessão at u al.
Exemplo

define variable i as integer.


repeat i = 1 to num-dbs:
display ldbname(i) format "x(20)"
pdbname(i) format "x(20)"
dbrestrictions(i) format "x(20)".
end.

N UM - EN TRI ES

SI N TAXE - N UM- EN TRI ES( List a, [ Delim it ador] ) I nt eiro

Ret or na o núm er o de elem ent os cont idos em um a list a.


Caso o delim it ador nãosej a especificado o padr ão
assum ido será " ," ( vírgula) .
Exemplo

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 205

define variable i as integer.


define variable mes as character.

assign mes = 'Janeiro,Fevereiro,Marco,Abril,Maio,Junho,' +

'Julho,Agosto,Setembro,Outubro,Novembro,Dezembro'.

do i = 1 to num-entries(mes):
display entry(i, mes) format "x(20)".
pause.
end.

N UM - RESULTS

SI N TAXE

N UM- RESULTS( N om e da Query [ Ca ra ct er] ) I nt eiro

Ret or na o núm er o de r egist r os de um a seleção.


Exemplo

define query q-customer for customer.


open query q-customer preselect each customer no-lock.

message 'Total da Selecao' num-results('q-customer')


view-as alert-box.

OPSYS

SI N TAXE - OPSYS [ ret orno Ca ra ct er]

Ret or na o nom e do Sist em a Oper acional cor r ent e.


Exemplo

display opsys.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


206 Dominando o Progress
OS- D RI V ES

SI N TAXE - OS- DRI VES [ ret orno Caract er]

Ret or na um a List a dos dr iv es disponív eis na sessão at ual.


Exemplo

define variable drives as character view-as combo-box.

form drives with frame f-drives.


assign drives:list-items = os-drives.
update drives with frame f-drives.

OS- ERROR

SI N TAXE - OS- ERROR [ ret orno Ca ra ct er]

Ret or na o últ im o er r o de um a oper ação no Sist em a


Oper acional. Ret or na o st at us das funções os- append, os-
copy, os- cr eat e- dir , os- delet e, os- renam e ou save cache.
Exemplo

os-create-dir value("c:\temp\teste.txt").

if os-error NE 0 then
message 'Erro nº' os-error view-as alert-box.

OS- GETEN V

SI N TAXE - GETEN V( Variável de Am bient e) Caract er

Ret or na o valor de um a Var iável de Am bient e.


Exemplo

display 'DLC=' to 10 os-getenv('DLC') format 'x(60)'


'PATH=' to 10 os-getenv('PATH') format 'x(60)'.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 207
PAGE- N UM BER

SI N TAXE - PAGE- N UMBER [ ret orno I nt eiro]

Ret or na o núm er o da página em um a saída paginada.


Exemplo

/* ex0024.p */
output to 'teste.txt' paged page-size 40.
form header 'Pagina nº' page-number format '>>9'
with frame f-cabecalho page-top.

for each customer no-lock:


view frame f-cabecalho.
display customer.cust-num
customer.name
customer.address.
end.

PAGE- SI ZE

SI N TAXE - PAGE- SI ZE [ ret orno I nt eiro]

Ret or na o Tam anho da Página do scopo de im pr esãoat ual.

PD BN AM E

SI N TAXE

PDBN AME( I nt eiro ou N om e Lógico do Banco de Dados)


Ca ra ct er

Ret or na o Nóm e Físico do Banco de Dados na sessão


corrent e. Sim ilar às funções LDBNAME, DBTYPE,
DBRESTRI CTI ONS, et c

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


208 Dominando o Progress
PROGRAM - N AM E

SI N TAXE - PROGRAM - N AM E( I nt eiro) Caract er

Ret orna o Nom e do Program a em execução segundo o


núm ero inform ado. O program a at ual equivale a 1.
Exemplo

/* ex0025.p */
define variable i as integer initial 1.

repeat while program-name(i) <> ?.


display i label 'Nro'
program-name(i) label 'Programa' format "x(30)"
with title "Ultimos Programas executados"
centered row 2.
assign i = i + 1.
end.

PROGRESS

SI N TAXE - PROGRESS [ r e t or no Ca r a ct e r ]

Ret orno a configuração do Progress Full, Query ou Run-


Tim e.
Exemplo

message 'Este Progress é' progress


view-as alert-box.

PROM SGS

SI N TAXE - PROM SGS

Ret orna o valor do PROMSGS at ual.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 209
PROPATH

SI N TAXE - PROPATH [ ret orno List a ]

Ret or na um a List a dos dir et ór ios cont idos no PROPATH.


Exemplo

/* ex0026.p */

define variable diretorios as character


view-as selection-list
inner-chars 50 inner-lines 10 sort.

define frame f-diretorios diretorios


with title 'Diretorios do Propath'
centered row 5.

diretorios:list-items = propath.

prompt diretorios with frame f-diretorios.

PROV ERSI ON

SI N TAXE - PROVERSI ON [ ret orno Ca ra ct er]

Ret orna a versão corrent e do Progress.

QUERY- OFF- EN D

SI N TAXE - QUERY- OFF- EN D( N om e da Query) Lógico

Rot or na se é o fim da seleção da Quer y .


Exemplo

/* ex0027.p */
open query q-customer preselect each customer no-lock.

repeat:
get next q-customer.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


210 Dominando o Progress

if query-off-end("q-customer") then leave.

display cust-num name.


end.

RAN D OM

SI N TAXE

RAN DOM( Valor Mínim o, Valor Máxim o) I nteiro

Ret or na um valor aleat ór io ent r e um int er v alo. Você pode


configurar a váriação com o parâm et ro - rand n n a sessão
client es.
Exemplo

/* ex0028.p */

/*
Este exemplo simula o preenchimento
de 100 jogos da Sena, baseados na
geracao de numeros aleatorios
*/

define variable i as integer.


define variable j as integer.

define variable njogos as integer.


define variable combinacao as integer extent 6.

define temp-table jogos


field n as integer label 'Jogo nº'
field n1 as integer format '99'
field n2 as integer format '99'
field n3 as integer format '99'
field n4 as integer format '99'
field n5 as integer format '99'
field n6 as integer format '99'
index jogo is primary unique n1 n2 n3 n4 n5 n6.

combinacao:
do while njogos < 100:

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 211
do i = 1 to 6:
assign combinacao[i] = random(0, 60).
end.

do i = 1 to 6:
if (combinacao[i] = combinacao[1] and i <> 1) or
(combinacao[i] = combinacao[2] and i <> 2) or
(combinacao[i] = combinacao[3] and i <> 3) or
(combinacao[i] = combinacao[4] and i <> 4) or
(combinacao[i] = combinacao[5] and i <> 5) or
(combinacao[i] = combinacao[6] and i <> 6) then
next combinacao.
end.

find jogos where


jogos.n1 = combinacao[1] and
jogos.n2 = combinacao[2] and
jogos.n3 = combinacao[3] and
jogos.n4 = combinacao[4] and
jogos.n5 = combinacao[5] and
jogos.n6 = combinacao[6] no-error.

if available jogos then next combinacao.

assign njogos = njogos + 1.

create jogos.
assign jogos.n = njogos
jogos.n1 = combinacao[1]
jogos.n2 = combinacao[2]
jogos.n3 = combinacao[3]
jogos.n4 = combinacao[4]
jogos.n5 = combinacao[5]
jogos.n6 = combinacao[6].

end.

for each jogos by jogos.n:


display jogos.
end.

RECI D

SI N TAXE - RECI D( Regist ro) Recid

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


212 Dominando o Progress
Ret or na o Recid do Regist r o.
Exemplo

/* ex0029.p */

define buffer b-customer for customer.


for each customer no-lock
by customer.cust-num descending:

find b-customer where


recid(b-customer) = recid(customer) exclusive-
lock.

update b-customer.cust-num.

display customer.cust-num
b-customer.cust-num.
end.

RECORD - LEN GTH

SI N TAXE - RECORD - LEN GTH( Regist ro) I nt eiro

Ret or na a quant idade de by t es em um r egist r o.


Exemplo

for each customer no-lock:


display record-length(customer) 'Bytes'.
end.

REPLACE

SI N TAXE

REPLACE( Te x t o, Sub- Text o Origem , Sub- Text o Dest ino)


Ca ra ct er

Subst it ue um sub- t ex t o de um Text o por out ro


especificado.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 213
Exemplo

/* ex0030.p */

/* Remover caracteres invalidos de um texto */

define variable i as integer.


define variable procura as character.
define variable substituto as character.

assign procura = "á,Á,é,É,í,Í,ó,Ó,ú,Ú,ç,Ç,ê,Ê,ü,Ü"


substituto = "a,A,e,E,i,I,o,O,u,U,c,C,e,E,u,U".

for each customer:


update customer.name label 'Coloque um caracter
invalido'.
display customer.name.
do i = 1 to num-entries(procura):
if index(customer.name, entry(i, procura)) > 0 then
customer.name = replace(customer.name,
entry(i, procura),
entry(i, substituto)).
display customer.name.
end.
end.

RETRY

SI N TAXE - RETRY [ ret orno Lógico]

Ret or na um Lógico par a um bloco de t r ansação se est e foi


concluído com êxit o.
Exemplo

repeat:
prompt-for customer.cust-num.
find customer using cust-num.

if not retry then


display name
address
city
state

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


214 Dominando o Progress
country.
else
clear all no-pause.
set name address city state country.
if country = "" then undo, retry.
end.

RETURN - VALUE

SI N TAXE - RETURN - VALUE [ ret orno Ca ra ct er]

I nform a o valor de ret orno de um a Procedure ou Função


ex ecut áda.
Exemplo

run teste.
display return-value.
pause.
procedure teste:
return 'Exemplo de Retorno'.
end.

RI GH T- TRI M

SI N TAXE - RI GH T- TRI M ( Tex t o) Ca ra ct er

Rem ove espaços em banco de um Text o à direit a.

R- I N D EX

SI N TAXE - R- I N DEX( Text o, Sub- Text o) I nt eiro

Ret or na a posição de um sub- t ex t o em um t ex t o à dir eit a.


Exemplo

/*
Retorno igual a 7, ou seja,
a terceira letra A
*/

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 215
display r-index("Amazonas", "a").

ROUN D

SI N TAXE - ROUN D( Valor, Precisão) Decim al

Arredonda um valor em um a precisão decim al inform ada.


Exemplo

/* Retorno igual a 18379.99 */


display round(18379.987, 2).

ROW I D

SI N TAXE - ROW I D( Regist ro) Row id

Ret or na o v alor do Row id do Regist r o, im plem ent ada a


part ir da versão 8.1 do Progress. Sem elhant e a função
RECI D por ém m ais sofist icada por usar for m ação
hexadecim al ao cont r ár io de RECI D que é decim al,
am pliando o v alor de abr angência e pr ecisão.

SCREEN - LI N ES

SI N TAXE - SCREEN - LI N ES [ ret orno I nt eiro]

I nfor m a o núm er o de linhas supor t ado na sessão at u al.

SD BN AM E

SDBN AME( I nt eiro ou N om e Lógico do Banco de Dados)


Ca ra ct er

Ret orna o Schem a do Dat aserver do Banco de Dados


conect ado na sessão cor r ent e. Sim ilar às funções
LDBNAME, PDBNAME, DBRESTRI CTI ONS, et c.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


216 Dominando o Progress
SEARCH

SI N TAXE - SEARCH ( Te x t o) Ca r a ct er

Ret or na o cam inho com plet o de um ar quiv o ut ilizando


com o base os dir et ór ios cont idos no PROPATH.
Exemplo

/* Editor Progress em... */


display search("_edit.r") format "x(60)".

SEEK

SI N TAXE - SEEK( I N PUT/ OUTPUT) I nt eiro

Ret or na a posição do t ext o/ cur sor de um a saída ou


ent r ada de dados.

SETUSERI D

SI N TAXE

SETUSERI D( Usuário, Senha, N om e Lógico do Banco)


Lógico

At r ibui/ Conect a um usuár io no Banco de Dados. A senha


dev e ser passada lit er alm ent e igual ao seu v alor or iginal,
consider ando t am bém m aiúsculas e m inúsculas.
Exemplo

display setuserid("adm", "adm", "sports").

SQRT

SI N TAXE - SQRT( Valor) Decim al

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 217
Ret orna a raiz de um valor.
Exemplo

define variable valor as decimal.

update valor.

message 'A raiz de' valor 'e' sqrt(valor)


view-as alert-box.

STRI N G

SI N TAXE - STRI N G( Valor, Form at o) Caract er

Transform a um valor em caract er com form at o indicado.

O v alor at r ibuído dev e ser de t ipo I nt eir o, Decim al, Dat a


ou Lógico
Exemplo

display string(today, "99/99/9999") format "x(20)" skip


string(1293.21, "999,999.99") format "x(20)" skip
string(yes, "Sim/Nao") format "x(20)".

SUBSTI TUTE

SI N TAXE

SUBSTI TUTE( Tex t o, n Argum ent os [ Ca ra ct er] ) Ca ra ct er

Subst it ue/ I nsere em um caract er um subt ext o em um a


posição de ar gum ent o definida na for m a " &n" , onde n é
int eir o de 1 a 9, e os ar gum ent os r est ant es são
caract eres.
Exemplo

/* ex0009.p */
message substitute("&1 Amor, &2 Beijos, &3 Coracao, &4 Desejos",

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


218 Dominando o Progress
"A", "B", "C", "D") view-as alert-box.

define buffer b-customer for customer.

for each customer no-lock:


find first b-customer where
rowid(b-customer) > rowid(customer) no-lock no-
error.
clear all.
display SUBSTITUTE("&1 é Cliente Atual. &2 é Cliente
Posterior",
customer.name, b-customer.name)
format "x(70)" when available b-customer.
end.

SUBSTRI N G

SI N TAXE

SUBSTRI N G( Text o, I nício, Tam anho [ Charact er] , Tipo


[ Ca ra ct er] ) Ca ra ct er

Ex t r ai um a subcadeia de um t ex t o.

O com ando SUBSTRI NG t am bém pode indicar um a


su bst it uição, confor m e o exem plo m ost r ado abaixo.

O parâm et ro Tipo aceit a t r ês indicações " char act er " ,


" fixed" ou " raw" , onde:

Character é o v alor padr ão se om it ido est e quar t o


parâm et ro;

Fixed indica que a posição início ser á um int eir o e o


t am anho ser á em by t es;

Raw indica que a posição início e o t am anho são by t es.


Exemplo

/* ex0008.p */
define variable texto as character.
assign texto = "Powered by Progress".

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 219

display substring(texto, 1, 50) format "x(50)".


pause.

assign substring(texto, 12) = "Aprendendo Progress 4GL".

display substring(texto, 1, 50) format "x(50)".


pause.

TERM I N AL

SI N TAXE - TERM I N AL ret orno Ca ra ct er

Ret orna um caract er que represent a o Term inal/ Am bient e


corrent e.

Am bient e X- Window s int er face car act er o TERMI NAL


ret urno será BW80, CO80, ou MONO, dependendo do
m onit or. MS- Window s o TERMI NAL r et ur no é WI N3. UNI X
o TERMI NAL ret urno será a variável de am bient e $TERM,
em m odo bat ch o TERMI NAL ret orna um valor nulo ( ?) .
Exemplo

message "Voce esta usando um terminal" terminal view-as


alert-box.

TI M E

SI N TAXE - TI ME ret orno I nt eiro

Ret orna o núm ero de segundos à part ir de m eia- noit e.


Exemplo

/* número de segundos a partir de 00:00h */


message time view-as alert-box.
/* horas a partir de 00:00h */
message string(time, "hh:mm:ss") view-as alert-box.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


220 Dominando o Progress
TOD AY

SI N TAXE - TODAY ret orno Da t a

Ret or na a dat a at ual.


Exemplo

message today view-as alert-box.

TO- ROW I D

SI N TAXE - ROW I D( Valor t ipo Caract er) Row id

Cover t e um núm er o equivalent e à posição de um a t abela


em form at o caract er hexadecim al e o convert e em t ipo
Row id.

O t ex t o de r epr esent ação do Row id dev e est ar em for m a


hexadecim al " 0xhex- digit os" , exem plo 0x000000, onde
os car act er es hex adecim ais est ão de 0 at é 9 ou A at é F.
Exemplo

/* ex0007.p */
define buffer b-customer for customer.
for each customer no-lock:
find b-customer where
rowid(b-customer) = to-rowid(string(rowid(customer))).

display string(rowid(b-customer)) label "Hexadecimal"


b-customer.cust-num.
end.

TRAN SACTI ON

SI N TAXE - TRAN SACTI ON ret orno Lógico

I ndica se um bloco de código é um a t r ansação


Exemplo

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 221

/*
A primeira vez e nao sera uma transacao
e as restantes serão
*/
do:
message transaction view-as alert-box.
pause.
repeat transaction:
message transaction view-as alert-box.
pause.
end.
end.

TRI M

SI N TAXE - TRI M ( Tex t o) Ca ra ct er

Rem ove espaços em br anco à esqueda e dir eit a de um


t ex t o.

TRUN CATE

SI N TAXE

TRUN CATE( Valor Decim al, n Casas Decim ais) I nt eiro

Ret or na o valor int eir o de um a valor decim al.


Exemplo

/* Retorno igual a 128,2 */


message truncate(128.23, 1) view-as alert-box.

/* Retorno igual a 1539,29834 */


message truncate(1539.29834699891, 5) view-as alert-box.

USERI D

SI N TAXE

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


222 Dominando o Progress
USERI D( N om e Lógico do Banco de Dados) Caract er

I nfor m a o usuár io at ual logado no Banco de Dados.


Exemplo

message "seu login é" userid("sports") view-as alert-box.

V ALI D - EV EN T

SI N TAXE

VALI D - EVEN T( Handle do Obj et o, N om e do Event o,


[ Plat aform a] ) Lógico

Ver ifica se um obj et o cont ém um ev ent o v álido.


Exemplo

display valid-event(current-window, "close") skip.


display valid-event(current-window, "window-close").

V ALI D - H AN D LE

SI N TAXE - VALI D - HAN DLE( Handle do Obj et o) Lógico

Ver ifica se um v alor é um handle v álido.

W EEKD AY

SI N TAXE - W EEKDAY( Dat a) I nt eiro

Ret or no o dia da sem ana em int eir o.


Exemplo

/* ex0006.p */
define variable dia as character extent 7
initial["Domingo", "Segunda", "Terca", "Quarta",
"Quinta", "Sexta", "Sabado"].

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 223

message dia[weekday(today)] view-as alert-box.

W I DGET- H AN D LE

SI N TAXE - W I DGET- HAN DLE( Caract er) Handle

Cria um handle a part ir de um núm ero em form at o


caract er.
Exemplo

define variable whand as widget-handle.


assign whand = widget-handle("3000245").

YEAR

SI N TAXE - YEAR( Da t a ) I nt eiro

Ret or na o ano de um a dat a


Exemplo

/* Retorna o ano atual */


message year(today) view-as alert-box.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


224 Dominando o Progress

Capítulo n

Utilitários & Parâmetros do


Banco de Dados Progress

Ut ilit á r ios do Ba nco de D a dos Pr ogr e ss

Os ut ilit ár ios do banco de dados Pr ogr ess t êm finalidades


par a a m anut enção do banco com o st at us, est r ut ur a física
e lógica, backup, log, m onit or ação, ent r e out r os com o
m ost r ado a seguir .

PRO

I nicia um a sessão Pr ogr ess m ono- usuár io


SI NTAXE
PRO [ Dat abase] [ Par âm et r os]

Muit os program as/ ut ilit ários Progress são apenas arquivos


bat chs que pr é- configur am o am bient e e/ ou passam
parâm et ros para o Progress de acor do com o ut ilit ár io.
Com o por exem plo o com ando PRO m encionado acim a.
Exemplo:

Arquivo: PRO.BAT
@echo off

if "%DLC%"=="" set DLC=C:\ARQUIV~1\PROGRESS

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 225
if exist %DLC%\promsgs goto BIN
echo DLC environment variable not set correctly - Please
set DLC variable
goto END

:BIN
if not "%PROEXE%"=="" goto START
set PROEXE=_progres

:START
if "%DISPBANNER%"=="no" goto NOBANNER
type %DLC%\hello

:NOBANNER
type %DLC%\version
%PROEXE% -1 -p _prostar.p %1 %2 %3 %4 %5 %6 %7 %8 %9

set DISPBANNER=
:END

PROAI W

I nicia o Aft er - I m age- Wr it e ( AI W)


SI NTAXE
PROAI W [ Dat abase]

I nicia o pr ocesso do Aft er - I m age Wr it er ( AI W) em


background. O AI W m elhora a perform ance para a
m em ór ia com par t ilhada do banco de dados m ult i- usuár io
no arquivo Aft er I m age.

Not a: apenas par a bancos de dados com Aft er I m age.

P R O BI W

I nicia o Befor e- I m age- Wr it e ( BI W)


SI NTAXE

PROBI W [ Dat abase]

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


226 Dominando o Progress
I nicia o pr ocesso do Befor e- I m age Wr it er ( AI W) em
background. O BI W m elhora a perform ance para a
m em ór ia com par t ilhada do banco de dados m ult i- usuário
no arquivo Before I m age.

P R O BCK U P

Cria um arquivo de backup do banco de dados Progress


SI NTAXE
pr obkup [ online] Dat abase [ incr em ent al]
Disposit iv o/ Dir et ór io
[ - vs n] [ - bf n] [ - verbose] [ - scan] [ - io n] [ - com ]
[ - red n] [ - est im at e] [ - g Befor e- I m age]

PARÂMETROS

online

I ndica que o backup é um backup on- line.

Database

I nfor m a o Banco de Dados a ser salv o.

increm ental

I nfor m a que o back up ser á incr em ent al, ou sej a, apenas


os dados ainda não gr avados no ar quivo de backup.

Dispositivo

I nfor m a o disposit iv o dest ino de back up, com o um


disquet e, dir et ór io no disco r ígido, fit a DAT ou DLT.

- estim ate

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 227
I ndica que o back up obt er á um a m édia est im ada apenas.
Use o parâm et ro scan quando usar o parâm et ro
incr em ent al e/ ou com pr ession.

Aplicáv el apenas par a backup off- line.

- vs n

I ndica o t am anho em blocos do disposit iv o dest ino do


backup. Quando alcançado o núm ero de blocos
especificado ser á solicit ado o disposit iv o ou ar quiv o
seguint e do pr óxim o volum e.

Caso est e par âm et r o não sej a especificado o PROBACKUP


assum ir á que a m ídia com por t a t odo o cont eúdo do
backup.

- bf n

I ndica a blocagem par a o ar quivo dest ino do backup. O


valor padrão é 34.

- verbose

Habilit a a v isualização do pr ogr esso do back up dur ant e o


backup.

- scan

I nform a ao PROBKUP par a obt er o núm er o de blocos,


av aliar o espaço necessár io e v isualizar est as
infor m ações. Apenas par a backup off- line.

- io i

Especifica um incr em ent o de over lap. O padr ão é 0.

- com

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


228 Dominando o Progress
I nform a que o backup será com pact ado.

- red i

I nform a a redundância do back up. I sso ev it a pr oblem as


quando r est aur ado o back up e o disposit iv o apr esent av a
m au set or es na m ídia.

- g Before- I m age

Especifica a localização do( s) ar quiv o( s) de Befor e- I m age.

P R O CO P Y

Copia um banco de dados par a out r o banco de dados.


SI NTAXE

procopy Dat abase or igem Dat abase dest ino - g Localização


do Befor e- I m age –s
Exemplo:

Banco de dados em / bases/ m agnus/ i00adm .db

pr ocopy / bases/ m agnus/ i00adm / bases/ t est e/ i00adm

PROD B

Cr ia um novo banco de dados vazio ou a par t ir de um j á


ex ist ent e.
SI NTAXE

prodb [ Dat abase] { em pt y | spor t s| Dat abase


Origem | dem o}

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 229
P R O D EL

Apaga um banco de dados Pr ogr ess


SI NTAXE

pr odel Dat abase

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


230 Dominando o Progress

Pa râ m et ros do Progress

A configur ação do Pr ogr ess, sessão client e e car ga dos


bancos de dados são aj ust adas at r av és de com binações
de div er sos par âm et r os.

Parâm etro Descrição

-1 Single- user Mode ( Cliente)

Conect a um banco de dados em m odo


m ono- m onousuário

Exem plo

( No arquivo de param et ros .pf)


–db spor t s
–1

( Codigo)
connect - db spor t s - 1.

- a arquivo After- im age Filenam e


( Servidor/ Cliente)

Especifica o ar quiv o de Aft er - I m age a


ser ut ilizado na conex ão

- aibufs n After- I m age Buffers ( Servidor)

Especifica o núm er o de blocos em buffer


de m em ória para o arquivo Aft er- I m age
quando ex ecut ado o ut ilit ár io AI W que

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 231
coor dena as t r ansação de im agem
post er ior

Mínim o: 1
Padrão m ulti- usuário: 1

- aistall After- im age Stall ( Servidor)

Suspende a at iv idade de um banco de


dados m ult i- v olum es usando Aft er -
I m age par a o ev ent o de shut dow n e
gr ava as infor m ações no ar quivo de log

-b Batch ( Cliente)

I ndica que um a sessão ser á ex ecut ada


em bat ch sem int er ação. Par a execut ar
um a aplicação em bat ch est a não dev e
apresent ar nenhum a inform ação em
t ela, pois ocasionar a um er r o

- basekey Registry Basekey ( Cliente MS-


texto W indow s)

I ndica ao Progress para usar a


configuração cont ida em um a arquivo
I NI , com o parâm et ro " I NI " . I sso porque
o Pr ogr ess v er são 8.x ut ilização
configuração cont ida na regist ry

Os parâm etros disponíveis são:

HKEY_ CURRENT_ USER


HKEY_ CLASSES_ ROOT
HKEY_ LOCAL_ MACHI NE
HKEY_ USERS
HKEY_ CURRENT_ CONFI G

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


232 Dominando o Progress
HKEY_ DYN_ DATA
I NI

Exem plo

C: \ DLC\ BI N\ PROWI N32.EXE –basek ey


" I NI " –ininam e ARQUI VO.I NI

-B n Blocks in Database Buffers


( Servidor/ Mono- usuário)

Define o núm er o de blocos a ser em


colocados em buffer de m em ória para
cada usuár io

Mínim o: 1 0
Máxim o: 5 0 0 .0 0 0
Padrão m ono- usuário: 2 0
Padrão m ulti- usuário: ( 8 x n
Usuários)

M Caso o número de buffers


ultrapasse a quantidade de
memória física da máquina esta
pode travar ou reiniciar!

- bibufs n Before- im age Buffers ( Servidor)

Especifica o núm ero de blocos em buffer


de m em ória para o arquivo Aft er- I m age
Quando ex ecut ado o ut ilit ár io BI W que
coor dena as t r ansação de im agem
ant erior

Mínim o: 3
Padrão m ulti- usuário: 5

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 233

- brl Bleeding Record Lock ( Cliente)

Deixa a cr it ér io do Pr ogr ess o


t r at am ent o de r egist r os em lock
com par t ilhado ( shar e lock ) , ut ilizando
m ais de um buffer par a r egist r os em
lock , m esm o que est es j á não est ej a
m ais em uso com par t ilhado

- Bt n Buffer Size for Tem porary Tables


( Cliente)

Especifica o núm er o de blocos em buffer


par a t abelas t em por ár ias dur ant e a
sessão clien t e

Mínim o: 10
Máxim o: 5 0 .0 0 0

-C Option on PROUTI L and RFUTI L


qualificador Com m ands ( ProUtil/ RFUtil)

Usado com os ut ilit ár ios Pr ogr ess Pr oUt il


e RFUt il.

Consult e o capít ulo Ut ilit ár ios de banco


de dados

-c n I ndex Cursors ( Cliente)

Especifica no núm ero de cursores de


índices a ser em ut ilizados na sessão
par a uso de declar ações FI ND, FOR
EACH, QUERY e SELECT.

Em sint axe Progress FI ND e FOR EACH


cada loop consom e apenas um cursor de

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


234 Dominando o Progress
64 by t es. Ger alm ent e par a uso de
program as ut ilizando linguagem SQL é
necessár io fazer aj ust e desse par âm et r o
dev ido ao r esult set cr iado pela
especificação SQL.

- cache Schem a Cache File ( Cliente)


arquivo
Força o Progress a usar um arquivo
binár io que cont ém a est r ut ur a do
m et aschem a do banco de dados
conect ado.

Exem plo

( Arquivo de parâm et ros .pf)


–db spor t s
–1
- cache spor t s.csh

- charset Character Set ( Servidor/ Cliente)


Código de
Página Define o Código de Página a ser ut ilizado
na sessão par a m anipulação de dados.

Padrão: iso8 8 5 9 - 1

- checkdbe Check Double- byte Enabled


( Servidor/ Cliente)

Habilit a o supor t e a car act er es double-


by t e par a a v er são Pr ogr ess 7, ut ilizado
nas funções LENGTH, SUBSTRI NG,
SUBSTRI NG.

- convm ap Conversion Map ( Servidor/ Cliente)

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 235
arquivo
Define o ar quiv o de Código de Páginas a
ser ut ilizado. Caso sej a om it ido est e
parâm et ro o Progress usará por padrão
o arquivo convm ap.cp localizado no
dir et ór io do Pr ogr ess.

- cp Com m unications File


parâm etros ( Servidor/ Cliente)
ou arquivo
Define um ar quivo de Aut o- Conexão que
alt er a as conex ões at u ais.

As configur ações especificadas pelo


parâm et ro –cp pode ser subst it uída pela
configur ação do m et aschem a na t abela
_Db cam po _Db- com m .

- cpcase Case Code Page ( Servidor/ Cliente)


tabela
Especifica um a t abela ut ilizada par a
conversão ent re caract eres m aíusculos e
m inúsculos e v ice- v er sa, usado nas
funções CAPS, LC ou caract er " ! " da
claúsula FORMAT.

A t abela est á especificada dent r o do


ar quiv o de Códigos de Páginas
convm ap.cp.

- cpcoll Collation Code Page


coleção ( Servidor/ Cliente)

Especifica um a coleção de t abelas de


Códigos de Páginas a ser ut ilizado par a
procedim ent o em m em ória.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


236 Dominando o Progress

Est e par âm et r o funciona em conj ut o


com o parâm et ro –x c que define a
u t ilização de alfabet os.

Par a m aior es det alhes consult e o


m anual PROGRESS I nt er nat ionalizat ion
Guide.

- cpdb Código Database Code Page


Página ( Servidor/ Cliente)

Especifica ao banco de dados o Código


de Página a ser ut ilizado par a gr av ar as
infor m ações

Padrão: ibm 8 5 0

- cpinternal I nternal Code Page


Código ( Servidor/ Cliente)
Página
Especifica o Código de Página a ser
ut ilizado na m anipulação dos dados em
m em ór ia pelo Pr ogr ess

Padrão: iso8 8 5 9 - 1

- cpprint Print Code Page ( Servidor/ Cliente)


Código
Página Especifica o Código de Pagina a ser
usada em um escopo de im pr essão
( OUTPUT)

Padrão: o m esm o valor definido em


– cpstream

- cprcodein R- code I n Code Page


Código ( Servidor/ Cliente)

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 237
Página
Específica o Código de Página a ser
usado na nos ar quiv os com pilados .r

- cprcodeout R- code Out Code Page


Código ( Servidor/ Cliente)
Página
Específica o Código de Página a ser
usado no scopo de im pr essão pelas
pr ocedur es com piladas.

- cpstream Stream Code Page


( Cliente/ Servidor)

Especifica o Código de Página a ser


usado par a o escopo de ent r ada/ saída
de dados ( st r eam i/ o) , com andos I NPUT
FROM e OUPUT TO.

- cpterm Term inal Code Page


( Cliente/ Servidor)

Especifica o Código de Página do


t erm inal m odo caract er
( UNI X,DOS,Novell) .

- cs n, i Cursor Size ( Cliente)

Define o t am anho de um cursor para um


índice específico, onde:

n by t es e i núm ero do índice

Em índices dem asiadam ent e gr andes às


vezes pode ocorrer um erro de cursor no
índice, pr incipalm ent e par a índices t ipo
WORD- I NEX, com o abaixo:

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


238 Dominando o Progress

I n d ex in d ex - n u m b er h as at least n lev els.


I n cr ease - cs p ar am et er

- ct n AS/ 4 0 0 Connection Tim e ( Cliente)

Define um tim eout, em segundos, par a


r espost a de um a query em um acesso
ao AS/ 400 I BM.

- d m dy Date Form at ( Cliente)

Define o for m at o par a ent r ada e


apr esent ação de dat as, onde:

d dia, m m ês, y ano

Caso não sej a especificado o padr ão


será o form at o am ericano Mês/ Dia/ Ano.

-D n Directory Size ( Cliente)

Define o núm ero de procedures por


dir et ór io aonde ser ão com piladas e
sobr epost as as pr ocedur es ex ecut áv eis.

Quando o Pr ogr ess com pila um a


procedure e a grava no disco ele
m ant ém a ver são ant er ior , caso não
sej a possív el gr av á- la no disco, por
quest ões de espaço ou acesso. Ent ão ele
m ant ém a procedure com pilada ant erior
e gera um erro de acesso.

Você pode m onit or ar a ut ilização de


ent r adas de dir et ór io at r av és das
est at íst icas ger adas pelo par âm et r o ( –
y) .

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 239

Mínim o: 5
Máxim o: 5 0 0
Padrão m ono- usuário: 1 0 0
Padrão m ulti- usuário: 1 0 0

- db banco de Physical Database Nam e ( Cliente)


dados
Define o nom e físico do banco de dados
a ser conect ado.

- debug Debugger ( Cliente)

Execut a o Progress em m ode Debug.

- decdtm Distributed Transaction Manager


( Cliente)

Usa ser v iço de t r ansações dist r ibuídas


DETdt m em am bient e VMS para
per for m ance de t r ansações em filas de
pr ocessos.

É necessár io est á inst alado o DETdt m


par a funcionar est e ser viço.

- dictexps Dictionary Expressions ( Cliente)

Força um a procedure com pilada a usar a


v alidação do dicionár io de dados,
m esm o quando há algum a declaração
nó código font e ignor ando às v alidações
ou as desabilit ando.

No código font e pode- se desabilit ar est a


especificação por fr am e ut ilizando o
t erm o NO- VALI DATE na declaração do

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


240 Dominando o Progress
FRAME/ FORM.

- directio Direct I / O ( Servidor)

Força um conexão ao banco de dados


com acesso de leit ur a e gr av ação dir et o
do disco ( i/ o) , ignor ando o cont r ole do
sist em a oper acional.

Est e par âm et r o aum ent a


significat iv am ent e a per for m ance,
dev ido ao acesso dir et o e elim inação de
com pet ição de out r os aplicat iv os, por ém
põe em r isco a int egr idade dos dados.

M Esse procedimento pode danificar a


base de dados caso alguma falha
de hardware ou software aconteça.

- dt Database Type ( Cliente)

I nfor m a o t ipo de banco de dados a ser


conect ado.

Tipos disponíveis: PROGRESS, ODBC,


ORACLE, RMS, Rdb, CI SAM, DB2 e
Sy base, sem dist inção ent r e m aiúsculas
e m inúsculas.

Padrão: Progress

-E European Num eric Form at ( Cliente)

Define o for m at o par a ent r ada e


apr esent ação de v alor es num ér icos.
Pont o separ a m ilhar es e vír gula separ a
decim ais.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 241

- esqllog ESQL Log ( Cliente)

Habilit a log de t r ansações par a bancos


de dados não Pr ogr ess conect ados.

- esqlnopad ESQL No Padding ( Cliente)

Define SQL dinâm ico em conj unt o com


pr epr ocessam ent o C.

- evtlevel Event Level ( Cliente) W indow s NT


parâm etro
Define os ev ent os a ser em gr av ados
pelo Ev ent Log do Window s NT.

None não grva nenhum event o.


Brief apenas aler t as e er r os.
Norm al aler t as, er r os e qualquer
out ro event o norm al.
Full t odas m ensagens.

-F Force Access ( Servidor)

For ça o acesso ao banco de dados em


est ado de recovery ( recuperação) para
um shut dow n de em ergência.

- fc n Schem a Field Cache Size ( Cliente)

O esquem a de cam po em cache reduz a


com pilação de inst ruções SQL por um a
pré- alocação dos cam pos em m em ória.

Use sem pre o m áxim o de cam pos em


cache par a ot im izar inst r uções. Por
padr ão o Pr ogr ess consom e 150 byt es
adicionais da m ém or ia por esquem a de

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


242 Dominando o Progress
cam po usado em cache, e novas
solicit ações/ uso de cam pos ser ão
obt idas dest e cache. Valor 0 ( zer o)
desabilit a cam pos em cache.

Mínim o: 0
Padrão: 1 2 8

- fldisable Field List Disable ( Cliente)

I gnor a a list a de cam pos cont idos em


um a procedure com pilada e obt em um a
nov a list a de cam pos da t abela a par t ir
do m et aschem a.

- g arquivo Before- im age Filenam e ( Servidor)

Especifica o ar quiv o de Befor e- I m age a


ser ut ilizado na conex ão do banco de
dados.

-G n Before- I m age Cluster Age


( Servidor)

Define os segundo par a r eut ilização de


clust er do Befor e- I m age.

Mínim o: 6 0

-h n Num ber of Databases

Lim it a o núm er o de banco de dados que


podem ser conect ados a sessão.

Mínim o: 1
Máxim o: 2 4 0
Padrão: 5

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 243

- H servidor Host Nam e ( Servidor)

Define o nom e/ alias do ser v idor aonde


est á o banco de dados com par t ilhado
par a acesso m ult i- usuár ios.

O arquivo hosts defin e a list a de I Ps e


aliases disponív eis par a conex ão.

Em Window s 95/ 98 a localização do


ar quiv o host s é C:\ W I N DOW S\ H OSTS ,
em Window s NT
C:\ W I NNT\ SYSTEM 3 2 \ D RI VERS\ ETC\ H
OSTS , em Unix \ et c\ host s ( Segundo os
dir et ór ios padr ões de inst alação de cada
SO m encionado) .

- H servidor AS/ 4 0 0 Host Nam e ( Servidor)

Define o nom e do servidor para um a


sessão m u lt i- usuário em AS/ 400.

- hardlim it Hardlim it ( Servidor)

Habilit a o ex cesso dos lim it es par a


parâm et ros que t êm , por padrão,
reduzido consum o de recursos,
increm ent ando os valores de parâm et ros
de Direct ory Ent ries ( - D) , Local Buffer
Size ( - l) , Maxim um Mem ory ( - m m ax) e
Nest ed Block s ( - nb) .

- hs s Heap Size ( Servidor)

I ncrem ent a o espaço da m em ória


com par t ilhada pelo banco de dados.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


244 Dominando o Progress
Est e par âm et r o é r elev ant e apenas em
Sist em a Oper acional V UNI X.

Mínim o: 1
Máxim o: 2 0 0 0
Padrão de acordo com o Sistem a
Operacional

-i No Crash Protection

Gr av a e delet a infor m ações dir et am ent e


do banco de dados sem cont r ole de
t r ansações aum ent ado
consider avelm ent e a pefor m ance, ou
sej a, habilit a apenas a gr av ação de
alguns dados no Befor e- I m age para
cont r ole, por ém é alt am ent e
desaconselháv el.

É possív el desfazer algum as t r ansações


desde que est as est ej am em bloco
definido por TRANSACTI ON e seus dados
est ej am ainda em cache do client e.

Ao iniciar um a sessão sem pr ot eção


cont ra crash é t ornada um a m ensagem
de aler t a sobr e a int egr idade do banco
de dados.

M O banco de dados pode perder sua


integridade não sendo mais
possível reestabelecê-la para o
conteúdo inicial.

- ininame I nitialization File ( Cliente)

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 245
arquivo
I nform a ao Progr ess o ar quivo I NI a ser
ut ilizado na configur ação da sessão.

Use com o parâm et ro – basekey "ini"


para ignorar os dados gravados na
r egist r y do Window s.

- inp n I nput Characters ( Cliente)

O núm ero de caract eres perm it idos em


um a única declaração.

Padrão: 4 0 9 6 caracteres

- is AS/ 4 0 0 I gnore Stam p ( Cliente)

I gnora um a conexão a um AS/ 400 se o


arquivo cache cont ém inform ações
difer ent es da est r ut ur a do m et aschem a
at ual.

-k Keyw ord Forget List

For ça o Pr ogr ess a aceit ar declar ações


cuj o nom e sej a um a palavra reservada
da linguagem . Ele ret ornará um a
m ensagem de aler t a, m as cont inuar á a
execução.

Exem plo

Um program a desenvolvido em versão 6


com um a variável cuj o nom e é um a
palavra reservada na versão 8
ocasionará um erro de sint axe. Porém
v ocê pode r em ediar est e problem a com
o parâm et ro – k que ignor ar á est a

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


246 Dominando o Progress
redundância.

-L n Lock Table Entries ( Servidor)

Define o núm er o de r egist r os que


podem ser t r avados.

Cada r egist r o acessado com a claúsula


SHARE- LOCK ou EXCLUSI VE- LOCK
r equisit a um t r avam ent o individual, caso
sej a necessár io o lock além do v alor
especificado é r et or nada um a
m ensagem de er r o à sessão client e,
por ém a sessão m ult i- usuár io desfaz
t odas as t r ansações e m ant ém o
pr ocessam ent o.

Mensagem de erro

SYSTEM ERROR: Record lock t able t oo


sm all. I ncr ease –L param et er

Cada r egist r o em lock na t abela


consom e 14 byt es da m em ória não
com par t ilhada e cada r equisição r equer
18 byt es da m em ór ia com par t ilhada da
sessão m u lt i- usuár io.

Caso v ocê especifique um v alor que não


sej a m últ iplo de 32 est e v alor infor m ado
ser á arredondado para o valor m últ iplo
m ais pr óxim o do indicado.

- ld nom e Logical Database Nam e ( Cliente)

I nfor m a à sessão o nom e lógico a ser


at r ibuído par a o banco de dados

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 247
conect ado.

- lng Language ( Cliente)


linguagem
Define a linguagem a ser ut ilizada pela
sessão.

As linguagens disponív eis depende da


configur ação do Pr ogr ess inst alado.
Tipicam ent e as linguagens inst aladas
são inglês int er nacional, inglês
am er icado, espanhol, alem ão e fr ancês.

- logfile LogFile ( Cliente)


arquivo
Especifica o ar quiv o de log a ser
criado/ usado pelo AppServer.

- lognam e Lognam e ( Cliente)


arquivo
Especifica o ar quiv o de log a ser
criado/ usado pelo AppServer

-m1 Auto Server ( Servidor)

I nicia a sessão m ult i- usuár io definindo


um aut o- ser vidor . O ser viço m ult i-
usuár io usa o ser vidor par a iniciá- lo
aut om at icam ent e. Por ém , est e ser v iço
j á é ut ilizado por padr ão, dispensando a
passagem dest e par âm et r o par a a
sessão.

-m2 Manual Server ( Servidor)

I nicia a sessão m ult i- usuár io definindo


m anualm ent e um ser viço r em ot o após o

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


248 Dominando o Progress
in ício da sessão m ult i- usuár io.

-m3 Secondary Login Broker ( Servidor)

Especifica um t er ceir o ser viço a ser


usado par a a sessão m ult i- usuár io.

- Ma n Maxim um Clients Per Server


( Servidor)

Define o núm ero m áxim o de usuários


r em ot os por sessão m ult i- usuár io.

O padr ão ut ilizado ser á o par âm et r o – n


se especificado, div idido pelo núm er o
m áxim o de servidores, parâm et ro – Mn.

- m axport n Maxim um Dynam ic Server


( Servidor/ Cliente)

Define o int er v alo m áx im o de por t as


disponív eis par a um a sessão client e.

Os par âm et r os –m axport e –m inport


definem um a faix a específica de por t as
disponív eis par a pr ot eção de um
fir ew all. Ger alm ent e o int er v alo
disponível é 32768 à 65535.

Mais infor m ações no capít ulo Segur ança


de dados e aplicação.

- Mf n Delayed BI File W rite ( Servidor)

Define um int er v alo em segundo par a a


gravação das inform ações em buffer
( Before- I m age) par a o banco de dados.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 249

Est e int er v alo não põe em r isco a


int egr idade dos dados, por ém em caso
de er r o os dados não ar m azenados no
int er v alo definido poder ão ser per didos.

Mínim o: 0
Máxim o: 3 2 7 6 8
Padrão m ono- usuário: 0
Padrão m ulti- usuário: 0

- Mi n Minim um Clients Per Server


( Servidor)

Define o núm er o m ínim o de usuár ios


r em ot os por sessão m ult i- usuár io.

- m inport n Minim um Dynam ic Server ( Servidor)

Define o int er v alo m ínim o de por t as


disponív eis par a um a sessão client e.
Vej a t am bém o par âm et r o – m axport.

- Mm n Message Buffer Size


( Servidor/ Cliente)

Define a quant idade em by t es par a o


buffer de m ensagens padr ão.

- m m ax n Maxim um Mem ory ( Cliente)

Define um v alor inicial em k iloby t es par a


alocar procedures com piladas.

- Mn Maxim um Servers ( Servidor)

Mínim o: 1
Máxim o: 5 1 2

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


250 Dominando o Progress
Padrão m ulti- usuário: 4

- Mp n Servers Per Protocol ( Servidor)

Define o núm er o de ser vidor es que


podem ser iniciados por usuár ios
rem ot os com qualquer prot ocolo.

- Mpb n Maxim um Servers Per Protocol


( Servidor)

Define o núm ero m áxim o de servidores


por prot ocolo.

- Mr n Record Buffer Size ( Cliente)

Define o t am anho em by t es par a o


buffer de r egist r os.

Mínim o: 96
Máxim o: 3 2 .0 0 0
Padrão m ulti- usuário: 1 0 1 2

- Mv n Maxim um Open Files


( Servidor/ Cliente)

Define o núm ero m áxim o de arquivos


aber t os par a o Sist em a PTX.

- Mxs n Shared Mem ory Overflow Size


( Servidor)

Configura o t am anho da m em ória


com par t ilhada em ov er flow em k iloby t es

Est e par âm et r o subst it ue os v alor es


padr ões at uais e r ealoca a m em ória
com par t ilhada.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 251

Mínim o: 1
Máxim o: m em ória física disponível
Padrão m ulti- usuário: 1 5 kilobytes
+ ( n * 300)

-n n Num ber of Users ( Servidor)

Define o núm ero m áxim o de usuário


par a conex ão ao banco de dados.

- N protocolo Netw ork Type ( Cliente)

Define o t ipo de pr ot ocolo/ r ede par a


conex ão ao banco de dados.

Os pr ot ocolos disponív eis pelo Pr ogr ess


são: TCP, DECnet , NETBI OS, TLI , DDE
( Window s e Releases 7. 3A ou
super ior es) , WI PC ( Window s e Release
7.3B ou superiores) , SNA, LFP, e
CTOSCLUSTER. Em VMS apenas
pr ot ocolos TCP e DECnet .

- nb n Nested Blocks ( Cliente)

Define o núm er o de blocos solicit ados


para a execução de procedures.

- Nd device Netw ork Device ( Servidor/ Cliente)

Especifica o cam inho/ localização de um


dev ice a ser ut ilizado par a com unicação
ent r e pr ocessos.

Aplicáv el apenas par a UNI X Sy st em V.3.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


252 Dominando o Progress

- NL No Lock ( Cliente)

Difine NO- LOCK para ao com ando FI ND


e FOR EACH com o padr ão, caso est es
est es não t enham nenhum a declar ação
de LOCK j á especificada.

É aplicável apenas por pr ocedur es


com piladas por um a sessão iniciada com
o parâm et ro –NL, para procedure não
com piladas ou pr é- com piladas é
assum ido o padr ão NO- LOCK.

- Nn Cliente PC Client Nam e ( Cliente)

I dent ifica o nom e do com put ador client e


par a a conex ão do banco de dados.

- Nv n Netw ork Version ( Cliente)

Especifica o núm er o da ver são do


pr ot ocolo de conex ão. Est e par âm et r o é
passado do client e par a o ser v idor par a
assegur ar com pat ibilidade.

-o Printer ( Cliente)
im pressora
Define o nom e/ dev ice da im pr essor a a
ser ut ilizado em um scopo de im pr essão.

Exem plo:

–o " COM2" ( Window s)


–o " ls –s" ( UNI X)

( código)

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 253
out put t o pr int er .

- p procedure Startup Procedure ( Cliente)

Especifica a pr ocedur e a ser execut ada.

- P senha Passw ord ( Cliente)

Define a senha do usuár io no banco de


dados.

- param texto Param eter ( Cliente)

Declara um parâm et ro inform at ivo para


ident ificar a sessão.

Por exem plo, em sua em presa você


m ant ém bancos de dados pr odução e
bancos de desenv olv im ent o, e em
t em po de execução você quer saber qual
o banco que est á sendo ut ilizado, ent ão
você específica um a palavr a par a o início
da sessão, - p " desenv" , e o obt ém por
código pelo com ando
SESSI ON: PARAMETER.

- pf arquivo Param eter File ( Servidor/ Cliente)

Especifica um ar quivo de par âm et r os a


ser ut ilizado par a iniciar um a sessão
ser vidor ou client e.

- plm PROLI B Mem ory ( Cliente)

Aloca 512 byt es par a o cache de


bibliot ecas.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


254 Dominando o Progress

- pls PROLI B Sw ap ( Cliente)

Define o uso de ar quiv os t em por ár ios


.SRT para procedures com piladas.

- populate Fast Schem a Change ( Cliente)

Define para o Progress um m ecaniscom


dinâm ico par a obt enção e m anipulação
dos dados do m et aschem a.

- pp diretório ESQL PROPATH

Adiciona um novo dir et ór io ao Pr opat h


em um a conexão ODBC.

- pw qdelay Page W riter Queue Delay ( Servidor)

Especifica um núm er o em m ilisegundos


ent r e scan de páginas e escrit a no banco
de dados.

Mínim o: 0
Padrão m ulti- usuário: 1 0 0

- pw qmin n Page W riter Queue Minim um


( Servidor)

Define um núm ero m ínim o de buffers a


serem requeridos para gravação no
banco de dados ant es que o APW os
grave no disco.

Mínim o: 0
Padrão m ulti- usuários: 1

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 255

- pw scan n Page W riter Scan ( Servidor)

O núm er o de buffer s que o APW dev a


cont ar ant es de um ciclo.

Mínim o: 0
Padrão m ulti- usuário: 4 % de buffers ( -
B)

- pw sdelay n Page W riter Scan Delay ( Servidor)

O núm er o de segundos de int er v alo


ent re cada procura de buffers para
gr av ação no banco de dados pelo APW.

Mínim o: 0
Padrão m ulti- usuário: 1

- pw w max n Page W riter Maxim um Buffers


( Servidor)

Define um núm ero m áxim o de buffers a


serem requeridos para gravação no
banco de dados ant es que o APW os
grave no disco.

Mínim o: 0
Padrão m ulti- usuários: 2 5

-q Quick Request ( Cliente)

Mant ém um a procedure resident e em


m em ór ia par a uso/ acesso dinâm ico par a
out r as ex ecuções.

Mais infor m ações no capít ulo


Perform ance.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


256 Dominando o Progress

-Q ANSI SQL ( Cliente)

Força o uso do padrão ANSI SQL para


declar ações SQL afim de m ant er
com pat ibilidade absolut a.

- Q2 ANSI SQL Client ( Cliente)

Mant ém com pat ibilidade com o padr ão


ANSI SQL89 para t ransações.

-r Buffered I / O ( Servidor)

Habilit a a gr av ação em buffer de I / O


para o Before- I m age.

Muit a at enção par a est e par âm et r o


por que ele coloca a int egr idade do
banco de dados em r isco. Ger alm ent e
quando conect ado a um banco localizado
em um drive rem ot o ou rem ovível o
Pr ogr ess aut om at icam ent e infor m a
sobr e o per igo de cr ash quant o ao
disposit iv o, que no caso de falha o
banco de dados só poder á ser
rest aurado por m eio de backup.

M Este modo de conexão é


extremamente perigoso para a
integridade dos dados. Em caso de
falha apenas por meio de backup
pode-se recuperar os dados.

- rand n Alternate Random Num ber


Generator ( Cliente)

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 257

Define um núm er o base a ser ut ilizado


para geração de valores randôm icos.

Mínim o: 1
Máxim o: 2
Padrão: 1

- rg Run 4GL Client ( Cliente)

Define que o Pr ogr ess ut ilizado é 4GL


Full, caso v ocê t enha m ais de um t ipo de
configur ação inst alada no seu Pr ogr ess
at ual.

- RO Read- Only ( Cliente)

Define que o banco de dados conect ado


ser á apenas par a leit ur a.

- rptint n License Usage Reporting I nterval


( Servidor)

Define um int er v alo, em m inut os, par a a


sessão m u lt i- usuár ios infor m ar o uso
das licenças.

- rq Run Query Client ( Cliente)

Define que o Pr ogr ess ut ilizado ser á


apenas Client par a lim it ar o acesso dos
client es.

- rr Run Run- tim e Client ( Cliente)

Define que o Pr ogr ess ut ilizado ser á


apenas Client par a lim it ar o acesso dos
client es.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


258 Dominando o Progress

-s n Stack Size ( Cliente)

Define o núm ero para o t am anho de


st ack da ár ea da m em ór ia com par t ilhada
pela sessão m u lt i- usuários em 1K( 1024
by t es) . Apenas ut ilize est e par âm et r o
caso ocor r a algum er r o solicit ando o
increm ent e dest e parâm et ro por um a
t abela que ult r apasse os v alor es
padr ões, com o os er r os abaixo:

SYSTEM ERROR: st k pu sh : st ack ov er f low .


I n cr ease - s p ar am et er .

SYSTEM ERROR: st k dit em : st ack ov er flow .


I n cr ease - s p ar am et er .

Mínim o: 3
Máxim o: 6 3
Padrão: 4 0

- S serviço Service Nam e ( Servidor/ Cliente)

Especifica o nom e/ alias do ser v iço m ult i-


usuár io definido na sessão m ult i-
usuár io.

Est e ser v iço dev e est ar definido no


ar quivo ser vices com o nom e/ alias,
por t a e pr ot ocolo.

A localização em Window s 95/ 98 é o


dir et ór io do Window s, se em Window s
NT dir et ór io do NT\ sy st em 32\ drivers\ et c
e UNI X / et c.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 259

- Sn serviço AS/ 4 0 0 Server Program Nam e


( Servidor/ Cliente)

I gual ao par âm et r o –S

- spin n Spin Lock Retries ( Servidor)

Define o núm er o de vezes que um


pr ocesso t ent ar á ser concluído ant es de
um int ervalo.

- stream Stream ( Cliente)


Código
Página Especifica um Código de Página a ser
ut ilizado par a scopo de st r eam s ( saída
par a im pr essor a e t ela, ar quiv os de
definições, et c) . Você pode especificar
duas configur ações iso8859- 1 para
códigos lat inos ou ibm 850 par a códigos
indo- ar ábicos.

Padrão: ibm 8 5 0

- stsh n Stash Area ( Cliente)

Define o núm er o de blocos a ser em


alocados na ár ea de St ash.

Mínim o: 1
M á x im o: 3 1
Pa drã o: 2

- SYBc n SYBASE Connections ( Cliente)

Núm ero m áxim o de conexões para um


banco de dados Sy base.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


260 Dominando o Progress

Pa dr ã o: 2 5

- SYBt n SYBASE Tim e ( Cliente)

Define um t im eout em segundos par a


um a conexão ao banco de dados
Sybase.

Pa drã o: 3

-t Save Tem p Files ( Cliente)

Mant em ar quivos t em por ár ios após o


encer r am ent o de um a sessão.

- T diretório Tem porary Directory ( Cliente)

Define um dir et ór io com o r eposit ór io de


ar quivos t em por ár ios.

Caso não sej a especificado o par âm et r o


o Progress assum irá com o padrão o
dir et ór io inicial da aplicação.

- TB n Speed Sort ( Cliente)

Define um t am anho em k iloby t es a ser


alocado par a pr ocessos de or ganização.

Mínim o: 3
M á x im o: 3 1
Pa dr a o: 1 2

- TM n Merge Num ber ( Cliente)

Define o núm er o de blocos ou st r eam s a


ser em m esclados sim ult aneam ent e par a

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 261
pr ocessos de or ganização.

Mínim o: 1
M á x im o: 3 2
Pa drã o: 5

- tok n Token ( Cliente)

Define o núm ero m áxim o de " t okens"


per m it idos em um a declaração Progress
4GL.

Máxim o: 1 .6 0 0
Padrão: 1 0 2 4

- trig diretório Trigger Location ( Cliente)

Especifica o dir et ór io aonde est ão


localizados os ar quiv os dos t r igger s do
bancos de dados.

- tstam p Tim e Stam p ( Cliente)

Define um t im er que verifica o cont eúdo


do código ex ecut áv el .R se equiv ale ao
m esm o cont eúdo do Met aschem a at ual.

- usrcount n User Count ( Servidor)

Define o núm er o de usuár ios per m it idos


par a conex ão ao banco de dados após o
ex cesso das licenças.

- U usuário User I D ( Cliente)

I ndica o nom e do usuár io definido no


banco de dados.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


262 Dominando o Progress

- vw Video W rite ( Cliente)

Habilit a o scopo dir et o par a o v ídeo por


com pat ibilidade com um console PC. Use
em Sist em a Operacional SCO para
cont r ole do st r eam de I / O.

- VO versão ORACLE Version ( Cliente)

Define a v er são do Or acle a ser


conect ada ( Versão 6 ou 7) .

- v6colon Version 6 Colon ( Cliente)

Especifica com pat ibilidade com a v er são


Pr ogr ess 6 par a alinham ent o de cam pos.
Caso v ocê não especifique est e
par âm et r o o Pr ogr ess desloca o cam po
dois car act er es a dir eit a.

- v6 q Version 6 Query ( Cliente)

Define o uso de apenas um índice par a


um a claúsula FOR EACH. Caso não sej a
especificado o Pr ogr ess ut iliza o m elhor
núm ero de índice para qualquer
condição.

- xc coleção Extended Alphabet Support

Específica a t abela de coleção de


Códigos de Página a ser ut ilizada pela
sessão.

Est e par âm et r o é sim ilar ao par âm et r o –


cpcoll.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 263

Maior es infor m ações v ej a o m anual


PROGRESS I nt er nat ionalizat ion Guide.

-y Statistics ( Cliente)

At iv a o log de est at íst icas de u so e


consum o dos program as.

Quando um a sessão t er m ina o Pr ogr ess


gr av a as infor m ações de ut ilização da
sessão em um ar quiv o log.

Você pode especificar o ar quiv o de saída


das est at íst icas definindo a v ar iáv el de
am bient e CLI ENTMON, com o abaixo:

CLI ENTMON= / tm p/ estat.log ;


export CLI ENTMON

Caso v ocê não defina a saída o ar quiv o


padr ão é client.m on localizado no
dir et ór io da aplicação.

- yc Statistics w ith CTRL- C ( Cliente)

Define a cr iação de est at íst ica e


desabilit a o uso das t eclas CTRL- C para
abor t ar um a aplicação.

Tam bém subst it ue o com ando SHOW -


STATS par a cr iação de est at íst icas.

Mais infor m ações consult e o capít ulo


Perform ance

- yd Segm ent Statistics ( Cliente)

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


264 Dominando o Progress

Define a cr iação de est at íst icas ger adas


pela execução das pr ocedur es.
Arm azena inform ações sobre execução
de program as com pilados e seus
r espect iv os t am anhos em by t es, e
cr iação/ acessos a ar quivos SRT e o
consum o em byt es.

Por padr ão est as est at íst icas são


arm azenas no arquivo client.m on
localizado no dir et ór io da aplicação.

Mais infor m ações consult e o capít ulo


Perform ance.

- yx Statistics w ith Cross- reference


( Cliente)

Define a cr iação de est at íst icas ger adas


pela execução das pr ocedur es, e
ar m azena t odas as infor m ações de uso
em um arquivo.

Est e arquivo por padrão é criado no


dir et ór io da aplicação cham ado
proc.m on, caso v ocê queir a especificar
out r a localização par a o ar quiv o dev e- se
configur ar a var iável de am bient e.

PROCMON= Localização do Arquivo

Exem plo

SET PROCMON= M: \ TEMP\ MONI TOR.LG


( Window s)
PROCMON=/tmp/monitor.lg ; export PROCMON (UNIX)

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 265

Mais infor m ações consult e o capít ulo


Perform ance.

- yy ano Century ( Cliente)

Especifica um ano base par a o século.


Por exem plo, 1950 declara que anos
iguais e infer ior es a 50 ser ão do século
20, e anos super ior es a 50 ser ão século
21.

Mínim o: 1 1 0 0
Máxim o: 9 9 0 0
Padrão: 1 9 5 0

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


266 Dominando o Progress

Banco de Dados
Multi− Volumes

O que é o ba nco m ult i- volum e s?

O banco de dados m ult i- volum es no Pr ogr ess nada


m ais é que ar quiv os de dados, de t r ansações, de im agens
que fazem part e, com o t am bém pert encem a um único
banco de dados.

O figur a abaix o ex em plifica a const it uição de um


banco de dados dividido em 3 ar quivos de dados ( .DBn) ,
2 arquivos para o Before- I m age ( .Bn) e 2 arquivos para o
Aft er - I m age ( .An) .

Os ar quivos padr ão com o Dat abase ( .DB) , Befor e-


I m age ( .DB) e Aft er- I m age ( .AI ) quando em m ult i-
volum es eles apenas ar m azem dados infor m at ivos sobr e a

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 267
pr ópr ia const it uição e est r ut ur a do banco de dados. Por
ex em plo o ar quiv o .DB não m ais cont ém dados das
t abelas, apenas as est r ut ur as das m esm as, índices,
v alidações, et c.

Os ar quiv os ex t endidos ( Dn, Bn, An) t êm um


t am anho fix o e inalt er ado com o defido na est r ut ur a de
cr iação dos m esm os, inicialm ent e v azios, por ém os
t am anhos definidos j á alocados.

Os ar quiv os Voláteis ( Dn, Bn, Na) não t êm um


t am anho definido, por que eles ser ão ut ilizados e
incr em ent ados depois de esgot ado os t am anhos definidos
dos ar quivos ant er ior es. Por exem plo, um banco m ult i-
volum es com dois ar quivos de dados em 50 m egas e um
t er ceir o v olát il ser á esgot ado o t am anho pr é- definido
quando est e ult r apassar 100 m egas em quant idade de
infor m ações par a t abelas e índices, ent ão ut ilizando o
ar quiv o est endido.

Por que usa r Ba nco M ult i- Volum e s?

A ut ilização de banco de dados m ult i- v olum es além


de um a solução par a o pr oblem a do t am anho m áxim o de
um ar quiv o im post o pelo Sist em a Oper acional ( 2
Gigaby t es UNI X, Nov ell e FAT16 Window s) , t am bém é
recom endado com o o m elhor, ou um dos m elhores, m eios
para m elhorar a perform ance de m anipulações de dados.

Ar quiv os m enor es e indiv iduais per m it em acessos


m ais r ápidos par a aber t ur a, leit ur a e gr av ação, t ant o par a
cont r ole int r ínseco do Sist em a Oper acinal, com o t am bém
para o SGBD do banco.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


268 Dominando o Progress

Cr ia ndo a e st r ut ur a m ult i- volum e s

Você pode par t icionar t r ês par t es const it uint es do


banco: os ar quivos de Dados ( .DB) , o Befor e- I m age ( .BI )
e o Aft er - I m age( .AI ) . Podendo- se defin ir n arquivos
const it uint es em n localizações iguais ou dist int as, sendo
o últ im o ar quiv o de cada par t e const it uint e um ar quiv o de
t am anho v olát il.

For m a çã o do a r qu ivo de e st r u t u r a

Tipo do Arquivo Localização e N om e Tam anho


( m últ iplo de 3 2 )

D ( Dad os) [ Dir et ór io/ ] Ar qu iv o. Xn f n * 3 2

B ( Bef or e- I m age) On d e X é o t i p o d o
ar q u iv o e n é a seqüência
A ( Af t er - I m ag e) d o m esm o e f é u m a
co n st a n t e

Est as definições dev em est ar descr it as em um


ar quivo t ipo t ext o com o cuj o nom e deve ser o m esm o do
banco a ser criado e ex t ensão st.

þ A Progress declara que você pode definir um nome


para o banco e informar o arquivo de estrutura, mas
em muitos casos não funciona. ( prostrct create
banco [ arquivo de descrição] ... Então crie um
arquivo de estrutura com o mesmo nome do banco
desejado!

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 269

Arquivo info.st
d info.d1 f 2048
d info.d2 f 2048
d info.d3 f 2048
d info.d4
b info.b1 f 1024
b info.b2
a info.a1 f 1024
a info.a2

O exem plo acim a cria um a definição com


par t icionam ent o em 3 ar quivos par a dados com 2 m egas
e o quar t o ex t endido, e dois par a Befor e- I m age e Aft er -
I m age com 1 m ega.

I Lembre-se sempre que o último arquivo não pode


informar o tamanho porque este será um arquivo
volátil.

J É sempre aconselhável a localização dos arquivos After-


I mage em outro disco, para possibilitar a recuperação
caso aconteça algum problema nos bancos de dados
por motivo de falha no(s) disco(s) de produção.

Cr ia ndo o Ba nco

Após concluídas as definições do ar quiv o apenas


defina a v ar iáv el de am bient e DLC e o PATH, caso não
definidos ex ecut e o ut ilit ár io PROSTRCT, exem plo:

prost rct creat e info

Pront o! Cr iado o banco de dados m ult i- v olum es.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


270 Dominando o Progress
Depois de cr iado o banco ainda não é o suficient e
par a com eçar a ut ilizar . O Pr ogr ess não per m it e conexão
a um banco de dados, Pr ogr ess pelo m esm os, caso est e
não cont enha nenhum a definição de est r ut ur a lógica. O
banco de dados r ecém cr iado est á v azio, as definições
feit as for am som ent e quant o à est r ut ur a física de m ult i-
v olum es ou m ult i- ar quiv os, não há no banco t abelas,
usuár ios par a obt er per m issões, et c.

Caso v ocê t ent e conect ar um banco m ult i- volum es


sem nenhum a definição de est r ut ur a, Met aschem a, ser á
apr esent ado est e er r o.

Quando v ocê cr ia um banco de dados sim ples e


vazio ( Em pt y) , por exem plo, o Pr ogr ess o faz a par t ir de
um banco j á ex ist ent e cham ado Em pty.db, localizado em
DLC. List e t odos os ar quiv os .DB e v ocê v er á os bancos
or igem par a o PRODB, Dat a Adm inist r at ion, CREATE
TABLE e qualquer out ro m odo de criação de banco de
dados Pr ogr ess.

Para colocar o banco em funcionam ent o você deve


copiar a est rut ura de um banco j á pront o para o banco
m ult i- v olum es cr iado ut ilizando o ut ilit ár io PROCOPY ,
exem plo:

Sint ax e : PROCOPY Banco de Or igem Banco Dest ino

Digit e est e com ando, lem br ando- se que a v ar iáv el


de am bient e DLC dev e est á r efer enciada adequadam ent e.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 271
procopy % DLC% / em pt y info ( DOS/ W I N DOW S)

procopy $ DLC/ em pt y info ( UN I X)

Pr ont o! O banco m ult i- v olum es est a cr iado.

A conexão é da m esm a form a que um banco de


dados sim ples. O ger enciam ent o dos ar quiv os é t odo por
cont a do Pr ogr ess.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


272 Dominando o Progress

MAGNUS

Apr e se nt a çã o

Ser á discut ido nest e capít ulo div er sos assunt os


r elat iv os ao sist em a de gest ão em pr esar ial MAGNUS
Dat asul, baseado em m aior par t e no MAGNUS ver são I
m odo Gr áfico par a am bient e Window s, ser á discut ido e
m ost r ado t elas e det alhes par a am bient e UNI X, por ém em
m enor quant idade.

Com o o M AGN US funciona ?

O sist em a MAGNUS cont em pla em seu pacot e


div er sos m ódulos, alguns obr igat ór ios e pr im ár ios
( Cadast r os, Ut ilit ár ios, Aj uda) , e out r os de acor do com a
necessidade da em pr esa ( Fat ur am ent o, Ex por t ação, Chão
de Fábr ica, et c) .

A sua configur ação quant o ao Pr ogr ess é baseada,


ainda, na ver são Pr ogr ess 6 - confor m e discut ido no
capít ulo Configur ação do Pr odut o. Ele é inst alado em um
dir et ór io pr incipal, com par t ilhado ent r e t odos os client es
que o ut ilizar ão, com div er sos sub- dir et ór ios que
repr esent am um m ódulo ou gr upo de ut ilidades, por
exem plo:
/ MAGNUS ( Diret ório principal)
/ MAGNUS/ cdp ( Cadast ros)
/ MAGNUS/ ut p ( Ut ilit ár ios)
/ MAGNUS/ ct p ( Cont abilidade)

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 273

List a de D ir e t ór ios do M AGN US


( pr in cipa is)

CDP Cadast r os

UTP Ut ilit ár ios

I GP Gráficos

I NC Tr igges e I ncludes

J A monenclatura de TRI GGERS utilizada


pela Datasul é a tradução literal,
GATI LHOS

AJP Aj uda

CTP Cont abilidade

CEP Est oque

CCP Com pras

REP Recebim ent o

ESP Pr ogr am as específicos desenv olv idos pelo


client e

PTP Pat r im ônio

OUTROS...

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


274 Dominando o Progress

Funciona m e nt o do M EN U

Hierarquia/ Relacionam ento

SI STEMA → ROTI NA → PROGRAMA

O gr áfico abaix o dem onst r a a lógica dos


r elacionam ent os e per m issões de acesso a cada SI STEMA,
ROTI NA e/ ou PROGRAMA.

Exemplo

/* ex0036.p */

define variable c-programas as character.

for each sistema:


display sistema.sigla
sistema.nome
sistema.permissao format "x(40)".

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 275
for each rotina of sistema:
display rotina.sigla
rotina.rotina
rotina.permissao format "x(40)".

for each programa where


programa.programa = rotina.programa[01] or
programa.programa = rotina.programa[02] or
programa.programa = rotina.programa[03] or
programa.programa = rotina.programa[04] or
programa.programa = rotina.programa[05] or
programa.programa = rotina.programa[06] or
programa.programa = rotina.programa[07] or
programa.programa = rotina.programa[08] or
programa.programa = rotina.programa[09] or
programa.programa = rotina.programa[10] or
programa.programa = rotina.programa[11] or
programa.programa = rotina.programa[12] or
programa.programa = rotina.programa[12]:

assign c-programas = rotina.programa[01] +','+


rotina.programa[02] +','+
rotina.programa[03] +','+
rotina.programa[04] +','+
rotina.programa[05] +','+
rotina.programa[06] +','+
rotina.programa[07] +','+
rotina.programa[08] +','+
rotina.programa[09] +','+
rotina.programa[10] +','+
rotina.programa[11] +','+
rotina.programa[12] +','+
rotina.programa[12].

display entry(lookup(programa.programa,
c-programas),
'a,b,c,d,e,f,g,h,i,j,k,l,m')
programa.programa
programa.permissao format "x(40)"
with no-box no-labels.
end.
end.
end.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


276 Dominando o Progress

Va lida ndo o a cesso a o Progra m a

Est e código abaix o v alida a per m issão par a uso de


um program a de acordo com as perm issões concedidas ao
grupo do usuário ou indiv idualm ent e, pelo nom e.
Exemplo

/**********************************************************
* Programa...: ACESSOMG.P
* Programador: Marcio Brener
* Finalidade.: Consistencia das permissoes para execucao
* de programas
* Data.......:
**********************************************************/
define input parameter c-programa like programa.programa.

/* Ignora verificacao se usuario ADM ou SUPER */


if userid("mgadm") = "adm" or
userid("mgadm") = "super" then return.

/* Verifica se o usuario atual tem USERID do MAGNUS */


find _user where
_user._userid = userid("mgadm") no-lock no-error.
if not available _user then do:
bell.
message "Usuario nao autorizado no MAGNUS"
view-as alert-box warning title "Acesso negado".
return error.
end.

/* Verifica se o programa esta cadastrado no MAGNUS


para acessos */
find programa where
programa.programa = c-programa no-lock no-error.
if not available programa then do:
bell.
message "Programa nao cadastrado no MAGNUS"
view-as alert-box warning title "Acesso negado".
return error.
end.

/* Verifica se e permitido para todos */


if lookup("*", programa.permissao) > 0 then return.

/* Verifica se tem permissao para o USERID do MAGNUS */


if lookup(userid("mgadm"), programa.permissao) > 0 then return.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 277
/* Verifica permissao programa-grupos X usuario-grupos */
for each rel-grup-user where
rel-grup-user.usuario = userid("mgadm") no-lock:
if lookup(rel-grup-user.cd-grupo, programa.permissao) > 0
then return.
end.

/* Retorna em ERRO se nenhuma condicao satisfeita */


bell.
message "Usuario sem permissao para executar este programa"
view-as alert-box warning title "Acesso negado".
return error.

/* fim do programa */

Ba ncos H ist óricos

Quando é encer r ado um per íodo fiscal, 1 ano, é


necessár io fazer os fecham ent os cont ábeis do per íodo e
iníciar um novo exercício fiscal. Um problem a com um às
em pr esas é o hist ór ico dest e ex er cício encer r ado, at é
m esm o por não t er o m ódulo de Bancos Hist ór icos do
MAGNUS, ent ão a solução é m ant er os bancos de dados
dest e per íodo encer r ado à par t e par a fut ur as consult as,
confor m e ex igências legais.

Os bancos de dados hist ór icos dev em ser


consult ados, por ém nunca alt er ado. Ent ão com o gar ant ir
acesso som ent e par a consult a?

Par a isso a m elhor for m a é gar ant ir o cont eúdo dos


dados inalt er ados a par t ir do pr ópr io banco de dados com
per m issão som ent e par a leit ur a pelos client es, o
pr ogr am a abaixo m ost r a com o fazer isso.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


278 Dominando o Progress

Exemplo

/* ex0034.p */

/*
Este programa concede permissão somente aos usuários
ADM e SUPER para modificação de dados
*/

/* Banco Administrativo */
for each mgadm._file
where mgadm._file._file-name <> "maxusadm" and
mgadm._file._file-name <> "prog-log" and
mgadm._file._file-name <> "log-mensagem"
exclusive-lock:

assign mgadm._file._can-create = "adm,super"


mgadm._file._can-delete = "adm,super"
mgadm._file._can-write = "adm,super"
mgadm._file._can-read = "*"
mgadm._file._can-dump = "adm,super"
mgadm._file._can-load = "adm,super".

for each mgadm._field of mgadm._file exclusive-lock:


assign mgadm._file._can-write = "adm,super"
mgadm._file._can-read = "*".
end.
end.

/* Banco Comercial */
for each mgcom._file exclusive-lock:
assign mgcom._file._can-create = "adm,super"
mgcom._file._can-delete = "adm,super"
mgcom._file._can-write = "adm,super"
mgcom._file._can-read = "*"
mgcom._file._can-dump = "adm,super"
mgcom._file._can-load = "adm,super".

for each mgcom._field of mgcom._file exclusive-lock:


assign mgcom._file._can-write = "adm,super"
mgcom._file._can-read = "*".
end.
end.

/* Banco Industrial */

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 279
for each mgind._file exclusive-lock:
assign mgind._file._can-create = "adm,super"
mgind._file._can-delete = "adm,super"
mgind._file._can-write = "adm,super"
mgind._file._can-read = "*"
mgind._file._can-dump = "adm,super"
mgind._file._can-load = "adm,super".

for each mgind._field of mgind._file exclusive-lock:


assign mgind._file._can-write = "adm,super"
mgind._file._can-read = "*".
end.
end.

/* fim do programa */

Você poder ia t am bém iniciar a sessão client e com o


par âm et r o som ent e leit ur a - RO, m as no banco de dados
adm inist r at ivo do MAGNUS, m gadm , é necessár io a
leit ur a, gr av ação e deleção de r egist r os par a se ut ilizar o
sist em a.

D e se nvolve r e m W indow s pa r a usa r no


UN I X ...

Caso você use MAGNUS em am bient e UNI X via


t elnet , ger alm ent e o soft w ar e NETTERM, t ant o par a uso
do Sist em a com o t am bém desenvolvim ent o de pr ogr am as
específicos a edição é bast ant e díficil, t alv ez nem t ant o,
m as de m odo díficil com cer t eza. Em am bient e UNI X o
Pr ocedur e Edit or não lhe dá um a agilidade par a escr it a
t ão boa com o qualquer edit or Window s ou DOS, com
facilidades com o copiar e colar , selecão r ápida, uso do
m ouse, help on- line, ent r e out r os div er sos at r at iv os
disponív eis no Window s.

Par a isso pr im eir am ent e você t em t er um a ver são


do Pr ogr ess par a Window s, com supor t e a edit ar
procedures e m anipular dados ( Procedure Edit or e

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


280 Dominando o Progress
Dicionár io de Dados) , caso v ocê t enha faça os seguint es
passos:

Configure a sessão servidor UN I X adequadam ent e para à


conexão do W indow s:

1. Edit e o ar quiv o / et c/ ser v ices e inclua ao final


dest e os ser v iços dos bancos de dados que ser ão
ut ilizados par a ident ificações por par t e das
conex ões client es Window s, ex em plo:

m ga dm 8 0 3 0 / t cp

m gcom 8 0 3 1 / t cp

m gind 8 0 3 2 / t cp

2. A car ga do banco de dados inclua a infor m ação


do ser v iço a ser ut ilizado pelo banco, ex em plo:

Carga do banco Adm inist rat ivo

proserve - db i0 0 adm - S m ga dm - N tcp ...

Configure a sessão client e W indow s adequadam ent e


pa ra o M AGN US:

1. Crie um diret ório local na m áquina de


desenv olv im ent o ou ent ão no ser v idor par a
ser em inst alados os ar quiv os de pr ogr am as do
MAGNUS, isso ocupará em m édia 300
m egaby t es;

2. Transfira os program as por FTP para o diret ório


j á cr iado. Ser á m ais fácil se você t r ansfer ir o
dir et ór io int eiro do MAGNUS de um a só vez
par a o Window s;

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 281
3. Você pode apagar t odos os ar quiv os .R, eles
não ser ão necessár ios par a desenv olv im ent o
por que apenas ocupar ão m ais espaço, e v ocê j á
t em os program as .P que funcionam ;

4. Edit e um arquivo .I NI para o MAGNUS


( MAGNUS.I NI ) igual ao descr it o no capít ulo
Configur ação do Pr odut o, List agem do ar quivo
Pr ogr ess.ini, ao qual ser á ut ilizado par a iniciar o
MAGNUS. Lem bre- se de configurar
cor r et am ent e os valor es par a o PROPATH, DLC
PROCFG, PROMSG, et c;

5. Edit e o ar quiv o host localizado no dir et ór io do


Window s, caso não ex ist a o cr ie e infor m e o
núm ero do I P do Servidor dos Bancos de Dados
e o Nom e/ Alias do Servidor, exem plo:

1 7 2 .3 5 .1 .1 0 servidor_ m agnus

6. Edit e o ar quiv o services localizado no dir et ór io


do Window s, caso não ex ist a o crie e inform e os
Nom es/ Aliases dos ser v iços e os Núm er os dos
Ser v iços iniciados, igual edit ado no ar quiv o
/ et c/ services do Servidor UNI X.

m ga dm 8 0 3 0 / t cp

m gcom 8 0 3 1 / t cp

m gind 8 0 3 2 / t cp

J Em Windows NT a localização é Diretório do


NT\ SYSTEM32\ DRI VERS\ ETC\ hosts e services. Saiba
também que o padrão utilizado pelo Progress é o
arquivo HOSTS e não LMHOSTS!

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


282 Dominando o Progress
7. No arquivo de parâm et ros ( .pf) de conexão do
MAGNUS o faça da seguint e m aneira:

Arquivo M AGN US.PF

- db i0 0 adm

- ld m gadm

- H servidor_ m agnus # igual ao nom e definido no arquivo host s

- S m ga dm # igual ao nom e definido no ar quiv o ser v ices

- N t cp # prot ocolo TCP/ I P

... ( Out ros Bancos de Dados)

- p m enu7 .p

Refaça est es pr ocedim ent os par a os bancos


Com er cial e I ndust r ial.

8. Faça um at alho com a seguint e sint ax e:

ALV O

PROWI N32.EXE - basekey " ini" - ininam e


MAGNUS.I NI - pf MAGNUS.PF

I N I CI AR EM

Diret ório do MAGNUS

þ O parâmetro - basekey "ini" é necessário para forçar


o uso do arquivo I NI , ao invés de valores padrões na
Registry do Windows. Caso você esteja utilzando
Progress 7 não o especifique.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 283

I Lembre-se que no MAGNUS Versão I para Windows o


programa inicial do menu é chamado M EN U7 .P , e caso
você não tenha os arquivo das imagens de bitmap,
localizadas no diretório I GP, você precisa obtê-las pela
BBS Datasul e colocas neste dirétorio!

J Saiba que mesmo em Windows ao indicar um arquivo


deve-se usar sempre barra estilo UNI X (run
e sp/ e s0 0 0 1 .p ) e os diretórios do PROPATH. Sempre!

Pront o! Você j á pode desenvolver em W indow s e


depois de edit adas e t est adas as procedures apenas
as t ransfira por FTP para o UN I X e com pile- a s.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


284 Dominando o Progress

Cria r Ba ncos pa ra
Te st e s/ D e se nvolvim e nt o

Com o é pr ax e par a a ár ea t écnica a ut ilização de


bancos t est e e/ ou desenv olv im ent o e sessão t est e e/ ou
de desenv olv im ent o. Ser á apr esent ada algum as
sugest ões e m aneir as de m elhor ar ou facilit ar o
desenv olv im ent o e/ ou m anut enção do sist em a.

Cr ia n do os ba n cos

Obv iam ent e é ideal cr iá- los a par t ir dos bancos de


at uais em uso, par a m aior fidelidade à pr odução, ent ão
sigas os passos a seguir :

1. Tir e do ar t odas as sessões que est ão ut ilizando


os bancos de t est es at uais, com o ex it am ;

2. Tir e os bancos de t est es do ar ;

3. Copie os bancos pr odução par a o bancos t est e.


Lem bre- se sem pr e de t ir ar do ar os bancos de
pr odução ant es de fazer as cópias par a a ár ea de
t est es e se possív el t r unque o Befor e- I m age do
banco. Use o PROCOPY pr efer encialm ent e, ou
ent ão por m eio do pr ópr io sist em a oper acional
( COPY, CP, EXPLORER, et c) ;

M Jamais faça cópia de bancos de dados ativos, isso pode


danificá-los!

J Caso você precise fazer uma cópia para testes, mas não
possa finalizar o banco em produção faça um BACKUP
ON- LI NE e o restaure na área de testes! Sintaxe:

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 285
probkup online Banco Destino, exemplo: probkup online
i00adm d: \ desenv\ i00adm, em UNI X AI X probkup
online i00adm / dev/ rmt0. Restaurando: prorest i00adm
d: \ desenv\ i00adm, UNI X AI X prorest i00adm / dev/ rmt0.

M Em UNI X o backup em fita destroi todos os dados já


existentes na mesma! (PROBKUP, CPI O, TAR)

4. At iv e os bancos de pr odução e bancos de t est e;

5. I nicie a sessão do MAGNUS TESTE e acr escent e


em t odas as descr ições dos sist em as a palav r a
TESTE, por exem plo: Cont a a Pagar - TESTE,
Caixa e Bancos TESTE, Cont abilidade TESTE. I sso
infor m a ao usuár io que aquele sist em a é par a
t est es, av it ando qualquer pr oblem a...

6. Caso você t enha o Pr ogr ess a par t ir da ver são 8


iden t ifiqu e a sessão com o parâm et ro - param no
ar quivo .pf de início. Exem plo: - param TESTE ou
- par am DESENV. Você pode obt er o st at us da
sessão por m eio de código, ex em plo: DI SPLAY
SESSI ON: PARAM, isso ident ificar á a sessão.

BACKUP

Ex it em duas opções par a back up, pelo ut ilit ár io do


Pr ogr ess PROBACKUP ou por aplicat iv os pr ópr ios do
Sist em a Oper acional ou ainda t er ceir os.

O backup do Pr ogr ess, PROBACKUP, t em diver sas


funções específicas par a est a t ar efa, nele é possív el
especificar o núm ero de redundância de gravação do
banco, afim de evit ar algum pr oblem a físico em um
pedaço da fit a; ele pode ser r est aur ado em qualquer local
específico, com o t am bém apenas incr em ent al.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


286 Dominando o Progress
Em UNI X não é aconselháv el ut ilizar o PROBACKUP,
caso você precise arm azenar m ais que 1( um ) banco por
f it a. I sso por que ele apagar á t odo o cont eúdo da m esm a
para o backup de um banco.

Ant es de iniciar o backup você deve, sem pre, baixar


o banco, se possív el t am bém t r uncar o Befor e- I m age. O
script abaixo dem onst ra com o proceder em UNI X e/ ou
Window s NT:

þ Os scripts mostrados assumem que os arquivos físicos


dos bancos de dados têm a nomenclatura de I 00[ sigla] ,
como Administrativo I 00adm, Comercial I 00com, etc.

UN I X AI X
#Script para Backup dos Bancos de Dados MAGNUS

wall "Senhores usuários, o backup iniciara em 1 minuto! Por


favor finalizem seus trabalhos"
sleep 60

cd /bases/magnus
DLC=/sistemas/dlc ; export DLC
PATH=/usr/bin:$DLC:$DLC/bin ; export PATH

#Baixa os bancos de dados


proshut i00adm -by
proshut i00com -by
proshut i00ind -by

#Trunca o Before-Image
proutil i00adm -C truncate bi
proutil i00com -C truncate bi
proutil i00ind -C truncate bi

#Use CPIO ou TAR para backup


find ./ -name i00* | cpio -ovcB > /dev/rmt0 > backup.log
tar -cvf i00* /dev/rmt0 > backup.log

#Marque o banco de dados como "backupado"


rfutil i00adm -C mark backedup

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 287
rfutil i00com -C mark backedup
rfutil i00ind -C mark backedup

#Carregue os bancos de dados


proserve i00adm ... parâmetros
proserve i00com ... parâmetros
proserve i00ind ... parâmetros
wall "Senhores usuarios! O sistema MAGNUS ja esta no ar
novamente!”

#fim do script

W in dow s N T
REM Script para Backup dos Bancos de Dados MAGNUS

@echo off
net send DOMÍNIO "Senhores usuários o backup esta send
iniciado. Finalize seu trabalho!"

d:
cd \bases\magnus
set DLC=c:\sistemas\dlc
set PATH=%PATH%;%DLC%;%DLC%/bin

REM Baixa os bancos de dados


proshut i00adm -by
proshut i00com -by
proshut i00ind -by

REM Trunca o Before-Image


proutil i00adm -C truncate bi
proutil i00com -C truncate bi
proutil i00ind -C truncate bi

backup i00* [DESTINO] /F:backup.log

REM Marque o banco de dados como "backupado"


rfutil i00adm -C mark backedup
rfutil i00com -C mark backedup
rfutil i00ind -C mark backedup

REM Carregue os bancos de dados


proserve i00adm ... parâmetros
proserve i00com ... parâmetros
proserve i00ind ... parâmetros

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


288 Dominando o Progress
net send DOMÍNIO "Senhores usuarios! O sistema MAGNUS ja
esta no ar!

REM fim do script

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 289

Ut iliza ndo zoom de ca da st r o D a t a sul

Os program as do MAGNUS t êm j anelas zoom para


facilit ar a m anipulação dos dados de cadast r os div er sos.
Os program as CDZxx x x .p são os zoom s dos cadast r os
div er sos de ut ilização genér ica em t odos os pr ogr am as.

Est es pr ogr am as zoom r equer em algum as var iáveis


pré- declaradas ( NEW SHARED) para o post erior ret orno
do dado escolhido, com o abaix o:

/ * v ar iáv eis solicit adas pelo pr ogr am a de zoom de


Em presas ( cdz0104.p) * /
Exemplo

/* ex0035.p */

define new shared variable l-implanta as logical init yes.


define new shared variable i-cod030 like empresa.ep-codigo.

define variable v-ep-codigo like empresa.ep-codigo.

form v-ep-codigo at row 1 column 8 colon-aligned


validate(can-find(empresa where empresa.ep-codigo =
input frame f-empresa v-ep-codigo),
"Empresa nao cadastrada")
empresa.nome at row 1 column 14 left-aligned no-
labels view-as text
with frame f-empresa row 10 centered overlay side-
labels title "Empresa".

update v-ep-codigo with frame f-empresa editing:


readkey.
if frame-field = "v-ep-codigo" and
lookup(keyfunction(lastkey), "tab,return,get") > 0 then
do:
if keyfunction(lastkey) = "get" then do:
run cdp/cdz0104.p.
assign v-ep-codigo = i-cod030.
display i-cod030 @ v-ep-codigo

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


290 Dominando o Progress
with frame f-empresa.
end.
else apply lastkey.

find empresa where


empresa.ep-codigo = input frame f-empresa v-ep-
codigo no-lock no-error.

if available empresa then


display empresa.nome with frame f-empresa.
else
display "" @ empresa.nome with frame f-empresa.
end.
else apply lastkey.
end.

Par a se saber quais são as v ar iáv eis solicit adas pelo


zoom sim plesm ent e execut e o program a ( run) e observe
os nom es das var iáveis não cr iadas no r et or no do er r o.

Shared variable [ nom e da variável] has not been


creat ed. ( 3 9 2 )

var iáveis r equer idas: l- im plant a e i- cod030 para ret orno.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 291

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


292 Dominando o Progress

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 293

Capítulo n

Softwares, Utilitários & Sites


diversos

N e t Te r m

O Net Ter m é o aplicat iv o de t elnet apr esent ado


nest e liv r o é cer t am ent e um dos m elhor es t elnet s ex ist es,
e m elhor ainda, ele é shar ew ar e.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


294 Dominando o Progress
Mude o logot ipo padrão do Net Term para a m arca
da sua em pr esa ou pessoal, par a t al apenas subst it ua o
ar quiv o logo.bm p localizado no dir et ór io de inst alação do
aplicat iv o par a um bit m ap do seu logot ipo.

Con figu r e a s t e cla s de a cor do com o


M AGN US

Configuração de t eclas: ^ [ Escape, [ Cont rol

F1 ^ [ OP GO

F2 ^ [ OQ H ELP

F3 ^ [ OR I N SERT- M ODE

F4 ^ [ OS EXI T

F5 ^G GET

F6 ^P PUT

F7 ^ [ [ 18~ RECALL

F8 ^ [ [ 19~ CLEAR

F9 ^N NEW - LI N E

F1 0 ^D DELETE- LI N E

F1 1 ^ [B BREAK- LI N E

F1 2 ^A APPEN D- LI N E

Obt enha um a cópia em :

I nt erSoft ware@com puserve.com

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 295
Ke a !X

O Kea! X t am bém foi ut ilizado na edição dest e liv r o,


as t elas do Pr ogr ess em am bient e X- Window s ( OSF- Mot if)
for am capt ur adas at r av és dele.

O Kea! X é um t ipo de t elnet gr áfico, ele sim ula um


console X- Window s ex at am ent e com o se v ocê est iv e em
fr ent e a est ação ser v idor a em um a j anela Window s
95/ 98/ NT.

Obt enha um a cópia de av aliação em :

ht t p: / / w w w .at t achm at e.com /

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


296 Dominando o Progress

PCa se

O PCase é um a fer r am ent a CASE desenvolvida em


Progress v 8 ut ilizando, t am bém , OCX e DLL’s.

Ela possui engenhar ia inver sa e r ever sa par a bancos


de dados Pr ogr ess.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 297

ht t p: / / t ools4pr ogr ess.com /

Vipe r

Edit or de r elat ór ios gr áficos par a Pr ogr ess

Obt enha um cópia em ht t p: / / t ools4pr ogr ess.com

ERW in

Out r a fer r am ent e CASE bast ant e popular que t em


t am bém disposição par a Pr ogr ess, at r av és de ar quiv os de
definições ( .df) .

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


298 Dominando o Progress

Visua l PCL

Ferram ent a para pré- v isualização de ar quiv os t ipo PCL,


m uit o út il par a quem usa im pr essão nest e for m at o.

Obt enha um a cópia em ht t p: / / w w w .visual.co.uk

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 299

Sit es sobre Progress

P R O GR ES S S O FT W A R E U S A

ht t p: / / www.progress.com

Est e é o sit e oficial da Pr ogr ess Soft w ar e pr opr iet ár ia


cr iador a da linguagem . Nest e sit e v ocê encont r ar á as
últ im as infor m ações sobr e Pr ogr ess e out r os aplicat iv os.

P R O GR ES S S O FT W A R E BR A S I L

Sit e oficial da Pr ogr ess no Br asil t ot alm ent e em


por t uguês. Est e é um ót im o r efer encial par a infor m ações
sobr e cur sos cer t ificados pela Pr ogr ess, consult or ia,
com pr a e at ualização de soft w ar es Pr ogr ess e qualquer
out r o ser viço sobr e Pr ogr ess no Br asil.

ht t p: / / www.progress- soft ware.com .br

D ATASUL

O sit e do fabr ibr ant e dos Sist em a MAGNUS e MAGNUS


EMS, com supor t e ao usuár io, dados sobr e os sist em as,
infor m ações de m ar k et ing e div er sos out r os t em as sobr e
Gest ão Em pr esar ial.

ht t p: / / www.dat asul.com .br

P R O GR ES S E- M A I L GR O U P

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


300 Dominando o Progress
Sem dúvida o m elhor endereço na I nt ernet para obt enção
de aj uda e infor m ações sobr e qualquer t em a Pr ogr ess.

O Pr ogr ess User Mail é div idido em v ár ias par t es:


linguagem , banco de dados, sm ar t - obj ect s, WebSpeed,
AppServers ent r e out r os.

Cadast r e- se no PEG e r eceba diar iam ent e div er sos e- m ail


sobr e per gunt as e r espost as Pr ogr ess.

ht t p: / / www.peg.com

I N S CR EV A - S E N O U S ER GR O U P

Faça sua inscr ição no Pr ogr ess User Mail nest e link :

ht t p: / / w w w .peg.com / list s/ subscr ibe.ht m l

P R O GR ES S H O M E P A GE
S O BR E ES T E LI V R O

O m eu sit e na I nt er net , lá v ocê encont r ar á v ár ios t em as e


um Forum ON- LI NE de per gunt as e r espost as sobr e
Pr ogr ess.

ht t p: / / w w w .geocit ies.com / m arcio- brener/

m ail: brener@zipm ail.com .br

U S A N D O P R O GR ES S N O LI N U X

I nform ações sobre Progress no Linux

ht t p: / / m arat hon- m an.com / pl/ Progress- Linux- FAQ.ht m l

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


Criando & Definindo os Dados 301
ht t p: / / w w w .peg.com / t echpapers/ redhat .t xt

P ER FO R M A N CE

Ar t igos, m onogr afias e est udos sobr e per for m ance do


Progress em vários sist em as oper acionais, aj ust e de
parâm et ros e t écnicas de program ação.

ht t p: / / www.west net .com / ~ gsm it h/ pperform .ht m

ht t p: / / www.peg.com / t echpapers/ m onographs/

S LI D ES E A P R ES EN T A ÇÕ ES

Div er sos slides, gr áficos, anúncios e pr opagandas sobr e


Pr ogr ess.

ht t p: / / www.peg.com / t echpapers/ 1999Conf/

USAN D O API 'S D O W I N D OW S

Página dedicada à ut ilização de API s Window s no


Pr ogr ess.

ht t p: / / hom e.wxs.nl/ ~ j urj en.dij kst ra/ prodevring/ index.ht


ml

D ES EN V O LV ED O R ES EM P R O GR ES S

Sit e de div er sos desenv olv edor es pr ogr ess em t odo o


m undo.

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener


302 Dominando o Progress
ht t p: / / hom e.w xs.nl/ ~ j urj en.dij kst ra/ prodevring/ about .ht
ml

BA S E D E CO N H ECI M EN T O S P R O GR ES S
( K N O W LEGED BA S E P R O GR ES S )

Sit e da Pr ogr ess am er icana par a pesquisa de er r os e


soluções Pr ogr ess.

ht t p: / / t echw eb.progress.com / services/ support / cgi-


bin/ t echw eb- k base.cgi/ k base.w

E scrito por Márcio Brener - http://www.geocities.com/marcio-brener

Você também pode gostar