source: trunk/UTILITAIRE/routine_name.pro @ 2

Last change on this file since 2 was 2, checked in by opalod, 22 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 2.9 KB
Line 
1;------------------------------------------------------------
2;------------------------------------------------------------
3;------------------------------------------------------------
4;+
5; NAME:routine_name,remonte
6;
7; PURPOSE:retourne le nom de la routine (procedure ou function) ds
8; lequel on se trouve
9;
10; CATEGORY:utilitaire
11;
12; CALLING SEQUENCE:res=routine_name([remonte])
13;
14; INPUTS: remonte: un entier qui donne de combien de niveau on doit
15; remonter ds l''empillement des routines ewt sous-routines pour
16; retrouver le nom de la routine cherchee
17;
18; KEYWORD PARAMETERS:
19;
20; OUTPUTS:un string donnant soit le nom de la routine en entier (avec
21; le path) soit '$MAIN$'
22;
23; COMMON BLOCKS:
24;
25; SIDE EFFECTS:
26;
27; RESTRICTIONS:
28;   cette fonction utilise le mot cle OUTPUT ds help.pro et il est
29;   specifie ds l''aide en ligne que la syntaxe du retour de ce mot cle
30;   peut changer suivant la version du code. Cette version marche avec
31;   IDL 5.2
32;
33; EXAMPLE:
34;
35;  IDL> print, routine_name()
36;  /usr1/com/smasson/IDL_RD/UTILITAIRE/report.pro
37;  IDL> print, routine_name(1)
38;  /usr1/com/smasson/IDL_RD/PLOTS/DIVERS/determineminmax.pro
39;  IDL> print, routine_name(2)
40;  /usr1/com/smasson/IDL_RD/PLOTS/DESSINE/plt.pro
41;  IDL> print, routine_name(3)
42;  $MAIN$
43;  IDL> print, routine_name(4)
44;  $MAIN$
45;
46; MODIFICATION HISTORY:Sebastien Masson (smasson@lodyc.jussieu.fr)
47;                      21/10/1999
48;-
49;------------------------------------------------------------
50;------------------------------------------------------------
51;------------------------------------------------------------
52FUNCTION routine_name,  remonte
53;
54   version=strmid(!version.release,0,3)
55   if version EQ '5.2' OR version EQ '5.3' OR version EQ '5.4' then begin
56      help,  /traceback, output = name
57      name = strtrim(name, 1)   ; on enleve les blancs en debut de ligne
58; on vat mettre les elements du vecteur bout a bout pour former un
59; unique sring
60      allnames = ''
61      for i = 0, n_elements(name)-1 do allnames = allnames+name[i]
62;
63      name = str_sep(allnames, '%') ; on le redecoupe
64      name = strtrim(name, 2)   ; on eleve les blancs devant et derriere
65      name = strcompress(name)  ; on compresse les blancs
66; on ne retient pas les 2 premiers elements qui sont 1  un vide et la
67; ligne concernant routine_name
68      name = name[2: n_elements(name)-1]
69; on choisit la ligne qui nous concerne
70      if NOT keyword_set(remonte) then remonte = 0
71      if remonte GE n_elements(name) then return,  '$MAIN$'
72      name = name[remonte]
73      if strpos(name, '$MAIN$') NE -1 then return,  '$MAIN$'
74      name = str_sep(name, ' ')
75      if n_elements(name) LT 3  then name = name[0] ELSE name = 'L.'+name[1]+' '+name[2]
76   ENDIF ELSE BEGIN
77      print, ('attention la fonction routine_name a ete ecrite pour les versions: !C IDL 5.2, IDL 5.2.1, 5.3 ou 5.4. ou 5.4.1 Verifier qu''elle marche bien avec la version '+!version.release)
78      return, 'Error'
79   ENDELSE
80   return, name
81end
Note: See TracBrowser for help on using the repository browser.