|
|
1.1 ! root 1: /* Copyright Bell Telephone Laboratories Whippany, N.J. ! 2: ! 3: * ///////////////////////////////////// ! 4: * ///////////////////////////////////// ! 5: * /////////////// ext$ //////////////// ! 6: * /// J. P. Hawkins WH X4610 8C-001 /// ! 7: * ///// Tue Feb 17 07:33:14 1981 ////// ! 8: * ///////////////////////////////////// ! 9: * ///////////////////////////////////// ! 10: * @(#) ext.c: V1.3 3/4/81 ! 11: ! 12: * BASIC ext$(string,pos,len) ! 13: * return substring of string starting at position pos length len ! 14: * where string is a string expression and pos and len are ! 15: * numeric expressions. ! 16: */ ! 17: ! 18: #include "bas.h" ! 19: char *ext(args) ! 20: char args[]; ! 21: { ! 22: double evalx(); ! 23: char *prncpy(); ! 24: char string[80],result[80]; ! 25: char pos[20],num[20]; ! 26: int posit,number; ! 27: char *holdptr,*sptr; ! 28: ! 29: holdptr = args; ! 30: holdptr=prncpy(result,args)+1; /* get str field and point past ',' */ ! 31: sptr=result; ! 32: holdptr=prncpy(pos,holdptr)+1; /* get position expr & point past ',' */ ! 33: prncpy(num,holdptr); /* get size expression */ ! 34: posit = (int)evalx(pos)-1; /* evaluate the position field */ ! 35: number = (int)evalx(num); /* evaluate the size field */ ! 36: evals(sptr,string); ! 37: strncpy(result,&string[posit],number); /* put the segment in result */ ! 38: result[number] = '\0'; /* null terminate result */ ! 39: ! 40: if(posit > strlen(string)) ! 41: { ! 42: error(inst.thing.linno, 55); /* OUT OF STRING RANGE */ ! 43: } ! 44: ! 45: return(result); ! 46: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.