Languages¶
Langage Fortran¶
Equivalence d'otions de compilation en Fortran¶
http://www.cerfacs.fr/~gondet/
Programmes Fortran¶
- tris : http://www.fortran-2000.com/rank/
- appel de C et Fortran depuis R : http://www.stat.umn.edu/~charlie/rc/
- http://www.fortranlib.com/
Cours Fortran¶
- http://gershwin.ens.fr/vdaniel/Doc-Locale/Langages-Program-Scientific/Fortran/Cours-Idris/HTML/F90_cours.pdf
- http://kgptech.blogspot.com/2005/07/fortran_14.html
- http://www.dmoz.org/Computers/Programming/Languages/Fortran/FAQs,_Help,_and_Tutorials/Fortran_90_and_95/
XL Fortran for AIX ¶
- version 8.1.1.7
- Changements par rapport aux anciennes versions
- documentation
- User Guide
- Langage Reference
Intel Fortran¶
Lancement par la commande ifort
- Documentation compilateur http://dgasp1.jouy.inra.fr:49213/IntelFortran//Doc_Index.htm
- Documentation debugger : http://dgasp1.jouy.inra.fr:49213/IntelDebugger/Doc_Index.htm
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¶
- Documentation C for AIX : http://dgasp1.jouy.inra.fr:49213/cgi-bin/vahwebx.exe/en_US/cforaix/Extract/0/index.htm
Java¶
- Documentation : http://dgasp1.jouy.inra.fr:49213/java/index.html
perl¶
Informations données par Eric Venot et Hervé Lagant¶
- Pour les débutants http://lhullier.developpez.com/tutoriels/perl/intro/
- Club très dynamiques des mongueurs de Paris http://paris.mongueurs.net/
- Nombreuses informations disponibles sur http://perl.developpez.com/
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