Languages

Langage Fortran

Equivalence d'otions de compilation en Fortran

http://www.cerfacs.fr/~gondet/

Programmes Fortran

Cours Fortran

XL Fortran for AIX

Intel Fortran

Lancement par la commande ifort

Fortran open source

Equivalence des options des compilateurs fortran

conversions_options_XLF_IFORT_GFORTRAN.pdf : présentation de Olivier Filangi dans le cadre des "formations" lors de la migration de AIX vers Linux.

Fichiers binaires différents sous UNIX et LINUX

Information de O Filangi et T Coudert.

Les entiers dans des fichiers binaires ne sont pas dans le même format sous UNIX (et TSO) et sous Linux (et Windows). Sous UNIX, ils sont en Big Endian, c'est à dire écrits de gauche à droite (le terme de puissance de 10 le plus élevé à gauche); sous Linux, ils sont en Little Endian, c'est-à-dire de droite à gauche.
Exemple : l'entier codé en hexa sous cette forme sous AIX
A0 B7 07 08
est codé sous Linux
08 07 B7 A0

Pour les précisions : http://fr.wikipedia.org/wiki/Endianness

Il existe des procédures de conversion, par exemple http://gcc.gnu.org/onlinedocs/gfortran/CONVERT-specifier.html

T Coudert :
Les compilateurs ifort et gfortran sont capables de lire ou écrire des fichiers Big Endian sous Linux
http://software.intel.com/sites/products/documentation/hpc/compilerpro/en-us/fortran/lin/compiler_f/optaps/fortran/optaps_cmp_endi_f.htm

D Boichard :
Pour convertir, la solution consiste à introduire une variable d'environnement dans le script d'exécution du programme, indiquant les numéros de fichiers concernés (11, 20,21, 22, 23 dans l'exemple)
Pour ifort : export F_UFMTENDIAN=11,20-23
Pour gfortran : export GFORTRAN_CONVERT_UNIT='native;big_endian:11,20-23'

Attention : ifort ne semble pas accepter les fichiers binaires à accès direct, alors que gfortran peut le faire. Du coup, la chaine production, qui utilise cette fonctionnalité, est compilée avec gfortran.

D'une facon générale, beaucoup de détails sur GFORTRAN à l'adresse http://gcc.gnu.org/onlinedocs/gfortran/index.html#Top

Compilation plus de 2 Go ou en 64b

Question DBO: Pour qu'un pgm fortran puisse utiliser plus de 2 Go et donc soit en 64b, est ce que l'option de compilation -m64 suffit avec ifort ?

Réponse VPD: A priori, il n'y a pas d'option à mettre (je pense que c'est par défaut). En tout cas, je n'en ai jamais mis (pour ça) et je n'ai jamais eu de problème (pour ça).
cf http://www.cerfacs.fr/~gondet/opt_corres.html
=> semble être bien le cas en .f90 mais pas forcément en .f

Langage C

Java

perl

Informations données par Eric Venot et Hervé Lagant

Utiliser directement les expressions de PERL dans SAS9 "Introduction to PERL Regular expressions in SAS9" (265-29.pdf) plus "la fiche résumant ces commandes sur une page" (perlregexp_sas9.pdf) et même dans le proc SQL

Générateur automatique de code PERL pour les fonctionsles plus simples (sort, merge…): http://sysbio.harvard.edu/csb/resources/computational/scriptome/UNIX/

python

python 2.6 dans /usr/bin/python2.6 sur dga7

shell

Remplacement automatique d'un mot avec la commande sed

Pour remplacement automatiquement un mot, une phrase ou un chemin vers un fichier utilisez la commande sed.
Il est possible de remplacer dans toute une liste de fichiers un mot, une phrase ou un chemin vers un répertoire (etc...) automatiquement.

La commande est simple:

sed 's/motif à remplacer/motif à ajouter/g'   fichier_avant   > fichier_après

Le script ci-dessous vous donne un exemple de script permettant de tester cette commande (remplacement de "Bonjour" par "Au revoir" dans 2 fichiers).
Vous pouvez le récupérer et le modifier pour l'appliquer à vos besoins.

#!/bin/sh

# A- création de 2 fichiers test
################################
cat > ~/file1.txt <<EOF

   Bonjour tout le monde

EOF

cat > ~/file2.txt <<EOF

   Bonjour la compagnie

EOF

# 2- Lancement de la commande de remplacement sur tous les fichiers file
########################################################################
echo
echo "Remplacement de Bonjour par Au revoir" 
echo "=====================================" 
echo

i=0
for fic in ~/file*.txt
do
   i=$((i+1)) # incrémentation du compteur 

   echo "Fichier initial numéro $i" 
   echo "------------------------" 
   cat $fic
   echo
   echo "=> Remplacement par la commande sed 's/mot à remplacer/mot à ajouter/g'" 
   echo

   # commande qui permet de remplacer la séquence entre les 2 premiers slashs par la suivante
   # s pour dir que l'on commence dès le début du fichier
   # g pour dire que l'on remplace toutes les occurences rencontrées

   sed 's/Bonjour/Au revoir/g' $fic > ${fic}_temp  # passage par un fichier intermédiaire 

   mv ${fic}_temp $fic

   echo "Fichier final numéro $i" 
   echo "----------------------" 
   cat $fic
   echo

   # nettoyage
   rm $fic
done

Utilisation de fonctions personnelles

Il est possible de charger des fonctions personnelles lors de l’exécution d'un script shell pour la rendre utilisable plus facilement par la suite par les scripts.
Il y a pour cela une différence entre UNIX et LINUX pour la réalisation de cela: le autoload utilisé sous UNIX doit être remplacé par source.

Exemple d'utilisation:
J'ai une fonction personnelle fonc1 qui est disponible dans le répertoire /monrepertoire. Pour pouvoir l'utiliser dans mes scripts, il faut d'abord définir le FPATH, répertoire où sont stockées les fonctions personnelles puis "charger" la fonction concernée de la façon suivante:

FPATH=/egb_bl/prog/BAO
source $FPATH/fonc1
fonc1 

ou

fonc1 parametre1 parametre2... si la fonction a besoin de paramètre

265-29.pdf - Introduction to PERL Regular expressions in SAS9 (477,635 ko) Sylvie Nugier, 05/12/2012 17:47

perlregexp_sas9.pdf - fiche résumant les commandes (160,985 ko) Sylvie Nugier, 05/12/2012 17:47

conversions_options_XLF_IFORT_GFORTRAN.pdf - Formation Linux pour les utilisateurs du CTIG - comparaison options compilateurs Fortran - 0. Filangi (73,643 ko) Sylvie Nugier, 02/08/2013 11:10