00001
00002 c
00003 c Copyright (c) 1986,1987,1988,1989,1990,1991,1992,1993,
00004 c by Steve McMillan, Drexel University, Philadelphia, PA.
00005 c
00006 c All rights reserved.
00007 c
00008 c Redistribution and use in source and binary forms are permitted
00009 c provided that the above copyright notice and this paragraph are
00010 c duplicated in all such forms and that any documentation,
00011 c advertising materials, and other materials related to such
00012 c distribution and use acknowledge that the software was developed
00013 c by the author named above.
00014 c
00015 c THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
00016 c IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
00017 c WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
00018 c
00019
00020 subroutine getnext(line,nl,iscolon,ic0,ic1,input,nin)
00021 c
00022 c Extract the next semicolon-delimited piece from the input line.
00023 c
00024 c Start at iscolon, which becomes ic0; on return, next semicolon
00025 c will be at ic1. The string "input" has NO trailing semicolon.
00026 c
00027 character*(*) line,input
00028 c
00029 ic0 = iscolon
00030 c
00031 15 do ic1 = iscolon+1,nl
00032 if (line(ic1:ic1).eq.';') go to 20
00033 end do
00034 ic1 = nl+1
00035 c
00036 20 if (ic1.lt.nl.and.line(ic1+1:ic1+1).eq.';') then
00037 c
00038 c Map ";;" to ";" and continue.
00039 c
00040 do i = ic1+1,nl-1
00041 line(i:i) = line(i+1:i+1)
00042 end do
00043 nl = nl- 1
00044 iscolon = ic1
00045 go to 15
00046 end if
00047 c
00048 nin = ic1-ic0-1
00049 input(1:nin) = line(ic0+1:ic1-1)
00050 iscolon = ic1
00051 c
00052 end