**************************************************************************
      * DBG041R4: Format text lines - parse line into words.
      * Copyright (C) 2000  Martin Rowe   <martin@dbg400.net>
      *
      * This program is free software; you can redistribute it and/or modify
      * it under the terms of the GNU General Public License as published by
      * the Free Software Foundation; either version 2 of the License, or
      * (at your option) any later version.
      *
      * This program is distributed in the hope that it will be useful,
      * but WITHOUT ANY WARRANTY; without even the implied warranty of
      * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      * GNU General Public License for more details.
      *
      * You should have received a copy of the GNU General Public License
      * along with this program; if not, write to the Free Software
      * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
      **************************************************************************
     H DATEDIT(*YMD) DEBUG(*YES) OPTION(*NODEBUGIO : *SRCSTMT)
      **************************************************************************
      *  Output text 50 lines of upto 132 characters
     D P#Out           s            132    dim(50)
      **************************************************************************
      *  DATA STRUCTURES
      **************************************************************************
      *  Input data in chunks of entry length
     D #a              s              5  0
     D #b              s              5  0
     D #c              s              5  0
     D #d              s              5  0
     D NoMore          s              1
     D P#In            s            132
     D P#RtnEnt        s              3  0
      **************************************************************************
      *  ENTRY PARAMETERS
      **************************************************************************
     C     *ENTRY        PLIST
     C                   PARM                    P#In                           Text entry
     C                   PARM                    P#RtnEnt                       Returned entries
     C                   PARM                    P#Out                          Returned data
      **************************************************************************
      * MAINLINE PROGRAM
      **************************************************************************
      *  Field initialisation
     C                   EVAL      #a = 0                                       No of input entries
     C                   EVAL      #b = 1                                       actual text length
     C                   EVAL      #c = 1                                       trailing blanks
     C                   EVAL      #d = 0                                       leading blanks
     C                   EVAL      NoMore = *off
     C                   CLEAR                   P#Out                          Returned data
      *  Split the input string into seperate words
B001 C     1             DO        50            #a
      *  Quit if no more to process
B002 C                   IF        NoMore = *on
     C                   LEAVE
E002 C                   ENDIF
      *  Reset start position to next non-blank character
     C     ' '           CHECK     P#In:#b       #c                       70
      *  If non-blank not found, we can leave now
B002 C                   IF        *IN70 = *off
     C                   EVAL      NoMore = *on
      *  Otherwise need to extract to next blank within return length
X002 C                   ELSE
     C     ' '           SCAN      P#In:#c       #d                       70
B003 C                   IF        *IN70
     C                   EVAL      P#Out(#a) = %SUBST(P#In:#c:(#d-#c))

E003 C                   ENDIF
E002 C                   ENDIF
      *  Set up final number of return entries
     C                   EVAL      P#RtnEnt = #a
      *  Set up start point for next word search
     C                   EVAL      #b = #d
E001 C                   ENDDO
      *
     C                   RETURN
      **************************************************************************
Topic revision: r2 - 01 Oct 2014 - 19:37:01 - UnknownUser
 
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding DBG/400? Send feedback