]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 1 | /* |
2 | * $Id$ | |
3 | * | |
4 | * $Log$ | |
5 | * Revision 1.3 1997/10/23 16:25:11 mclareni | |
6 | * NT mods, mostly C Fortran interface | |
7 | * | |
8 | * Revision 1.2 1996/09/20 14:51:15 cernlib | |
9 | * Linux added | |
10 | * | |
11 | * Revision 1.1.1.1 1996/02/15 17:49:20 mclareni | |
12 | * Kernlib | |
13 | * | |
14 | */ | |
15 | #include "kerngen/pilot.h" | |
16 | #if defined(CERNLIB_QMHPX)||defined(CERNLIB_QMOS9) | |
17 | #include "hpxgs/lenocc.c" | |
18 | #elif defined(CERNLIB_QMIRT)||defined(CERNLIB_QMIRTD) | |
19 | #include "irtgs/lenocc.c" | |
20 | #elif 1 | |
21 | /*> ROUTINE LENOCC | |
22 | CERN PROGLIB# M507 LENOCC .VERSION KERNVMI 1.06 920511 | |
23 | ORIG. 30/04/92, RDM + JZ | |
24 | ||
25 | N = LENOCC (CHLINE) find last non-blank character in CHLINE | |
26 | */ | |
27 | #if defined(CERNLIB_QXNO_SC) | |
28 | int type_of_call lenocc(chline, len) | |
29 | #elif defined(CERNLIB_QXCAPT) | |
30 | int type_of_call LENOCC(chline, len) | |
31 | #else | |
32 | int type_of_call lenocc_(chline, len) | |
33 | #endif | |
34 | char *chline; | |
35 | int len; | |
36 | { | |
37 | static unsigned int blnk = 0x20202020; | |
38 | unsigned int *wdcur; | |
39 | char *chcur; | |
40 | int ntail, i; | |
41 | ||
42 | chcur = chline + len; | |
43 | if (len <= 24) goto small; | |
44 | ||
45 | /* ---- handle long string */ | |
46 | ||
47 | /* look at the last ntail characters */ | |
48 | ||
49 | ntail = ((int)chcur & 3); | |
50 | for (i = ntail; i > 0; i--) | |
51 | { if (*--chcur != ' ') goto exit; } | |
52 | ||
53 | /* look for trailing blank words */ | |
54 | ||
55 | wdcur = (unsigned int*) (chcur-4); | |
56 | while (wdcur >= (unsigned int*)chline ) | |
57 | { if (*wdcur != blnk) break; wdcur--; } | |
58 | ||
59 | /* find last non-blank character */ | |
60 | ||
61 | chcur = (char*) (wdcur+1); | |
62 | while (chcur > chline) | |
63 | { if (*--chcur != ' ') goto exit; } | |
64 | return 0; | |
65 | ||
66 | exit: return chcur+1 - chline; | |
67 | ||
68 | /* ---- handle short string */ | |
69 | ||
70 | small: | |
71 | while (chcur > chline) | |
72 | { if (*--chcur != ' ') goto exit; } | |
73 | return 0; | |
74 | } | |
75 | /*> END <----------------------------------------------------------*/ | |
76 | #endif |