~ubuntu-branches/ubuntu/wily/eso-midas/wily-proposed

« back to all changes in this revision

Viewing changes to libsrc/ftoc-new/stloc.fc

  • Committer: Package Import Robot
  • Author(s): Ole Streicher
  • Date: 2014-04-22 14:44:58 UTC
  • Revision ID: package-import@ubuntu.com-20140422144458-okiwi1assxkkiz39
Tags: upstream-13.09pl1.2+dfsg
ImportĀ upstreamĀ versionĀ 13.09pl1.2+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*===========================================================================
 
2
  Copyright (C) 1995-2009 European Southern Observatory (ESO)
 
3
 
 
4
  This program is free software; you can redistribute it and/or 
 
5
  modify it under the terms of the GNU General Public License as 
 
6
  published by the Free Software Foundation; either version 2 of 
 
7
  the License, or (at your option) any later version.
 
8
 
 
9
  This program is distributed in the hope that it will be useful,
 
10
  but WITHOUT ANY WARRANTY; without even the implied warranty of
 
11
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
12
  GNU General Public License for more details.
 
13
 
 
14
  You should have received a copy of the GNU General Public 
 
15
  License along with this program; if not, write to the Free 
 
16
  Software Foundation, Inc., 675 Massachusetts Ave, Cambridge, 
 
17
  MA 02139, USA.
 
18
 
 
19
  Correspondence concerning ESO-MIDAS should be addressed as follows:
 
20
        Internet e-mail: midas@eso.org
 
21
        Postal address: European Southern Observatory
 
22
                        Data Management Division 
 
23
                        Karl-Schwarzschild-Strasse 2
 
24
                        D 85748 Garching bei Muenchen 
 
25
                        GERMANY
 
26
===========================================================================*/
 
27
 
 
28
/*++++++++++++++++++++++++  stloc.fc +++++++++++++++++++++++++++++++++++++++
 
29
.LANGUAGE C
 
30
.IDENTIFICATION Module stloc.fc
 
31
.COMMENTS
 
32
Module contains layer between the keyword related FORTRAN STxxxx interfaces
 
33
and the SC_interfaces written in (hopefully independent) C
 
34
.AUTHOR         K. Banse        ESO - Garching
 
35
.KEYWORDS       standard interfaces.
 
36
.ENVIRONMENT    FORTRAN and C standards
 
37
.VERSION  [1.00] 871207:  created from SXFTOC.C
 
38
.VERSION  [2.60] 880411:  modified new version - the last one
 
39
.VERSION  [2.70] 900316:  fix problems with TEXT_LEN+2
 
40
 
 
41
 090902         last modif
 
42
-----------------------------------------------------------------------------*/
 
43
 
 
44
 
 
45
#include <stdlib.h>
 
46
#include <stdio.h>
 
47
#include <string.h>
 
48
#include <midas_def.h>
 
49
 
 
50
 
 
51
static char  Strip1[258];
 
52
static char  *str_strip1 = Strip1;
 
53
static char  Strip2[258];
 
54
static char  *str_strip2 = Strip2;
 
55
static char  Strip3[258];
 
56
static char  *str_strip3 = Strip3;
 
57
 
 
58
static char  *str_loc1;
 
59
static char  *str_loc2;
 
60
static char  *str_loc3;
 
61
static int  lenloc1, lenloc2, lenloc3;
 
62
 
 
63
/*
 
64
 
 
65
*/
 
66
 
 
67
/*==========================================================================*/
 
68
 
 
69
ROUTINE STLOC(idx,flag,str,lstr)
 
70
int  *idx;
 
71
int  *flag;
 
72
char *str;       /* F77 String */
 
73
int  lstr;
 
