13 liens privés
/ --- Rexx --------------------------------------------------------- /
/ MesVar V2 Guillaume LACAN /
/ /
/ Sauvegarde et récupération de variables d'environnement perso /
/ /
/ Syntaxe : - mesvar2 [-l] /
/ lecture des paramètres passés en ligne /
/ - mesvar2 -g <param> [defaut] /
/ retourne la valeur stockée pour <param>/
/ retourne la valeur [defaut] si <param> /
/ n'est pas stocké /
/ - mesvar2 -p <param> <valeur> /
/ stocke la <valeur> pour <param> /
/ /
/ Paramètres : - variable à écrire ou lire /
/ - valeur de la variable à écrire /
/ - rebelotte le cas échéant /
/ /
/ Variables spéciales : - -> derniere chaine traitée /
/ - = -> membre actuellement ouvert /
/ - $ -> dernier DSN traité /
/ - > -> sauve le dernier outil appelé /
/ - < -> retire le dernier outil appelé /
/ - <<<< -> vide la liste des outils /
/ /
/ Entrée : - néant /
/ /
/ Sortie : - valeur de la variable lue /
/ ou - code retour d'exécution du module /
/ /
/ ------------------------------------------------------------------ */
parse upper arg option parametre valeur
/say ">>"option"+"parametre"+"valeur/
call initialisation
call traiter_les_parametres
call fin
initialisation:
glChn = "" / Chaîne de caractères /
glMmb = "" / Membre /
glDSN = "" / DSN /
glLstPrm = "" / Liste des paramètres passés en ligne de commande /
glEnv = "" / Environnement TSO /
glSSID = "" / SSID DB2 /
glOwner = "" / Owner DB2 /
glLang = "" / Langage informatique /
glBTP = "" / Batch / TP / mixte /
glBrq = "" / Brique /
glEdit = "" / Edit / View /
glStdOut = "" / Sortie standard /
glLigCrs = "" / Ligne où est positionné le curseur /
glColCrs = "" / Colonne où est positionné le curseur /
glLigFic = "" / Contenu de la ligne pointée par le curseur /
glMotCur = "" / Mot pointé par le curseur /
if option = "-L" then do
address ispexec "vput glMmb"
address ispexec "vput glDSN"
address ispexec "vput glLstPrm"
address ispexec "vput glEnv"
address ispexec "vput glSSID"
address ispexec "vput glOwner"
address ispexec "vput glLang"
address ispexec "vput glBTP"
address ispexec "vput glBrq"
address ispexec "vput glEdit"
end
alphabet = "a b c d e f g h i j k l m n o p q r s t u v w x y z"
alphabet = alphabet" A B C D E F G H I J"
alphabet = alphabet" K L M N O P Q R S T U V W X Y Z"
alphabet = alphabet" 0 1 2 3 4 5 6 7 8 9"
lst_param_spec = "= * $ < > <<<<"
renvoyer = ""
call traiter_le_curseur
return
traiter_les_parametres:
select
/when option = "" then call lire_param_ligne_commande/
when option = "-L" then call lire_param_ligne_commande
when option = "-G" then call get_param
when option = "-P" then call put_param
when wordpos(option,lst_param_spec) /= 0
then do
parametre = option
renvoyer = param_special()
end
otherwise call anomalie_parametre
end
return
fin:
exit renvoyer
return
traiter_le_curseur:
address tso "subcom isredit"
if rc = 0 then return
address ISREDIT "(glLigCrs, glColCrs) = CURSOR"
address ISREDIT "(glLigFic) = LINE .ZCSR"
if glColCrs = 0 then return
if glColCrs = "" then return
say glLigCrs glColCrs
do i = glColCrs to 1 by -1
lettre = substr(glLigFic,i,1)
if wordpos(lettre,alphabet) = 0 then leave
else motd = i
end
do i = glColCrs + 1 to length(linedata)
lettre = substr(glLigFic,i,1)
if wordpos(lettre,alphabet) = 0 then leave
else motf = i
end
lg = motf - motd + 1
glMotCur = substr(glLigFic,motd,lg)
glChn = substr(glLigFic,motd,lg)
return
lire_param_ligne_commande:
param = strip(parametre" "valeur)
if param = "" then do
zedsmsg = "Erreur parametres"
zedlmsg = "Il n'y a pas de parametres en lignes de commande"
address ispexec "setmsg msg(isrz001)"
exit 8
end
glLstPrm = param
address ispexec "vput glLstPrm"
do forever
if param = "" then leave
parse upper value param with parametre param
if glChn = "" then do
if wordpos(parametre,lst_param_spec) /= 0 then do
call param_special
parametre = renvoyer
end
glMmb = parametre
address ispexec "vput glMmb"
glChn = parametre
address ispexec "vput glChn"
iterate
end
if param_DB2() then iterate
if param_lang() then iterate
if param_env() then iterate
if param_brq() then iterate
if param_btp() then iterate
if param_edit() then iterate
if param_special() then iterate
if param_stdout() then iterate
end
return
param_DB2:
if glOwner <> "" then return 0
select
when parametre = "SYSIBM" then do
if glSSID = "" then glSSID = "DO31"
glOwner = parametre
end
when parametre = "TM00" then do / ROL UR /
glSSID = "DT41"
glOwner = parametre
end
when parametre = "TOZ0" then do / Test BT /
glSSID = "DO31"
glOwner = parametre
end
when parametre = "TOM0" then do / MAC 0 /
glSSID = "DO31"
glOwner = parametre
end
when parametre = "TOM1" then do / MAC 1 /
glSSID = "DO31"
glOwner = parametre
end
when parametre = "TOM2" then do / MAC 2 /
glSSID = "DO31"
glOwner = parametre
end
when parametre = "TOM3" then do / MAC 3 /
glSSID = "DO31"
glOwner = parametre
end
when parametre = "QOZ0" then do / Intégration BT /
glSSID = "DO31"
glOwner = parametre
end
when parametre = "IUZ0" then do / PréProd BT /
glSSID = "DI31"
glOwner = parametre
end
when parametre = "IX01" then do
glSSID = "DI41"
glOwner = parametre
end
when parametre = "QUG1" then do
glSSID = "DU31"
glOwner = parametre
end
when parametre = "QUZ9" then do
glSSID = "DU31"
glOwner = parametre
end
when parametre = "TOP1" then do
glSSID = "DO31"
glOwner = parametre
end
when parametre = "QOF0" then do
glSSID = "DO31"
glOwner = parametre
end
when parametre = "QUP1" then do
glSSID = "DU31"
glOwner = parametre
end
when parametre = "RA86" then do
glSSID = "DR41"
glOwner = parametre
end
otherwise nop
end
if glOwner = "" then return 0
else do
address ispexec "vput glSSID"
address ispexec "vput glOwner"
end
return 1
param_lang:
if glLang <> "" then return 0
select
when parametre = "SOURCE" then glLang = parametre
when parametre = "SOURCEX" then glLang = parametre
when parametre = "COBOL" then glLang = parametre
when parametre = "COPY" then glLang = parametre
when parametre = "DCLGEN" then glLang = parametre
when parametre = "ASM" then glLang = parametre
/when parametre = "APS" then glLang = parametre /
/when parametre = "APSCOB" then glLang = parametre /
when parametre = "NDV" then glLang = parametre
when parametre = "JCL" then glLang = parametre
when parametre = "JCLX" then glLang = parametre
when parametre = "PARAM" then glLang = parametre
when parametre = "PROC" then glLang = parametre
when parametre = "REXX" then glLang = parametre
when parametre = "SQL" then glLang = parametre
otherwise nop
end
if glLang = "" then return 0
else address ispexec "vput glLang"
return 1
param_env:
if glEnv <> "" then return 0
select
when parametre = "PERSO" then glEnv = parametre
when parametre = "OTEST" then glEnv = parametre
when parametre = "OQUAL" then glEnv = parametre
when parametre = "UQUAL" then glEnv = parametre
when parametre = "URECE" then glEnv = parametre
when parametre = "ULIVR" then glEnv = parametre
otherwise nop
end
if glEnv = "" then return 0
else address ispexec "vput glEnv"
return 1
param_brq:
if glBrq <> "" then return 0
select
when parametre = "BAC" then glBrq = parametre
when parametre = "BRF" then glBrq = parametre
when parametre = "BST" then glBrq = parametre
when parametre = "MIG" then glBrq = parametre
when parametre = "STC" then glBrq = parametre
when parametre = "TEC" then glBrq = parametre
otherwise nop
end
if glBrq = "" then return 0
else address ispexec "vput glBrq"
return 1
param_btp:
if glBTP <> "" then return 0
select
when parametre = "COBCO" then glBTP = parametre
when parametre = "BATCH" then glBTP = parametre
when parametre = "TP" then glBTP = parametre
otherwise nop
end
if glBTP = "" then return 0
else address ispexec "vput glBTP"
return 1
param_edit:
if glEdit <> "" then return 0
select
when parametre = "EDIT" then glEdit = parametre
when parametre = "VIEW" then glEdit = parametre
otherwise
end
if glEdit = "" then return 0
else address ispexec "vput glEdit"
return 1
param_special:
select
when parametre = "" then do
/ Dernière chaîne paramétrée */
address ispexec "vget glChn"
renvoyer = glChn
return 1
end
when parametre = "=" then do
/ Membre actuellement ouvert /
address isredit "(glMmb) = member"
renvoyer = glMmb
return 1
end
when parametre = "$" then do
/ Récupération du dernier DSN paramétré /
address ispexec "vget glDSN"
renvoyer = glDSN
return 1
end
when parametre = ">" then do
/ Enregistrement du dernier outil perso appelé à la liste /
address ispexec "vget glOutils"
renvoyer = word(glOutils,words(glOutils))
return 1
end
when parametre = "<" then do
/ Suppression du dernier outil perso appelé de la liste /
address ispexec "vget glOutils"
if rc = 0 then do
renvoyer = wordindex(glOutils,words(glOutils))-1
glOutils = left(glOutils,renvoyer)
address ispexec "vput glOutils"
renvoyer = rc
end
return 1
end
when parametre = "<<<<" then do
/ RAZ de glOutils /
address ispexec "verase glOutils"
renvoyer = rc
return 1
end
when listdsi(parametre) < 5 then do
/ Enregistrement du dernier DSN paramétré /
glDSN = parametre
address ispexec "vput glDSN"
return 1
end
otherwise nop
end
return 0
param_stdout:
if glStdOut <> "" then return 0
if parametre(1:1) = ">" then
glStdOut = right(parametre, length(parametre)-1)
if glStdOut = "" then return 0
else address ispexec "vput glStdOut"
return 0
get_param:
select
when parametre = "GLCHN" then do
address ispexec "vget glChn"
if glChn <> "" then valeur = glChn
end
when parametre = "GLMMB" then do
address ispexec "vget glMmb"
if glMmb <> "" then valeur = glMmb
end
when parametre = "GLDSN" then do
address ispexec "vget glDSN"
if glDSN <> "" then valeur = glDSN
end
when parametre = "GLLSTPRM" then do
address ispexec "vget glLstPrm"
if glLstPrm <> "" then valeur = glLstPrm
end
when parametre = "GLENV" then do
address ispexec "vget glEnv"
if glEnv <> "" then valeur = glEnv
end
when parametre = "GLSSID" then do
address ispexec "vget glSSID"
if glSSID <> "" then valeur = glSSID
end
when parametre = "GLOWNER" then do
address ispexec "vget glOwner"
if glOwner <> "" then valeur = glOwner
end
when parametre = "GLLANG" then do
address ispexec "vget glLang"
if glLang <> "" then valeur = glLang
end
when parametre = "GLBTP" then do
address ispexec "vget glBTP"
if glBTP <> "" then valeur = glBTP
end
when parametre = "GLBRQ" then do
address ispexec "vget glBrq"
if glBrq <> "" then valeur = glBrq
end
when parametre = "GLEDIT" then do
address ispexec "vget glEdit"
if glEdit <> "" then valeur = glEdit
end
when parametre = "GLSTDOUT" then do
address ispexec "vget glStdOut"
if glStdOut <> "" then valeur = glStdOut
end
otherwise nop
end
renvoyer = valeur
return
put_param:
select
when parametre = "GLCHN" then do
glChn = valeur
address ispexec "vput glChn"
end
when parametre = "GLMMB" then do
glMMb = valeur
address ispexec "vput glMmb"
end
when parametre = "GLDSN" then do
glDSN = valeur
address ispexec "vput glDSN"
end
when parametre = "GLLSTPRM" then do
glLstPrm = valeur
address ispexec "vput glLstPrm"
end
when parametre = "GLENV" then do
glEnv = valeur
address ispexec "vput glEnv"
end
when parametre = "GLSSID" then do
glSSID = valeur
address ispexec "vput glSSID"
end
when parametre = "GLOWNER" then do
glOwner = valeur
address ispexec "vput glOwner"
end
when parametre = "GLLANG" then do
glLang = valeur
address ispexec "vput glLang"
end
when parametre = "GLBTP" then do
glBTP = valeur
address ispexec "vput glBTP"
end
when parametre = "GLBRQ" then do
glBrq = valeur
address ispexec "vput glBrq"
end
when parametre = "GLEDIT" then do
glEdit = valeur
address ispexec "vput glEdit"
end
when parametre = "GLSTDOUT" then do
glStdOut = valeur
address ispexec "vput glStdOut"
end
otherwise nop
end
renvoyer = rc
return
anomalie_parametre:
zedsmsg = "Option eronnee"
zedlmsg = "-g / -l / -p"
address ispexec "setmsg msg(isrz001)"
/say "Option demandee : "option
say "Parametre passe : "parametre
say "Valeur donnee : "valeur/
exit 8
return