* * $Id: getsst.F,v 1.1.1.1 1996/04/01 15:03:21 mclareni Exp $ * * $Log: getsst.F,v $ * Revision 1.1.1.1 1996/04/01 15:03:21 mclareni * Mathlib gen * * #include "sys/CERNLIB_machine.h" #include "_gen/pilot.h" SUBROUTINE GETSST(STR,DEL,TRM,NTH,SST,NCH) C RETURN IN SST THE CHARACTER STRING FOUND BETWEEN THE NTH-1 AND NTH C OCCURENCE OF THE DELIMITER 'DEL' BUT BEFORE THE TERMINATOR 'TRM' IN C THE INPUT STRING 'STR'. IF TRM=DEL THEN STR IS CONSIDERED UNLIMITED. C NCH=LENGTH OF THE STRING RETURNED IN SST OR =-1 IF NTH IS <1 OR IF C NTH IS GREATER THAN THE NUMBER OF DELIMITERS IN STR. INTEGER STR(2),DEL,TRM,SST(2) #if defined(CERNLIB_CDC) DATA NCPW/10/ #endif #if !defined(CERNLIB_CDC) DATA NCPW/4/ #endif NCH=-1 IF(NTH.LE.0) RETURN IEND=132000 IF(TRM.NE.DEL) IEND=LOCHAR(TRM,1,STR,132000)-1 IF(IEND.LE.0) IEND=132000 IW=0 IF(NTH.EQ.1) IBEG=1 KTH=0 1 IF(NCPW*IW.LE.IEND) GO TO 2 KTH=KTH+1 IF(KTH.LT.NTH) RETURN 3 IF(IEND.GE.IBEG-1) NCH=IEND-IBEG+1 IF (NCH.GT.0) CALL CHMOVE (STR(1), IBEG, SST, 1, NCH) RETURN 2 IW=IW+1 KWD=STR(IW) 4 NEXT=LOCHAR(DEL,1,KWD,NCPW) IF(NEXT.EQ.0) GO TO 1 KTH=KTH+1 IF(KTH.EQ.NTH) IEND=MIN(IEND,(IW-1)*NCPW+NEXT-1) IF(KTH.LT.NTH) IBEG=(IW-1)*NCPW+NEXT+1 IF(KTH.EQ.NTH) GO TO 3 CALL CHMOVE(-DEL,1,KWD,NEXT,1) GO TO 4 END