Consegui criar Scripts Rexx funcionais que rodam como plugin, ou seja, através do menu <Scripts> / <Script Rexx Externo>.
Precisaria que eles fossem capazes de rodar como "standalone", ou seja, sem executar o pw3270, diretamente do interpretador OORexx, mas não consigo e não encontrei material para consulta.
E como faço para adicionar itens ao menu <Scripts> / <Scripts Rexx> e onde estes scripts devem estar salvos?
A plataforma é Windows.
Obrigado!
Autor: Euler Alves
1111 comentários
/*call rxfuncadd 'rx3270LoadFuncs', 'rx3270', 'rx3270LoadFuncs'*/
/*retc = rx3270LoadFuncs()*/
say 'Return code from loading rx3270 functions was' retc /* Se estiver conectado desconecta */
if rx3270QueryCState() <> "NOT_CONNECTED"
then ok = rx3270Disconnect() /* Reconecta ao novo host, espera pela negociacao */
ok = rx3270Connect("172.17.16.3:23",300)
pw3270: Windows 4.2.4 1620 PATH C:\Arquivos de Programas\pw3270>echo %path% C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;;C:\Arquivos de Programas\web\NTP\bin;C:\Arquivos de Programas\ooRexx;C:\Arquivos de Programas\pw3270 ERROS RUNTIME REXX 5 *-* retc = rx3270LoadFuncs()
Error 43 running C:\Arquivos de Programas\pw3270\TESTE.rex line 5: Routine not found
Error 43.1: Could not find routine "RX3270LOADFUNCS" 5 *-* retc = rx3270LoadFuncs()
Error 43 running C:\Arquivos de Programas\ooRexx\TESTE.rex line 5: Routine not found
Error 43.1: Could not find routine "RX3270LOADFUNCS" SCRIPT TENTADO /* TESTE.rex */ call rxfuncadd 'rx3270LoadFuncs', 'rx3270', 'rx3270LoadFuncs' retc = rx3270LoadFuncs() say 'Return code from loading rx3270 functions was' retc if rx3270QueryCState() <> "NOT_CONNECTED" then ok = rx3270Disconnect() ok = rx3270Connect("192.168.1.2:23",1) if rx3270QueryCState() = "NOT_CONNECTED" then do say "Não foi possível conectar ao host, cancelando" return 0 end
say "Query: "||rxfuncquery('rx3270loadfuncs')
say "rx3270LoadFuncs: "||rxfuncquery('rx3270LoadFuncs')
say "rx3270Connect: "||rxfuncquery('rx3270Connect')
say "abobrinha: "||rxfuncadd('qualquercoisa','abobrinha','coisanenhuma') com ooRexx: 4.1.0 build 2010-12-05 e pw3270 4.2#1429 rxfuncadd: 1
rx3270loadfuncs: 0
rx3270Connect: 1
abobrinha: 1 com Regina: 3.6 build 2011-12-31 e pw3270 4.2#1429 rxfuncadd: 50
rx3270loadfuncs: 1
rx3270Connect: 1
abobrinha: 40 O que concluo que ooRexx tem um bug fatal no rxfuncadd. Mas ainda assim mesmo o Regina não encontra rxloadfuncs
say "rxfuncadd LoadFuncs: "||rxfuncadd('rx3270Loadfuncs','rx3270','rx3270loadfuncs')
say "loadfuncs: "||rxfuncquery('rx3270loadfuncs')
say "rx3270InputString: "||rxfuncquery('rx3270InputString')
say "rxfuncadd rx3270InputString: "||rxfuncadd('rx3270InputString','rx3270','rx3270InputString')
say "rx3270InputString: "||rxfuncquery('rx3270InputString')
say "rxfuncadd rx3270QueryCState: "||rxfuncadd('rx3270QueryCState','rx3270','rx3270QueryCState')
say "rx3270QueryCState: "||rxfuncquery('rx3270QueryCState')
say "Estado: "||rx3270QueryCState() pw 4.0.2 com Regina abobrinha: 40
rxfuncadd LoadFuncs: 50
loadfuncs: 1
rx3270InputString: 1
rxfuncadd rx3270InputString: 0
rx3270InputString: 0
rxfuncadd rx3270QueryCState: 0
rx3270QueryCState: 0
Estado: NOT_CONNECTED pw 4.0.2 com ooRexx abobrinha: 1
rxfuncadd LoadFuncs: 1
loadfuncs: 0
rx3270InputString: 0
rxfuncadd rx3270InputString: 0
rx3270InputString: 0
rxfuncadd rx3270QueryCState: 0
rx3270QueryCState: 0
Estado: NOT_CONNECTED pw 4.2.0 ou 4.2.4 com Regina abobrinha: 40
rxfuncadd LoadFuncs: 50
loadfuncs: 1
rx3270InputString: 1
rxfuncadd rx3270InputString: 50
rx3270InputString: 1
rxfuncadd rx3270QueryCState: 50
rx3270QueryCState: 1
'RX3270QUERYCSTATE' is not recognized as an internal or external command,operable program or batch file.
Estado:
Devido a algumas características do ambiente BB o aplicativo era desenvolvido e testado usando o ooRexx 3; só recentemente que passei a usar ooRexx 4 e, após a mudança, notei (em outro projeto) que as extensões rexx não estão 100%; aparentemente devido ao serviço rxapi (que não existia nas versões antigas). Você tem como testar a rxloadfuncs executando um "net stop rxapi" e "net start rxapi" para ver se o comportamento melhora?