depmac
C DEPMAC SOURCE PV 22/02/23 11:55:06 11291 C CET INTERESSANT SOUS-PROGRAMME S'EFFORCE DE CENTRALISER LES C FONCTIONS DEPENDANTES DU MATERIEL UTILISE C VOICI LA VERSION POUR LINUX,LINUX64,WIN32,WIN64 C SUBROUTINE DEPMAC implicit integer(i-n) external extint,long -INC PPARAM -INC CCOPTIO CHARACTER*8 USRNAM,cgibnam CHARACTER*(LOCHAI) cvarenv,chatest equivalence (cvarenv,ivarenv) logical ex,LOG1,LOG2,LOG3 DIMENSION EXTR(1),CBRACT(1),CARACT(1),ITTIME(4) character*(*) chacha REAL*8 XKT COMMON /CLGI/L6C CHARACTER*64 L6C SAVE KPREC DATA ICONT/1/ C C************************************************************************** C C INITIALISATION DU TIMER ITH=0 CALL TIMESPV(ITTIME,ITH) KPREC=(ITTIME(1)+ITTIME(2))/10 C graphiques X iogra=2 C lecture de fichier automatique iolec=3 C INITIALISATION NB DE ZERO CONSECUTIFS ( 48 POUR IBM RS/6000) IZROSF=48 C OUVERTURE DES FICHIERS ERREURS,NOTICE,PROCEDURE C GIBI.ERREUR en local INQUIRE(FILE='GIBI.ERREUR',EXIST=EX) if (ex) then cvarenv='GIBI.ERREUR' else cvarenv='CASTEM_ERREUR'//char(0) l=LOCHAI call ooozen(ivarenv,l) if (l.eq.0) then cvarenv='/u/castem/GIBI.ERREUR' endif endif OPEN (UNIT=35,FILE=CVARENV(1:L),STATUS='OLD',IOSTAT=IOSTAT, & FORM='FORMATTED') IF (IOSTAT.NE.0) THEN WRITE (6,FMT= & '('' ERREUR OUVERTURE DU FICHIER DE MESSAGES D''''ERREUR'')') UTIFI3(5)=-1 ELSE UTIFI3(5)=-1 ENDIF * y a t'il une langue dans l'environnement? cvarenv='CASTEM_LANGUE'//char(0) l=lochai call ooozen(ivarenv,l) if (l.ne.0) LANGUE=cvarenv(1:l) * La notice est maintenant faite dans infopn * La procedure est maintenant faite dans procpn C Recuperation de la variable d'environnement $CASTEM_PROJET cvarenv='CASTEM_PROJET'//char(0) l=LOCHAI call ooozen(ivarenv,l) LOG1 = .FALSE. LOG2 = .FALSE. IF (l .gt. 0) THEN C On teste avec le fichier exact donne dans $CASTEM_PROJET chatest=cvarenv(1:l) LL=l INQUIRE(FILE=chatest(1:LL), EXIST=LOG1, IOSTAT=IOSTAT,ERR=999) IF (LOG1) GOTO 101 C On teste avec .dgibi en plus a la fin chatest=cvarenv(1:l)//'.dgibi' LL=l+6 INQUIRE(FILE=chatest(1:LL), EXIST=LOG2, IOSTAT=IOSTAT,ERR=999) IF (LOG2) GOTO 101 C On teste avec .DGIBI en plus a la fin chatest=cvarenv(1:l)//'.DGIBI' LL=l+6 INQUIRE(FILE=chatest(1:LL), EXIST=LOG3, IOSTAT=IOSTAT,ERR=999) 101 CONTINUE IF (.NOT. LOG1 .AND. .NOT. LOG2 .AND. .NOT. LOG3) THEN C On n'a pas trouve le fichier demande chatest=cvarenv(1:l) LL=l open (unit=3 ,file='castem.null',iostat=iostat,ERR=999) ELSE open (unit=3 ,file=chatest(1:LL),iostat=iostat,ERR=999) ENDIF C On recherche la derniere extension IPLAC = INDEX(chatest(1:LL),'.',.TRUE.) IF(IPLAC .GT. 1 .AND. chatest(IPLAC:LL) .NE. '.trace' & .AND. chatest(IPLAC:LL) .NE. '.ps' ) THEN l=IPLAC-1 ENDIF cvarenv=chatest(1:l) C On ouvre les autres fichiers chatest=cvarenv(1:l)//'.trace' LL=l+6 open (unit=98,file=chatest(1:LL),iostat=iostat,ERR=999) chatest=cvarenv(1:l)//'.ps' LL=l+3 open (unit=24,file=chatest(1:LL),iostat=iostat,ERR=999) ELSE C $CASTEM_PROJET est vide open (unit=3 ,iostat=iostat,ERR=999) open (unit=98,iostat=iostat,ERR=999) open (unit=24,iostat=iostat,ERR=999) ENDIF C C INITIALISATION TABLES DE TRANSCODAGE POUR LE LGI L6C=':ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-*/()$= ,.' L6C(49:49)='#' L6C(50:50)=' ' L6C(51:51)='!' L6C(52:52)='%' L6C(53:53)='"' L6C(54:54)='_' L6C(55:55)='|' L6C(56:56)='&' L6C(57:57)='''' L6C(58:58)='?' L6C(59:59)='<' L6C(60:60)='>' L6C(61:61)='@' L6C(62:62)=CHAR(92) L6C(63:63)=CHAR(94) L6C(64:64)=CHAR(59) C initialisation du gestionnaire d'interruption (^C) call inthan RETURN 999 CONTINUE C Erreur d'ouverture de fichier INTERR(1)=1 LL=MAX(MIN(LL,40),1) MOTERR =' ' MOTERR(1:LL)=chatest(1:LL) RETURN C C************************************************************************** C ENTRY GIBTEM(XKT) C TEMPS DEPUIS LE DERNIER APPEL EN CENTIEMES DE SECONDE ITH=0 CALL TIMESPV(ITTIME,ITH) KTOT=(ITTIME(1)+ITTIME(2))/10 KT=KTOT-KPREC XKT=KT KPREC=KTOT RETURN ENTRY GIBTRB C TRACE BACK RETURN C C************************************************************************** C ENTRY GIBDAT(JOUR,MOIS,IANNEE) C DATE (EN ENTIERS) CALL OOOZZ1(ITTIME) JOUR=ITTIME(1) MOIS=ITTIME(2) IANNEE=ITTIME(3) RETURN ENTRY GIBECO(IECO) C TEST ENVIRONNEMENT (BATCH OU INTERACTIF) IECO=1 RETURN C C************************************************************************** C C recuperer le nom utilisateur ENTRY GIBNAM(USRNAM) usrnam=cgibnam(usrnam) return C C************************************************************************** C entry prompt c prompt (si on peut le faire) write (ioimp,fmt='('' $ '',$)') return C C************************************************************************** C entry xread(chacha,lon) c pour windows lecture instruction read (ioter,fmt='(A72)') chacha return C C************************************************************************** C C TRAITEMENT D'ERREUR IBM C ON MET SUR TOUTE ERREUR D'EXECUTION IERR A 1 C ET ON POURSUIT L'EXECUTION C ON LAISSE UN MESSAGE D'ERREUR S'IMPRIMER entry errcor C points d'entree a supprimer sur RS/6000 entry cp(chacha) entry cms(chacha) entry elpdyn entry elpsta C GDDM entry asdfld entry asfcol entry asftrn entry asftra entry asqmax entry fsrnit entry ascput entry asread entry asqcur entry ascget entry fsinit entry fsinn entry dsopen entry dsuse entry fsqury entry gslss entry fspcrt entry gsfld entry gsqps entry gswin entry gssati entry gsseg entry gstag entry gscm entry gscol entry gschar entry gsqcb entry gscb entry gsscls entry gsview entry gsclp entry gsuwin entry gsmix entry gsmove entry gsplne entry gsenab entry gsiloc entry gsread entry gsqcho entry gsqloc entry gspat entry gsarea entry gsenda entry gsqwin entry gsqlid entry gsidvf entry gsstfm entry gssdel entry gsqaga entry gssats entry gssave entry gscopy entry fscopy entry fscls entry gsclr entry fsfrce entry asfcur CPHIGS entry pads entry parst entry patr entry pcelst entry pclst entry pdst entry pemst entry pevmm entry pexst entry pfa entry poparf entry popph entry popst entry popwk entry ppl entry ppost entry pqdsp entry pqopst entry pqopwk entry prqlc entry prqpk entry prqst entry psans entry psatch entry pschsp entry pscr entry psdus entry psici entry psis entry psivft entry pslcm entry pspkft entry pspkid entry pspkm entry psplci entry pspmci entry psstm entry pstxci entry pstxfn entry pstxpr C entry psvis entry psvtip entry psvwi entry psvwr entry pswkv entry pswkw entry pupast entry puwk C GKS entry gacwk entry gasgwk entry gclsg entry gclwk entry gcrsg entry gdawk entry gdsg entry gfa entry ginlc entry ginsg entry gmsg entry gopks entry gopwk entry gpl entry gqchh entry gqchxp entry gqdsp entry gqops entry gqopsg entry gqopwk entry gqsga entry gqsgus entry gqwks entry grensg entry grqlc entry grqpk entry grqst entry gsasf entry gschh entry gschsp entry gschxp entry gscr entry gsds entry gsdtec entry gselnt entry gsfaci entry gsfais entry gslcm entry gspkm entry gsplci entry gspmci entry gssgt entry gsstm entry gstxci entry gstxfp entry gsvis entry gsvp entry gswkvp entry gswkwn entry gswn entry gtx entry guwk END C C************************************************************************** C C gestionnaire d'interruption (^C) subroutine extint implicit integer(i-n) -INC PPARAM -INC CCOPTIO C regenerer le signal puis positionner une erreur call inthan ierr =623 IERGLB=623 end C C C************************************************************************** C C mise en place gestionnaire d'interruption (^C) subroutine inthan implicit integer(i-n) external extint call signal(2,extint) end C C************************************************************************** C C reouverture du terminal apres une interruption clavier (si necessaire) subroutine opterm(iun) implicit integer(i-n) close (unit=iun) *** PRINT*,'DEPMAC - opterm',iun %IF WIN32,WIN64 open (unit=iun,file='con:') %ELSE open (unit=iun,file='/dev/tty') %ENDIF end
© Cast3M 2003 - Tous droits réservés.
Mentions légales