74
 
 
75
{
 
76
int  kk;
 
77
 
 
78
 
 
79
if (*idx == 1)
 
80
   {
 
81
   str_loc1 = str;
 
82
   lenloc1 = lstr;
 
83
   }
 
84
else if (*idx == 2)
 
85
   {
 
86
   str_loc2 = str;
 
87
   lenloc2 = lstr;
 
88
   }
 
89
else 
 
90
   {
 
91
   str_loc3 = str;
 
92
   lenloc3 = lstr;
 
93
   }
 
94
 
 
95
/*
 
96
printf("idx = %d, flag = %d, str = %x, lstr = %d\n",*idx,*flag,str,lstr);
 
97
printf("str_loc1 = %x, lenloc1 = %d\n",str_loc1,lenloc1);
 
98
...goes into the next block...
 
99
printf("str[0...3] as int =%d,%d,%d,%d,\n",*str,*(str+1),*(str+2),*(str+3));
 
100
printf("str[0...3] =%c,%c,%c,%c, kk = %d\n",
 
101
*str,*(str+1),*(str+2),*(str+3),kk);
 
102
*/
 
103
 
 
104
 
 
105
if (*flag != 0)
 
106
   {
 
107
   kk = lstr - 1;
 
108
   memset((void *)str,32,kk);         /* blank out char_loc */
 
109
   *(str+kk) = '\0';
 
110
   }
 
111
 
 
112
return 0;
 
113
}
 
114
 
 
115
/*==========================================================================*/
 
116
 
 
117
ROUTINE STSTR(idx,str,lstr)
 
118
int  *idx;
 
119
char *str;      /* F77 String */
 
120
int  lstr;
 
121
 
 
122
{
 
123
register char cc;
 
124
 
 
125
register int m, ln;
 
126
 
 
127
 
 
128
 
 
129
ln = lstr;
 
130
if (ln > 256)
 
131
   {
 
132
   char  txt[80];
 
133
 
 
134
   (void) sprintf(txt,
 
135
          "!OJO! STRSTR called with string of length = %d, i.e. > 256",ln);
 
136
   SCTPUT(txt);
 
137
   ln = 256;
 
138
   }
 
139
else
 
140
   {
 
141
   for (m=ln-1; m>0 ;m--)
 
142
      {
 
143
      cc = str[m];
 
144
      if ((cc != ' ') && (cc != '\0') && (cc != '\t'))
 
145
         break;
 
146
      else
 
147
         ln = m;
 
148
      }
 
149
   }
 
150
 
 
151
 
 
152
if (*idx == 1)
 
153
   {
 
154
   (void) strncpy(Strip1,str,ln);
 
155
   Strip1[ln] = '\0';
 
156
   }
 
157
else if (*idx == 2)
 
158
   {
 
159
   (void) strncpy(Strip2,str,ln);
 
160
   Strip2[ln] = '\0';
 
161
   }
 
162
else
 
163
   {
 
164
   (void) strncpy(Strip3,str,ln);
 
165
   Strip3[ln] = '\0';
 
166
   }
 
167
 
 
168
return 0;
 
169
}
 
170
 
 
171
/*==========================================================================*/
 
172
 
 
173
char * strp_pntr(jdx)
 
174
int  jdx;
 
175
 
 
176
{
 
177
if (jdx == 1)
 
178
   return (str_strip1);
 
179
else if (jdx == 2)
 
180
   return (str_strip2);
 
181
else if (jdx == 3)
 
182
   return (str_strip3);
 
183
else 
 
184
   return ((char *) 0);
 
185
}
 
186
 
 
187
/*==========================================================================*/
 
188
 
 
189
char * loc_pntr(jdx,loclen)
 
190
int  jdx, *loclen;
 
191
 
 
192
{
 
193
if (jdx == 1)
 
194
   {
 
195
   *loclen = lenloc1;
 
196
   return (str_loc1);
 
197
   }
 
198
else if (jdx == 2)
 
199
   {
 
200
   *loclen = lenloc2;
 
201
   return (str_loc2);
 
202
   }
 
203
else if (jdx == 3)
 
204
   {
 
205
   *loclen = lenloc3;
 
206
   return (str_loc3);
 
207
   }
 
208
else 
 
209
   return ((char *) 0);
 
210
}
 
211