Ignore:
Timestamp:
03/30/12 15:11:37 (12 years ago)
Author:
sdipsl
Message:
  • I messed up the merge of vargas, ulam and AA_job
  • cosmectics
Location:
trunk/libIGCM/libIGCM_sys
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/libIGCM/libIGCM_sys/libIGCM_sys_ulam.ksh

    r506 r619  
    1 #!/bin/ksh  
     1#!/bin/ksh 
    22 
    33#************************************************************** 
     
    1414#========================================================= 
    1515# The documentation of this file can be automatically generated 
    16 # if you use the prefix #D- for comments to be extracted.  
     16# if you use the prefix #D- for comments to be extracted. 
    1717# Extract with command: cat lib* | grep "^#D-" | cut -c "4-" 
    1818#========================================================= 
     
    2222#D-#================================================== 
    2323#D- 
    24 #D- This ksh library if a layer under some usefull  
     24#D- This ksh library if a layer under some usefull 
    2525#D-environment variables and shell commands. 
    2626#D-All those definitions depend on host particularities. 
     
    6262 
    6363#===================================================== 
    64 # Host and user names  
     64# Host and user names 
    6565# $hostname ou hostname 
    6666typeset  HOST=${HOST:=$( hostname )} 
     
    101101#==================================================== 
    102102#- ARCHIVE 
    103 # modified 17/10/2011 /u to be used for file stored on gaya  
    104 if (tty -s ) then   
    105     typeset -r ARCHIVE=${HOMEGAYA}  
    106 else  
    107     typeset -r ARCHIVE=$(echo ${HOMEGAYA}|sed 's,/homegaya/,/u/',)  
     103# modified 17/10/2011 /u to be used for file stored on gaya 
     104if (tty -s ) then 
     105  typeset -r ARCHIVE=${HOMEGAYA} 
     106else 
     107  typeset -r ARCHIVE=$(echo ${HOMEGAYA}|sed 's,/homegaya/,/u/',) 
    108108fi 
    109109 
     
    118118 
    119119#==================================================== 
     120#- R_BUF  Buffer to pack files stored on Master 
     121typeset -r R_BUF=${WORKDIR}/IGCM_OUT 
     122 
     123#==================================================== 
    120124#- OUT_POST 
    121125typeset -r R_OUT_POST=${WORKDIR}/IGCM_OUT 
     
    136140function IGCM_sys_RshMaster { 
    137141    #set -vx 
    138     IGCM_debug_PushStack "IGCM_sys_RshMaster" $@ 
    139     rsh ${MASTER} exec /bin/ksh <<-EOF 
     142  IGCM_debug_PushStack "IGCM_sys_RshMaster" $@ 
     143  rsh ${MASTER} exec /bin/ksh <<-EOF 
    140144    export libIGCM=${libIGCM_SX} 
    141145    export DEBUG_debug=${DEBUG_debug} 
     
    144148    ${@} 
    145149EOF 
    146     if [ $? -gt 0 ] ; then 
    147         echo "IGCM_sys_RshMaster : erreur." 
    148         IGCM_debug_Exit "IGCM_sys_RshMaster" 
    149     fi 
    150     IGCM_debug_PopStack "IGCM_sys_RshMaster" 
     150  if [ $? -gt 0 ] ; then 
     151    echo "IGCM_sys_RshMaster : erreur." 
     152    IGCM_debug_Exit "IGCM_sys_RshMaster" 
     153  fi 
     154  IGCM_debug_PopStack "IGCM_sys_RshMaster" 
    151155} 
    152156 
     
    157161#D- 
    158162function IGCM_sys_RshArchive { 
    159     IGCM_debug_PushStack "IGCM_sys_RshArchive" $@ 
    160     /bin/ksh <<-EOF 
     163  IGCM_debug_PushStack "IGCM_sys_RshArchive" $@ 
     164  /bin/ksh <<-EOF 
    161165    ${@} 
    162166EOF 
    163     if [ $? -gt 0 ] ; then 
    164         echo "IGCM_sys_RshArchive : erreur." 
    165         IGCM_debug_Exit "IGCM_sys_RshArchive" 
    166     fi 
    167     IGCM_debug_PopStack "IGCM_sys_RshArchive" 
     167  if [ $? -gt 0 ] ; then 
     168    echo "IGCM_sys_RshArchive : erreur." 
     169    IGCM_debug_Exit "IGCM_sys_RshArchive" 
     170  fi 
     171  IGCM_debug_PopStack "IGCM_sys_RshArchive" 
    168172} 
    169173 
     
    174178#D- 
    175179function IGCM_sys_RshPost { 
    176     IGCM_debug_PushStack "IGCM_sys_RshPost" $@ 
    177     if ( $DEBUG_sys ) ; then 
    178         echo "IGCM_sys_RshPost :" $@ 
    179     fi 
    180     /bin/ksh ${@} 
    181     if [ $? -gt 0 ] ; then 
    182         echo "IGCM_sys_RshPost : erreur." 
    183         IGCM_debug_Exit "IGCM_sys_RshPost" 
    184     fi 
    185     IGCM_debug_PopStack "IGCM_sys_RshPost" 
     180  IGCM_debug_PushStack "IGCM_sys_RshPost" $@ 
     181  if ( $DEBUG_sys ) ; then 
     182    echo "IGCM_sys_RshPost :" $@ 
     183  fi 
     184  /bin/ksh ${@} 
     185  if [ $? -gt 0 ] ; then 
     186    echo "IGCM_sys_RshPost : erreur." 
     187    IGCM_debug_Exit "IGCM_sys_RshPost" 
     188  fi 
     189  IGCM_debug_PopStack "IGCM_sys_RshPost" 
    186190} 
    187191 
     
    192196#D- 
    193197function IGCM_sys_SendMail { 
    194     IGCM_debug_PushStack "IGCM_sys_SendMailPost" $@ 
    195     if ( $DEBUG_sys ) ; then 
    196        echo "IGCM_sys_SendMail :" $@ 
    197     fi 
    198  
    199     if ( ${ExitFlag} ) ; then 
    200         status=failed 
    201     else 
    202         status=completed 
    203     fi 
    204     cat  << END_MAIL > job_end.mail 
     198  IGCM_debug_PushStack "IGCM_sys_SendMailPost" $@ 
     199  if ( $DEBUG_sys ) ; then 
     200    echo "IGCM_sys_SendMail :" $@ 
     201  fi 
     202 
     203  if ( ${ExitFlag} ) ; then 
     204    status=failed 
     205  else 
     206    status=completed 
     207  fi 
     208  cat  << END_MAIL > job_end.mail 
    205209Dear ${LOGIN}, 
    206210 
     
    212216END_MAIL 
    213217 
    214     if [ ! -z ${config_UserChoices_MailName} ] ; then 
    215         mailx -s "${config_UserChoices_JobName} ${status}" ${config_UserChoices_MailName} < job_end.mail 
    216     elif [ -f ~/.forward ] ; then 
    217         mailx -s "${config_UserChoices_JobName} ${status}" $( cat ~/.forward ) < job_end.mail 
    218     fi 
    219  
    220     if [ $? -gt 0 ] ; then 
    221         echo "IGCM_sys_SendMail : erreur." 
    222         IGCM_debug_Exit "IGCM_sys_SendMail" 
    223     fi 
    224     IGCM_debug_PopStack "IGCM_sys_SendMail" 
     218  if [ ! -z ${config_UserChoices_MailName} ] ; then 
     219    mailx -s "${config_UserChoices_JobName} ${status}" ${config_UserChoices_MailName} < job_end.mail 
     220  elif [ -f ~/.forward ] ; then 
     221    mailx -s "${config_UserChoices_JobName} ${status}" $( cat ~/.forward ) < job_end.mail 
     222  fi 
     223 
     224  if [ $? -gt 0 ] ; then 
     225    echo "IGCM_sys_SendMail : erreur." 
     226    IGCM_debug_Exit "IGCM_sys_SendMail" 
     227  fi 
     228  IGCM_debug_PopStack "IGCM_sys_SendMail" 
    225229} 
    226230 
     
    231235#D- 
    232236function IGCM_sys_Mkdir { 
    233     IGCM_debug_PushStack "IGCM_sys_Mkdir" $@ 
    234     if ( $DEBUG_sys ) ; then 
    235         echo "IGCM_sys_Mkdir :" $@ 
    236     fi 
    237     if [ ! -d ${1} ]; then 
    238         \mkdir -p $1 
    239         if [ $? -gt 0 ] ; then 
    240             echo "IGCM_sys_Mkdir : erreur." 
    241             IGCM_debug_Exit "IGCM_sys_Mkdir" 
    242         fi 
    243     fi 
     237  IGCM_debug_PushStack "IGCM_sys_Mkdir" $@ 
     238  if ( $DEBUG_sys ) ; then 
     239    echo "IGCM_sys_Mkdir :" $@ 
     240  fi 
     241  if [ ! -d ${1} ]; then 
     242    \mkdir -p $1 
     243    if [ $? -gt 0 ] ; then 
     244      echo "IGCM_sys_Mkdir : erreur." 
     245      IGCM_debug_Exit "IGCM_sys_Mkdir" 
     246    fi 
     247  fi 
    244248    # vérification : 
    245     if [ ! -d ${1} ] ; then 
    246         echo "IGCM_sys_Mkdir : erreur." 
    247         IGCM_debug_Exit "IGCM_sys_Mkdir" 
    248     fi 
    249     IGCM_debug_PopStack "IGCM_sys_Mkdir" 
     249  if [ ! -d ${1} ] ; then 
     250    echo "IGCM_sys_Mkdir : erreur." 
     251    IGCM_debug_Exit "IGCM_sys_Mkdir" 
     252  fi 
     253  IGCM_debug_PopStack "IGCM_sys_Mkdir" 
    250254} 
    251255 
     
    256260#D- 
    257261function IGCM_sys_MkdirArchive { 
    258     IGCM_debug_PushStack "IGCM_sys_MkdirArchive" $@ 
    259     if ( $DEBUG_sys ) ; then 
    260         echo "IGCM_sys_MkdirArchive :" $@ 
    261     fi 
     262  IGCM_debug_PushStack "IGCM_sys_MkdirArchive" $@ 
     263  if ( $DEBUG_sys ) ; then 
     264    echo "IGCM_sys_MkdirArchive :" $@ 
     265  fi 
    262266    #- creation de repertoire sur le serveur fichier 
    263     if [ ! -d ${1} ]; then  
    264         \mkdir -p $1 
    265         if [ $? -gt 0 ] ; then 
    266             echo "IGCM_sys_MkdirArchive : erreur." 
    267             IGCM_debug_Exit "IGCM_sys_MkdirArchive" 
    268         fi 
    269     fi 
    270     IGCM_debug_PopStack "IGCM_sys_MkdirArchive" 
     267  if [ ! -d ${1} ]; then 
     268    \mkdir -p $1 
     269    if [ $? -gt 0 ] ; then 
     270      echo "IGCM_sys_MkdirArchive : erreur." 
     271      IGCM_debug_Exit "IGCM_sys_MkdirArchive" 
     272    fi 
     273  fi 
     274  IGCM_debug_PopStack "IGCM_sys_MkdirArchive" 
    271275} 
    272276 
     
    277281#D- 
    278282function IGCM_sys_MkdirWork { 
    279     IGCM_debug_PushStack "IGCM_sys_MkdirWork" $@ 
    280     if ( $DEBUG_sys ) ; then 
    281         echo "IGCM_sys_MkdirWork :" $@ 
    282     fi 
     283  IGCM_debug_PushStack "IGCM_sys_MkdirWork" $@ 
     284  if ( $DEBUG_sys ) ; then 
     285    echo "IGCM_sys_MkdirWork :" $@ 
     286  fi 
    283287    #- creation de repertoire sur le serveur fichier 
    284     if [ ! -d ${1} ]; then  
    285         \mkdir -p $1 
    286         if [ $? -gt 0 ] ; then 
    287             echo "IGCM_sys_MkdirWork : erreur." 
    288             IGCM_debug_Exit "IGCM_sys_MkdirWork" 
    289         fi 
    290     fi 
    291     IGCM_debug_PopStack "IGCM_sys_MkdirWork" 
     288  if [ ! -d ${1} ]; then 
     289    \mkdir -p $1 
     290    if [ $? -gt 0 ] ; then 
     291      echo "IGCM_sys_MkdirWork : erreur." 
     292      IGCM_debug_Exit "IGCM_sys_MkdirWork" 
     293    fi 
     294  fi 
     295  IGCM_debug_PopStack "IGCM_sys_MkdirWork" 
    292296} 
    293297 
     
    298302#D- 
    299303function IGCM_sys_Cd { 
    300     IGCM_debug_PushStack "IGCM_sys_Cd" $@ 
    301     if ( $DEBUG_sys ) ; then 
    302         echo "IGCM_sys_Cd :" $@ 
    303     fi 
    304     \cd $1 
    305     if [ $? -gt 0 ] ; then 
    306         echo "IGCM_sys_Cd : erreur." 
    307         IGCM_debug_Exit "IGCM_sys_Cd" 
    308     fi 
    309     IGCM_debug_PopStack "IGCM_sys_Cd" 
     304  IGCM_debug_PushStack "IGCM_sys_Cd" $@ 
     305  if ( $DEBUG_sys ) ; then 
     306    echo "IGCM_sys_Cd :" $@ 
     307  fi 
     308  \cd $1 
     309  if [ $? -gt 0 ] ; then 
     310    echo "IGCM_sys_Cd : erreur." 
     311    IGCM_debug_Exit "IGCM_sys_Cd" 
     312  fi 
     313  IGCM_debug_PopStack "IGCM_sys_Cd" 
    310314} 
    311315 
     
    316320#D- 
    317321function IGCM_sys_Chmod { 
    318     IGCM_debug_PushStack "IGCM_sys_Chmod" $@ 
    319     if ( $DEBUG_sys ) ; then 
    320         echo "IGCM_sys_Chmod :" $@ 
    321     fi 
    322     if [ $DRYRUN -le 1 ]; then 
    323         \chmod $@ 
    324         if [ $? -gt 0 ] ; then 
    325             echo "IGCM_sys_Chmod : erreur." 
    326             IGCM_debug_Exit "IGCM_sys_Chmod" 
    327         fi 
    328     else 
    329         ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
    330     fi 
    331     IGCM_debug_PopStack "IGCM_sys_Chmod" 
     322  IGCM_debug_PushStack "IGCM_sys_Chmod" $@ 
     323  if ( $DEBUG_sys ) ; then 
     324    echo "IGCM_sys_Chmod :" $@ 
     325  fi 
     326  if [ $DRYRUN -le 1 ]; then 
     327    \chmod $@ 
     328    if [ $? -gt 0 ] ; then 
     329      echo "IGCM_sys_Chmod : erreur." 
     330      IGCM_debug_Exit "IGCM_sys_Chmod" 
     331    fi 
     332  else 
     333    ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
     334  fi 
     335  IGCM_debug_PopStack "IGCM_sys_Chmod" 
    332336} 
    333337 
     
    338342#D- 
    339343function IGCM_sys_FileSize { 
    340     IGCM_debug_PushStack "IGCM_sys_FileSize" $@ 
    341  
    342     typeset sizeF 
    343     set +A sizeF -- $( ls -la ${1} ) 
    344     if [ $? -gt 0 ] ; then 
    345         IGCM_debug_Exit "IGCM_sys_FileSize" 
    346     fi 
    347     eval ${2}=${sizeF[4]} 
    348  
    349     IGCM_debug_PopStack "IGCM_sys_FileSize" 
     344  IGCM_debug_PushStack "IGCM_sys_FileSize" $@ 
     345 
     346  typeset sizeF 
     347  set +A sizeF -- $( ls -la ${1} ) 
     348  if [ $? -gt 0 ] ; then 
     349    IGCM_debug_Exit "IGCM_sys_FileSize" 
     350  fi 
     351  eval ${2}=${sizeF[4]} 
     352 
     353  IGCM_debug_PopStack "IGCM_sys_FileSize" 
    350354} 
    351355 
     
    356360#D- 
    357361function IGCM_sys_TestDir { 
    358     IGCM_debug_PushStack "IGCM_sys_TestDir" $@ 
    359     if ( $DEBUG_sys ) ; then 
    360         echo "IGCM_sys_TestDir :" $@ 
    361     fi 
    362     typeset ExistFlag 
    363     ExistFlag=$( [ -d $1 ] && echo 0 || echo 1 ) 
    364     IGCM_debug_PopStack "IGCM_sys_TestDir" 
    365  
    366     return ${ExistFlag} 
     362  IGCM_debug_PushStack "IGCM_sys_TestDir" $@ 
     363  if ( $DEBUG_sys ) ; then 
     364    echo "IGCM_sys_TestDir :" $@ 
     365  fi 
     366  typeset ExistFlag 
     367  ExistFlag=$( [ -d $1 ] && echo 0 || echo 1 ) 
     368  IGCM_debug_PopStack "IGCM_sys_TestDir" 
     369 
     370  return ${ExistFlag} 
    367371} 
    368372 
     
    373377#D- 
    374378function IGCM_sys_TestDirArchive { 
    375     IGCM_debug_PushStack "IGCM_sys_TestDirArchive" $@ 
    376     if ( $DEBUG_sys ) ; then 
    377         echo "IGCM_sys_TestDirArchive :" $@ 
    378     fi 
    379     typeset ExistFlag DirNameToTest  
    380     # modified 17/10/2011 /u is not known on ulam, use /homegaya instead to test dir locally on ulam  
    381     DirNameToTest=$(echo $1 | sed 's,/u/,/homegaya/,')  
    382     ExistFlag=$( [ -d ${DirNameToTest} ] && echo 0 || echo 1 ) 
    383     IGCM_debug_PopStack "IGCM_sys_TestDirArchive" 
    384  
    385     return ${ExistFlag} 
     379  IGCM_debug_PushStack "IGCM_sys_TestDirArchive" $@ 
     380  if ( $DEBUG_sys ) ; then 
     381    echo "IGCM_sys_TestDirArchive :" $@ 
     382  fi 
     383  typeset ExistFlag DirNameToTest 
     384    # modified 17/10/2011 /u is not known on ulam, use /homegaya instead to test dir locally on ulam 
     385  DirNameToTest=$(echo $1 | sed 's,/u/,/homegaya/,') 
     386  ExistFlag=$( [ -d ${DirNameToTest} ] && echo 0 || echo 1 ) 
     387  IGCM_debug_PopStack "IGCM_sys_TestDirArchive" 
     388 
     389  return ${ExistFlag} 
    386390} 
    387391 
     
    392396#D- 
    393397function IGCM_sys_TestFileArchive { 
    394     IGCM_debug_PushStack "IGCM_sys_TestFileArchive" $@ 
    395     if ( $DEBUG_sys ) ; then 
    396         echo "IGCM_sys_TestFileArchive :" $@ 
    397     fi 
    398     typeset ExistFlag FileNameToTest  
    399     # modified 17/10/2011 /u is not known on ulam, use /homegaya instead to test dir locally on ulam  
    400     FileNameToTest=$(echo $1 | sed 's,/u/,/homegaya/,')  
    401     ExistFlag=$( IGCM_sys_RshArchive "[ -f ${FileNameToTest} ] && echo 0 || echo 1" )  
    402     IGCM_debug_PopStack "IGCM_sys_TestFileArchive" 
    403  
    404     return ${ExistFlag} 
     398  IGCM_debug_PushStack "IGCM_sys_TestFileArchive" $@ 
     399  if ( $DEBUG_sys ) ; then 
     400    echo "IGCM_sys_TestFileArchive :" $@ 
     401  fi 
     402  typeset ExistFlag FileNameToTest 
     403    # modified 17/10/2011 /u is not known on ulam, use /homegaya instead to test dir locally on ulam 
     404  FileNameToTest=$(echo $1 | sed 's,/u/,/homegaya/,') 
     405  ExistFlag=$( IGCM_sys_RshArchive "[ -f ${FileNameToTest} ] && echo 0 || echo 1" ) 
     406  IGCM_debug_PopStack "IGCM_sys_TestFileArchive" 
     407 
     408  return ${ExistFlag} 
    405409} 
    406410 
     
    411415#D- 
    412416function IGCM_sys_CountFileArchive { 
    413     IGCM_debug_PushStack "IGCM_sys_CountFileArchive" $@ 
    414     IGCM_sys_RshArchive "ls ${@} 2>/dev/null | wc -l" 
    415     if [ $? -gt 0 ] ; then 
    416         echo "IGCM_sys_CountFileArchive : erreur." 
    417     fi 
    418     IGCM_debug_PopStack "IGCM_sys_CountFileArchive" 
     417  IGCM_debug_PushStack "IGCM_sys_CountFileArchive" $@ 
     418  IGCM_sys_RshArchive "ls ${@} 2>/dev/null | wc -l" 
     419  if [ $? -gt 0 ] ; then 
     420    echo "IGCM_sys_CountFileArchive : erreur." 
     421  fi 
     422  IGCM_debug_PopStack "IGCM_sys_CountFileArchive" 
    419423} 
    420424 
     
    425429#D- 
    426430function IGCM_sys_Tree { 
    427     IGCM_debug_PushStack "IGCM_sys_Tree" $@ 
    428     if ( $DEBUG_sys ) ; then 
    429         echo "IGCM_sys_Tree :" $@ 
    430     fi 
    431  
    432     \mfls -r $@ 
    433  
    434     IGCM_debug_PopStack "IGCM_sys_Tree" 
     431  IGCM_debug_PushStack "IGCM_sys_Tree" $@ 
     432  if ( $DEBUG_sys ) ; then 
     433    echo "IGCM_sys_Tree :" $@ 
     434  fi 
     435 
     436  \mfls -r $@ 
     437 
     438  IGCM_debug_PopStack "IGCM_sys_Tree" 
    435439} 
    436440 
     
    441445#D- 
    442446function IGCM_sys_Tar { 
    443     IGCM_debug_PushStack "IGCM_sys_Tar" $@ 
    444     if ( $DEBUG_sys ) ; then 
    445         echo "IGCM_sys_Tar :" $@ 
    446     fi 
    447     \tar cvf $@ 
    448     if [ $? -gt 0 ] ; then 
    449         echo "IGCM_sys_Tar : erreur." 
    450         IGCM_debug_Exit "IGCM_sys_Tar" 
    451     fi 
    452     \tar tvf $1 
    453  
    454     IGCM_debug_PopStack "IGCM_sys_Tar" 
     447  IGCM_debug_PushStack "IGCM_sys_Tar" $@ 
     448  if ( $DEBUG_sys ) ; then 
     449    echo "IGCM_sys_Tar :" $@ 
     450  fi 
     451  \tar cvf $@ 
     452  if [ $? -gt 0 ] ; then 
     453    echo "IGCM_sys_Tar : erreur." 
     454    IGCM_debug_Exit "IGCM_sys_Tar" 
     455  fi 
     456  \tar tvf $1 
     457 
     458  IGCM_debug_PopStack "IGCM_sys_Tar" 
    455459} 
    456460 
     
    461465#D- 
    462466function IGCM_sys_UnTar { 
    463     IGCM_debug_PushStack "IGCM_sys_UnTar" $@ 
    464     if ( $DEBUG_sys ) ; then 
    465         echo "IGCM_sys_UnTar :" $@ 
    466     fi 
    467     \tar xvf $1 
    468     if [ $? -gt 0 ] ; then 
    469         echo "IGCM_sys_UnTar : erreur." 
    470         IGCM_debug_Exit "IGCM_sys_UnTar" 
    471     fi 
    472     IGCM_debug_PopStack "IGCM_sys_UnTar" 
     467  IGCM_debug_PushStack "IGCM_sys_UnTar" $@ 
     468  if ( $DEBUG_sys ) ; then 
     469    echo "IGCM_sys_UnTar :" $@ 
     470  fi 
     471  \tar xvf $1 
     472  if [ $? -gt 0 ] ; then 
     473    echo "IGCM_sys_UnTar : erreur." 
     474    IGCM_debug_Exit "IGCM_sys_UnTar" 
     475  fi 
     476  IGCM_debug_PopStack "IGCM_sys_UnTar" 
    473477} 
    474478 
     
    479483#D- 
    480484function IGCM_sys_QsubPost { 
    481     IGCM_debug_PushStack "IGCM_sys_QsubPost" $@ 
    482     if ( $DEBUG_sys ) ; then 
    483         echo "IGCM_sys_QsubPost :" $@ 
    484     fi 
    485     cd ${POST_DIR} 
    486     /opt/ibmll/LoadL/full/bin/llsubmit ${libIGCM}/$1.job 
    487     cd - 
    488     if [ $? -gt 0 ] ; then 
    489         echo "IGCM_sys_QsubPost : erreur " $@ 
    490         IGCM_debug_Exit "IGCM_sys_QsubPost" 
    491     fi 
    492     IGCM_debug_PopStack "IGCM_sys_QsubPost" 
     485  IGCM_debug_PushStack "IGCM_sys_QsubPost" $@ 
     486  if ( $DEBUG_sys ) ; then 
     487    echo "IGCM_sys_QsubPost :" $@ 
     488  fi 
     489  cd ${POST_DIR} 
     490  /opt/ibmll/LoadL/full/bin/llsubmit ${libIGCM}/$1.job 
     491  cd - 
     492  if [ $? -gt 0 ] ; then 
     493    echo "IGCM_sys_QsubPost : erreur " $@ 
     494    IGCM_debug_Exit "IGCM_sys_QsubPost" 
     495  fi 
     496  IGCM_debug_PopStack "IGCM_sys_QsubPost" 
    493497} 
    494498 
    495499#D-************************* 
    496 #D- File transfer functions  
     500#D- File transfer functions 
    497501#D-************************* 
    498502#D- 
     
    504508#D-  Error values and explanations can depend on your system version. 
    505509function IGCM_sys_Rsync_out { 
    506     RET=$1 
    507     if [ ! $RET ] ; then 
    508         echo "rsync error !" 
    509     fi 
    510  
    511     if [ $MYLANG = "fr" ]; then 
    512         case $RET in 
    513             0)  return ;; 
    514             1)  echo "Erreur de rsync ; RERR_SYNTAX : " 
    515                 echo "Erreur de syntaxe ou d'utilisation." 
    516                 return;; 
    517             2)  echo "Erreur de rsync ; RERR_PROTOCOL : " 
    518                 echo "Incompatibilité de protocole." 
    519                 return;; 
    520             3)  echo "Erreur de rsync ; RERR_FILESELECT 3" 
    521                 echo "Erreurs  lors  de  la  sélection des fichiers d'entrée sortie et" 
    522                 echo "répertoires" 
    523                 return;; 
    524             4)  echo "Erreur de rsync ; RERR_UNSUPPORTED" 
    525                 echo "Action demandée non supportée : une tentative de manipulation de" 
    526                 echo "fichiers  64-bits  sur une plate-forme qui ne les supporte pas a" 
    527                 echo "été faite ; ou une option qui est supportée par le  client  mais" 
    528                 echo "pas par le serveur a été spécifiée." 
    529                 return;; 
    530             10) echo "Erreur de rsync ; RERR_SOCKETIO" 
    531                 echo "Erreur dans le socket d'entrée sortie" 
    532                 return;; 
    533             11) echo "Erreur de rsync ; RERR_FILEIO" 
    534                 echo "Erreur d'entrée sortie fichier" 
    535                 return;; 
    536             12) echo "Erreur de rsync ; RERR_STREAMIO" 
    537                 echo "Erreur dans flux de donnée du protocole rsync" 
    538                 return;; 
    539             13) echo "Erreur de rsync ; RERR_MESSAGEIO" 
    540                 echo "Erreur avec les diagnostics du programme" 
    541                 return;; 
    542             14) echo "Erreur de rsync ; RERR_IPC" 
    543                 echo "Erreur dans le code IPC" 
    544                 return;; 
    545             20) echo "Erreur de rsync ; RERR_SIGNAL" 
    546                 echo "SIGUSR1 ou SIGINT reçu" 
    547                 return;; 
    548             21) echo "Erreur de rsync ; RERR_WAITCHILD" 
    549                 echo "Une erreur retournée par waitpid()" 
    550                 return;; 
    551             22) echo "Erreur de rsync ; RERR_MALLOC" 
    552                 echo "Erreur lors de l'allocation des tampons de mémoire de coeur" 
    553                 return;; 
    554             23) echo "" 
    555                 echo "Erreur fichier inexistant" 
    556                 return;; 
    557             30) echo "Erreur de rsync ; RERR_TIMEOUT" 
    558                 echo "Temps d'attente écoulé dans l'envoi/réception de données" 
    559                 return;; 
    560             *)  echo "Erreur de rsync : code de retour de rsync inconnu :" $RET 
    561                 return;; 
    562         esac 
    563     elif [ $MYLANG = "en" ] ; then 
    564         case $RET in 
    565             0)  return;;                 
    566             1)  echo "rsync error : Syntax or usage error " 
    567                 return;; 
    568             2)  echo "rsync error : Protocol incompatibility " 
    569                 return;; 
    570             3)  echo "rsync error : Errors selecting input/output files, dirs" 
    571                 return;; 
    572             4)  echo "rsync error : Requested action not supported: an attempt" 
    573                 echo "was made to manipulate 64-bit files on a platform that cannot support" 
    574                 echo "them; or an option was specified that is supported by the client and" 
    575                 echo "not by the server." 
    576                 return;; 
    577             5)  echo "rsync error : Error starting client-server protocol" 
    578                 return;; 
    579             10) echo "rsync error : Error in socket I/O " 
    580                 return;; 
    581             11) echo "rsync error : Error in file I/O " 
    582                 return;; 
    583             12) echo "rsync error : Error in rsync protocol data stream " 
    584                 return;; 
    585             13) echo "rsync error : Errors with program diagnostics " 
    586                 return;; 
    587             14) echo "rsync error : Error in IPC code " 
    588                 return;; 
    589             20) echo "rsync error : Received SIGUSR1 or SIGINT " 
    590                 return;; 
    591             21) echo "rsync error : Some error returned by waitpid() " 
    592                 return;; 
    593             22) echo "rsync error : Error allocating core memory buffers " 
    594                 return;; 
    595             23) echo "rsync error : Partial transfer due to error" 
    596                 return;; 
    597             24) echo "rsync error : Partial transfer due to vanished source files" 
    598                 return;; 
    599             30) echo "rsync error : Timeout in data send/receive " 
    600                 return;; 
    601             *)  echo "rsync error : return code of rsync unknown :" $RET 
    602                 return;; 
    603         esac 
    604     else 
    605         echo "unknown language $MYLANG." 
    606         return 
    607     fi 
    608 } 
    609      
     510  RET=$1 
     511  if [ ! $RET ] ; then 
     512    echo "rsync error !" 
     513  fi 
     514 
     515  if [ $MYLANG = "fr" ]; then 
     516    case $RET in 
     517    0)  return ;; 
     518    1)  echo "Erreur de rsync ; RERR_SYNTAX : " 
     519      echo "Erreur de syntaxe ou d'utilisation." 
     520      return;; 
     521    2)  echo "Erreur de rsync ; RERR_PROTOCOL : " 
     522      echo "Incompatibilité de protocole." 
     523      return;; 
     524    3)  echo "Erreur de rsync ; RERR_FILESELECT 3" 
     525      echo "Erreurs  lors  de  la  sélection des fichiers d'entrée sortie et" 
     526      echo "répertoires" 
     527      return;; 
     528    4)  echo "Erreur de rsync ; RERR_UNSUPPORTED" 
     529echo "Action demandée non supportée : une tentative de manipulation de" 
     530echo "fichiers  64-bits  sur une plate-forme qui ne les supporte pas a" 
     531echo "été faite ; ou une option qui est supportée par le  client  mais" 
     532echo "pas par le serveur a été spécifiée." 
     533return;; 
     53410) echo "Erreur de rsync ; RERR_SOCKETIO" 
     535echo "Erreur dans le socket d'entrée sortie" 
     536return;; 
     53711) echo "Erreur de rsync ; RERR_FILEIO" 
     538echo "Erreur d'entrée sortie fichier" 
     539return;; 
     54012) echo "Erreur de rsync ; RERR_STREAMIO" 
     541echo "Erreur dans flux de donnée du protocole rsync" 
     542return;; 
     54313) echo "Erreur de rsync ; RERR_MESSAGEIO" 
     544echo "Erreur avec les diagnostics du programme" 
     545return;; 
     54614) echo "Erreur de rsync ; RERR_IPC" 
     547echo "Erreur dans le code IPC" 
     548return;; 
     54920) echo "Erreur de rsync ; RERR_SIGNAL" 
     550echo "SIGUSR1 ou SIGINT reçu" 
     551return;; 
     55221) echo "Erreur de rsync ; RERR_WAITCHILD" 
     553echo "Une erreur retournée par waitpid()" 
     554return;; 
     55522) echo "Erreur de rsync ; RERR_MALLOC" 
     556echo "Erreur lors de l'allocation des tampons de mémoire de coeur" 
     557return;; 
     55823) echo "" 
     559echo "Erreur fichier inexistant" 
     560return;; 
     56130) echo "Erreur de rsync ; RERR_TIMEOUT" 
     562echo "Temps d'attente écoulé dans l'envoi/réception de données" 
     563return;; 
     564*)  echo "Erreur de rsync : code de retour de rsync inconnu :" $RET 
     565return;; 
     566esac 
     567elif [ $MYLANG = "en" ] ; then 
     568case $RET in 
     5690)  return;; 
     5701)  echo "rsync error : Syntax or usage error " 
     571return;; 
     5722)  echo "rsync error : Protocol incompatibility " 
     573return;; 
     5743)  echo "rsync error : Errors selecting input/output files, dirs" 
     575return;; 
     5764)  echo "rsync error : Requested action not supported: an attempt" 
     577echo "was made to manipulate 64-bit files on a platform that cannot support" 
     578echo "them; or an option was specified that is supported by the client and" 
     579echo "not by the server." 
     580return;; 
     5815)  echo "rsync error : Error starting client-server protocol" 
     582return;; 
     58310) echo "rsync error : Error in socket I/O " 
     584return;; 
     58511) echo "rsync error : Error in file I/O " 
     586return;; 
     58712) echo "rsync error : Error in rsync protocol data stream " 
     588return;; 
     58913) echo "rsync error : Errors with program diagnostics " 
     590return;; 
     59114) echo "rsync error : Error in IPC code " 
     592return;; 
     59320) echo "rsync error : Received SIGUSR1 or SIGINT " 
     594return;; 
     59521) echo "rsync error : Some error returned by waitpid() " 
     596return;; 
     59722) echo "rsync error : Error allocating core memory buffers " 
     598return;; 
     59923) echo "rsync error : Partial transfer due to error" 
     600return;; 
     60124) echo "rsync error : Partial transfer due to vanished source files" 
     602return;; 
     60330) echo "rsync error : Timeout in data send/receive " 
     604return;; 
     605*)  echo "rsync error : return code of rsync unknown :" $RET 
     606return;; 
     607esac 
     608else 
     609echo "unknown language $MYLANG." 
     610return 
     611fi 
     612} 
     613 
    610614#D-#================================================== 
    611615#D-function IGCM_sys_Cp 
     
    614618#D- 
    615619function IGCM_sys_Cp { 
    616     IGCM_debug_PushStack "IGCM_sys_Cp" $@ 
    617     if ( $DEBUG_sys ) ; then 
    618         echo "IGCM_sys_Cp :" $@ 
    619     fi 
    620  
    621     typeset RET 
    622  
    623     echo cp $@ > out_rsync 2>&1 
    624     \cp $@ >> out_rsync 2>&1 
    625     RET=$? 
    626  
    627     if [ ${RET} -gt 0 ] ; then 
    628         echo "IGCM_sys_Cp : error." 
    629         cat out_rsync 
    630         IGCM_debug_Exit "IGCM_sys_Cp" 
    631     fi 
    632     IGCM_debug_PopStack "IGCM_sys_Cp" 
     620  IGCM_debug_PushStack "IGCM_sys_Cp" $@ 
     621  if ( $DEBUG_sys ) ; then 
     622    echo "IGCM_sys_Cp :" $@ 
     623  fi 
     624 
     625  typeset RET 
     626 
     627  echo cp $@ > out_rsync 2>&1 
     628  \cp $@ >> out_rsync 2>&1 
     629  RET=$? 
     630 
     631  if [ ${RET} -gt 0 ] ; then 
     632    echo "IGCM_sys_Cp : error." 
     633    cat out_rsync 
     634    IGCM_debug_Exit "IGCM_sys_Cp" 
     635  fi 
     636  IGCM_debug_PopStack "IGCM_sys_Cp" 
    633637} 
    634638 
     
    639643#D- 
    640644function IGCM_sys_Rm { 
    641     IGCM_debug_PushStack "IGCM_sys_Rm" -- $@ 
    642     if ( $DEBUG_sys ) ; then 
    643         echo "IGCM_sys_Rm :" $@ 
    644     fi 
    645  
    646     typeset RET 
    647  
    648     echo rm $@ > out_rsync 2>&1 
    649     \rm $@ >> out_rsync 2>&1 
    650     RET=$? 
    651  
    652     if [ ${RET} -gt 0 ] ; then 
    653         echo "IGCM_sys_Rm : error." 
    654         cat out_rsync 
    655         IGCM_debug_Exit "IGCM_sys_Rm" 
    656     fi 
    657     IGCM_debug_PopStack "IGCM_sys_Rm" 
     645  IGCM_debug_PushStack "IGCM_sys_Rm" -- $@ 
     646  if ( $DEBUG_sys ) ; then 
     647    echo "IGCM_sys_Rm :" $@ 
     648  fi 
     649 
     650  typeset RET 
     651 
     652  echo rm $@ > out_rsync 2>&1 
     653  \rm $@ >> out_rsync 2>&1 
     654  RET=$? 
     655 
     656  if [ ${RET} -gt 0 ] ; then 
     657    echo "IGCM_sys_Rm : error." 
     658    cat out_rsync 
     659    IGCM_debug_Exit "IGCM_sys_Rm" 
     660  fi 
     661  IGCM_debug_PopStack "IGCM_sys_Rm" 
    658662} 
    659663 
     
    665669#D- 
    666670function IGCM_sys_RmRunDir { 
    667     IGCM_debug_PushStack "IGCM_sys_RmRunDir" -- $@ 
    668     if ( $DEBUG_sys ) ; then 
    669         echo "IGCM_sys_RmRunDir :" $@ 
    670         echo "Dummy call, let the scheduler do that." 
    671     fi 
    672     IGCM_debug_PopStack "IGCM_sys_RmRunDir" 
     671  IGCM_debug_PushStack "IGCM_sys_RmRunDir" -- $@ 
     672  if ( $DEBUG_sys ) ; then 
     673    echo "IGCM_sys_RmRunDir :" $@ 
     674    echo "Dummy call, let the scheduler do that." 
     675  fi 
     676  IGCM_debug_PopStack "IGCM_sys_RmRunDir" 
    673677} 
    674678 
     
    679683#D- 
    680684function IGCM_sys_Mv { 
    681     IGCM_debug_PushStack "IGCM_sys_Mv" $@ 
    682     if ( $DEBUG_sys ) ; then 
    683         echo "IGCM_sys_Mv :" $@ 
    684     fi 
    685  
    686     if [ $DRYRUN = 0 ]; then 
    687  
    688         typeset RET 
    689              
    690         echo mv $@ > out_rsync 2>&1 
    691         \mv $@ >> out_rsync 2>&1 
    692         RET=$? 
    693      
    694         if [ ${RET} -gt 0 ] ; then 
    695             echo "IGCM_sys_Mv : error in mv." 
    696             cat out_rsync 
    697             IGCM_debug_Exit "IGCM_sys_Mv" 
    698         fi 
    699     else 
    700         ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
    701     fi 
    702  
    703     IGCM_debug_PopStack "IGCM_sys_Mv" 
     685  IGCM_debug_PushStack "IGCM_sys_Mv" $@ 
     686  if ( $DEBUG_sys ) ; then 
     687    echo "IGCM_sys_Mv :" $@ 
     688  fi 
     689 
     690  if [ $DRYRUN = 0 ]; then 
     691 
     692    typeset RET 
     693 
     694    echo mv $@ > out_rsync 2>&1 
     695    \mv $@ >> out_rsync 2>&1 
     696    RET=$? 
     697 
     698    if [ ${RET} -gt 0 ] ; then 
     699      echo "IGCM_sys_Mv : error in mv." 
     700      cat out_rsync 
     701      IGCM_debug_Exit "IGCM_sys_Mv" 
     702    fi 
     703  else 
     704    ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
     705  fi 
     706 
     707  IGCM_debug_PopStack "IGCM_sys_Mv" 
    704708} 
    705709 
     
    710714#D- 
    711715function IGCM_sys_Put_Dir { 
    712     IGCM_debug_PushStack "IGCM_sys_Put_Dir" $@ 
    713     if ( $DEBUG_sys ) ; then 
    714         echo "IGCM_sys_Put_Dir :" $@ 
    715     fi 
    716     if [ $DRYRUN = 0 ]; then 
    717         if [ ! -d ${1} ] ; then 
    718             echo "WARNING : IGCM_sys_Put_Dir ${1} DOES NOT EXIST ." 
    719             IGCM_debug_PopStack "IGCM_sys_Put_Dir" 
    720             return 
    721         fi 
    722  
    723         typeset RET 
    724  
    725         # Only if we use rsync 
    726         #IGCM_sys_TestDirArchive $( dirname $2 ) 
    727         # 
    728         #USUAL WAY 
    729         rcp -r $1 gaya:$2 > out_rsync 2>&1 
    730         RET=$? 
    731  
    732         if [ ${RET} -gt 0 ] ; then 
    733             echo "IGCM_sys_Put_Dir : error." 
    734             cat out_rsync 
    735             IGCM_debug_Exit "IGCM_sys_Put_Dir" 
    736         fi 
    737  
    738         # due to rcommand latency 
    739         sleep 10 
    740  
    741     else 
    742         ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
    743     fi 
    744     IGCM_debug_PopStack "IGCM_sys_Put_Dir" 
     716  IGCM_debug_PushStack "IGCM_sys_Put_Dir" $@ 
     717  if ( $DEBUG_sys ) ; then 
     718    echo "IGCM_sys_Put_Dir :" $@ 
     719  fi 
     720  if [ $DRYRUN = 0 ]; then 
     721    if [ ! -d ${1} ] ; then 
     722      echo "WARNING : IGCM_sys_Put_Dir ${1} DOES NOT EXIST ." 
     723      IGCM_debug_PopStack "IGCM_sys_Put_Dir" 
     724      return 
     725    fi 
     726 
     727    typeset RET 
     728 
     729        # Only if we use rsync 
     730        #IGCM_sys_TestDirArchive $( dirname $2 ) 
     731        # 
     732        #USUAL WAY 
     733    rcp -r $1 gaya:$2 > out_rsync 2>&1 
     734    RET=$? 
     735 
     736    if [ ${RET} -gt 0 ] ; then 
     737      echo "IGCM_sys_Put_Dir : error." 
     738      cat out_rsync 
     739      IGCM_debug_Exit "IGCM_sys_Put_Dir" 
     740    fi 
     741 
     742        # due to rcommand latency 
     743    sleep 10 
     744 
     745  else 
     746    ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
     747  fi 
     748  IGCM_debug_PopStack "IGCM_sys_Put_Dir" 
    745749} 
    746750 
     
    751755#D- 
    752756function IGCM_sys_Get_Dir { 
    753     IGCM_debug_PushStack "IGCM_sys_Get_Dir" $@ 
    754     if ( $DEBUG_sys ) ; then 
    755         echo "IGCM_sys_Get_Dir :" $@ 
    756     fi 
    757     if [ $DRYRUN = 0 ]; then 
     757  IGCM_debug_PushStack "IGCM_sys_Get_Dir" $@ 
     758  if ( $DEBUG_sys ) ; then 
     759    echo "IGCM_sys_Get_Dir :" $@ 
     760  fi 
     761  if [ $DRYRUN = 0 ]; then 
    758762#       if [ ! -d ${1} ] ; then 
    759 #           echo "WARNING : IGCM_sys_Get_Dir ${1} DOES NOT EXIST ." 
    760 #           IGCM_debug_PopStack "IGCM_sys_Get_Dir" 
    761 #           return 
     763#           echo "WARNING : IGCM_sys_Get_Dir ${1} DOES NOT EXIST ." 
     764#           IGCM_debug_PopStack "IGCM_sys_Get_Dir" 
     765#           return 
    762766#       fi 
    763767 
    764         typeset RET 
    765  
    766         #USUAL WAY 
    767         rcp -rp gaya:$1 $2 > out_rsync 2>&1 
    768         RET=$? 
    769  
    770         if [ ${RET} -gt 0 ] ; then 
    771             echo "IGCM_sys_Get_Dir : error." 
    772             cat out_rsync 
    773             IGCM_debug_Exit "IGCM_sys_Get_Dir" 
    774         fi 
    775     else 
    776         ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
    777     fi 
    778     IGCM_debug_PopStack "IGCM_sys_Get_Dir" 
     768    typeset RET 
     769 
     770        #USUAL WAY 
     771    rcp -rp gaya:$1 $2 > out_rsync 2>&1 
     772    RET=$? 
     773 
     774    if [ ${RET} -gt 0 ] ; then 
     775      echo "IGCM_sys_Get_Dir : error." 
     776      cat out_rsync 
     777      IGCM_debug_Exit "IGCM_sys_Get_Dir" 
     778    fi 
     779  else 
     780    ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
     781  fi 
     782  IGCM_debug_PopStack "IGCM_sys_Get_Dir" 
    779783} 
    780784 
     
    785789#D- 
    786790function IGCM_sys_Get_Master { 
    787     IGCM_debug_PushStack "IGCM_sys_Get_Master" $@ 
    788     if ( $DEBUG_sys ) ; then 
    789         echo "IGCM_sys_Get_Master :" $@ 
    790     fi 
    791     if [ $DRYRUN = 0 ]; then 
    792         TEST=$( IGCM_sys_RshMaster [ -d $1 ] && echo 1 || echo 0 ) 
    793         if [ ${TEST} -ne 1 ] ; then 
    794             echo "WARNING : IGCM_sys_Get_Master ${1} DOES NOT EXIST ON ${MASTER}." 
    795             IGCM_debug_PopStack "IGCM_sys_Get_Master" 
    796             return 
    797         fi 
    798  
    799         typeset RET 
    800  
    801         #USUAL WAY 
    802         rcp -r ${MASTER}:$1 $2 > out_rsync 2>&1 
    803         RET=$? 
    804  
    805         if [ ${RET} -gt 0 ] ; then 
    806             echo "IGCM_sys_Get_Master : error." 
    807             cat out_rsync 
    808             IGCM_debug_Exit "IGCM_sys_Get_Master" 
    809         fi 
    810     else 
    811         ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
    812     fi 
    813     IGCM_debug_PopStack "IGCM_sys_Get_Master" 
     791  IGCM_debug_PushStack "IGCM_sys_Get_Master" $@ 
     792  if ( $DEBUG_sys ) ; then 
     793    echo "IGCM_sys_Get_Master :" $@ 
     794  fi 
     795  if [ $DRYRUN = 0 ]; then 
     796    TEST=$( IGCM_sys_RshMaster [ -d $1 ] && echo 1 || echo 0 ) 
     797    if [ ${TEST} -ne 1 ] ; then 
     798      echo "WARNING : IGCM_sys_Get_Master ${1} DOES NOT EXIST ON ${MASTER}." 
     799      IGCM_debug_PopStack "IGCM_sys_Get_Master" 
     800      return 
     801    fi 
     802 
     803    typeset RET 
     804 
     805        #USUAL WAY 
     806    rcp -r ${MASTER}:$1 $2 > out_rsync 2>&1 
     807    RET=$? 
     808 
     809    if [ ${RET} -gt 0 ] ; then 
     810      echo "IGCM_sys_Get_Master : error." 
     811      cat out_rsync 
     812      IGCM_debug_Exit "IGCM_sys_Get_Master" 
     813    fi 
     814  else 
     815    ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
     816  fi 
     817  IGCM_debug_PopStack "IGCM_sys_Get_Master" 
    814818} 
    815819 
     
    820824#D- 
    821825function IGCM_sys_Put_Out { 
    822     IGCM_debug_PushStack "IGCM_sys_Put_Out" $@ 
    823     if ( $DEBUG_sys ) ; then 
    824         echo "IGCM_sys_Put_Out :" $@ 
    825     fi 
    826     if [ $DRYRUN = 0 ]; then 
    827         if [ ! -f ${1} ] ; then 
    828             echo "WARNING : IGCM_sys_Put_Out ${1} DOES NOT EXIST ." 
    829             IGCM_debug_PopStack "IGCM_sys_Put_Out" 
    830             return 1 
    831         fi 
    832  
    833         typeset RET 
    834         # 
    835         if [ X${JobType} = XRUN ] ; then 
    836             if [ X${3} = X ] ; then 
    837                 IGCM_sys_Chmod 444 ${1} 
    838             fi 
    839         fi 
    840         # 
    841         # 
    842         # USUAL WAY 
    843         mfput $1 $2 > out_rsync 2>&1 
    844         RET=$? 
    845  
    846 #       #RSYNC WITH NETWORK RSH CALL 
    847 #       echo ${RSYNC} ${RSYNC_opt} --rsync-path=${REMOTE_RSYNC} -e rsh ${RUN_DIR}/$1 ${RHOST}:${2} > out_rsync 2>&1 
    848 #       ${RSYNC} ${RSYNC_opt} --rsync-path=${REMOTE_RSYNC} -e rsh ${RUN_DIR}/$1 ${RHOST}:${2} >> out_rsync 2>&1 
    849  
    850      #RSYNC WITH NFS USE 
    851      echo ${RSYNC} ${RSYNC_opt} ${RUN_DIR}/$1 ${2} > out_rsync 2>&1 
    852      ${RSYNC} ${RSYNC_opt} ${RUN_DIR}/$1 ${2} >> out_rsync 2>&1 
    853  
    854      RET=$? 
    855      IGCM_sys_Rsync_out $RET 
    856  
    857      ${libIGCM}/libIGCM_sys/IGCM_analyse_rsync_out.awk out_rsync 
    858      (( RET=RET+$? )) 
    859  
    860         if [ ${RET} -gt 0 ] ; then 
    861             echo "IGCM_sys_Put_Out : error." 
    862             cat out_rsync 
    863             IGCM_debug_Print 1 "mfput failed. Make a second try :" 
    864             # 
    865             mfput $1 $2 > out_rsync 2>&1 
    866             RET=$? 
    867             # 
    868             if [ ${RET} -gt 0 ] ; then 
    869                 echo "IGCM_sys_Put_Out : error." 
    870                 IGCM_debug_Print 1 "mfput failed twice. You have a problem" 
    871                 cat out_rsync 
    872                 IGCM_debug_Exit "IGCM_sys_Put_Out" 
    873             fi 
    874         fi 
    875     else 
    876         ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
    877     fi 
    878     IGCM_debug_PopStack "IGCM_sys_Put_Out" 
    879     return 0 
     826  IGCM_debug_PushStack "IGCM_sys_Put_Out" $@ 
     827  if ( $DEBUG_sys ) ; then 
     828    echo "IGCM_sys_Put_Out :" $@ 
     829  fi 
     830  if [ $DRYRUN = 0 ]; then 
     831    if [ ! -f ${1} ] ; then 
     832      echo "WARNING : IGCM_sys_Put_Out ${1} DOES NOT EXIST ." 
     833      IGCM_debug_PopStack "IGCM_sys_Put_Out" 
     834      return 1 
     835    fi 
     836 
     837    typeset RET 
     838        # 
     839    if [ X${JobType} = XRUN ] ; then 
     840      if [ X${3} = X ] ; then 
     841        IGCM_sys_Chmod 444 ${1} 
     842      fi 
     843    fi 
     844        # 
     845        # 
     846        # USUAL WAY 
     847    mfput $1 $2 > out_rsync 2>&1 
     848    RET=$? 
     849 
     850#       #RSYNC WITH NETWORK RSH CALL 
     851#       echo ${RSYNC} ${RSYNC_opt} --rsync-path=${REMOTE_RSYNC} -e rsh ${RUN_DIR}/$1 ${RHOST}:${2} > out_rsync 2>&1 
     852#       ${RSYNC} ${RSYNC_opt} --rsync-path=${REMOTE_RSYNC} -e rsh ${RUN_DIR}/$1 ${RHOST}:${2} >> out_rsync 2>&1 
     853 
     854     #RSYNC WITH NFS USE 
     855     echo ${RSYNC} ${RSYNC_opt} ${RUN_DIR}/$1 ${2} > out_rsync 2>&1 
     856     ${RSYNC} ${RSYNC_opt} ${RUN_DIR}/$1 ${2} >> out_rsync 2>&1 
     857 
     858     RET=$? 
     859     IGCM_sys_Rsync_out $RET 
     860 
     861     ${libIGCM}/libIGCM_sys/IGCM_analyse_rsync_out.awk out_rsync 
     862     (( RET=RET+$? )) 
     863 
     864    if [ ${RET} -gt 0 ] ; then 
     865      echo "IGCM_sys_Put_Out : error." 
     866      cat out_rsync 
     867      IGCM_debug_Print 1 "mfput failed. Make a second try :" 
     868            # 
     869      mfput $1 $2 > out_rsync 2>&1 
     870      RET=$? 
     871            # 
     872      if [ ${RET} -gt 0 ] ; then 
     873        echo "IGCM_sys_Put_Out : error." 
     874        IGCM_debug_Print 1 "mfput failed twice. You have a problem" 
     875        cat out_rsync 
     876        IGCM_debug_Exit "IGCM_sys_Put_Out" 
     877      fi 
     878    fi 
     879  else 
     880    ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
     881  fi 
     882  IGCM_debug_PopStack "IGCM_sys_Put_Out" 
     883  return 0 
    880884} 
    881885 
     
    886890#D-            IGCM_sys_Get /l Array_contain_myfiles /destpath/ 
    887891function IGCM_sys_Get { 
    888     IGCM_debug_PushStack "IGCM_sys_Get" $@ 
    889  
    890     typeset DEST RET dm_liste ifile target 
    891  
    892     if ( $DEBUG_sys ) ; then 
    893         echo "IGCM_sys_Get :" $@ 
    894     fi 
    895     if [ $DRYRUN -le 2 ]; then 
    896         if [ X${1} = X'/l' ] ; then 
     892  IGCM_debug_PushStack "IGCM_sys_Get" $@ 
     893 
     894  typeset DEST RET dm_liste ifile target 
     895 
     896  if ( $DEBUG_sys ) ; then 
     897    echo "IGCM_sys_Get :" $@ 
     898  fi 
     899  if [ $DRYRUN -le 2 ]; then 
     900    if [ X${1} = X'/l' ] ; then 
    897901            # test if the first file is present in the old computation : 
    898             eval set +A dm_liste \${${2}} 
    899         else 
    900             dm_liste=${1} 
    901         fi 
    902         eval DEST=\${${#}} 
    903  
    904         # test if the (first) file is present in the old computation : 
    905         IGCM_sys_TestFileArchive ${dm_liste[0]} 
    906         RET=$? 
     902      eval set +A dm_liste \${${2}} 
     903    else 
     904      dm_liste=${1} 
     905    fi 
     906    eval DEST=\${${#}} 
     907 
     908        # test if the (first) file is present in the old computation : 
     909        IGCM_sys_TestFileArchive ${dm_liste[0]} 
     910        RET=$? 
    907911        if [ ${RET} -gt 0 ] ; then 
    908             echo "IGCM_sys_Get, ERROR : regular file ${dm_liste[0]} DOES NOT EXIST ." 
    909             IGCM_debug_Exit "IGCM_sys_Get" 
    910             #IGCM_debug_PopStack "IGCM_sys_Get" 
    911             #return 
    912         fi 
    913  
    914         # SD : dm_liste is not suited for computing job 
    915         #      because we change filename during transfert 
    916         #      dm_liste is better suited for post-treatment 
    917         # SD : dm_liste necessary only with RSYNC 
    918  
    919         #dm_liste=" " 
    920         #(( ifile=1 )) 
    921         #while [ $ifile -lt $# ] ; do 
    922         #    dm_liste=$( eval echo ${dm_liste[*]} " "\${${ifile}} ) 
    923         #    (( ifile = ifile + 1 )) 
    924         #done 
    925         #DEST=$( eval echo \${${#}} ) 
    926  
    927         #USUAL WAY 
    928         mfget ${dm_liste[*]} ${DEST} > out_rsync 2>&1 
    929  
    930 #       #RSYNC WITH NETWORK RSH CALL 
    931 #       echo ${RSYNC} ${RSYNC_opt} --rsync-path=${REMOTE_RSYNC} -e rsh ${RHOST}:"${dm_liste}" ${RHOST}:${RUN_DIR}/${DEST} > out_rsync 2>&1 
    932 #       ${RSYNC} ${RSYNC_opt} --rsync-path=${REMOTE_RSYNC} -e rsh ${RHOST}:"${dm_liste}" ${RHOST}:${RUN_DIR}/${DEST} >> out_rsync 2>&1 
    933  
    934      #RSYNC WITH NFS USE 
    935      echo ${RSYNC} ${RSYNC_opt} ${dm_liste} ${RUN_DIR}/${DEST} > out_rsync 2>&1 
    936      ${RSYNC} ${RSYNC_opt} ${dm_liste} ${RUN_DIR}/${DEST} >> out_rsync 2>&1 
    937  
    938 #       RET=$? 
    939      IGCM_sys_Rsync_out $RET 
    940  
    941      ${libIGCM}/libIGCM_sys/IGCM_analyse_rsync_out.awk out_rsync 
    942      (( RET=RET+$? )) 
    943  
    944     else 
    945         ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
    946     fi 
    947     IGCM_debug_PopStack "IGCM_sys_Get" 
    948 } 
     912          echo "IGCM_sys_Get, ERROR : regular file ${dm_liste[0]} DOES NOT EXIST ." 
     913          IGCM_debug_Exit "IGCM_sys_Get" 
     914            #IGCM_debug_PopStack "IGCM_sys_Get" 
     915            #return 
     916        fi 
     917 
     918        # SD : dm_liste is not suited for computing job 
     919        #      because we change filename during transfert 
     920        #      dm_liste is better suited for post-treatment 
     921        # SD : dm_liste necessary only with RSYNC 
     922 
     923        #dm_liste=" " 
     924        #(( ifile=1 )) 
     925        #while [ $ifile -lt $# ] ; do 
     926        #    dm_liste=$( eval echo ${dm_liste[*]} " "\${${ifile}} ) 
     927        #    (( ifile = ifile + 1 )) 
     928        #done 
     929        #DEST=$( eval echo \${${#}} ) 
     930 
     931        #USUAL WAY 
     932        mfget ${dm_liste[*]} ${DEST} > out_rsync 2>&1 
     933 
     934#       #RSYNC WITH NETWORK RSH CALL 
     935#       echo ${RSYNC} ${RSYNC_opt} --rsync-path=${REMOTE_RSYNC} -e rsh ${RHOST}:"${dm_liste}" ${RHOST}:${RUN_DIR}/${DEST} > out_rsync 2>&1 
     936#       ${RSYNC} ${RSYNC_opt} --rsync-path=${REMOTE_RSYNC} -e rsh ${RHOST}:"${dm_liste}" ${RHOST}:${RUN_DIR}/${DEST} >> out_rsync 2>&1 
     937 
     938     #RSYNC WITH NFS USE 
     939     echo ${RSYNC} ${RSYNC_opt} ${dm_liste} ${RUN_DIR}/${DEST} > out_rsync 2>&1 
     940     ${RSYNC} ${RSYNC_opt} ${dm_liste} ${RUN_DIR}/${DEST} >> out_rsync 2>&1 
     941 
     942#       RET=$? 
     943     IGCM_sys_Rsync_out $RET 
     944 
     945     ${libIGCM}/libIGCM_sys/IGCM_analyse_rsync_out.awk out_rsync 
     946     (( RET=RET+$? )) 
     947 
     948  else 
     949    ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
     950  fi 
     951  IGCM_debug_PopStack "IGCM_sys_Get" 
     952      } 
    949953 
    950954#D-#================================================== 
     
    953957#D-* Examples: 
    954958#D- 
    955 function IGCM_sys_Put_Dods { 
    956     IGCM_debug_PushStack "IGCM_sys_Put_Dods" $@ 
    957     if ( $DEBUG_sys ) ; then 
    958         echo "IGCM_sys_Put_Dods :" $@ 
    959     fi 
    960     if [ $DRYRUN = 0 ]; then 
    961         # We take our time on that 
    962         sleep 10 
    963         IGCM_sys_TestDirArchive ${R_SAVE}/${1}  
    964         if [ $? != 0 ] ; then 
    965             echo "WARNING : IGCM_sys_Put_Dods ${R_SAVE}/${1} DOES NOT EXIST ." 
    966             IGCM_debug_PopStack "IGCM_sys_Put_Dods" 
    967             return 
    968         fi 
    969  
    970         typeset RET 
    971         # 
    972         rsh gaya exec /bin/ksh <<EOF 
    973         cd ${R_SAVE} 
    974         /usr/local/bin/dods_rm DODS/pub/${LOGIN}/${R_DODS}/${1} > /dev/null 2>&1 
    975         /bin/chmod -R u+w ${R_SAVE}/${1} 
    976         /usr/local/bin/dods_cp ${1} DODS/pub/${LOGIN}/${R_DODS} > /dev/null 2>&1 
    977         /bin/chmod -R +rX ${R_SAVE}/${1} 
    978         /bin/chmod -R u+w ${R_SAVE}/${1} 
    979 EOF 
    980         RET=$? 
    981  
    982         if [ ${RET} -gt 0 ] ; then 
    983             echo "IGCM_sys_Put_Dods : error." 
    984             IGCM_debug_Exit "IGCM_sys_Put_Dods" 
    985         fi 
    986     else 
    987         ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
    988     fi 
    989     IGCM_debug_PopStack "IGCM_sys_Put_Dods" 
    990 } 
     959      function IGCM_sys_Put_Dods { 
     960        IGCM_debug_PushStack "IGCM_sys_Put_Dods" $@ 
     961        if ( $DEBUG_sys ) ; then 
     962          echo "IGCM_sys_Put_Dods :" $@ 
     963        fi 
     964        if [ $DRYRUN = 0 ]; then 
     965        # We take our time on that 
     966          sleep 10 
     967          IGCM_sys_TestDirArchive ${R_SAVE}/${1} 
     968          if [ $? != 0 ] ; then 
     969            echo "WARNING : IGCM_sys_Put_Dods ${R_SAVE}/${1} DOES NOT EXIST ." 
     970            IGCM_debug_PopStack "IGCM_sys_Put_Dods" 
     971            return 
     972          fi 
     973 
     974          typeset RET 
     975        # 
     976          rsh gaya exec /bin/ksh <<EOF 
     977          cd ${R_SAVE} 
     978          /usr/local/bin/dods_rm DODS/pub/${LOGIN}/${R_DODS}/${1} > /dev/null 2>&1 
     979          /bin/chmod -R u+w ${R_SAVE}/${1} 
     980          /usr/local/bin/dods_cp ${1} DODS/pub/${LOGIN}/${R_DODS} > /dev/null 2>&1 
     981          /bin/chmod -R +rX ${R_SAVE}/${1} 
     982          /bin/chmod -R u+w ${R_SAVE}/${1} 
     983          EOF 
     984          RET=$? 
     985 
     986          if [ ${RET} -gt 0 ] ; then 
     987            echo "IGCM_sys_Put_Dods : error." 
     988            IGCM_debug_Exit "IGCM_sys_Put_Dods" 
     989          fi 
     990        else 
     991          ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
     992        fi 
     993        IGCM_debug_PopStack "IGCM_sys_Put_Dods" 
     994      } 
    991995 
    992996############################################################## A FINIR !! 
     
    9971001#D-* Examples: 
    9981002#D- 
    999 function IGCM_sys_GetDate_FichWork { 
    1000     IGCM_debug_PushStack "IGCM_sys_FichWork" $@ 
    1001     if ( $DEBUG_sys ) ; then 
    1002         echo "IGCM_sys_GetDate_FichWork :" $@ 
    1003     fi 
     1003      function IGCM_sys_GetDate_FichWork { 
     1004        IGCM_debug_PushStack "IGCM_sys_FichWork" $@ 
     1005        if ( $DEBUG_sys ) ; then 
     1006          echo "IGCM_sys_GetDate_FichWork :" $@ 
     1007        fi 
    10041008    # donne la date filesys d'un fichier sur la machine work 
    1005     IGCM_debug_PopStack "IGCM_sys_FichWork" 
    1006 } 
     1009        IGCM_debug_PopStack "IGCM_sys_FichWork" 
     1010      } 
    10071011 
    10081012#D-#================================================== 
    10091013#D-function IGCM_sys_GetDate_FichArchive 
    1010 #D-* Purpose: donne la date filesys d'un fichier sur le filesystem ARCHIVE  
    1011 #D-* Examples: 
    1012 #D- 
    1013 function IGCM_sys_GetDate_FichArchive { 
    1014     IGCM_debug_PushStack "IGCM_sys_FichArchive" $@ 
    1015     if ( $DEBUG_sys ) ; then 
    1016         echo "IGCM_sys_GetDate_FichArchive :" $@ 
    1017     fi 
    1018     IGCM_debug_PopStack "IGCM_sys_FichArchive" 
    1019 } 
     1014#D-* Purpose: donne la date filesys d'un fichier sur le filesystem ARCHIVE 
     1015#D-* Examples: 
     1016#D- 
     1017      function IGCM_sys_GetDate_FichArchive { 
     1018        IGCM_debug_PushStack "IGCM_sys_FichArchive" $@ 
     1019        if ( $DEBUG_sys ) ; then 
     1020          echo "IGCM_sys_GetDate_FichArchive :" $@ 
     1021        fi 
     1022        IGCM_debug_PopStack "IGCM_sys_FichArchive" 
     1023      } 
    10201024 
    10211025############################################################## 
    10221026# REBUILD OPERATOR 
    10231027 
    1024 function IGCM_sys_rebuild { 
    1025     IGCM_debug_PushStack "IGCM_sys_rebuild" -- $@ 
    1026     if ( $DEBUG_sys ) ; then 
    1027         echo "IGCM_sys_rebuild :" $@ 
    1028     fi 
    1029     /home/rech/psl/rpsl035/bin/rebuild -f -o $@ 
    1030     if [ $? -gt 0 ] ; then 
    1031        echo "IGCM_sys_rebuild : erreur ${@}." 
    1032        IGCM_debug_Exit "rebuild" 
    1033     fi 
    1034  
    1035     IGCM_debug_PopStack "IGCM_sys_rebuild" 
    1036 } 
     1028      function IGCM_sys_rebuild { 
     1029        IGCM_debug_PushStack "IGCM_sys_rebuild" -- $@ 
     1030        if ( $DEBUG_sys ) ; then 
     1031          echo "IGCM_sys_rebuild :" $@ 
     1032        fi 
     1033        /home/rech/psl/rpsl035/bin/rebuild -f -o $@ 
     1034        if [ $? -gt 0 ] ; then 
     1035          echo "IGCM_sys_rebuild : erreur ${@}." 
     1036          IGCM_debug_Exit "rebuild" 
     1037        fi 
     1038 
     1039        IGCM_debug_PopStack "IGCM_sys_rebuild" 
     1040      } 
    10371041############################################################## 
    10381042# NCO OPERATOR 
    10391043 
    1040 function IGCM_sys_ncap2 { 
    1041     IGCM_debug_PushStack "IGCM_sys_ncap2" -- $@ 
    1042     if ( $DEBUG_sys ) ; then 
    1043         echo "IGCM_sys_ncap2 :" $@ 
    1044     fi 
    1045     ncap2 "$@" 
    1046     if [ $? -gt 0 ] ; then 
    1047        echo "IGCM_sys_ncap2 : erreur ${@}." 
    1048        IGCM_debug_Exit "ncap2" 
    1049     fi 
    1050  
    1051     IGCM_debug_PopStack "IGCM_sys_ncap2" 
    1052 } 
    1053  
    1054 function IGCM_sys_ncatted { 
    1055     IGCM_debug_PushStack "IGCM_sys_ncatted" -- $@ 
    1056     if ( $DEBUG_sys ) ; then 
    1057         echo "IGCM_sys_ncatted :" $@ 
    1058     fi 
    1059     ncatted "$@" 
    1060     if [ $? -gt 0 ] ; then 
    1061        echo "IGCM_sys_ncatted : erreur ${@}." 
    1062        IGCM_debug_Exit "ncatted" 
    1063     fi 
    1064  
    1065     IGCM_debug_PopStack "IGCM_sys_ncatted" 
    1066 } 
    1067  
    1068 function IGCM_sys_ncbo { 
    1069     IGCM_debug_PushStack "IGCM_sys_ncbo" -- $@ 
    1070     if ( $DEBUG_sys ) ; then 
    1071         echo "IGCM_sys_ncbo :" $@ 
    1072     fi 
    1073     ncbo $@ 
    1074     if [ $? -gt 0 ] ; then 
    1075        echo "IGCM_sys_ncbo : erreur ${@}." 
    1076        IGCM_debug_Exit "ncbo" 
    1077     fi 
    1078  
    1079     IGCM_debug_PopStack "IGCM_sys_ncbo" 
    1080 } 
    1081  
    1082 function IGCM_sys_ncdiff { 
    1083     IGCM_debug_PushStack "IGCM_sys_ncdiff" -- $@ 
    1084     if ( $DEBUG_sys ) ; then 
    1085         echo "IGCM_sys_ncdiff :" $@ 
    1086     fi 
    1087     ncdiff $@ 
    1088     if [ $? -gt 0 ] ; then 
    1089        echo "IGCM_sys_ncdiff : erreur ${@}." 
    1090        IGCM_debug_Exit "ncdiff" 
    1091     fi 
    1092  
    1093     IGCM_debug_PopStack "IGCM_sys_ncdiff" 
    1094 } 
    1095  
    1096 function IGCM_sys_ncea { 
    1097     IGCM_debug_PushStack "IGCM_sys_ncea" -- $@ 
    1098     if ( $DEBUG_sys ) ; then 
    1099         echo "IGCM_sys_ncea :" $@ 
    1100     fi 
    1101     ncea $@ 
    1102     if [ $? -gt 0 ] ; then 
    1103        echo "IGCM_sys_ncea : erreur ${@}." 
    1104        IGCM_debug_Exit "ncea" 
    1105     fi 
    1106  
    1107     IGCM_debug_PopStack "IGCM_sys_ncea" 
    1108 } 
    1109  
    1110 function IGCM_sys_ncecat { 
    1111     IGCM_debug_PushStack "IGCM_sys_ncecat" -- $@ 
    1112     if ( $DEBUG_sys ) ; then 
    1113         echo "IGCM_sys_ncecat :" $@ 
    1114     fi 
    1115     ncecat $@ 
    1116     if [ $? -gt 0 ] ; then 
    1117        echo "IGCM_sys_ncecat : erreur ${@}." 
    1118        IGCM_debug_Exit "ncecat" 
    1119     fi 
    1120  
    1121     IGCM_debug_PopStack "IGCM_sys_ncecat" 
    1122 } 
    1123  
    1124 function IGCM_sys_ncflint { 
    1125     IGCM_debug_PushStack "IGCM_sys_ncflint" -- $@ 
    1126     if ( $DEBUG_sys ) ; then 
    1127         echo "IGCM_sys_ncflint :" $@ 
    1128     fi 
    1129     ncflint $@ 
    1130     if [ $? -gt 0 ] ; then 
    1131        echo "IGCM_sys_ncflint : erreur ${@}." 
    1132        IGCM_debug_Exit "ncflint" 
    1133     fi 
    1134  
    1135     IGCM_debug_PopStack "IGCM_sys_ncflint" 
    1136 } 
    1137  
    1138 function IGCM_sys_ncks { 
    1139     IGCM_debug_PushStack "IGCM_sys_ncks" -- $@ 
    1140     if ( $DEBUG_sys ) ; then 
    1141         echo "IGCM_sys_ncks :" $@ 
    1142     fi 
    1143     ncks $@ 
    1144     if [ $? -gt 0 ] ; then 
    1145        echo "IGCM_sys_ncks : erreur ${@}." 
    1146        IGCM_debug_Exit "ncks" 
    1147     fi 
    1148  
    1149     IGCM_debug_PopStack "IGCM_sys_ncks" 
    1150 } 
    1151  
    1152 function IGCM_sys_ncpdq { 
    1153     IGCM_debug_PushStack "IGCM_sys_ncpdq" -- $@ 
    1154     if ( $DEBUG_sys ) ; then 
    1155         echo "IGCM_sys_ncpdq :" $@ 
    1156     fi 
    1157     ncpdq $@ 
    1158     if [ $? -gt 0 ] ; then 
    1159        echo "IGCM_sys_ncpdq : erreur ${@}." 
    1160        IGCM_debug_Exit "ncpdq" 
    1161     fi 
    1162  
    1163     IGCM_debug_PopStack "IGCM_sys_ncpdq" 
    1164 } 
    1165  
    1166 function IGCM_sys_ncra { 
    1167     IGCM_debug_PushStack "IGCM_sys_ncra" -- $@ 
    1168     if ( $DEBUG_sys ) ; then 
    1169         echo "IGCM_sys_ncra :" $@ 
    1170     fi 
    1171     ncra $@ 
    1172     if [ $? -gt 0 ] ; then 
    1173        echo "IGCM_sys_ncra : erreur ${@}." 
    1174        IGCM_debug_Exit "ncra" 
    1175     fi 
    1176  
    1177     IGCM_debug_PopStack "IGCM_sys_ncra" 
    1178 } 
    1179  
    1180 function IGCM_sys_ncrcat { 
    1181     IGCM_debug_PushStack "IGCM_sys_ncrcat" -- $@ 
    1182     if ( $DEBUG_sys ) ; then 
    1183         echo "IGCM_sys_ncrcat :" $@ 
    1184     fi 
    1185     ncrcat $@ 
    1186     if [ $? -gt 0 ] ; then 
    1187        echo "IGCM_sys_ncrcat : erreur ${@}." 
     1044      function IGCM_sys_ncap2 { 
     1045        IGCM_debug_PushStack "IGCM_sys_ncap2" -- $@ 
     1046        if ( $DEBUG_sys ) ; then 
     1047          echo "IGCM_sys_ncap2 :" $@ 
     1048        fi 
     1049        ncap2 "$@" 
     1050        if [ $? -gt 0 ] ; then 
     1051          echo "IGCM_sys_ncap2 : erreur ${@}." 
     1052          IGCM_debug_Exit "ncap2" 
     1053        fi 
     1054 
     1055        IGCM_debug_PopStack "IGCM_sys_ncap2" 
     1056      } 
     1057 
     1058      function IGCM_sys_ncatted { 
     1059        IGCM_debug_PushStack "IGCM_sys_ncatted" -- $@ 
     1060        if ( $DEBUG_sys ) ; then 
     1061          echo "IGCM_sys_ncatted :" $@ 
     1062        fi 
     1063        ncatted "$@" 
     1064        if [ $? -gt 0 ] ; then 
     1065          echo "IGCM_sys_ncatted : erreur ${@}." 
     1066          IGCM_debug_Exit "ncatted" 
     1067        fi 
     1068 
     1069        IGCM_debug_PopStack "IGCM_sys_ncatted" 
     1070      } 
     1071 
     1072      function IGCM_sys_ncbo { 
     1073        IGCM_debug_PushStack "IGCM_sys_ncbo" -- $@ 
     1074        if ( $DEBUG_sys ) ; then 
     1075          echo "IGCM_sys_ncbo :" $@ 
     1076        fi 
     1077        ncbo $@ 
     1078        if [ $? -gt 0 ] ; then 
     1079          echo "IGCM_sys_ncbo : erreur ${@}." 
     1080          IGCM_debug_Exit "ncbo" 
     1081        fi 
     1082 
     1083        IGCM_debug_PopStack "IGCM_sys_ncbo" 
     1084      } 
     1085 
     1086      function IGCM_sys_ncdiff { 
     1087        IGCM_debug_PushStack "IGCM_sys_ncdiff" -- $@ 
     1088        if ( $DEBUG_sys ) ; then 
     1089          echo "IGCM_sys_ncdiff :" $@ 
     1090        fi 
     1091        ncdiff $@ 
     1092        if [ $? -gt 0 ] ; then 
     1093          echo "IGCM_sys_ncdiff : erreur ${@}." 
     1094          IGCM_debug_Exit "ncdiff" 
     1095        fi 
     1096 
     1097        IGCM_debug_PopStack "IGCM_sys_ncdiff" 
     1098      } 
     1099 
     1100      function IGCM_sys_ncea { 
     1101        IGCM_debug_PushStack "IGCM_sys_ncea" -- $@ 
     1102        if ( $DEBUG_sys ) ; then 
     1103          echo "IGCM_sys_ncea :" $@ 
     1104        fi 
     1105        ncea $@ 
     1106        if [ $? -gt 0 ] ; then 
     1107          echo "IGCM_sys_ncea : erreur ${@}." 
     1108          IGCM_debug_Exit "ncea" 
     1109        fi 
     1110 
     1111        IGCM_debug_PopStack "IGCM_sys_ncea" 
     1112      } 
     1113 
     1114      function IGCM_sys_ncecat { 
     1115        IGCM_debug_PushStack "IGCM_sys_ncecat" -- $@ 
     1116        if ( $DEBUG_sys ) ; then 
     1117          echo "IGCM_sys_ncecat :" $@ 
     1118        fi 
     1119        ncecat $@ 
     1120        if [ $? -gt 0 ] ; then 
     1121          echo "IGCM_sys_ncecat : erreur ${@}." 
     1122          IGCM_debug_Exit "ncecat" 
     1123        fi 
     1124 
     1125        IGCM_debug_PopStack "IGCM_sys_ncecat" 
     1126      } 
     1127 
     1128      function IGCM_sys_ncflint { 
     1129        IGCM_debug_PushStack "IGCM_sys_ncflint" -- $@ 
     1130        if ( $DEBUG_sys ) ; then 
     1131          echo "IGCM_sys_ncflint :" $@ 
     1132        fi 
     1133        ncflint $@ 
     1134        if [ $? -gt 0 ] ; then 
     1135          echo "IGCM_sys_ncflint : erreur ${@}." 
     1136          IGCM_debug_Exit "ncflint" 
     1137        fi 
     1138 
     1139        IGCM_debug_PopStack "IGCM_sys_ncflint" 
     1140      } 
     1141 
     1142      function IGCM_sys_ncks { 
     1143        IGCM_debug_PushStack "IGCM_sys_ncks" -- $@ 
     1144        if ( $DEBUG_sys ) ; then 
     1145          echo "IGCM_sys_ncks :" $@ 
     1146        fi 
     1147        ncks $@ 
     1148        if [ $? -gt 0 ] ; then 
     1149          echo "IGCM_sys_ncks : erreur ${@}." 
     1150          IGCM_debug_Exit "ncks" 
     1151        fi 
     1152 
     1153        IGCM_debug_PopStack "IGCM_sys_ncks" 
     1154      } 
     1155 
     1156      function IGCM_sys_ncpdq { 
     1157        IGCM_debug_PushStack "IGCM_sys_ncpdq" -- $@ 
     1158        if ( $DEBUG_sys ) ; then 
     1159          echo "IGCM_sys_ncpdq :" $@ 
     1160        fi 
     1161        ncpdq $@ 
     1162        if [ $? -gt 0 ] ; then 
     1163          echo "IGCM_sys_ncpdq : erreur ${@}." 
     1164          IGCM_debug_Exit "ncpdq" 
     1165        fi 
     1166 
     1167        IGCM_debug_PopStack "IGCM_sys_ncpdq" 
     1168      } 
     1169 
     1170      function IGCM_sys_ncra { 
     1171        IGCM_debug_PushStack "IGCM_sys_ncra" -- $@ 
     1172        if ( $DEBUG_sys ) ; then 
     1173          echo "IGCM_sys_ncra :" $@ 
     1174        fi 
     1175        ncra $@ 
     1176        if [ $? -gt 0 ] ; then 
     1177          echo "IGCM_sys_ncra : erreur ${@}." 
     1178          IGCM_debug_Exit "ncra" 
     1179        fi 
     1180 
     1181        IGCM_debug_PopStack "IGCM_sys_ncra" 
     1182      } 
     1183 
     1184      function IGCM_sys_ncrcat { 
     1185        IGCM_debug_PushStack "IGCM_sys_ncrcat" -- $@ 
     1186        if ( $DEBUG_sys ) ; then 
     1187          echo "IGCM_sys_ncrcat :" $@ 
     1188        fi 
     1189        ncrcat $@ 
     1190        if [ $? -gt 0 ] ; then 
     1191          echo "IGCM_sys_ncrcat : erreur ${@}." 
    11881192#       IGCM_debug_Exit "ncrcat" 
    1189     fi 
    1190  
    1191     IGCM_debug_PopStack "IGCM_sys_ncrcat" 
    1192 } 
    1193  
    1194 function IGCM_sys_ncrename { 
    1195     IGCM_debug_PushStack "IGCM_sys_ncrename" -- $@ 
    1196     if ( $DEBUG_sys ) ; then 
    1197         echo "IGCM_sys_ncrename :" $@ 
    1198     fi 
    1199     ncrename $@ 
    1200     if [ $? -gt 0 ] ; then 
    1201        echo "IGCM_sys_ncrename : erreur ${@}." 
    1202        IGCM_debug_Exit "ncrename" 
    1203     fi 
    1204  
    1205     IGCM_debug_PopStack "IGCM_sys_ncrename" 
    1206 } 
    1207  
    1208 function IGCM_sys_ncwa { 
    1209     IGCM_debug_PushStack "IGCM_sys_ncwa" -- $@ 
    1210     if ( $DEBUG_sys ) ; then 
    1211         echo "IGCM_sys_ncwa :" $@ 
    1212     fi 
    1213     ncwa $@ 
    1214     if [ $? -gt 0 ] ; then 
    1215        echo "IGCM_sys_ncwa : erreur ${@}." 
    1216        IGCM_debug_Exit "ncwa" 
    1217     fi 
    1218  
    1219     IGCM_debug_PopStack "IGCM_sys_ncwa" 
    1220 } 
     1193        fi 
     1194 
     1195        IGCM_debug_PopStack "IGCM_sys_ncrcat" 
     1196      } 
     1197 
     1198      function IGCM_sys_ncrename { 
     1199        IGCM_debug_PushStack "IGCM_sys_ncrename" -- $@ 
     1200        if ( $DEBUG_sys ) ; then 
     1201          echo "IGCM_sys_ncrename :" $@ 
     1202        fi 
     1203        ncrename $@ 
     1204        if [ $? -gt 0 ] ; then 
     1205          echo "IGCM_sys_ncrename : erreur ${@}." 
     1206          IGCM_debug_Exit "ncrename" 
     1207        fi 
     1208 
     1209        IGCM_debug_PopStack "IGCM_sys_ncrename" 
     1210      } 
     1211 
     1212      function IGCM_sys_ncwa { 
     1213        IGCM_debug_PushStack "IGCM_sys_ncwa" -- $@ 
     1214        if ( $DEBUG_sys ) ; then 
     1215          echo "IGCM_sys_ncwa :" $@ 
     1216        fi 
     1217        ncwa $@ 
     1218        if [ $? -gt 0 ] ; then 
     1219          echo "IGCM_sys_ncwa : erreur ${@}." 
     1220          IGCM_debug_Exit "ncwa" 
     1221        fi 
     1222 
     1223        IGCM_debug_PopStack "IGCM_sys_ncwa" 
     1224      } 
    12211225 
    12221226############################################################## 
    12231227# CDO OPERATOR 
    12241228 
    1225 function IGCM_sys_cdo { 
    1226     IGCM_debug_PushStack "IGCM_sys_cdo" -- $@ 
    1227  
    1228     \cdo $@ 
    1229     if [ $? -gt 0 ] ; then 
    1230        echo "IGCM_sys_cdo : erreur ${@}." 
    1231        IGCM_debug_PopStack "IGCM_sys_cdo" 
    1232        return 1 
    1233     else 
    1234         IGCM_debug_PopStack "IGCM_sys_cdo" 
    1235         return 0 
    1236     fi 
    1237  
    1238     IGCM_debug_PopStack "IGCM_sys_cdo" 
    1239 } 
     1229      function IGCM_sys_cdo { 
     1230        IGCM_debug_PushStack "IGCM_sys_cdo" -- $@ 
     1231 
     1232        \cdo $@ 
     1233        if [ $? -gt 0 ] ; then 
     1234          echo "IGCM_sys_cdo : erreur ${@}." 
     1235          IGCM_debug_PopStack "IGCM_sys_cdo" 
     1236          return 1 
     1237        else 
     1238          IGCM_debug_PopStack "IGCM_sys_cdo" 
     1239          return 0 
     1240        fi 
     1241 
     1242        IGCM_debug_PopStack "IGCM_sys_cdo" 
     1243      } 
    12401244 
    12411245############################################################ 
    12421246# Activate Running Environnment Variables 
    12431247 
    1244 function IGCM_sys_activ_variables { 
    1245     IGCM_debug_PushStack "IGCM_sys_activ_variables" 
    1246     if ( $DEBUG_sys ) ; then 
    1247         echo "IGCM_sys_activ_variables" 
    1248     fi 
    1249     IGCM_debug_PopStack "IGCM_sys_activ_variables" 
    1250 } 
     1248      function IGCM_sys_activ_variables { 
     1249        IGCM_debug_PushStack "IGCM_sys_activ_variables" 
     1250        if ( $DEBUG_sys ) ; then 
     1251          echo "IGCM_sys_activ_variables" 
     1252        fi 
     1253        IGCM_debug_PopStack "IGCM_sys_activ_variables" 
     1254      } 
    12511255 
    12521256############################################################ 
    12531257# Desactivate Running Environnment Variables 
    12541258 
    1255 function IGCM_sys_desactiv_variables { 
    1256     IGCM_debug_PushStack "IGCM_sys_desactiv_variables" 
    1257     if ( $DEBUG_sys ) ; then 
    1258         echo "IGCM_sys_desactiv_variables" 
    1259     fi 
    1260     IGCM_debug_PopStack "IGCM_sys_desactiv_variables" 
    1261 } 
     1259      function IGCM_sys_desactiv_variables { 
     1260        IGCM_debug_PushStack "IGCM_sys_desactiv_variables" 
     1261        if ( $DEBUG_sys ) ; then 
     1262          echo "IGCM_sys_desactiv_variables" 
     1263        fi 
     1264        IGCM_debug_PopStack "IGCM_sys_desactiv_variables" 
     1265      } 
    12621266 
    12631267############################################################ 
    12641268# Build run file 
    12651269 
    1266 function IGCM_sys_build_run_file { 
    1267     IGCM_debug_PushStack "IGCM_sys_build_run_file" 
    1268     if ( $DEBUG_sys ) ; then 
    1269         echo "IGCM_sys_build_run_file" 
    1270     fi 
    1271     IGCM_debug_PopStack "IGCM_sys_build_run_file" 
    1272 } 
     1270      function IGCM_sys_build_run_file { 
     1271        IGCM_debug_PushStack "IGCM_sys_build_run_file" 
     1272        if ( $DEBUG_sys ) ; then 
     1273          echo "IGCM_sys_build_run_file" 
     1274        fi 
     1275        IGCM_debug_PopStack "IGCM_sys_build_run_file" 
     1276      } 
  • trunk/libIGCM/libIGCM_sys/libIGCM_sys_vargas.ksh

    r567 r619  
    1414#========================================================= 
    1515# The documentation of this file can be automatically generated 
    16 # if you use the prefix #D- for comments to be extracted.  
     16# if you use the prefix #D- for comments to be extracted. 
    1717# Extract with command: cat lib* | grep "^#D-" | cut -c "4-" 
    1818#========================================================= 
     
    2222#D-#================================================== 
    2323#D- 
    24 #D- This ksh library if a layer under some usefull  
     24#D- This ksh library if a layer under some usefull 
    2525#D-environment variables and shell commands. 
    2626#D-All those definitions depend on host particularities. 
     
    6262 
    6363#===================================================== 
    64 # Host and user names  
     64# Host and user names 
    6565# $hostname ou hostname 
    6666typeset  HOST=${HOST:=$( hostname )} 
     
    100100 
    101101#==================================================== 
    102 #- Mirror libIGCM from vargas to ulam  
     102#- Mirror libIGCM from vargas to ulam 
    103103typeset -r MirrorlibIGCM=${MirrorlibIGCM:=true} 
    104104 
     
    119119 
    120120#==================================================== 
    121 #- OUT_POST  
     121#- R_BUF  Buffer to pack files 
     122typeset -r R_BUF=${WORKDIR}/IGCM_OUT 
     123 
     124#==================================================== 
     125#- OUT_POST 
    122126typeset -r R_OUT_POST=$( echo ${HOME} | sed -e "s/homegpfs/workdir/" )/IGCM_OUT 
    123127 
     
    136140#==================================================== 
    137141#- Max number of arguments passed to nco operator or demigration command 
    138 UNIX_MAX_LIMIT=360 
     142UNIX_MAX_LIMIT=120 
     143 
     144#==================================================== 
     145#- Default number of MPI task for IPSL coupled model 
     146#- required for backward compatibility 
     147#- 
     148DEFAULT_NUM_PROC_OCE=5 
     149DEFAULT_NUM_PROC_CPL=1 
     150DEFAULT_NUM_PROC_ATM=26 
     151DEFAULT_NUM_PROC_TOTAL=32 
    139152 
    140153#D-#================================================== 
     
    145158(( RshMNum = 0 )) 
    146159function IGCM_sys_RshMaster { 
    147     IGCM_debug_PushStack "IGCM_sys_RshMaster" $@ 
    148  
    149     typeset THEFILE OUTFILE ERR 
    150  
    151     RshDIR=${WORKDIR}/RUN_DIR/${config_UserChoices_TagName}/${config_UserChoices_JobName}.${$} 
    152     if [ ! -d ${RshDIR} ] ; then 
    153         IGCM_sys_Mkdir ${RshDIR} 
    154     fi 
    155     THEFILE=${RshDIR}/file_sys_RshMaster_$$_${RshMNum} 
    156     echo '#!/bin/ksh' > ${THEFILE} 
    157     echo "export libIGCM=${libIGCM} > /dev/null 2>&1" >> ${THEFILE} 
    158     echo "export DEBUG_debug=${DEBUG_debug} > /dev/null 2>&1" >> ${THEFILE} 
    159     echo ". ${libIGCM}/libIGCM_debug/libIGCM_debug.ksh > /dev/null 2>&1" >> ${THEFILE} 
    160     echo ". ${libIGCM}/libIGCM_card/libIGCM_card.ksh > /dev/null 2>&1" >> ${THEFILE} 
    161     echo "${@} " >> ${THEFILE} 
     160  IGCM_debug_PushStack "IGCM_sys_RshMaster" $@ 
     161 
     162  typeset THEFILE OUTFILE ERR 
     163 
     164  RshDIR=${WORKDIR}/RUN_DIR/${config_UserChoices_TagName}/${config_UserChoices_JobName}.${$} 
     165  if [ ! -d ${RshDIR} ] ; then 
     166    IGCM_sys_Mkdir ${RshDIR} 
     167  fi 
     168  THEFILE=${RshDIR}/file_sys_RshMaster_$$_${RshMNum} 
     169  echo '#!/bin/ksh' > ${THEFILE} 
     170  echo "export libIGCM=${libIGCM} > /dev/null 2>&1" >> ${THEFILE} 
     171  echo "export DEBUG_debug=${DEBUG_debug} > /dev/null 2>&1" >> ${THEFILE} 
     172  echo ". ${libIGCM}/libIGCM_debug/libIGCM_debug.ksh > /dev/null 2>&1" >> ${THEFILE} 
     173  echo ". ${libIGCM}/libIGCM_card/libIGCM_card.ksh > /dev/null 2>&1" >> ${THEFILE} 
     174  echo "${@} " >> ${THEFILE} 
    162175 
    163176    # No frontend queue on brodie : just rsh the job on the frontend with submission. 
    164     sed -e "s@IGCM_sys_Qsub\(.*\)@\1@" ${THEFILE} > ${THEFILE}_ 
    165  
    166     chmod u+x  ${THEFILE}_ 
    167  
    168     OUTFILE=${RshDIR}/out_RshMaster.$$.${RshMNum} 
    169     (( RshMNum = RshMNum + 1 )) 
    170  
    171     rsh ${MASTER} 'bash -c "nohup '${THEFILE}'_ > '${OUTFILE}' 2>&1 &"' 
    172     if [ $? -gt 0 ] ; then 
    173         echo "IGCM_sys_RshMaster : erreur." 
    174         IGCM_debug_Exit "IGCM_sys_RshMaster" 
    175     fi 
    176     IGCM_debug_PopStack "IGCM_sys_RshMaster" 
     177  sed -e "s@IGCM_sys_Qsub\(.*\)@\1@" ${THEFILE} > ${THEFILE}_ 
     178 
     179  chmod u+x  ${THEFILE}_ 
     180 
     181  OUTFILE=${RshDIR}/out_RshMaster.$$.${RshMNum} 
     182  (( RshMNum = RshMNum + 1 )) 
     183 
     184  rsh ${MASTER} 'bash -c "nohup '${THEFILE}'_ > '${OUTFILE}' 2>&1 &"' 
     185  if [ $? -gt 0 ] ; then 
     186    echo "IGCM_sys_RshMaster : erreur." 
     187    IGCM_debug_Exit "IGCM_sys_RshMaster" 
     188  fi 
     189  IGCM_debug_PopStack "IGCM_sys_RshMaster" 
    177190} 
    178191 
     
    183196#D- 
    184197function IGCM_sys_RshArchive { 
    185     IGCM_debug_PushStack "IGCM_sys_RshArchive" $@ 
    186     rsh ${STOREHOST} exec /bin/ksh <<-EOF 
     198  IGCM_debug_PushStack "IGCM_sys_RshArchive" $@ 
     199  rsh ${STOREHOST} exec /bin/ksh <<-EOF 
    187200    ${@} 
    188201EOF 
    189     if [ $? -gt 0 ] ; then 
    190         echo "IGCM_sys_RshArchive : erreur." 
    191         IGCM_debug_Exit "IGCM_sys_RshArchive" 
    192     fi 
    193     IGCM_debug_PopStack "IGCM_sys_RshArchive" 
     202  if [ $? -gt 0 ] ; then 
     203    echo "IGCM_sys_RshArchive : erreur." 
     204    IGCM_debug_Exit "IGCM_sys_RshArchive" 
     205  fi 
     206  IGCM_debug_PopStack "IGCM_sys_RshArchive" 
    194207} 
    195208 
     
    200213#D- 
    201214function IGCM_sys_RshPost { 
    202     IGCM_debug_PushStack "IGCM_sys_RshPost" $@ 
    203     if ( $DEBUG_sys ) ; then 
    204         echo "IGCM_sys_RshPost :" $@ 
    205     fi 
    206  
    207     # keep standard input to keep it for postpone if ulam don't answer 
    208     cat >/tmp/tmp_IGCM_sys_RshPost_$$_${LOGIN} 
    209  
    210     ## Add submission for old postponed files only if command is a Qsub 
    211     ## 
    212     ISITQSUB=0 
    213     grep Qsub /tmp/tmp_IGCM_sys_RshPost_$$_${LOGIN} >/dev/null 2>&1 && ISITQSUB=1 
    214     if  ( [ ${ISITQSUB} -gt 0 ] ) ; then  
    215       if [ -d ${SUBMIT_DIR}/POSTPONE ] ; then 
    216             for postponed_file in ${SUBMIT_DIR}/POSTPONE/* ; do  
    217               if [ -f ${postponed_file} ] ; then 
    218                 IGCM_debug_Print 2 " submit postponed file : " ${postponed_file} 
    219                 rsh ulam exec /bin/ksh <${postponed_file} 
    220                 if [ $? -eq 0 ] ; then 
    221                      IGCM_sys_Rm ${postponed_file} 
    222                 else 
    223                      IGCM_debug_Print 2 "keep postponed file for an other submission :" ${postponed_file} 
    224                 fi 
    225               fi 
    226           done 
    227       fi 
    228     fi 
    229  
    230     RETURN=0 
    231     # rsh ulam command 
    232     rsh ulam exec /bin/ksh </tmp/tmp_IGCM_sys_RshPost_$$_${LOGIN} 
    233     RETURN=$? 
    234  
    235     # keep standard input for postpone if ulam don't answer 
    236     if ( [ ${RETURN} -gt 0 ] ) ; then 
    237         IGCM_debug_Print 2 "Postpone tmp_IGCM_sys_RshPost_$$_${LOGIN}" 
    238         [ -d ${SUBMIT_DIR}/POSTPONE ] || mkdir ${SUBMIT_DIR}/POSTPONE 
    239         mv /tmp/tmp_IGCM_sys_RshPost_$$_${LOGIN} ${SUBMIT_DIR}/POSTPONE 
    240     else 
    241         \rm /tmp/tmp_IGCM_sys_RshPost_$$_${LOGIN} 
    242     fi 
    243     IGCM_debug_PopStack "IGCM_sys_RshPost" 
     215  IGCM_debug_PushStack "IGCM_sys_RshPost" $@ 
     216  if ( $DEBUG_sys ) ; then 
     217    echo "IGCM_sys_RshPost :" $@ 
     218  fi 
     219 
     220  # keep standard input to keep it for postpone if ulam don't answer 
     221  cat >/tmp/tmp_IGCM_sys_RshPost_$$_${LOGNAME} 
     222 
     223  ## Add submission for old postponed files only if command is a Qsub 
     224  ## 
     225  ISITQSUB=0 
     226  grep Qsub /tmp/tmp_IGCM_sys_RshPost_$$_${LOGNAME} >/dev/null 2>&1 && ISITQSUB=1 
     227  if  ( [ ${ISITQSUB} -gt 0 ] ) ; then 
     228    if [ -d ${SUBMIT_DIR}/POSTPONE ] ; then 
     229      for postponed_file in ${SUBMIT_DIR}/POSTPONE/* ; do 
     230        if [ -f ${postponed_file} ] ; then 
     231          IGCM_debug_Print 2 " submit postponed file : " ${postponed_file} 
     232          rsh ulam exec /bin/ksh <${postponed_file} 
     233          if [ $? -eq 0 ] ; then 
     234            IGCM_sys_Rm ${postponed_file} 
     235          else 
     236            IGCM_debug_Print 2 "keep postponed file for an other submission :" ${postponed_file} 
     237          fi 
     238        fi 
     239      done 
     240    fi 
     241  fi 
     242 
     243  RETURN=0 
     244  # rsh ulam command 
     245  rsh ulam exec /bin/ksh </tmp/tmp_IGCM_sys_RshPost_$$_${LOGNAME} 
     246  RETURN=$? 
     247 
     248  # keep standard input for postpone if ulam don't answer 
     249  if ( [ ${RETURN} -gt 0 ] ) ; then 
     250    IGCM_debug_Print 2 "Postpone tmp_IGCM_sys_RshPost_$$_${LOGNAME}" 
     251    [ -d ${SUBMIT_DIR}/POSTPONE ] || mkdir ${SUBMIT_DIR}/POSTPONE 
     252    mv /tmp/tmp_IGCM_sys_RshPost_$$_${LOGNAME} ${SUBMIT_DIR}/POSTPONE 
     253  else 
     254    IGCM_sys_Rm /tmp/tmp_IGCM_sys_RshPost_$$_${LOGNAME} 
     255  fi 
     256  IGCM_debug_PopStack "IGCM_sys_RshPost" 
    244257} 
    245258 
     
    250263#D- 
    251264function IGCM_sys_SendMail { 
    252     IGCM_debug_PushStack "IGCM_sys_SendMail" $@ 
    253     if ( $DEBUG_sys ) ; then 
    254         echo "IGCM_sys_SendMail :" $@ 
    255     fi 
    256  
    257     if ( ${ExitFlag} ) ; then 
    258         status=failed 
    259     else 
    260         status=completed 
    261     fi 
    262     cat  << END_MAIL > job_end.mail 
     265  IGCM_debug_PushStack "IGCM_sys_SendMail" $@ 
     266  if ( $DEBUG_sys ) ; then 
     267    echo "IGCM_sys_SendMail :" $@ 
     268  fi 
     269 
     270  if ( ${ExitFlag} ) ; then 
     271    status=failed 
     272  else 
     273    status=completed 
     274  fi 
     275  cat  << END_MAIL > job_end.mail 
    263276Dear ${LOGIN}, 
    264277 
     
    270283END_MAIL 
    271284 
    272     if [ ! -z ${config_UserChoices_MailName} ] ; then 
    273         mailx -s "${config_UserChoices_JobName} ${status}" ${config_UserChoices_MailName} <  job_end.mail 
    274     elif [ -f ~/.forward ] ; then 
    275         mailx -s "${config_UserChoices_JobName} ${status}" $( cat ~/.forward ) < job_end.mail 
    276     else 
    277         mailx -s "${config_UserChoices_JobName} ${status}" ${USER} < job_end.mail 
    278     fi 
    279  
    280     if [ $? -gt 0 ] ; then 
    281         echo "IGCM_sys_SendMail : erreur." 
    282         IGCM_debug_Exit "IGCM_sys_SendMail" 
    283     fi 
    284     IGCM_debug_PopStack "IGCM_sys_SendMail" 
     285  if [ ! -z ${config_UserChoices_MailName} ] ; then 
     286    mailx -s "${config_UserChoices_JobName} ${status}" ${config_UserChoices_MailName} <  job_end.mail 
     287  elif [ -f ~/.forward ] ; then 
     288    mailx -s "${config_UserChoices_JobName} ${status}" $( cat ~/.forward ) < job_end.mail 
     289  else 
     290    mailx -s "${config_UserChoices_JobName} ${status}" ${USER} < job_end.mail 
     291  fi 
     292 
     293  if [ $? -gt 0 ] ; then 
     294    echo "IGCM_sys_SendMail : erreur." 
     295    IGCM_debug_Exit "IGCM_sys_SendMail" 
     296  fi 
     297  IGCM_debug_PopStack "IGCM_sys_SendMail" 
    285298} 
    286299 
     
    291304#D- 
    292305function IGCM_sys_Mkdir { 
    293     IGCM_debug_PushStack "IGCM_sys_Mkdir" $@ 
    294     if ( $DEBUG_sys ) ; then 
    295         echo "IGCM_sys_Mkdir :" $@ 
    296     fi 
    297     if [ ! -d ${1} ]; then 
    298         \mkdir -p $1 
    299         if [ $? -gt 0 ] ; then 
    300             echo "IGCM_sys_Mkdir : erreur." 
    301             IGCM_debug_Exit "IGCM_sys_Mkdir" 
    302         fi 
    303     fi 
     306  IGCM_debug_PushStack "IGCM_sys_Mkdir" $@ 
     307  if ( $DEBUG_sys ) ; then 
     308    echo "IGCM_sys_Mkdir :" $@ 
     309  fi 
     310  if [ ! -d ${1} ]; then 
     311    \mkdir -p $1 
     312    if [ $? -gt 0 ] ; then 
     313      echo "IGCM_sys_Mkdir : erreur." 
     314      IGCM_debug_Exit "IGCM_sys_Mkdir" 
     315    fi 
     316  fi 
    304317    # vérification : 
    305     if [ ! -d ${1} ] ; then 
    306         echo "IGCM_sys_Mkdir : erreur." 
    307         IGCM_debug_Exit "IGCM_sys_Mkdir" 
    308     fi 
    309     IGCM_debug_PopStack "IGCM_sys_Mkdir" 
     318  if [ ! -d ${1} ] ; then 
     319    echo "IGCM_sys_Mkdir : erreur." 
     320    IGCM_debug_Exit "IGCM_sys_Mkdir" 
     321  fi 
     322  IGCM_debug_PopStack "IGCM_sys_Mkdir" 
    310323} 
    311324 
     
    316329#D- 
    317330function IGCM_sys_MkdirArchive { 
    318     IGCM_debug_PushStack "IGCM_sys_MkdirArchive" $@ 
    319     if ( $DEBUG_sys ) ; then 
    320         echo "IGCM_sys_MkdirArchive :" $@ 
    321     fi 
    322     #- creation de repertoire sur le serveur fichier 
    323     rsh ${STOREHOST} -n mkdir -p $1 
    324  
    325     if [ $? -gt 0 ] ; then 
    326         echo "IGCM_sys_MkdirArchive : erreur." 
    327         IGCM_debug_Exit "IGCM_sys_MkdirArchive" 
    328     fi 
    329     IGCM_debug_PopStack "IGCM_sys_MkdirArchive" 
     331  IGCM_debug_PushStack "IGCM_sys_MkdirArchive" $@ 
     332  if ( $DEBUG_sys ) ; then 
     333    echo "IGCM_sys_MkdirArchive :" $@ 
     334  fi 
     335  #- creation de repertoire sur le serveur fichier 
     336  rsh ${STOREHOST} -n mkdir -p $1 
     337 
     338  if [ $? -gt 0 ] ; then 
     339    echo "IGCM_sys_MkdirArchive : erreur." 
     340    IGCM_debug_Exit "IGCM_sys_MkdirArchive" 
     341  fi 
     342  IGCM_debug_PopStack "IGCM_sys_MkdirArchive" 
    330343} 
    331344 
     
    336349#D- 
    337350function IGCM_sys_MkdirWork { 
    338     IGCM_debug_PushStack "IGCM_sys_MkdirWork" $@ 
    339     if ( $DEBUG_sys ) ; then 
    340         echo "IGCM_sys_MkdirWork :" $@ 
    341     fi 
    342     #- creation de repertoire sur le serveur fichier 
    343     if [ ! -d ${1} ]; then  
    344         \mkdir -p $1 
    345         if [ $? -gt 0 ] ; then 
    346             echo "IGCM_sys_MkdirWork : erreur." 
    347             IGCM_debug_Exit "IGCM_sys_MkdirWork" 
    348         fi 
    349     fi 
    350     IGCM_debug_PopStack "IGCM_sys_MkdirWork" 
     351  IGCM_debug_PushStack "IGCM_sys_MkdirWork" $@ 
     352  if ( $DEBUG_sys ) ; then 
     353    echo "IGCM_sys_MkdirWork :" $@ 
     354  fi 
     355  #- creation de repertoire sur le serveur fichier 
     356  if [ ! -d ${1} ]; then 
     357    \mkdir -p $1 
     358    if [ $? -gt 0 ] ; then 
     359      echo "IGCM_sys_MkdirWork : erreur." 
     360      IGCM_debug_Exit "IGCM_sys_MkdirWork" 
     361    fi 
     362  fi 
     363  IGCM_debug_PopStack "IGCM_sys_MkdirWork" 
    351364} 
    352365 
     
    357370#D- 
    358371function IGCM_sys_Cd { 
    359     IGCM_debug_PushStack "IGCM_sys_Cd" $@ 
    360     if ( $DEBUG_sys ) ; then 
    361         echo "IGCM_sys_Cd :" $@ 
    362     fi 
    363     \cd $1 
    364     if [ $? -gt 0 ] ; then 
    365         echo "IGCM_sys_Cd : erreur." 
    366         IGCM_debug_Exit "IGCM_sys_Cd" 
    367     fi 
    368     IGCM_debug_PopStack "IGCM_sys_Cd" 
     372  IGCM_debug_PushStack "IGCM_sys_Cd" $@ 
     373  if ( $DEBUG_sys ) ; then 
     374    echo "IGCM_sys_Cd :" $@ 
     375  fi 
     376  \cd $1 
     377  if [ $? -gt 0 ] ; then 
     378    echo "IGCM_sys_Cd : erreur." 
     379    IGCM_debug_Exit "IGCM_sys_Cd" 
     380  fi 
     381  IGCM_debug_PopStack "IGCM_sys_Cd" 
    369382} 
    370383 
     
    375388#D- 
    376389function IGCM_sys_Chmod { 
    377     IGCM_debug_PushStack "IGCM_sys_Chmod" -- $@ 
    378     if ( $DEBUG_sys ) ; then 
    379         echo "IGCM_sys_Chmod :" $@ 
    380     fi 
    381     if [ $DRYRUN -le 1 ]; then 
    382         \chmod $@ 
    383         if [ $? -gt 0 ] ; then 
    384             echo "IGCM_sys_Chmod : erreur." 
    385             IGCM_debug_Exit "IGCM_sys_Chmod" 
    386         fi 
    387     else 
    388         ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
    389     fi 
    390     IGCM_debug_PopStack "IGCM_sys_Chmod" 
     390  IGCM_debug_PushStack "IGCM_sys_Chmod" -- $@ 
     391  if ( $DEBUG_sys ) ; then 
     392    echo "IGCM_sys_Chmod :" $@ 
     393  fi 
     394  if [ $DRYRUN -le 1 ]; then 
     395    \chmod $@ 
     396    if [ $? -gt 0 ] ; then 
     397      echo "IGCM_sys_Chmod : erreur." 
     398      IGCM_debug_Exit "IGCM_sys_Chmod" 
     399    fi 
     400  else 
     401    ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
     402  fi 
     403  IGCM_debug_PopStack "IGCM_sys_Chmod" 
    391404} 
    392405 
     
    397410#D- 
    398411function IGCM_sys_FileSize { 
    399     IGCM_debug_PushStack "IGCM_sys_FileSize" $@ 
    400  
    401     typeset sizeF 
    402     set +A sizeF -- $( ls -la ${1} ) 
    403     if [ $? -gt 0 ] ; then 
    404         IGCM_debug_Exit "IGCM_sys_FileSize" 
    405     fi 
    406     eval ${2}=${sizeF[4]} 
    407  
    408     IGCM_debug_PopStack "IGCM_sys_FileSize" 
     412  IGCM_debug_PushStack "IGCM_sys_FileSize" $@ 
     413 
     414  typeset sizeF 
     415  set +A sizeF -- $( ls -la ${1} ) 
     416  if [ $? -gt 0 ] ; then 
     417    IGCM_debug_Exit "IGCM_sys_FileSize" 
     418  fi 
     419  eval ${2}=${sizeF[4]} 
     420 
     421  IGCM_debug_PopStack "IGCM_sys_FileSize" 
    409422} 
    410423 
     
    415428#D- 
    416429function IGCM_sys_TestDir { 
    417     IGCM_debug_PushStack "IGCM_sys_TestDir" $@ 
    418     if ( $DEBUG_sys ) ; then 
    419         echo "IGCM_sys_TestDir :" $@ 
    420     fi 
    421     typeset ExistFlag 
    422     ExistFlag=$( [ -d $1 ] && echo 0 || echo 1 ) 
    423     IGCM_debug_PopStack "IGCM_sys_TestDir" 
    424  
    425     return ${ExistFlag} 
     430  IGCM_debug_PushStack "IGCM_sys_TestDir" $@ 
     431  if ( $DEBUG_sys ) ; then 
     432    echo "IGCM_sys_TestDir :" $@ 
     433  fi 
     434  typeset ExistFlag 
     435  ExistFlag=$( [ -d $1 ] && echo 0 || echo 1 ) 
     436  IGCM_debug_PopStack "IGCM_sys_TestDir" 
     437 
     438  return ${ExistFlag} 
    426439} 
    427440 
     
    432445#D- 
    433446function IGCM_sys_TestDirArchive { 
    434     IGCM_debug_PushStack "IGCM_sys_TestDirArchive" $@ 
    435     if ( $DEBUG_sys ) ; then 
    436         echo "IGCM_sys_TestDirArchive :" $@ 
    437     fi 
    438     typeset ExistFlag 
    439     ExistFlag=$( IGCM_sys_RshArchive "[ -d $1 ] && echo 0 || echo 1" ) 
    440     IGCM_debug_PopStack "IGCM_sys_TestDirArchive" 
    441  
    442     return ${ExistFlag} 
     447  IGCM_debug_PushStack "IGCM_sys_TestDirArchive" $@ 
     448  if ( $DEBUG_sys ) ; then 
     449    echo "IGCM_sys_TestDirArchive :" $@ 
     450  fi 
     451  typeset ExistFlag 
     452  ExistFlag=$( IGCM_sys_RshArchive "[ -d $1 ] && echo 0 || echo 1" ) 
     453  IGCM_debug_PopStack "IGCM_sys_TestDirArchive" 
     454 
     455  return ${ExistFlag} 
     456} 
     457 
     458#D-#================================================== 
     459#D-function IGCM_sys_IsFileArchived 
     460#D-* Purpose: Test file that must NOT EXISTS on Archive 
     461#D-* always true on vargas. 
     462#D-* Examples: 
     463#D- 
     464function IGCM_sys_IsFileArchived { 
     465  IGCM_debug_PushStack "IGCM_sys_IsFileArchived" $@ 
     466  if ( $DEBUG_sys ) ; then 
     467    echo "IGCM_sys_IsFileArchived :" $@ 
     468  fi 
     469  typeset IsArchivedFlag 
     470  IsArchivedFlag=$( echo 0 ) 
     471  IGCM_debug_PopStack "IGCM_sys_IsFileArchived" 
     472 
     473  return ${IsArchivedFlag} 
    443474} 
    444475 
     
    449480#D- 
    450481function IGCM_sys_TestFileArchive { 
    451     IGCM_debug_PushStack "IGCM_sys_TestFileArchive" $@ 
    452     typeset ExistFlag 
    453     ExistFlag=$( IGCM_sys_RshArchive "[ -f $1 ] && echo 0 || echo 1" ) 
    454     IGCM_debug_PopStack "IGCM_sys_TestFileArchive" 
    455  
    456     return ${ExistFlag} 
     482  IGCM_debug_PushStack "IGCM_sys_TestFileArchive" $@ 
     483  typeset ExistFlag 
     484  ExistFlag=$( IGCM_sys_RshArchive "[ -f $1 ] && echo 0 || echo 1" ) 
     485  IGCM_debug_PopStack "IGCM_sys_TestFileArchive" 
     486 
     487  return ${ExistFlag} 
     488} 
     489 
     490#D-#================================================== 
     491#D-function IGCM_sys_TestFileBuffer 
     492#D-* Purpose: Test file that must NOT EXISTS on Buffer 
     493#D-* Examples: 
     494#D- 
     495function IGCM_sys_TestFileBuffer { 
     496  IGCM_debug_PushStack "IGCM_sys_TestFileBuffer" $@ 
     497  typeset ExistFlag 
     498  ExistFlag=$( [ -f $1 ] && echo 0 || echo 1 ) 
     499  IGCM_debug_PopStack "IGCM_sys_TestFileBuffer" 
     500 
     501  return ${ExistFlag} 
    457502} 
    458503 
     
    463508#D- 
    464509function IGCM_sys_CountFileArchive { 
    465     IGCM_debug_PushStack "IGCM_sys_CountFileArchive" $@ 
    466     IGCM_sys_RshArchive "ls ${@} 2>/dev/null | wc -l" 
    467     if [ $? -gt 0 ] ; then 
    468         echo "IGCM_sys_CountFileArchive : erreur." 
    469     fi 
    470     IGCM_debug_PopStack "IGCM_sys_CountFileArchive" 
     510  IGCM_debug_PushStack "IGCM_sys_CountFileArchive" $@ 
     511  IGCM_sys_RshArchive "ls ${@} 2>/dev/null | wc -l" 
     512  if [ $? -gt 0 ] ; then 
     513    echo "IGCM_sys_CountFileArchive : erreur." 
     514  fi 
     515  IGCM_debug_PopStack "IGCM_sys_CountFileArchive" 
     516} 
     517 
     518#D-#================================================== 
     519#D-function IGCM_sys_CountFileBuffer 
     520#D-* Purpose: Count files on Scratch filesystem 
     521#D-* Examples: 
     522#D- 
     523function IGCM_sys_CountFileBuffer { 
     524  IGCM_debug_PushStack "IGCM_sys_CountFileBuffer" $@ 
     525  ls ${@} 2>/dev/null | wc -l 
     526  if [ $? -gt 0 ] ; then 
     527    echo "IGCM_sys_CountFileBuffer : erreur." 
     528  fi 
     529  IGCM_debug_PopStack "IGCM_sys_CountFileBuffer" 
    471530} 
    472531 
     
    477536#D- 
    478537function IGCM_sys_Tree { 
    479     IGCM_debug_PushStack "IGCM_sys_Tree" $@ 
    480     if ( $DEBUG_sys ) ; then 
    481         echo "IGCM_sys_Tree :" $@ 
    482     fi 
    483  
    484     \mfls -r $@ 
    485  
    486     IGCM_debug_PopStack "IGCM_sys_Tree" 
     538  IGCM_debug_PushStack "IGCM_sys_Tree" $@ 
     539  if ( $DEBUG_sys ) ; then 
     540    echo "IGCM_sys_Tree :" $@ 
     541  fi 
     542 
     543  \mfls -r $@ 
     544 
     545  IGCM_debug_PopStack "IGCM_sys_Tree" 
    487546} 
    488547 
     
    493552#D- 
    494553function IGCM_sys_Tar { 
    495     IGCM_debug_PushStack "IGCM_sys_Tar" $@ 
    496     if ( $DEBUG_sys ) ; then 
    497         echo "IGCM_sys_Tar :" $@ 
    498     fi 
    499     \tar cf $@ 
    500     if [ $? -gt 0 ] ; then 
    501         echo "IGCM_sys_Tar : erreur." 
    502         IGCM_debug_Exit "IGCM_sys_Tar" 
    503     fi 
    504     IGCM_debug_PopStack "IGCM_sys_Tar" 
     554  IGCM_debug_PushStack "IGCM_sys_Tar" $@ 
     555  if ( $DEBUG_sys ) ; then 
     556    echo "IGCM_sys_Tar :" $@ 
     557  fi 
     558  \tar cf $@ 
     559  if [ $? -gt 0 ] ; then 
     560    echo "IGCM_sys_Tar : erreur." 
     561    IGCM_debug_Exit "IGCM_sys_Tar" 
     562  fi 
     563  IGCM_debug_PopStack "IGCM_sys_Tar" 
    505564} 
    506565 
     
    511570#D- 
    512571function IGCM_sys_UnTar { 
    513     IGCM_debug_PushStack "IGCM_sys_UnTar" $@ 
    514     if ( $DEBUG_sys ) ; then 
    515         echo "IGCM_sys_UnTar :" $@ 
    516     fi 
    517     \tar xvf $1 
    518     if [ $? -gt 0 ] ; then 
    519         echo "IGCM_sys_UnTar : erreur." 
    520         IGCM_debug_Exit "IGCM_sys_UnTar" 
    521     fi 
    522     IGCM_debug_PopStack "IGCM_sys_UnTar" 
     572  IGCM_debug_PushStack "IGCM_sys_UnTar" $@ 
     573  if ( $DEBUG_sys ) ; then 
     574    echo "IGCM_sys_UnTar :" $@ 
     575  fi 
     576  \tar xvf $1 
     577  if [ $? -gt 0 ] ; then 
     578    echo "IGCM_sys_UnTar : erreur." 
     579    IGCM_debug_Exit "IGCM_sys_UnTar" 
     580  fi 
     581  IGCM_debug_PopStack "IGCM_sys_UnTar" 
    523582} 
    524583 
     
    529588#D- 
    530589function IGCM_sys_Qsub { 
    531     IGCM_debug_PushStack "IGCM_sys_Qsub" $@ 
    532     if ( $DEBUG_sys ) ; then 
    533         echo "IGCM_sys_Qsub :" $@ 
    534     fi 
    535     # We have to change output/error file 
    536     [ ${#@} = 1 ] &&  REP_FOR_JOB=$LOADL_STEP_INITDIR 
    537     [ ${#@} = 2 ] &&  REP_FOR_JOB=$2 
    538     sed -e "s/\# \@ output *= .*/\# \@ output = ${Script_Output}/" -e "s/\# \@ error *= .*/\# \@ error = ${Script_Output}/" <$1 >${REP_FOR_JOB}/JOB_FOR_IGCM 
    539     { 
    540        [ ${#@} = 1 ] &&  ( cd $LOADL_STEP_INITDIR ; /usr/local/bin/llsubmit JOB_FOR_IGCM ; ERROR=$? ; cd - ; ) 
    541        [ ${#@} = 2 ] &&  ( cd $2 ; /usr/local/bin/llsubmit JOB_FOR_IGCM ; ERROR=$? ; cd - ; ) 
    542     } 
    543     if [ ${ERROR} -gt 0 ] ; then 
    544        echo "IGCM_sys_Qsub : erreur $@." 
    545        IGCM_debug_Exit "IGCM_sys_Qsub" 
    546     fi 
    547     IGCM_sys_Rm ${REP_FOR_JOB}/JOB_FOR_IGCM 
    548     IGCM_debug_PopStack "IGCM_sys_Qsub" 
     590  IGCM_debug_PushStack "IGCM_sys_Qsub" $@ 
     591 
     592  typeset ERROR 
     593  ERROR=0 
     594 
     595  if ( $DEBUG_sys ) ; then 
     596    echo "IGCM_sys_Qsub :" $@ 
     597  fi 
     598  # We have to change output/error file 
     599  [ ${#@} = 1 ] &&  REP_FOR_JOB=$LOADL_STEP_INITDIR 
     600  [ ${#@} = 2 ] &&  REP_FOR_JOB=$2 
     601  sed -e "s/\# \@ output *= .*/\# \@ output = ${Script_Output}/" -e "s/\# \@ error *= .*/\# \@ error = ${Script_Output}/" <$1 >${REP_FOR_JOB}/JOB_FOR_IGCM 
     602  { 
     603    [ ${#@} = 1 ] &&  ( cd $LOADL_STEP_INITDIR ; /usr/local/bin/llsubmit JOB_FOR_IGCM ; ERROR=$? ; cd - ; ) 
     604    [ ${#@} = 2 ] &&  ( cd $2 ; /usr/local/bin/llsubmit JOB_FOR_IGCM ; ERROR=$? ; cd - ; ) 
     605  } 
     606  if [ ${ERROR} -gt 0 ] ; then 
     607    echo "IGCM_sys_Qsub : erreur $@." 
     608    IGCM_debug_Exit "IGCM_sys_Qsub" 
     609  fi 
     610  IGCM_sys_Rm ${REP_FOR_JOB}/JOB_FOR_IGCM 
     611  IGCM_debug_PopStack "IGCM_sys_Qsub" 
    549612 
    550613} 
     
    556619#D- 
    557620function IGCM_sys_QsubPost { 
    558     IGCM_debug_PushStack "IGCM_sys_QsubPost" $@ 
    559     if ( $DEBUG_sys ) ; then 
    560         echo "IGCM_sys_QsubPost :" $@ 
    561     fi 
    562     cd ${POST_DIR} 
    563     /opt/ibmll/LoadL/full/bin/llsubmit ${libIGCM_POST}/$1.job 
    564     cd - 
    565     if [ $? -gt 0 ] ; then 
    566         echo "IGCM_sys_QsubPost : erreur " $@ 
    567         IGCM_debug_Exit "IGCM_sys_QsubPost" 
    568     fi 
    569     IGCM_debug_PopStack "IGCM_sys_QsubPost" 
     621  IGCM_debug_PushStack "IGCM_sys_QsubPost" $@ 
     622  if ( $DEBUG_sys ) ; then 
     623    echo "IGCM_sys_QsubPost :" $@ 
     624  fi 
     625  cd ${POST_DIR} 
     626  /opt/ibmll/LoadL/full/bin/llsubmit ${libIGCM_POST}/$1.job 
     627  cd - 
     628  if [ $? -gt 0 ] ; then 
     629    echo "IGCM_sys_QsubPost : erreur " $@ 
     630    IGCM_debug_Exit "IGCM_sys_QsubPost" 
     631  fi 
     632  IGCM_debug_PopStack "IGCM_sys_QsubPost" 
    570633} 
    571634 
    572635#D-************************* 
    573 #D- File transfer functions  
     636#D- File transfer functions 
    574637#D-************************* 
    575638#D- 
     
    581644#D-  Error values and explanations can depend on your system version. 
    582645function IGCM_sys_Rsync_out { 
    583     RET=$1 
    584     if [ ! $RET ] ; then 
    585         echo "rsync error !" 
    586     fi 
    587  
    588     if [ $MYLANG = "fr" ]; then 
    589         case $RET in 
    590             0)  return ;; 
    591             1)  echo "Erreur de rsync ; RERR_SYNTAX : " 
    592                 echo "Erreur de syntaxe ou d'utilisation." 
    593                 return;; 
    594             2)  echo "Erreur de rsync ; RERR_PROTOCOL : " 
    595                 echo "Incompatibilité de protocole." 
    596                 return;; 
    597             3)  echo "Erreur de rsync ; RERR_FILESELECT 3" 
    598                 echo "Erreurs  lors  de  la  sélection des fichiers d'entrée sortie et" 
    599                 echo "répertoires" 
    600                 return;; 
    601             4)  echo "Erreur de rsync ; RERR_UNSUPPORTED" 
    602                 echo "Action demandée non supportée : une tentative de manipulation de" 
    603                 echo "fichiers  64-bits  sur une plate-forme qui ne les supporte pas a" 
    604                 echo "été faite ; ou une option qui est supportée par le  client  mais" 
    605                 echo "pas par le serveur a été spécifiée." 
    606                 return;; 
    607             10) echo "Erreur de rsync ; RERR_SOCKETIO" 
    608                 echo "Erreur dans le socket d'entrée sortie" 
    609                 return;; 
    610             11) echo "Erreur de rsync ; RERR_FILEIO" 
    611                 echo "Erreur d'entrée sortie fichier" 
    612                 return;; 
    613             12) echo "Erreur de rsync ; RERR_STREAMIO" 
    614                 echo "Erreur dans flux de donnée du protocole rsync" 
    615                 return;; 
    616             13) echo "Erreur de rsync ; RERR_MESSAGEIO" 
    617                 echo "Erreur avec les diagnostics du programme" 
    618                 return;; 
    619             14) echo "Erreur de rsync ; RERR_IPC" 
    620                 echo "Erreur dans le code IPC" 
    621                 return;; 
    622             20) echo "Erreur de rsync ; RERR_SIGNAL" 
    623                 echo "SIGUSR1 ou SIGINT reçu" 
    624                 return;; 
    625             21) echo "Erreur de rsync ; RERR_WAITCHILD" 
    626                 echo "Une erreur retournée par waitpid()" 
    627                 return;; 
    628             22) echo "Erreur de rsync ; RERR_MALLOC" 
    629                 echo "Erreur lors de l'allocation des tampons de mémoire de coeur" 
    630                 return;; 
    631             23) echo "" 
    632                 echo "Erreur fichier inexistant" 
    633                 return;; 
    634             30) echo "Erreur de rsync ; RERR_TIMEOUT" 
    635                 echo "Temps d'attente écoulé dans l'envoi/réception de données" 
    636                 return;; 
    637             *)  echo "Erreur de rsync : code de retour de rsync inconnu :" $RET 
    638                 return;; 
    639         esac 
    640     elif [ $MYLANG = "en" ] ; then 
    641         case $RET in 
    642             0)  return;;                 
    643             1)  echo "rsync error : Syntax or usage error " 
    644                 return;; 
    645             2)  echo "rsync error : Protocol incompatibility " 
    646                 return;; 
    647             3)  echo "rsync error : Errors selecting input/output files, dirs" 
    648                 return;; 
    649             4)  echo "rsync error : Requested action not supported: an attempt" 
    650                 echo "was made to manipulate 64-bit files on a platform that cannot support" 
    651                 echo "them; or an option was specified that is supported by the client and" 
    652                 echo "not by the server." 
    653                 return;; 
    654             5)  echo "rsync error : Error starting client-server protocol" 
    655                 return;; 
    656             10) echo "rsync error : Error in socket I/O " 
    657                 return;; 
    658             11) echo "rsync error : Error in file I/O " 
    659                 return;; 
    660             12) echo "rsync error : Error in rsync protocol data stream " 
    661                 return;; 
    662             13) echo "rsync error : Errors with program diagnostics " 
    663                 return;; 
    664             14) echo "rsync error : Error in IPC code " 
    665                 return;; 
    666             20) echo "rsync error : Received SIGUSR1 or SIGINT " 
    667                 return;; 
    668             21) echo "rsync error : Some error returned by waitpid() " 
    669                 return;; 
    670             22) echo "rsync error : Error allocating core memory buffers " 
    671                 return;; 
    672             23) echo "rsync error : Partial transfer due to error" 
    673                 return;; 
    674             24) echo "rsync error : Partial transfer due to vanished source files" 
    675                 return;; 
    676             30) echo "rsync error : Timeout in data send/receive " 
    677                 return;; 
    678             *)  echo "rsync error : return code of rsync unknown :" $RET 
    679                 return;; 
    680         esac 
    681     else 
    682         echo "unknown language $MYLANG." 
    683         return 
    684     fi 
    685 } 
    686      
     646  RET=$1 
     647  if [ ! $RET ] ; then 
     648    echo "rsync error !" 
     649  fi 
     650 
     651  if [ $MYLANG = "fr" ]; then 
     652    case $RET in 
     653    0)  return ;; 
     654    1)  echo "Erreur de rsync ; RERR_SYNTAX : " 
     655      echo "Erreur de syntaxe ou d'utilisation." 
     656      return;; 
     657    2)  echo "Erreur de rsync ; RERR_PROTOCOL : " 
     658      echo "Incompatibilité de protocole." 
     659      return;; 
     660    3)  echo "Erreur de rsync ; RERR_FILESELECT 3" 
     661      echo "Erreurs  lors  de  la  sélection des fichiers d'entrée sortie et" 
     662      echo "répertoires" 
     663      return;; 
     664    4)  echo "Erreur de rsync ; RERR_UNSUPPORTED" 
     665      echo "Action demandée non supportée : une tentative de manipulation de" 
     666      echo "fichiers  64-bits  sur une plate-forme qui ne les supporte pas a" 
     667      echo "été faite ; ou une option qui est supportée par le  client  mais" 
     668      echo "pas par le serveur a été spécifiée." 
     669      return;; 
     670    10) echo "Erreur de rsync ; RERR_SOCKETIO" 
     671      echo "Erreur dans le socket d'entrée sortie" 
     672      return;; 
     673    11) echo "Erreur de rsync ; RERR_FILEIO" 
     674      echo "Erreur d'entrée sortie fichier" 
     675      return;; 
     676    12) echo "Erreur de rsync ; RERR_STREAMIO" 
     677      echo "Erreur dans flux de donnée du protocole rsync" 
     678      return;; 
     679    13) echo "Erreur de rsync ; RERR_MESSAGEIO" 
     680      echo "Erreur avec les diagnostics du programme" 
     681      return;; 
     682    14) echo "Erreur de rsync ; RERR_IPC" 
     683      echo "Erreur dans le code IPC" 
     684      return;; 
     685    20) echo "Erreur de rsync ; RERR_SIGNAL" 
     686      echo "SIGUSR1 ou SIGINT reçu" 
     687      return;; 
     688    21) echo "Erreur de rsync ; RERR_WAITCHILD" 
     689      echo "Une erreur retournée par waitpid()" 
     690      return;; 
     691    22) echo "Erreur de rsync ; RERR_MALLOC" 
     692      echo "Erreur lors de l'allocation des tampons de mémoire de coeur" 
     693      return;; 
     694    23) echo "" 
     695      echo "Erreur fichier inexistant" 
     696      return;; 
     697    30) echo "Erreur de rsync ; RERR_TIMEOUT" 
     698      echo "Temps d'attente écoulé dans l'envoi/réception de données" 
     699      return;; 
     700    *)  echo "Erreur de rsync : code de retour de rsync inconnu :" $RET 
     701      return;; 
     702    esac 
     703  elif [ $MYLANG = "en" ] ; then 
     704    case $RET in 
     705    0)  return;; 
     706    1)  echo "rsync error : Syntax or usage error " 
     707      return;; 
     708    2)  echo "rsync error : Protocol incompatibility " 
     709      return;; 
     710    3)  echo "rsync error : Errors selecting input/output files, dirs" 
     711      return;; 
     712    4)  echo "rsync error : Requested action not supported: an attempt" 
     713      echo "was made to manipulate 64-bit files on a platform that cannot support" 
     714      echo "them; or an option was specified that is supported by the client and" 
     715      echo "not by the server." 
     716      return;; 
     717    5)  echo "rsync error : Error starting client-server protocol" 
     718      return;; 
     719    10) echo "rsync error : Error in socket I/O " 
     720      return;; 
     721    11) echo "rsync error : Error in file I/O " 
     722      return;; 
     723    12) echo "rsync error : Error in rsync protocol data stream " 
     724      return;; 
     725    13) echo "rsync error : Errors with program diagnostics " 
     726      return;; 
     727    14) echo "rsync error : Error in IPC code " 
     728      return;; 
     729    20) echo "rsync error : Received SIGUSR1 or SIGINT " 
     730      return;; 
     731    21) echo "rsync error : Some error returned by waitpid() " 
     732      return;; 
     733    22) echo "rsync error : Error allocating core memory buffers " 
     734      return;; 
     735    23) echo "rsync error : Partial transfer due to error" 
     736      return;; 
     737    24) echo "rsync error : Partial transfer due to vanished source files" 
     738      return;; 
     739    30) echo "rsync error : Timeout in data send/receive " 
     740      return;; 
     741    *)  echo "rsync error : return code of rsync unknown :" $RET 
     742      return;; 
     743    esac 
     744  else 
     745    echo "unknown language $MYLANG." 
     746    return 
     747  fi 
     748} 
    687749 
    688750#D-#================================================== 
     
    692754#D- 
    693755function IGCM_sys_Mirror_libIGCM { 
    694     IGCM_debug_PushStack "IGCM_sys_Mirror_libIGCM" 
    695     if ( $DEBUG_sys ) ; then 
    696         echo "IGCM_sys_Mirror_libIGCM" 
    697     fi 
    698  
    699     typeset RET 
    700  
    701     IGCM_sys_RshPost <<-EOF 
     756  IGCM_debug_PushStack "IGCM_sys_Mirror_libIGCM" 
     757  if ( $DEBUG_sys ) ; then 
     758    echo "IGCM_sys_Mirror_libIGCM" 
     759  fi 
     760 
     761  typeset RET 
     762 
     763  IGCM_sys_RshPost <<-EOF 
    702764    mkdir -p ${HOME_POST}/MIRROR/${PATHlibIGCM} 
    703765EOF 
    704     rsh ulam -n hostname > /dev/null 2>&1 
     766  rsh ulam -n hostname > /dev/null 2>&1 
     767  RET=$? 
     768  if [ $RET -eq 0 ] ; then 
     769    echo ${RSYNC} ${RSYNC_opt} -e "rsh " ${libIGCM} ulam:${HOME_POST}/MIRROR/${PATHlibIGCM} > out_rsync 2>&1 
     770    ${RSYNC} ${RSYNC_opt} -e "rsh " ${libIGCM} ulam:${HOME_POST}/MIRROR/${PATHlibIGCM} >> out_rsync 2>&1 
    705771    RET=$? 
    706     if [ $RET -eq 0 ] ; then 
    707         echo ${RSYNC} ${RSYNC_opt} -e "rsh " ${libIGCM} ulam:${HOME_POST}/MIRROR/${PATHlibIGCM} > out_rsync 2>&1 
    708         ${RSYNC} ${RSYNC_opt} -e "rsh " ${libIGCM} ulam:${HOME_POST}/MIRROR/${PATHlibIGCM} >> out_rsync 2>&1 
    709         RET=$? 
    710  
    711         if [ ${RET} -gt 0 ] ; then 
    712             echo "IGCM_sys_Mirror_libIGCM Warning : no libIGCM on ulam." 
    713             cat out_rsync 
    714         fi 
    715     else 
    716         echo "No POST-TREATMENT avaible because ulam is down." 
    717     fi 
    718     IGCM_debug_PopStack "IGCM_sys_Mirror_libIGCM" 
     772 
     773    if [ ${RET} -gt 0 ] ; then 
     774      echo "IGCM_sys_Mirror_libIGCM Warning : no libIGCM on ulam." 
     775      cat out_rsync 
     776    fi 
     777    IGCM_sys_Rm out_rsync 
     778  else 
     779    echo "No POST-TREATMENT avaible because ulam is down." 
     780  fi 
     781  IGCM_debug_PopStack "IGCM_sys_Mirror_libIGCM" 
    719782} 
    720783 
     
    722785#- Call IGCM_sys_Mirror_libIGCM now ! 
    723786if ( $MirrorlibIGCM ) ; then 
    724     IGCM_sys_Mirror_libIGCM 
     787  IGCM_sys_Mirror_libIGCM 
    725788fi 
    726789 
     
    731794#D- 
    732795function IGCM_sys_Cp { 
    733     IGCM_debug_PushStack "IGCM_sys_Cp" $@ 
    734     if ( $DEBUG_sys ) ; then 
    735         echo "IGCM_sys_Cp :" $@ 
    736     fi 
    737  
    738     typeset RET 
    739  
    740     echo cp $@ > out_rsync 2>&1 
    741     \cp $@ >> out_rsync 2>&1 
    742     RET=$? 
    743  
    744     if [ ${RET} -gt 0 ] ; then 
    745         echo "IGCM_sys_Cp : error." 
    746         cat out_rsync 
    747         IGCM_debug_Exit "IGCM_sys_Cp" 
    748      else 
    749         \rm out_rsync 
    750     fi 
    751     IGCM_debug_PopStack "IGCM_sys_Cp" 
     796  IGCM_debug_PushStack "IGCM_sys_Cp" $@ 
     797  if ( $DEBUG_sys ) ; then 
     798    echo "IGCM_sys_Cp :" $@ 
     799  fi 
     800 
     801  typeset RET 
     802 
     803  echo cp $@ > out_rsync 2>&1 
     804  \cp $@ >> out_rsync 2>&1 
     805  RET=$? 
     806 
     807  if [ ${RET} -gt 0 ] ; then 
     808    echo "IGCM_sys_Cp : error." 
     809    cat out_rsync 
     810    IGCM_debug_Exit "IGCM_sys_Cp" 
     811  else 
     812    \rm out_rsync 
     813  fi 
     814  IGCM_debug_PopStack "IGCM_sys_Cp" 
    752815} 
    753816 
     
    758821#D- 
    759822function IGCM_sys_Rm { 
    760     IGCM_debug_PushStack "IGCM_sys_Rm" -- $@ 
    761     if ( $DEBUG_sys ) ; then 
    762         echo "IGCM_sys_Rm :" $@ 
    763     fi 
    764  
    765     typeset RET 
    766  
    767     echo rm $@ > out_rsync 2>&1 
    768     \rm $@ >> out_rsync 2>&1 
    769     RET=$? 
    770  
    771     if [ ${RET} -gt 0 ] ; then 
    772         echo "IGCM_sys_Rm : error." 
    773         cat out_rsync 
    774         IGCM_debug_Exit "IGCM_sys_Rm" 
    775     else 
    776         \rm out_rsync 
    777     fi 
    778     IGCM_debug_PopStack "IGCM_sys_Rm" 
     823  IGCM_debug_PushStack "IGCM_sys_Rm" -- $@ 
     824  if ( $DEBUG_sys ) ; then 
     825    echo "IGCM_sys_Rm :" $@ 
     826  fi 
     827 
     828  typeset RET 
     829 
     830  echo rm $@ > out_rsync 2>&1 
     831  \rm $@ >> out_rsync 2>&1 
     832  RET=$? 
     833 
     834  if [ ${RET} -gt 0 ] ; then 
     835    echo "IGCM_sys_Rm : error." 
     836    cat out_rsync 
     837    IGCM_debug_Exit "IGCM_sys_Rm" 
     838  else 
     839    \rm out_rsync 
     840  fi 
     841  IGCM_debug_PopStack "IGCM_sys_Rm" 
    779842} 
    780843 
     
    786849#D- 
    787850function IGCM_sys_RmRunDir { 
    788     IGCM_debug_PushStack "IGCM_sys_RmRunDir" -- $@ 
    789     if ( $DEBUG_sys ) ; then 
    790         echo "IGCM_sys_RmRunDir :" $@ 
    791         echo "Dummy call, let the scheduler do that." 
    792     fi 
    793     IGCM_debug_PopStack "IGCM_sys_RmRunDir" 
     851  IGCM_debug_PushStack "IGCM_sys_RmRunDir" -- $@ 
     852  if ( $DEBUG_sys ) ; then 
     853    echo "IGCM_sys_RmRunDir :" $@ 
     854    echo "Dummy call, let the scheduler do that." 
     855  fi 
     856  IGCM_debug_PopStack "IGCM_sys_RmRunDir" 
    794857} 
    795858 
     
    800863#D- 
    801864function IGCM_sys_Mv { 
    802     IGCM_debug_PushStack "IGCM_sys_Mv" $@ 
    803     if ( $DEBUG_sys ) ; then 
    804         echo "IGCM_sys_Mv :" $@ 
    805     fi 
    806  
    807     if [ $DRYRUN = 0 ]; then 
    808  
    809         typeset RET 
    810              
    811         echo mv $@ > out_rsync 2>&1 
    812         \mv $@ >> out_rsync 2>&1 
    813         RET=$? 
    814      
    815         if [ ${RET} -gt 0 ] ; then 
    816             echo "IGCM_sys_Mv : error in mv." 
    817             cat out_rsync 
    818             IGCM_debug_Exit "IGCM_sys_Mv" 
    819         else 
    820             \rm out_rsync 
    821         fi 
     865  IGCM_debug_PushStack "IGCM_sys_Mv" $@ 
     866  if ( $DEBUG_sys ) ; then 
     867    echo "IGCM_sys_Mv :" $@ 
     868  fi 
     869 
     870  if [ $DRYRUN = 0 ]; then 
     871 
     872    typeset RET 
     873 
     874    echo mv $@ > out_rsync 2>&1 
     875    \mv $@ >> out_rsync 2>&1 
     876    RET=$? 
     877 
     878    if [ ${RET} -gt 0 ] ; then 
     879      echo "IGCM_sys_Mv : error in mv." 
     880      cat out_rsync 
     881      IGCM_debug_Exit "IGCM_sys_Mv" 
    822882    else 
    823         ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
    824     fi 
    825  
    826     IGCM_debug_PopStack "IGCM_sys_Mv" 
     883      \rm out_rsync 
     884    fi 
     885  else 
     886    ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
     887  fi 
     888 
     889  IGCM_debug_PopStack "IGCM_sys_Mv" 
    827890} 
    828891 
     
    833896#D- 
    834897function IGCM_sys_Put_Dir { 
    835     IGCM_debug_PushStack "IGCM_sys_Put_Dir" $@ 
    836     if ( $DEBUG_sys ) ; then 
    837         echo "IGCM_sys_Put_Dir :" $@ 
    838     fi 
    839     if [ $DRYRUN = 0 ]; then 
    840         if [ ! -d ${1} ] ; then 
    841             echo "WARNING : IGCM_sys_Put_Dir ${1} DOES NOT EXIST ." 
    842             IGCM_debug_PopStack "IGCM_sys_Put_Dir" 
    843             return 
    844         fi 
    845  
    846         typeset RET 
    847  
    848         # Only if we use rsync 
    849         #IGCM_sys_TestDirArchive $( dirname $2 ) 
    850         # 
    851         #USUAL WAY 
    852         rcp -r $1 ${STOREHOST}:$2 > out_rsync 2>&1 
    853         RET=$? 
    854  
    855         if [ ${RET} -gt 0 ] ; then 
    856             echo "IGCM_sys_Put_Dir : error." 
    857             cat out_rsync 
    858             IGCM_debug_Exit "IGCM_sys_Put_Dir" 
    859         else 
    860             \rm out_rsync 
    861         fi 
     898  IGCM_debug_PushStack "IGCM_sys_Put_Dir" $@ 
     899  if ( $DEBUG_sys ) ; then 
     900    echo "IGCM_sys_Put_Dir :" $@ 
     901  fi 
     902  if [ $DRYRUN = 0 ]; then 
     903    if [ ! -d ${1} ] ; then 
     904      echo "WARNING : IGCM_sys_Put_Dir ${1} DOES NOT EXIST ." 
     905      IGCM_debug_PopStack "IGCM_sys_Put_Dir" 
     906      return 
     907    fi 
     908 
     909    typeset RET 
     910 
     911    # Only if we use rsync 
     912    #IGCM_sys_TestDirArchive $( dirname $2 ) 
     913    # 
     914    #USUAL WAY 
     915    rcp -r $1 ${STOREHOST}:$2 > out_rsync 2>&1 
     916    RET=$? 
     917 
     918    if [ ${RET} -gt 0 ] ; then 
     919      echo "IGCM_sys_Put_Dir : error." 
     920      cat out_rsync 
     921      IGCM_debug_Exit "IGCM_sys_Put_Dir" 
    862922    else 
    863         ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
    864     fi 
    865     IGCM_debug_PopStack "IGCM_sys_Put_Dir" 
     923      \rm out_rsync 
     924    fi 
     925  else 
     926    ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
     927  fi 
     928  IGCM_debug_PopStack "IGCM_sys_Put_Dir" 
    866929} 
    867930 
     
    872935#D- 
    873936function IGCM_sys_Get_Dir { 
    874     IGCM_debug_PushStack "IGCM_sys_Get_Dir" $@ 
    875     if ( $DEBUG_sys ) ; then 
    876         echo "IGCM_sys_Get_Dir :" $@ 
    877     fi 
    878     if [ $DRYRUN = 0 ]; then 
    879         if [ ! -d ${1} ] ; then 
    880             echo "WARNING : IGCM_sys_Get_Dir ${1} DOES NOT EXIST ." 
    881             IGCM_debug_PopStack "IGCM_sys_Get_Dir" 
    882             return 
    883         fi 
    884  
    885         typeset RET 
    886  
    887         #USUAL WAY 
    888         rcp -rp ${STOREHOST}:$1 $2 > out_rsync 2>&1 
    889         RET=$? 
    890  
    891         if [ ${RET} -gt 0 ] ; then 
    892             echo "IGCM_sys_Get_Dir : error." 
    893             cat out_rsync 
    894             IGCM_debug_Exit "IGCM_sys_Get_Dir" 
    895         fi 
    896     else 
    897         ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
    898     fi 
    899     IGCM_debug_PopStack "IGCM_sys_Get_Dir" 
     937  IGCM_debug_PushStack "IGCM_sys_Get_Dir" $@ 
     938  if ( $DEBUG_sys ) ; then 
     939    echo "IGCM_sys_Get_Dir :" $@ 
     940  fi 
     941  if [ $DRYRUN = 0 ]; then 
     942    if [ ! -d ${1} ] ; then 
     943      echo "WARNING : IGCM_sys_Get_Dir ${1} DOES NOT EXIST ." 
     944      IGCM_debug_PopStack "IGCM_sys_Get_Dir" 
     945      return 
     946    fi 
     947 
     948    typeset RET 
     949 
     950        #USUAL WAY 
     951    rcp -rp ${STOREHOST}:$1 $2 > out_rsync 2>&1 
     952    RET=$? 
     953 
     954    if [ ${RET} -gt 0 ] ; then 
     955      echo "IGCM_sys_Get_Dir : error." 
     956      cat out_rsync 
     957      IGCM_debug_Exit "IGCM_sys_Get_Dir" 
     958    fi 
     959  else 
     960    ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
     961  fi 
     962  IGCM_debug_PopStack "IGCM_sys_Get_Dir" 
    900963} 
    901964 
     
    907970#D- 
    908971function IGCM_sys_Put_Rest { 
    909     IGCM_debug_PushStack "IGCM_sys_Put_Rest" $@ 
    910     if ( $DEBUG_sys ) ; then 
    911         echo "IGCM_sys_Put_Rest :" $@ 
    912     fi 
    913     if [ $DRYRUN = 0 ]; then 
    914         if [ ! -f ${1} ] ; then 
    915             echo "ERROR : IGCM_sys_Put_Rest ${1} DOES NOT EXIST ." 
    916             IGCM_debug_Exit "IGCM_sys_Put_Rest" 
    917         fi 
    918  
    919         typeset RET 
    920         # 
    921         if [ X${JobType} = XRUN ] ; then 
    922             IGCM_sys_Chmod 444 ${1} 
    923         fi 
    924         # 
    925         # Only if we use rsync 
    926         #IGCM_sys_MkdirArchive $( dirname $2 ) 
    927         # 
    928         #USUAL WAY 
    929         mfput $1 $2 > out_rsync 2>&1 
    930         RET=$? 
    931  
    932 #       #RSYNC WITH NETWORK RSH CALL 
    933 #       echo ${RSYNC} ${RSYNC_opt} --rsync-path=${REMOTE_RSYNC} -e rsh ${RUN_DIR}/$1 ${STOREHOST}:${2} > out_rsync 2>&1 
    934 #       ${RSYNC} ${RSYNC_opt} --rsync-path=${REMOTE_RSYNC} -e rsh ${RUN_DIR}/$1 ${STOREHOST}:${2} >> out_rsync 2>&1 
    935  
    936 #       #RSYNC WITH NFS USE 
    937 #       echo ${RSYNC} ${RSYNC_opt} ${RUN_DIR}/$1 ${2} > out_rsync 2>&1 
    938 #       ${RSYNC} ${RSYNC_opt} ${RUN_DIR}/$1 ${2} >> out_rsync 2>&1 
    939          
    940 #       RET=$? 
    941 #       IGCM_sys_Rsync_out $RET 
    942  
    943 #       ${libIGCM}/libIGCM_sys/IGCM_analyse_rsync_out.awk out_rsync 
    944 #       (( RET=RET+$? )) 
    945  
    946         if [ ${RET} -gt 0 ] ; then 
    947             echo "IGCM_sys_Put_Rest : error." 
    948             cat out_rsync 
    949             IGCM_debug_Exit "IGCM_sys_Put_Rest" 
    950         else 
    951             \rm out_rsync 
    952         fi 
     972  IGCM_debug_PushStack "IGCM_sys_Put_Rest" $@ 
     973  if ( $DEBUG_sys ) ; then 
     974    echo "IGCM_sys_Put_Rest :" $@ 
     975  fi 
     976  if [ $DRYRUN = 0 ]; then 
     977    if [ ! -f ${1} ] ; then 
     978      echo "ERROR : IGCM_sys_Put_Rest ${1} DOES NOT EXIST ." 
     979      IGCM_debug_Exit "IGCM_sys_Put_Rest" 
     980    fi 
     981 
     982    typeset RET 
     983        # 
     984    if [ X${JobType} = XRUN ] ; then 
     985      IGCM_sys_Chmod 444 ${1} 
     986    fi 
     987    # 
     988    # Only if we use rsync 
     989    #IGCM_sys_MkdirArchive $( dirname $2 ) 
     990    # 
     991    #USUAL WAY 
     992    mfput $1 $2 > out_rsync 2>&1 
     993    RET=$? 
     994 
     995#       #RSYNC WITH NETWORK RSH CALL 
     996#       echo ${RSYNC} ${RSYNC_opt} --rsync-path=${REMOTE_RSYNC} -e rsh ${RUN_DIR}/$1 ${STOREHOST}:${2} > out_rsync 2>&1 
     997#       ${RSYNC} ${RSYNC_opt} --rsync-path=${REMOTE_RSYNC} -e rsh ${RUN_DIR}/$1 ${STOREHOST}:${2} >> out_rsync 2>&1 
     998 
     999#       #RSYNC WITH NFS USE 
     1000#       echo ${RSYNC} ${RSYNC_opt} ${RUN_DIR}/$1 ${2} > out_rsync 2>&1 
     1001#       ${RSYNC} ${RSYNC_opt} ${RUN_DIR}/$1 ${2} >> out_rsync 2>&1 
     1002 
     1003#       RET=$? 
     1004#       IGCM_sys_Rsync_out $RET 
     1005 
     1006#       ${libIGCM}/libIGCM_sys/IGCM_analyse_rsync_out.awk out_rsync 
     1007#       (( RET=RET+$? )) 
     1008 
     1009    if [ ${RET} -gt 0 ] ; then 
     1010      echo "IGCM_sys_Put_Rest : error." 
     1011      cat out_rsync 
     1012      IGCM_debug_Exit "IGCM_sys_Put_Rest" 
    9531013    else 
    954         ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
    955     fi 
    956     IGCM_debug_PopStack "IGCM_sys_Put_Rest" 
     1014      \rm out_rsync 
     1015    fi 
     1016  else 
     1017    ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
     1018  fi 
     1019  IGCM_debug_PopStack "IGCM_sys_Put_Rest" 
     1020} 
     1021 
     1022#D-#================================================== 
     1023#D-function IGCM_sys_PutBuffer_Rest 
     1024#D-* Purpose: Put computied restarts on ${SCRATCHDIR}. 
     1025#D-           File and target directory must exist. 
     1026#D-* Examples: 
     1027#D- 
     1028function IGCM_sys_PutBuffer_Rest { 
     1029  IGCM_debug_PushStack "IGCM_sys_PutBuffer_Rest" $@ 
     1030  if ( $DEBUG_sys ) ; then 
     1031    echo "IGCM_sys_PutBuffer_Rest :" $@ 
     1032  fi 
     1033  if [ $DRYRUN = 0 ]; then 
     1034    if [ ! -f ${1} ] ; then 
     1035      echo "ERROR : IGCM_sys_PutBuffer_Rest ${1} DOES NOT EXIST ." 
     1036      IGCM_debug_Exit "IGCM_sys_PutBuffer_Rest" 
     1037    fi 
     1038 
     1039    typeset RET 
     1040    # 
     1041    if [ X${JobType} = XRUN ] ; then 
     1042      IGCM_sys_Chmod 444 ${1} 
     1043    fi 
     1044 
     1045    # 
     1046    # USUAL WAY 
     1047    \cp $1 $2 > out_rsync 2>&1 
     1048    RET=$? 
     1049 
     1050    if [ ${RET} -gt 0 ] ; then 
     1051      echo "IGCM_sys_PutBuffer_Rest : error." 
     1052      cat out_rsync 
     1053      IGCM_debug_Exit "IGCM_sys_PutBuffer_Rest" 
     1054    else 
     1055      \rm out_rsync 
     1056    fi 
     1057  else 
     1058    ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
     1059  fi 
     1060  IGCM_debug_PopStack "IGCM_sys_PutBuffer_Rest" 
    9571061} 
    9581062 
     
    9631067#D- 
    9641068function IGCM_sys_Put_Out { 
    965     IGCM_debug_PushStack "IGCM_sys_Put_Out" $@ 
    966     if ( $DEBUG_sys ) ; then 
    967         echo "IGCM_sys_Put_Out :" $@ 
    968     fi 
    969     if [ $DRYRUN = 0 ]; then 
    970         if [ ! -f ${1} ] ; then 
    971             echo "WARNING : IGCM_sys_Put_Out ${1} DOES NOT EXIST ." 
    972             IGCM_debug_PopStack "IGCM_sys_Put_Out" 
    973             return 1 
    974         fi 
    975  
    976         typeset RET 
    977         # 
    978         if [ X${JobType} = XRUN ] ; then 
    979             if [ X${3} = X ] ; then 
    980                 IGCM_sys_Chmod 444 ${1} 
    981             fi 
    982         fi 
    983         # 
    984         # Only if we use rsync 
    985         #IGCM_sys_MkdirArchive $( dirname $2 ) 
    986         # 
    987         #USUAL WAY 
    988         mfput $1 $2 > out_rsync 2>&1 
    989         RET=$? 
    990  
    991 #       #RSYNC WITH NETWORK RSH CALL 
    992 #       echo ${RSYNC} ${RSYNC_opt} --rsync-path=${REMOTE_RSYNC} -e rsh ${RUN_DIR}/$1 ${STOREHOST}:${2} > out_rsync 2>&1 
    993 #       ${RSYNC} ${RSYNC_opt} --rsync-path=${REMOTE_RSYNC} -e rsh ${RUN_DIR}/$1 ${STOREHOST}:${2} >> out_rsync 2>&1 
    994  
    995 #       #RSYNC WITH NFS USE 
    996 #       echo ${RSYNC} ${RSYNC_opt} ${RUN_DIR}/$1 ${2} > out_rsync 2>&1 
    997 #       ${RSYNC} ${RSYNC_opt} ${RUN_DIR}/$1 ${2} >> out_rsync 2>&1 
    998  
    999 #       RET=$? 
    1000 #       IGCM_sys_Rsync_out $RET 
    1001  
    1002 #       ${libIGCM}/libIGCM_sys/IGCM_analyse_rsync_out.awk out_rsync 
    1003 #       (( RET=RET+$? )) 
    1004  
    1005         if [ ${RET} -gt 0 ] ; then 
    1006             echo "IGCM_sys_Put_Out : error." 
    1007             cat out_rsync 
    1008             IGCM_debug_Exit "IGCM_sys_Put_Out" 
    1009         else 
    1010             \rm out_rsync 
    1011         fi 
     1069  IGCM_debug_PushStack "IGCM_sys_Put_Out" $@ 
     1070  if ( $DEBUG_sys ) ; then 
     1071    echo "IGCM_sys_Put_Out :" $@ 
     1072  fi 
     1073  if [ $DRYRUN = 0 ]; then 
     1074    if [ ! -f ${1} ] ; then 
     1075      echo "WARNING : IGCM_sys_Put_Out ${1} DOES NOT EXIST ." 
     1076      IGCM_debug_PopStack "IGCM_sys_Put_Out" 
     1077      return 1 
     1078    fi 
     1079 
     1080    typeset RET 
     1081        # 
     1082    if [ X${JobType} = XRUN ] ; then 
     1083      if [ X${3} = X ] ; then 
     1084        IGCM_sys_Chmod 444 ${1} 
     1085      fi 
     1086    fi 
     1087    # 
     1088    # Only if we use rsync 
     1089    #IGCM_sys_MkdirArchive $( dirname $2 ) 
     1090    # 
     1091    #USUAL WAY 
     1092    mfput $1 $2 > out_rsync 2>&1 
     1093    RET=$? 
     1094 
     1095#       #RSYNC WITH NETWORK RSH CALL 
     1096#       echo ${RSYNC} ${RSYNC_opt} --rsync-path=${REMOTE_RSYNC} -e rsh ${RUN_DIR}/$1 ${STOREHOST}:${2} > out_rsync 2>&1 
     1097#       ${RSYNC} ${RSYNC_opt} --rsync-path=${REMOTE_RSYNC} -e rsh ${RUN_DIR}/$1 ${STOREHOST}:${2} >> out_rsync 2>&1 
     1098 
     1099#       #RSYNC WITH NFS USE 
     1100#       echo ${RSYNC} ${RSYNC_opt} ${RUN_DIR}/$1 ${2} > out_rsync 2>&1 
     1101#       ${RSYNC} ${RSYNC_opt} ${RUN_DIR}/$1 ${2} >> out_rsync 2>&1 
     1102 
     1103#       RET=$? 
     1104#       IGCM_sys_Rsync_out $RET 
     1105 
     1106#       ${libIGCM}/libIGCM_sys/IGCM_analyse_rsync_out.awk out_rsync 
     1107#       (( RET=RET+$? )) 
     1108 
     1109    if [ ${RET} -gt 0 ] ; then 
     1110      echo "IGCM_sys_Put_Out : error." 
     1111      cat out_rsync 
     1112      IGCM_debug_Exit "IGCM_sys_Put_Out" 
    10121113    else 
    1013         ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
    1014     fi 
    1015     IGCM_debug_PopStack "IGCM_sys_Put_Out" 
    1016     return 0 
     1114      \rm out_rsync 
     1115    fi 
     1116    IGCM_sys_Rm out_rsync 
     1117  else 
     1118    ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
     1119  fi 
     1120  IGCM_debug_PopStack "IGCM_sys_Put_Out" 
     1121  return 0 
     1122} 
     1123 
     1124#D-#================================================== 
     1125#D-function IGCM_sys_PutBuffer_Out 
     1126#D-* Purpose: Copy a file on ${SCRATCHDIR} after having chmod it in readonly 
     1127#D-* Examples: 
     1128#D- 
     1129function IGCM_sys_PutBuffer_Out { 
     1130  IGCM_debug_PushStack "IGCM_sys_PutBuffer_Out" $@ 
     1131  if ( $DEBUG_sys ) ; then 
     1132    echo "IGCM_sys_PutBuffer_Out :" $@ 
     1133  fi 
     1134  if [ $DRYRUN = 0 ]; then 
     1135    if [ ! -f ${1} ] ; then 
     1136      echo "WARNING : IGCM_sys_PutBuffer_Out ${1} DOES NOT EXIST ." 
     1137      IGCM_debug_PopStack "IGCM_sys_PutBuffer_Out" 
     1138      return 1 
     1139    fi 
     1140    # 
     1141    IGCM_sys_Mkdir $( dirname $2 ) 
     1142    # 
     1143    typeset RET 
     1144 
     1145    if [ X${JobType} = XRUN ] ; then 
     1146      if [ X${3} = X ] ; then 
     1147        IGCM_sys_Chmod 444 ${1} 
     1148      fi 
     1149    fi 
     1150    # 
     1151    # USUAL WAY 
     1152    \cp $1 $2 > out_rsync 2>&1 
     1153    RET=$? 
     1154 
     1155    if [ ${RET} -gt 0 ] ; then 
     1156      echo "IGCM_sys_PutBuffer_Out : error." 
     1157      cat out_rsync 
     1158      IGCM_debug_Exit "IGCM_sys_PutBuffer_Out" 
     1159    else 
     1160      \rm out_rsync 
     1161    fi 
     1162  else 
     1163    ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
     1164  fi 
     1165  IGCM_debug_PopStack "IGCM_sys_PutBuffer_Out" 
     1166  return 0 
    10171167} 
    10181168 
     
    10231173#D-            IGCM_sys_Get /l Array_contain_myfiles /destpath/ 
    10241174function IGCM_sys_Get { 
    1025     IGCM_debug_PushStack "IGCM_sys_Get" $@ 
    1026  
    1027     typeset DEST RET dm_liste ifile target 
    1028  
    1029     if ( $DEBUG_sys ) ; then 
    1030         echo "IGCM_sys_Get :" $@ 
    1031     fi 
    1032     if [ $DRYRUN -le 2 ]; then 
    1033         if [ X${1} = X'/l' ] ; then 
    1034             # test if the first file is present in the old computation : 
    1035             eval set +A dm_liste \${${2}} 
    1036         else 
    1037             dm_liste=${1} 
    1038         fi 
    1039         eval DEST=\${${#}} 
    1040  
    1041         # test if the (first) file is present in the old computation : 
    1042         IGCM_sys_TestFileArchive ${dm_liste[0]} 
    1043         RET=$? 
    1044         if [ ${RET} -gt 0 ] ; then 
    1045             echo "IGCM_sys_Get, ERROR : regular file ${dm_liste[0]} DOES NOT EXIST ." 
    1046             IGCM_debug_Exit "IGCM_sys_Get" 
    1047             return 
    1048         fi 
    1049  
    1050         # SD : dm_liste is not suited for computing job 
    1051         #      because we change filename during transfert 
    1052         #      dm_liste is better suited for post-treatment 
    1053         #dm_liste=" " 
    1054         #(( ifile=1 )) 
    1055         #while [ $ifile -lt $# ] ; do 
    1056         #    dm_liste=$( eval echo ${dm_liste} " "\${${ifile}} ) 
    1057         #    (( ifile = ifile + 1 )) 
    1058         #done 
    1059         #DEST=$( eval echo \${${#}} ) 
    1060  
    1061         #USUAL WAY 
    1062         mfget ${dm_liste[*]} ${DEST} > out_rsync 2>&1 
    1063         #mfget $1 $2 > out_rsync 2>&1 
    1064         RET=$? 
    1065  
    1066 #       #RSYNC WITH NETWORK RSH CALL 
    1067 #       echo ${RSYNC} ${RSYNC_opt} --rsync-path=${REMOTE_RSYNC} -e rsh ${STOREHOST}:"${dm_liste}" ${STOREHOST}:${RUN_DIR}/${DEST} > out_rsync 2>&1 
    1068 #       ${RSYNC} ${RSYNC_opt} --rsync-path=${REMOTE_RSYNC} -e rsh ${STOREHOST}:"${dm_liste}" ${STOREHOST}:${RUN_DIR}/${DEST} >> out_rsync 2>&1 
    1069  
    1070 #       #RSYNC WITH NFS USE 
    1071 #       echo ${RSYNC} ${RSYNC_opt} ${dm_liste} ${RUN_DIR}/${DEST} > out_rsync 2>&1 
    1072 #       ${RSYNC} ${RSYNC_opt} ${dm_liste} ${RUN_DIR}/${DEST} >> out_rsync 2>&1 
    1073  
    1074 #       RET=$? 
    1075 #       IGCM_sys_Rsync_out $RET 
    1076  
    1077 #       ${libIGCM}/libIGCM_sys/IGCM_analyse_rsync_out.awk out_rsync 
    1078 #       (( RET=RET+$? )) 
    1079  
    1080         if [ ${RET} -gt 0 ] ; then 
    1081             echo "IGCM_sys_Get : copy error." 
    1082             cat out_rsync 
    1083             IGCM_debug_Exit "IGCM_sys_Get" 
    1084         else 
    1085             \rm out_rsync 
    1086         fi 
     1175  IGCM_debug_PushStack "IGCM_sys_Get" $@ 
     1176 
     1177  typeset DEST RET dm_liste ifile target 
     1178 
     1179  if ( $DEBUG_sys ) ; then 
     1180    echo "IGCM_sys_Get :" $@ 
     1181  fi 
     1182  if [ $DRYRUN -le 2 ]; then 
     1183    if [ X${1} = X'/l' ] ; then 
     1184      # test if the first file is present in the old computation : 
     1185      eval set +A dm_liste \${${2}} 
    10871186    else 
    1088         ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
    1089     fi 
    1090     IGCM_debug_PopStack "IGCM_sys_Get" 
     1187      dm_liste=${1} 
     1188    fi 
     1189    eval DEST=\${${#}} 
     1190 
     1191    # test if the (first) file is present in the old computation : 
     1192    IGCM_sys_TestFileArchive ${dm_liste[0]} 
     1193    RET=$? 
     1194    if [ ${RET} -gt 0 ] ; then 
     1195      echo "IGCM_sys_Get, ERROR : regular file ${dm_liste[0]} DOES NOT EXIST ." 
     1196      IGCM_debug_Exit "IGCM_sys_Get" 
     1197      return 
     1198    fi 
     1199 
     1200    # SD : dm_liste is not suited for computing job 
     1201    #      because we change filename during transfert 
     1202    #      dm_liste is better suited for post-treatment 
     1203    #dm_liste=" " 
     1204    #(( ifile=1 )) 
     1205    #while [ $ifile -lt $# ] ; do 
     1206    #    dm_liste=$( eval echo ${dm_liste} " "\${${ifile}} ) 
     1207    #    (( ifile = ifile + 1 )) 
     1208    #done 
     1209    #DEST=$( eval echo \${${#}} ) 
     1210 
     1211    #USUAL WAY 
     1212    mfget ${dm_liste[*]} ${DEST} > out_rsync 2>&1 
     1213    RET=$? 
     1214 
     1215#       #RSYNC WITH NETWORK RSH CALL 
     1216#       echo ${RSYNC} ${RSYNC_opt} --rsync-path=${REMOTE_RSYNC} -e rsh ${STOREHOST}:"${dm_liste}" ${STOREHOST}:${RUN_DIR}/${DEST} > out_rsync 2>&1 
     1217#       ${RSYNC} ${RSYNC_opt} --rsync-path=${REMOTE_RSYNC} -e rsh ${STOREHOST}:"${dm_liste}" ${STOREHOST}:${RUN_DIR}/${DEST} >> out_rsync 2>&1 
     1218 
     1219#       #RSYNC WITH NFS USE 
     1220#       echo ${RSYNC} ${RSYNC_opt} ${dm_liste} ${RUN_DIR}/${DEST} > out_rsync 2>&1 
     1221#       ${RSYNC} ${RSYNC_opt} ${dm_liste} ${RUN_DIR}/${DEST} >> out_rsync 2>&1 
     1222 
     1223#       RET=$? 
     1224#       IGCM_sys_Rsync_out $RET 
     1225 
     1226#       ${libIGCM}/libIGCM_sys/IGCM_analyse_rsync_out.awk out_rsync 
     1227#       (( RET=RET+$? )) 
     1228 
     1229    if [ ${RET} -gt 0 ] ; then 
     1230      echo "IGCM_sys_Get : copy error." 
     1231      cat out_rsync 
     1232      IGCM_debug_Exit "IGCM_sys_Get" 
     1233    else 
     1234      \rm out_rsync 
     1235    fi 
     1236  else 
     1237    ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
     1238  fi 
     1239  IGCM_debug_PopStack "IGCM_sys_Get" 
     1240} 
     1241 
     1242#D-#================================================== 
     1243#D-function IGCM_sys_GetBuffer 
     1244#D-* Purpose: Get a file from ${SCRATCHDIR} 
     1245#D-* Examples: IGCM_sys_GetBuffer myfile /destpath/myfile_with_PREFIX 
     1246#D-            IGCM_sys_GetBuffer /l Array_contain_myfiles /destpath/ 
     1247function IGCM_sys_GetBuffer { 
     1248  IGCM_debug_PushStack "IGCM_sys_GetBuffer" $@ 
     1249 
     1250  typeset DEST RET buf_liste ifile target file_work 
     1251 
     1252  if ( $DEBUG_sys ) ; then 
     1253    echo "IGCM_sys_GetBuffer :" $@ 
     1254  fi 
     1255  if [ $DRYRUN -le 2 ]; then 
     1256    if [ X${1} = X'/l' ] ; then 
     1257      # test if the first file is present in the old computation : 
     1258      eval set +A buf_liste \${${2}} 
     1259    else 
     1260      eval set +A buf_liste ${1} 
     1261    fi 
     1262    eval DEST=\${${#}} 
     1263 
     1264    #USUAL WAY 
     1265    if [ X${1} = X'/l' ] ; then 
     1266      (( RET=0 )) 
     1267      for target in ${buf_liste[*]} ; do 
     1268        local_file=$( basename ${target} ) 
     1269        \cp ${target} ${DEST}/${local_file} >> out_rsync 2>&1 
     1270        (( RET = RET + $? )) 
     1271      done 
     1272    else 
     1273      \cp ${buf_liste} ${DEST} >> out_rsync 2>&1 
     1274      RET=$? 
     1275    fi 
     1276 
     1277    if [ ${RET} -gt 0 ] ; then 
     1278      echo "IGCM_sys_GetBuffer : copy error." 
     1279      cat out_rsync 
     1280      IGCM_debug_Exit "IGCM_sys_GetBuffer" 
     1281    else 
     1282      \rm out_rsync 
     1283    fi 
     1284  else 
     1285    ( ${DEBUG_debug} ) && echo "DRYRUN mode = " $DRYRUN >> stack 
     1286  fi 
     1287  IGCM_debug_PopStack "IGCM_sys_GetBuffer" 
    10911288} 
    10921289 
     
    10991296#D- 
    11001297function IGCM_sys_GetDate_FichWork { 
    1101     IGCM_debug_PushStack "IGCM_sys_FichWork" $@ 
    1102     if ( $DEBUG_sys ) ; then 
    1103         echo "IGCM_sys_GetDate_FichWork :" $@ 
    1104     fi 
    1105     typeset dateF 
    1106     set +A dateF -- $( rsh ${MASTER} -n /opt/freeware/bin/ls -l --full-time --time-style='+%Y%m%d%H%M%S' ${1} ) 
    1107     eval ${2}=${dateF[5]} 
    1108  
    1109     # donne la date filesys d'un fichier sur la machine work 
    1110     IGCM_debug_PopStack "IGCM_sys_FichWork" 
     1298  IGCM_debug_PushStack "IGCM_sys_FichWork" $@ 
     1299  if ( $DEBUG_sys ) ; then 
     1300    echo "IGCM_sys_GetDate_FichWork :" $@ 
     1301  fi 
     1302  typeset dateF 
     1303  set +A dateF -- $( rsh ${MASTER} -n /opt/freeware/bin/ls -l --full-time --time-style='+%Y%m%d%H%M%S' ${1} ) 
     1304  eval ${2}=${dateF[5]} 
     1305 
     1306  # donne la date filesys d'un fichier sur la machine work 
     1307  IGCM_debug_PopStack "IGCM_sys_FichWork" 
    11111308} 
    11121309 
    11131310#D-#================================================== 
    11141311#D-function IGCM_sys_GetDate_FichArchive 
    1115 #D-* Purpose: donne la date filesys d'un fichier sur le filesystem ARCHIVE  
     1312#D-* Purpose: donne la date filesys d'un fichier sur le filesystem ARCHIVE 
    11161313#D-* Examples: 
    11171314#D- 
    11181315function IGCM_sys_GetDate_FichArchive { 
    1119     IGCM_debug_PushStack "IGCM_sys_FichArchive" $@ 
    1120     if ( $DEBUG_sys ) ; then 
    1121         echo "IGCM_sys_GetDate_FichArchive :" $@ 
    1122     fi 
    1123     typeset dateF 
    1124     set +A dateF -- $( rsh ${STOREHOST} -n ls -l --full-time --time-style='+%Y%m%d%H%M%S' ${1} ) 
    1125     eval ${2}=${dateF[5]} 
    1126  
    1127     IGCM_debug_PopStack "IGCM_sys_FichArchive" 
     1316  IGCM_debug_PushStack "IGCM_sys_FichArchive" $@ 
     1317  if ( $DEBUG_sys ) ; then 
     1318    echo "IGCM_sys_GetDate_FichArchive :" $@ 
     1319  fi 
     1320  typeset dateF 
     1321  set +A dateF -- $( rsh ${STOREHOST} -n ls -l --full-time --time-style='+%Y%m%d%H%M%S' ${1} ) 
     1322  eval ${2}=${dateF[5]} 
     1323 
     1324  IGCM_debug_PopStack "IGCM_sys_FichArchive" 
    11281325} 
    11291326 
     
    11321329 
    11331330function IGCM_sys_rebuild { 
    1134     IGCM_debug_PushStack "IGCM_sys_rebuild" -- $@ 
    1135     if ( $DEBUG_sys ) ; then 
    1136         echo "IGCM_sys_rebuild :" $@ 
    1137     fi 
    1138     /homegpfs/rech/psl/rpsl035/bin/rebuild -f -o $@ 
    1139     if [ $? -gt 0 ] ; then 
    1140        echo "IGCM_sys_rebuild : erreur ${@}." 
    1141        IGCM_debug_Exit "rebuild" 
    1142     fi 
    1143  
    1144     IGCM_debug_PopStack "IGCM_sys_rebuild" 
     1331  IGCM_debug_PushStack "IGCM_sys_rebuild" -- $@ 
     1332  if ( $DEBUG_sys ) ; then 
     1333    echo "IGCM_sys_rebuild :" $@ 
     1334  fi 
     1335  /homegpfs/rech/psl/rpsl035/bin/rebuild -f -o $@ 
     1336  if [ $? -gt 0 ] ; then 
     1337    echo "IGCM_sys_rebuild : erreur ${@}." 
     1338    IGCM_debug_Exit "rebuild" 
     1339  fi 
     1340 
     1341  IGCM_debug_PopStack "IGCM_sys_rebuild" 
    11451342} 
    11461343 
     
    11491346 
    11501347function IGCM_sys_activ_variables { 
    1151     IGCM_debug_PushStack "IGCM_sys_activ_variables" 
    1152     if ( $DEBUG_sys ) ; then 
    1153         echo "IGCM_sys_activ_variables " 
    1154     fi 
     1348  IGCM_debug_PushStack "IGCM_sys_activ_variables" 
     1349  if ( $DEBUG_sys ) ; then 
     1350    echo "IGCM_sys_activ_variables " 
     1351  fi 
    11551352 
    11561353# -------------------------------------------------------------------- 
     
    11621359# -------------------------------------------------------------------- 
    11631360 
    1164     IGCM_debug_PopStack "IGCM_sys_activ_variables" 
     1361  IGCM_debug_PopStack "IGCM_sys_activ_variables" 
    11651362 
    11661363} 
     
    11701367 
    11711368function IGCM_sys_desactiv_variables { 
    1172     IGCM_debug_PushStack "IGCM_sys_desactiv_variables" 
    1173     if ( $DEBUG_sys ) ; then 
    1174         echo "IGCM_sys_desactiv_variables " 
    1175     fi 
     1369  IGCM_debug_PushStack "IGCM_sys_desactiv_variables" 
     1370  if ( $DEBUG_sys ) ; then 
     1371    echo "IGCM_sys_desactiv_variables " 
     1372  fi 
    11761373# -------------------------------------------------------------------- 
    11771374#D- MPI specifications 
     
    11821379# -------------------------------------------------------------------- 
    11831380 
    1184     IGCM_debug_PopStack "IGCM_sys_desactiv_variables" 
    1185    
     1381  IGCM_debug_PopStack "IGCM_sys_desactiv_variables" 
     1382 
    11861383} 
    11871384 
    11881385############################################################ 
    1189 # Build run file 
     1386# Build MPI/OMP scripts 
     1387function IGCM_sys_build_execution_scripts 
     1388{ 
     1389  IGCM_debug_PushStack "IGCM_sys_build_execution_scripts" $@ 
     1390  if ( $DEBUG_sys ) ; then 
     1391    echo "IGCM_sys_build_execution_scripts " $@ 
     1392  fi 
     1393 
     1394  typeset NbNodes_Job NbProc_Job comp_proc_mpi_loc comp_proc_omp_loc mpi_count 
     1395 
     1396  if [ ! -f ${SUBMIT_DIR}/Job_${config_UserChoices_JobName} ]  ; then 
     1397    IGCM_debug_Exit "IGCM_sys_vargas build_execution_scripts : Job_${config_UserChoices_JobName} don't exist in SUBMIT_DIR : ${SUBMIT_DIR} " 
     1398  fi 
     1399 
     1400  if ( ${OK_PARA_MPMD} ) ; then 
     1401 
     1402    if [ -f run_file ] ; then 
     1403      IGCM_sys_Rm -f run_file 
     1404    fi 
     1405    touch run_file 
     1406 
     1407    if ( ${OK_PARA_OMP} ) ; then 
     1408# NEW : 2 Noeuds 
     1409# @ task_geometry={(0)(1,2,3)} 
     1410# Nombre de processus demandes 
     1411      echo "Job_${config_UserChoices_JobName} includes task_geometry = \c" 
     1412      cat ${SUBMIT_DIR}/Job_${config_UserChoices_JobName} | grep "task_geometry" | sed -e "s/[^(]*([^(]*/(/g" 
     1413      echo "Job_${config_UserChoices_JobName} includes task_geometry  with NbNodes = \c" 
     1414      cat ${SUBMIT_DIR}/Job_${config_UserChoices_JobName} | grep "task_geometry" | sed -e "s/[^(]*([^(]*/(/g" | wc -c 
     1415      NbNodes_Job=$(( $( cat ${SUBMIT_DIR}/Job_${config_UserChoices_JobName} | grep "task_geometry" | sed -e "s/[^(]*([^(]*/(/g" | wc -c ) - 1 )) 
     1416 
     1417      if [ ${NbNodes_Job} -eq 0 ] ; then 
     1418        IGCM_debug_Print 2 "Error in Job_${config_UserChoices_JobName} ressources : no task_geometry defined with OpenMP run." 
     1419        exit 1 
     1420      fi 
     1421    else 
     1422 
     1423# OLD : 
     1424# @ total_tasks = 3 
     1425# @ environment = "BATCH_NUM_PROC_TOT=3" 
     1426# Pas d OpenMP 
     1427# @ resources = ConsumableCpus(1) 
     1428 
     1429      echo "Job_${config_UserChoices_JobName} includes total_tasks = \c" 
     1430      cat ${SUBMIT_DIR}/Job_${config_UserChoices_JobName} | grep "total_tasks" | sed -e "s/.*total_tasks = //" 
     1431      NbProc_Job=$( cat ${SUBMIT_DIR}/Job_${config_UserChoices_JobName} | grep "total_tasks" | sed -e "s/.*total_tasks = //" ) 
     1432      NbProc_Job=${NbProc_Job:=0} 
     1433      if [ ${NbProc_Job} -eq 0 ] ; then 
     1434        IGCM_debug_Print 2 "Error in Job_${config_UserChoices_JobName} ressources : no total_tasks defined with MPI only run." 
     1435        exit 1 
     1436      fi 
     1437      if ( $( egrep '^# *@ *resources *= *ConsumableCpus\(1\)' ${SUBMIT_DIR}/Job_${config_UserChoices_JobName} >/dev/null 2>&1 ) ) ; then 
     1438        IGCM_debug_Print 2 "ressources =  ConsumableCpus(1) line found into Job_${config_UserChoices_JobName}" 
     1439      else 
     1440        IGCM_debug_Print 2 "Error in Job_${config_UserChoices_JobName} ressources = line not found. Job should include resources = ConsumableCpus(1) " 
     1441        exit 1 
     1442      fi 
     1443    fi 
     1444 
     1445# run_file construction 
     1446 
     1447# Then first loop on the components for the coupler ie oasis 
     1448 
     1449### the coupler ie oasis must be the first one 
     1450    for comp in ${config_ListOfComponents[*]} ; do 
     1451 
     1452      eval ExeNameIn=\${config_Executable_${comp}[0]} 
     1453      eval ExeNameOut=\${config_Executable_${comp}[1]} 
     1454 
     1455      # for CPL component only 
     1456      if [ "X${comp}" = "XCPL" ] ; then 
     1457 
     1458        eval comp_proc_mpi_loc=\${${comp}_PROC_MPI} 
     1459        eval comp_proc_omp_loc=\${${comp}_PROC_OMP} 
     1460 
     1461        if ( ${OK_PARA_MPI} ) ; then 
     1462 
     1463          (( mpi_count = 1 )) 
     1464          until [ ${mpi_count} -gt ${comp_proc_mpi_loc} ] ; do 
     1465            if ( ${OK_PARA_OMP} ) ; then 
     1466              echo "env OMP_NUM_THREADS=${comp_proc_omp_loc} ./${ExeNameOut} " >> run_file 
     1467            else 
     1468              echo "./${ExeNameOut}" >> run_file 
     1469            fi 
     1470            (( mpi_count = mpi_count + 1 )) 
     1471          done 
     1472        else 
     1473          if ( ${OK_PARA_OMP} ) ; then 
     1474            echo "env OMP_NUM_THREADS=${comp_proc_omp_loc} ./${ExeNameOut} " >> run_file 
     1475          else 
     1476            echo "./${ExeNameOut} " >> run_file 
     1477          fi 
     1478        fi 
     1479      fi 
     1480    done 
     1481 
     1482# Then second loop on the components 
     1483 
     1484    for comp in ${config_ListOfComponents[*]} ; do 
     1485 
     1486      eval ExeNameIn=\${config_Executable_${comp}[0]} 
     1487      eval ExeNameOut=\${config_Executable_${comp}[1]} 
     1488 
     1489      # Only if we really have an executable for the component and not the coupler ie oasis: 
     1490      if ( [ "X${ExeNameOut}" != X\"\" ] && [ "X${comp}" != "XCPL" ] ) ; then 
     1491 
     1492        eval comp_proc_mpi_loc=\${${comp}_PROC_MPI} 
     1493        eval comp_proc_omp_loc=\${${comp}_PROC_OMP} 
     1494 
     1495        if ( ${OK_PARA_MPI} ) ; then 
     1496 
     1497          (( mpi_count = 1 )) 
     1498          until [ ${mpi_count} -gt ${comp_proc_mpi_loc} ] ; do 
     1499            if ( ${OK_PARA_OMP} ) ; then 
     1500              echo "env OMP_NUM_THREADS=${comp_proc_omp_loc} ./${ExeNameOut} " >> run_file 
     1501            else 
     1502              echo "./${ExeNameOut}" >> run_file 
     1503            fi 
     1504            (( mpi_count = mpi_count + 1 )) 
     1505          done 
     1506        else 
     1507          if ( ${OK_PARA_OMP} ) ; then 
     1508            echo "env OMP_NUM_THREADS=${comp_proc_omp_loc} ./${ExeNameOut} " >> run_file 
     1509          else 
     1510                    # to be tested : no MPI only OpenMP into MPMD mode 
     1511            echo "./${ExeNameOut} " >> run_file 
     1512          fi 
     1513        fi 
     1514      fi 
     1515    done 
     1516 
     1517    EXECUTION="${HOST_MPIRUN_COMMAND} -pgmmodel mpmd -cmdfile ./run_file" 
     1518 
     1519    IGCM_sys_Chmod u+x run_file 
     1520    if ( $DEBUG_sys ) ; then 
     1521      echo "run_file contains : " 
     1522      cat run_file 
     1523    fi 
     1524 
     1525  else # Only one executable. launch it. 
     1526 
     1527    for comp in ${config_ListOfComponents[*]} ; do 
     1528 
     1529      eval ExeNameIn=\${config_Executable_${comp}[0]} 
     1530      eval ExeNameOut=\${config_Executable_${comp}[1]} 
     1531 
     1532      [ "X${ExeNameOut}" != X\"\" ] &&  EXECUTION="time ./${ExeNameOut}" 
     1533 
     1534    done 
     1535 
     1536  fi 
     1537 
     1538  IGCM_debug_Print 1 "sys vargas : execution command is " 
     1539  IGCM_debug_Print 1 "$EXECUTION" 
     1540 
     1541  IGCM_debug_PopStack "IGCM_sys_build_execution_scripts" 
     1542} 
    11901543 
    11911544function IGCM_sys_build_run_file { 
    1192     IGCM_debug_PushStack "IGCM_sys_build_run_file" $@ 
    1193 set -x 
    1194     if ( $DEBUG_sys ) ; then 
    1195         echo "IGCM_sys_build_run_file " $@ 
    1196     fi 
    1197  
    1198     NUM_PROC_OASIS=1 
    1199  
    1200     # Set the number of processors for OCE here 
    1201     NUM_PROC_OCE=5 
    1202  
    1203     (( NUM_PROC_ATM = BATCH_NUM_PROC_TOT - NUM_PROC_OASIS - NUM_PROC_OCE )) 
    1204      
    1205     if [ $1 = MPI2 ]; then 
    1206        echo "IGCM_sys_build_run_file : error - MPI2 not available on vargas. " 
    1207        IGCM_debug_Exit "IGCM_sys_build_run_file" 
    1208     elif [ $1 = MPI1 ]; then 
    1209         cat <<EOF > run_file 
    1210 ./oasis 
    1211 EOF 
    1212  
    1213         typeset i 
    1214         (( i = 0 )) 
    1215         while [ ${i} -lt ${NUM_PROC_ATM} ] ; do 
    1216             (( i = i + 1 )) 
    1217             cat <<EOF >> run_file 
    1218 ./lmdz.x 
    1219 EOF 
    1220         done 
    1221  
    1222         (( i = 0 )) 
    1223         while [ ${i} -lt ${NUM_PROC_OCE} ] ; do 
    1224             (( i = i + 1 )) 
    1225             cat <<EOF >> run_file 
    1226 ./opa.xx 
    1227 EOF 
    1228         done 
    1229  
    1230         wc -l run_file 
    1231     fi 
    1232 set +x 
    1233     IGCM_debug_PopStack "IGCM_sys_build_run_file" 
    1234 } 
     1545 
     1546  IGCM_debug_Print 3 " dummy function : IGCM_sys_build_run_file " 
     1547 
     1548} 
Note: See TracChangeset for help on using the changeset viewer.