1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
|
#!/usr/bin/perl -w
#============================================================================
#@(#) Procédure : skel4.pl
#@(#) Description : ...
#@(#)
#@(#) Pré-requis : module Perl Shell::Source pour sourcer l'envbatch.
#@(#) initialiser variable PERL5LIB dans ~/.profile pour déclarer
#@(#) le répertoire contenant les modules maison
#@(#)
#@(#) Auteur : xxx
#@(#) Arguments : 1 - reprise = balise de début ou ""
#@(#) 2 - fin = balise de fin ou ""
#@(#)
#@(#) Historique : jj/mm/aaaa début écriture programme
#@(#) ...
#============================================================================
use strict;
use Cwd;
use Shell::Source;
use feature qw(switch say);
use xxx_utils_v4;
use oxa_utils_v4;
# initialisation constantes, variables
use constant h_const => {
dft_reprise => "debut",
dft_fin => "fin",
dft_nb_args => 2, # nb arguments par défaut
nb_args => 0, # nb arguments supplémentaires attendus
domaine => "PROD",
application => "TECH",
na => "N/A",
};
our ( $script_absolute_name, $script_relative_name, $script_dir, $script_name, $script_extension, $script_user ) = utils_script($0);
my $pid = $$;
my ( $reprise, $fin );
# Source envbatch et envadmin et initialisation variables (envexe sourcé dans .profile)
my $envbatch = Shell::Source->new(shell => "ksh", file => "$ENV{'PROD_TECH_ENV'}/envbatch");
$envbatch->inherit;
my $project = $ENV{'PROJECT'};
my $prod_tech_env = $ENV{'PROD_TECH_ENV'};
our $dir_log_oxalys = $ENV{'REP_LOG_OXALYS'};
# Initialisation et création fichier log, puis redirection STDOUT et STDERR
our ( $basename_log, $log_file ) = utils_log( $script_name, $pid );
open( my $log, ">", $log_file ) || die "FATAL: cannot open \"$log_file\" for writing: $!\n";
my $r_log = \*$log; # référence vers le fichier de log
select $log;*STDERR = *$r_log;
# Initialisation oxa
oxa_main(); # pas vraiment utile, juste pour faire comme si ;-)
# Fonctions internes
sub usage {
oxa_msg_err( $r_log, 0, "KO - Usage : $script_relative_name <balise de début ou \"\"> <balise de fin ou \"\">",1 );
}
sub controle_balises {
my ( $balise_debut, $balise_fin, $r_balises_ok ) = @_;
my $flag_err = 0;
foreach my $tag ( $balise_debut, $balise_fin ) {
if ( ! utils_ctrl_balise( $tag, $r_balises_ok ) ) {
oxa_msg_warn( $r_log, 1, "KO - Balise $tag incorrecte" );
$flag_err++;
}
}
oxa_msg_err( $r_log, 1, "KO - Balises autorisées : @$r_balises_ok", 1 ) if $flag_err ;
return;
}
sub next_step {
my ( $step ) = @_;
if( $reprise eq $fin ) { $reprise = 'fin' } else { $reprise = $step } ;
return $reprise;
}
sub process {
my $dummy = 0;
return;
}
# main ()
# - Initialisation et contrôle du nombre d'arguments attendus
# - Initialisation entêtes OXA
# - Initialisation variables contenant les arguments
oxa_debut ( $r_log, $script_absolute_name );
oxa_msg_info ( $r_log, 0, "Script de xxxxxx à compléter xxxxxxxxxxxxx" );
oxa_msg_info ( $r_log, 0, "Fichier de log ... $log_file" );
oxa_app ( $r_log, h_const->{domaine}, h_const->{application} );
usage if utils_nb_args() != h_const->{dft_nb_args} + h_const->{nb_args} ;
my $r_balises_ok = ["debut","fin","traitement"]; # réf. anonyme vers tableau des balises autorisées
# Tests préliminaires
# Contrôle balises reçues en arguments
if ( $ARGV[0] eq "" ) { $reprise = h_const->{dft_reprise} } else { $reprise = $ARGV[0] };
if ( $ARGV[1] eq "" ) { $fin = h_const->{dft_fin} } else { $fin = $ARGV[1] };
controle_balises( $reprise, $fin, $r_balises_ok );
# Contrôles spécifiques à placer ci-après
# Boucle de traitement principale
until ( $reprise eq "fin" ) {
oxa_msg_info( $r_log, 1,"LABEL : $reprise" );
given ($reprise) {
when ('debut') {
oxa_msg_info( $r_log, 1, "===> Début de traitement" );
next_step("traitement");
}
when ('traitement') {
oxa_msg_info( $r_log, 1, "===> Traitement" );
process();
next_step("fin_traitement");
}
when ('fin_traitement') {
oxa_msg_info( $r_log, 1, "===> Fin de traitement" );
next_step("fin");
}
default {
say "KO - Etiquette $reprise invalide";
oxa_msg_err( $r_log, 1, "KO - Etiquette $reprise invalide", 99 );
next_step("fin");
}
}
}
# Footer OXA et sortie normale
oxa_msg_info( $r_log, 1, "--------------------------------------------" );
oxa_msg_info( $r_log, 1, " FIN $script_name");
oxa_fin( $r_log, 0 ); |
Partager