Online File

How to use this page


Rick Aster: Professional SAS Programming Shortcuts: Contents

Chapter 40
Program
Word wrap


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;

 O /\

Global
Statements

RICK ASTER

SAS

BOOKS

Tech | Dictionary

Download | Rastinate

Rick Aster

Professional SAS Programming Shortcuts

Contents/Online Files

Corrections

Catalog Page