esperar executar procedure

Discussão em 'Progress 4GL' iniciado por akaytatsu, Julho 27, 2012.

  1. akaytatsu

    akaytatsu Membro Participativo

    Tenho a seguinte procedure:

    run winexec("ad.exe -d mysql -y 1q2w3e -s 192.168.0.33 -k 200 -f -e -h").

    Ela funciona sem nem um problema. So que o winexec ou o OS-COMMAND me gera um problema. Essa execução conecta via socket a um servidor AD e grava no c:\temp um txt com uma relação de varios usuarios do AD. Ate ai tudo funciona, so que o programa não espera a procedure ser executa completamente. Logo da um erro pois o ad.exe ainda não gravou no c:\temp\users.txt, sou forçado a dar um PAUSE 10 no programa.

    o codigo fica assim:

    run winexec("ad.exe -d mysql -y 1q2w3e -s 192.168.0.33 -k 200 -f -e -h").
    PAUSE 10.

    So que esse pause complica, pois maquinas externas demoram ate 15 segundos, e maquina internas são aprox 3 segundos.

    Como obrigo o progress esperar a execução do winexec?
  2. baltazar

    baltazar Membro Participativo

    Faça um "do-while" até esperar que o ficheiro seja gerado.

    Algo assim

    Código:
    do while search("C:\temp\users.txt") <> ? 
  3. jaozi_nho

    jaozi_nho Membro Participativo

    Usar "Espera Ocupada" apesar de funcionar não é uma boa pratica, pois o processador fica chegando esse while milhões de vezes, quando poderia estar processando outra coisa.

    No progress tem uma palavra reservado WAIT-FOR, nunca precisei mas aqui tem um exemplo que fica no template de windows dialog.

    Código:
    WAIT-FOR GO OF FRAME {&FRAME-NAME}.
    ou seja o programa fica naquela parte do código esperando, porem continua com a janela ativa e executando outras procedures, para chamar esse suposto dialog eu fiz assim:

    Código:
    RUN telas/dialog-teste.w PERSISTENT SET hdg (INPUT THIS-PROCEDURE , INPUT 'teste'). /*Desconsiderar os inputs*/
    MESSAGE c-p VIEW-AS ALERT-BOX INFO BUTTONS OK TITLE 'Teste'.
    DELETE PROCEDURE hdg.
    
    neste caso a message só é executada quando o dialog é fechado, espero que ajude, abraço!

Compartilhe esta Página