#
############################# Captura dados da tela de autorização
#
use warnings;
use strict;
use CGI qw( :standard );
use Fcntl qw( :flock :DEFAULT );
#
############################ Permite executar um script por vez
#
denovo:
if ( -e "c:\\payback\\cgiaindx.nul" ) { goto denovo; }
sysopen( TASK99, "c:\\payback\\cgiaindx.nul", O_WRONLY|O_EXCL|O_CREAT ) or warn ( goto denovo );
flock( TASK99, LOCK_EX ) or warn ( goto denovo );
#
######################### Redireciona o usuário para montagem de tela ( entrada nO sistema )
#
if ( !param ) { goto monta_tela; }
#
########################### Variáveis de entrada de dados do formulario index.htm
#
my $usuario = param( "usuario" );
my $acesso = param( "acesso" );
#
########################### Formata entrada de dados ( os campos estão separados por # )
#
my $registro = sprintf "\%s#\%s#", $usuario, $acesso;
#
########################## Grava registro em arquivo para passagem ao programa cobol
#
open( INDEX, "+>c:\\payback\\cgiaindx.dad" ) or warn( goto erro_script );
flock( INDEX, LOCK_EX ) or warn( goto erro_script );
print( INDEX "$registro" ) or warn( goto erro_script );
flock( INDEX, LOCK_UN ) or warn( goto erro_script );
close( INDEX ) or warn( goto erro_script );
#
######################### Executa programa cobol
#
my $command = 'c:\\payback\\programa\\cgipindx.exe';
system( $command ) == 0 or warn( goto erro_cobol );
#
######################### Avalia status do processamento cobol
#
if ( -e "c:\\payback\\idxrauto.js" ) { goto processa_ok };
if ( -e "c:\\payback\\idxrerro.js" ) { goto processa_erro };
#
######################## Programa cobol não executou
#
# envia cópia do arquivo index.htm ( com mensagem de erro )
#
erro_cobol:
#
unlink( "c:\\payback\\cgiaindx.dad" );
print header();
open( HTML, "c:\\payback\\index.txt" );
print while ( );
close( HTML );
print "\n";
print end_html();
flock( TASK99, LOCK_UN );
close( TASK99 );
unlink( "c:\\payback\\cgiaindx.nul" );
exit;
#
######################## Usuário não autorizado a operar
#
# envia cópia do arquivo index.htm ( com conteudo do arquivo de erro )
#
processa_erro:
#
print header();
open( HTML, "c:\\payback\\index.txt" ) or warn( goto erro_script );
print while ( );
close( HTML );
open( ERRO, "c:\\payback\\idxrerro.js" ) or warn( goto erro_script );
print while ( );
close( ERRO );
print end_html();
unlink( "c:\\payback\\idxrerro.js" );
unlink( "c:\\payback\\cgiaindx.dad" );
flock( TASK99, LOCK_UN );
close( TASK99 );
unlink( "c:\\payback\\cgiaindx.nul" ) or warn( goto erro_script );
exit;
#
########################## Usuário autorizado a operar
#
# envia cópia do arquivo sistemas.htm ( com conteudo do arquivo de autorização )
#
processa_ok:
#
print header();
open( AUTORIZA, "c:\\payback\\idxrauto.js" ) or warn( goto erro_script );
print while ( );
close( AUTORIZA );
open( SISTEMA, "c:\\payback\\sistemas.htm" ) or warn( goto erro_script );
print while ( );
close ( SISTEMA );
print end_html();
unlink( "c:\\payback\\idxrauto.js" );
unlink( "c:\\payback\\cgiaindx.dad" );
flock( TASK99, LOCK_UN );
close( TASK99 );
unlink( "c:\\payback\\cgiaindx.nul" ) or warn( goto erro_script );
exit;
#
########################### Erro no script
#
erro_script:
#
flock( INDEX, LOCK_UN );
close( INDEX );
close( HTML );
close( ERRO );
close( AUTORIZA );
unlink( "c:\\payback\\idxrerro.js" );
unlink( "c:\\payback\\idxrauto.js" );
unlink( "c:\\payback\\cgiaindx.dad" );
#
########################## Envia mensagem de erro
#
print header();
open( HTML, "c:\\payback\\index.txt" );
print while ( );
close( HTML );
print "\n";
print end_html();
flock( TASK99, LOCK_UN );
close( TASK99 );
unlink( "c:\\payback\\cgiaindx.nul" );
exit;
#
######################## Envia formulário para entrada no sistema
#
monta_tela:
#
print redirect ( "http:/payback/index.htm" );
flock( TASK99, LOCK_UN );
close( TASK99 );
unlink( "c:\\payback\\cgiaindx.nul" );
exit;
#
########################### termino do script ####################################
#