]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MINICERN/packlib/kernlib/kerngen/ccgen/lenocc.c
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / MINICERN / packlib / kernlib / kerngen / ccgen / lenocc.c
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