26 avril 2022

Modèle d'entête de script sous Linux avec Vim

Voici un moyen simple de proposer un en-tête personnalisé pour les scripts shell nouvellement créés dans l'éditeur Vi (Vim sous Linux). 

1) Rédiger le modèle, le déposer dans le $HOME : par exemple

vi $HOME/.vim/sh_header.temp
#!/usr/bin/env ksh
#-------------------------------------------------------------------------------
#@(#) Write a title for this script shell here
#-------------------------------------------------------------------------------
#@(#) Syntax  :  ... {SIMUL*|EXEC} PARAM2 [PARAM3]
#@(#) {A*|B} choice, * defaut, X mandatory, [Y] optional
#@(#)    - PARAM1       : Execution mode (SIMUL defaut)
#@(#)    - PARAM2       : Parametre 2 (mandatory)
#@(#) - PARAM3 : Parametre 3 (optional)
#@(#) #@(#) Example : ksh ... #------------------------------------------------------------------------------- # Updates : # Date Author Feature details, issue fixed # 01/01/20.. John DOE Initialization #------------------------------------------------------------------------------- # Trace mode : export Trace=${Trace:-false} # export "Trace=true" to activate Unix traces # -------------------- CONSTANTS --------------------
#  --------------------       FUNCTIONS        --------------------

function check_parameters {
   ${Trace:-false} && set -x

   echo "<I> Checking parameters"

   case "${PARAM1}" in
   (SIMUL)  : ;;
   (EXEC)   : ;;
   (*)      echo "<W> Parameter 1 invalid (SIMUL, EXEC)"; return 1 ;;
   esac

   # ...

   return 0
}

function just_do_it {
   ${Trace:-false} && set -x

   echo "<I> just do it"

   # ...

   return 0
}

#  --------------------          MAIN          --------------------

function main {
   ${Trace:-false} && set -x
   echo "<I> PARAM1=${PARAM1}"
   echo "<I> PARAM2=${PARAM2}"
echo "<I> PARAM3=${PARAM3}"
check_parameters || return 1 just_do_it || return 1 return 0 } # -------------------- PARAMETRES -------------------- PARAM1=${1:-SIMUL} PARAM2=${2:?Parameter 2 not set !} PARAM3=${3:-DEFAULT} # -------------------- EXECUTION -------------------- LOGFILE="${LOG}/$(basename $0 .sh).$(date +'%Y-%m-%d-%H.%M.%S').log" echo "<I> Logfile is : ${LOGFILE}" RETFILE=${TMP}/returnCode.$$ { rm -f "${RETFILE}"; main; echo $? > "${RETFILE}"; } | tee "${LOGFILE}" RETCODE=$(cat "${RETFILE}") echo "<I> Return code : ${RETCODE:-255}" rm -f ${TMP}/*.$$ ${TMP}/$$.* ${TMP}/*.$$.* exit ${RETCODE:-255}

2) Ajouter dans le fichier de configuration de Vim une ligne pour votre "autocommande" :

vi $HOME/.vimrc
autocmd bufnewfile *.sh,*.ksh 0r $HOME/.vim/sh_header.temp

C'est à dire :

  • En cas de nouveau fichier
  • Dont le nom est *.sh ou *.ksh
  • Lire et ajouter en ligne 0 le contenu de sh_header.temp

3) L'opération est à répéter sur chacun des environnements de développement


Dès lors, si vous ouvrez sous Linux avec Vi / Vim un nouveau fichier suffixé par ".sh" ou ".ksh" ce fichier sera initialisé avec votre l'entête.


Merci à www.tecmint.com

Plus d'informations sur vimdoc.sourceforge.net

25 avril 2022

Conditionner les ordres DDL Oracle créés par la RBF

Dans HR Access la chaine batch RBF produit des ordres DDL de création / mise à jour des tables du SGBD (fichier PSBBGJ00 PSBBGJ01 PSBBGJ02). Ceux-ci procèdent souvent d'un DROP suivi d'un CREATE.

Dans le cas ou l'objet n'existe pas encore, l'ordre de DROP va provoquer un erreur. Si on retire le DROP mais que l'objet existe, c'est le CREATE qui sera a l'origine d'une erreur. Quand on souhaite contrôler le bon déroulement des livraisons cela peut être gênant.

Oracle ne fournit pas de syntaxe spécifique, mais il est possible de coder en PL/SQL un conditionnement de l'ordre ou d'inhiber l'erreur. Un autre intérêt est de pouvoir relancer le script autant de fois que nécessaire quand on a rencontré un incident sur un des objets.