Online File
Rick Aster: Professional SAS Programming Shortcuts: Contents
DATA _NULL_;
RETAIN TEXT
"If you don't have a plan for your life, someone else does."
LINELEN 25;
LENGTH FRAGMENT $ 3;
ARRAY TEXTLINE{4} $ 25;
C = 1;
LENGTH = LENGTH(TEXT);
* Find lines of text. ;
DO I = 1 TO DIM(TEXTLINE);
TEXTLINE{I} = '';
IF C >= LENGTH THEN CONTINUE;
* Skip spaces to find start of line. ;
DO WHILE(SUBSTR(TEXT, C, 1) = ' ');
C + 1;
END;
START = C;
* Find end of line at space, hyphen, or dash. ;
END = 0;
IF START + LINELEN <= LENGTH THEN
DO C = START + LINELEN - 1 TO START BY -1
UNTIL (END);
FRAGMENT = SUBSTR(TEXT, C);
IF SUBSTR(FRAGMENT, 2, 1) = ' ' OR
SUBSTR(FRAGMENT, 2, 2) = '--' OR
(SUBSTR(FRAGMENT, 1, 1) = '-' AND
SUBSTR(FRAGMENT, 2, 1) NE '-') THEN END = C;
END;
IF END THEN DO;
TEXTLINE{I} = SUBSTR(TEXT, START, END - START + 1);
C = END + 1;
END;
ELSE DO;
TEXTLINE{I} = SUBSTR(TEXT, START);
C = START + LINELEN;
END;
END;
* Show results. ;
DO I = 1 TO DIM(TEXTLINE);
IF TEXTLINE{I} NE '' THEN PUT TEXTLINE{I};
END;
RUN;