annotate liboctave/cruft/slatec-err/xerprn.f @ 20595:c1a6c31ac29a

eliminate more simple uses of error_state * ov-classdef.cc: Eliminate simple uses of error_state.
author John W. Eaton <jwe@octave.org>
date Tue, 06 Oct 2015 00:20:02 -0400
parents 648dabbb4c6b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3274
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
1 *DECK XERPRN
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
2 SUBROUTINE XERPRN (PREFIX, NPREF, MESSG, NWRAP)
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
3 C***BEGIN PROLOGUE XERPRN
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
4 C***SUBSIDIARY
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
5 C***PURPOSE Print error messages processed by XERMSG.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
6 C***LIBRARY SLATEC (XERROR)
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
7 C***CATEGORY R3C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
8 C***TYPE ALL (XERPRN-A)
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
9 C***KEYWORDS ERROR MESSAGES, PRINTING, XERROR
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
10 C***AUTHOR Fong, Kirby, (NMFECC at LLNL)
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
11 C***DESCRIPTION
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
12 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
13 C This routine sends one or more lines to each of the (up to five)
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
14 C logical units to which error messages are to be sent. This routine
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
15 C is called several times by XERMSG, sometimes with a single line to
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
16 C print and sometimes with a (potentially very long) message that may
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
17 C wrap around into multiple lines.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
18 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
19 C PREFIX Input argument of type CHARACTER. This argument contains
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
20 C characters to be put at the beginning of each line before
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
21 C the body of the message. No more than 16 characters of
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
22 C PREFIX will be used.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
23 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
24 C NPREF Input argument of type INTEGER. This argument is the number
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
25 C of characters to use from PREFIX. If it is negative, the
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
26 C intrinsic function LEN is used to determine its length. If
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
27 C it is zero, PREFIX is not used. If it exceeds 16 or if
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
28 C LEN(PREFIX) exceeds 16, only the first 16 characters will be
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
29 C used. If NPREF is positive and the length of PREFIX is less
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
30 C than NPREF, a copy of PREFIX extended with blanks to length
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
31 C NPREF will be used.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
32 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
33 C MESSG Input argument of type CHARACTER. This is the text of a
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
34 C message to be printed. If it is a long message, it will be
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
35 C broken into pieces for printing on multiple lines. Each line
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
36 C will start with the appropriate prefix and be followed by a
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
37 C piece of the message. NWRAP is the number of characters per
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
38 C piece; that is, after each NWRAP characters, we break and
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
39 C start a new line. In addition the characters '$$' embedded
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
40 C in MESSG are a sentinel for a new line. The counting of
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
41 C characters up to NWRAP starts over for each new line. The
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
42 C value of NWRAP typically used by XERMSG is 72 since many
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
43 C older error messages in the SLATEC Library are laid out to
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
44 C rely on wrap-around every 72 characters.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
45 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
46 C NWRAP Input argument of type INTEGER. This gives the maximum size
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
47 C piece into which to break MESSG for printing on multiple
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
48 C lines. An embedded '$$' ends a line, and the count restarts
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
49 C at the following character. If a line break does not occur
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
50 C on a blank (it would split a word) that word is moved to the
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
51 C next line. Values of NWRAP less than 16 will be treated as
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
52 C 16. Values of NWRAP greater than 132 will be treated as 132.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
53 C The actual line length will be NPREF + NWRAP after NPREF has
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
54 C been adjusted to fall between 0 and 16 and NWRAP has been
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
55 C adjusted to fall between 16 and 132.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
56 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
57 C***REFERENCES R. E. Jones and D. K. Kahaner, XERROR, the SLATEC
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
58 C Error-handling Package, SAND82-0800, Sandia
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
59 C Laboratories, 1982.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
60 C***ROUTINES CALLED I1MACH, XGETUA
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
61 C***REVISION HISTORY (YYMMDD)
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
62 C 880621 DATE WRITTEN
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
63 C 880708 REVISED AFTER THE SLATEC CML SUBCOMMITTEE MEETING OF
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
64 C JUNE 29 AND 30 TO CHANGE THE NAME TO XERPRN AND TO REWORK
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
65 C THE HANDLING OF THE NEW LINE SENTINEL TO BEHAVE LIKE THE
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
66 C SLASH CHARACTER IN FORMAT STATEMENTS.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
67 C 890706 REVISED WITH THE HELP OF FRED FRITSCH AND REG CLEMENS TO
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
68 C STREAMLINE THE CODING AND FIX A BUG THAT CAUSED EXTRA BLANK
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
69 C LINES TO BE PRINTED.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
70 C 890721 REVISED TO ADD A NEW FEATURE. A NEGATIVE VALUE OF NPREF
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
71 C CAUSES LEN(PREFIX) TO BE USED AS THE LENGTH.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
72 C 891013 REVISED TO CORRECT ERROR IN CALCULATING PREFIX LENGTH.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
73 C 891214 Prologue converted to Version 4.0 format. (WRB)
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
74 C 900510 Added code to break messages between words. (RWC)
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
75 C 920501 Reformatted the REFERENCES section. (WRB)
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
76 C***END PROLOGUE XERPRN
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
77 CHARACTER*(*) PREFIX, MESSG
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
78 INTEGER NPREF, NWRAP
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
79 CHARACTER*148 CBUFF
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
80 INTEGER IU(5), NUNIT
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
81 CHARACTER*2 NEWLIN
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
82 PARAMETER (NEWLIN = '$$')
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
83 C***FIRST EXECUTABLE STATEMENT XERPRN
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
84 CALL XGETUA(IU,NUNIT)
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
85 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
86 C A ZERO VALUE FOR A LOGICAL UNIT NUMBER MEANS TO USE THE STANDARD
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
87 C ERROR MESSAGE UNIT INSTEAD. I1MACH(4) RETRIEVES THE STANDARD
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
88 C ERROR MESSAGE UNIT.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
89 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
90 N = I1MACH(4)
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
91 DO 10 I=1,NUNIT
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
92 IF (IU(I) .EQ. 0) IU(I) = N
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
93 10 CONTINUE
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
94 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
95 C LPREF IS THE LENGTH OF THE PREFIX. THE PREFIX IS PLACED AT THE
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
96 C BEGINNING OF CBUFF, THE CHARACTER BUFFER, AND KEPT THERE DURING
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
97 C THE REST OF THIS ROUTINE.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
98 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
99 IF ( NPREF .LT. 0 ) THEN
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
100 LPREF = LEN(PREFIX)
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
101 ELSE
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
102 LPREF = NPREF
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
103 ENDIF
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
104 LPREF = MIN(16, LPREF)
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
105 IF (LPREF .NE. 0) CBUFF(1:LPREF) = PREFIX
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
106 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
107 C LWRAP IS THE MAXIMUM NUMBER OF CHARACTERS WE WANT TO TAKE AT ONE
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
108 C TIME FROM MESSG TO PRINT ON ONE LINE.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
109 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
110 LWRAP = MAX(16, MIN(132, NWRAP))
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
111 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
112 C SET LENMSG TO THE LENGTH OF MESSG, IGNORE ANY TRAILING BLANKS.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
113 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
114 LENMSG = LEN(MESSG)
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
115 N = LENMSG
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
116 DO 20 I=1,N
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
117 IF (MESSG(LENMSG:LENMSG) .NE. ' ') GO TO 30
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
118 LENMSG = LENMSG - 1
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
119 20 CONTINUE
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
120 30 CONTINUE
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
121 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
122 C IF THE MESSAGE IS ALL BLANKS, THEN PRINT ONE BLANK LINE.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
123 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
124 IF (LENMSG .EQ. 0) THEN
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
125 CBUFF(LPREF+1:LPREF+1) = ' '
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
126 DO 40 I=1,NUNIT
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
127 WRITE(IU(I), '(A)') CBUFF(1:LPREF+1)
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
128 40 CONTINUE
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
129 RETURN
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
130 ENDIF
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
131 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
132 C SET NEXTC TO THE POSITION IN MESSG WHERE THE NEXT SUBSTRING
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
133 C STARTS. FROM THIS POSITION WE SCAN FOR THE NEW LINE SENTINEL.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
134 C WHEN NEXTC EXCEEDS LENMSG, THERE IS NO MORE TO PRINT.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
135 C WE LOOP BACK TO LABEL 50 UNTIL ALL PIECES HAVE BEEN PRINTED.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
136 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
137 C WE LOOK FOR THE NEXT OCCURRENCE OF THE NEW LINE SENTINEL. THE
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
138 C INDEX INTRINSIC FUNCTION RETURNS ZERO IF THERE IS NO OCCURRENCE
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
139 C OR IF THE LENGTH OF THE FIRST ARGUMENT IS LESS THAN THE LENGTH
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
140 C OF THE SECOND ARGUMENT.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
141 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
142 C THERE ARE SEVERAL CASES WHICH SHOULD BE CHECKED FOR IN THE
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
143 C FOLLOWING ORDER. WE ARE ATTEMPTING TO SET LPIECE TO THE NUMBER
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
144 C OF CHARACTERS THAT SHOULD BE TAKEN FROM MESSG STARTING AT
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
145 C POSITION NEXTC.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
146 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
147 C LPIECE .EQ. 0 THE NEW LINE SENTINEL DOES NOT OCCUR IN THE
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
148 C REMAINDER OF THE CHARACTER STRING. LPIECE
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
149 C SHOULD BE SET TO LWRAP OR LENMSG+1-NEXTC,
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
150 C WHICHEVER IS LESS.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
151 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
152 C LPIECE .EQ. 1 THE NEW LINE SENTINEL STARTS AT MESSG(NEXTC:
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
153 C NEXTC). LPIECE IS EFFECTIVELY ZERO, AND WE
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
154 C PRINT NOTHING TO AVOID PRODUCING UNNECESSARY
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
155 C BLANK LINES. THIS TAKES CARE OF THE SITUATION
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
156 C WHERE THE LIBRARY ROUTINE HAS A MESSAGE OF
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
157 C EXACTLY 72 CHARACTERS FOLLOWED BY A NEW LINE
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
158 C SENTINEL FOLLOWED BY MORE CHARACTERS. NEXTC
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
159 C SHOULD BE INCREMENTED BY 2.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
160 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
161 C LPIECE .GT. LWRAP+1 REDUCE LPIECE TO LWRAP.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
162 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
163 C ELSE THIS LAST CASE MEANS 2 .LE. LPIECE .LE. LWRAP+1
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
164 C RESET LPIECE = LPIECE-1. NOTE THAT THIS
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
165 C PROPERLY HANDLES THE END CASE WHERE LPIECE .EQ.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
166 C LWRAP+1. THAT IS, THE SENTINEL FALLS EXACTLY
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
167 C AT THE END OF A LINE.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
168 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
169 NEXTC = 1
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
170 50 LPIECE = INDEX(MESSG(NEXTC:LENMSG), NEWLIN)
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
171 IF (LPIECE .EQ. 0) THEN
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
172 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
173 C THERE WAS NO NEW LINE SENTINEL FOUND.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
174 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
175 IDELTA = 0
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
176 LPIECE = MIN(LWRAP, LENMSG+1-NEXTC)
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
177 IF (LPIECE .LT. LENMSG+1-NEXTC) THEN
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
178 DO 52 I=LPIECE+1,2,-1
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
179 IF (MESSG(NEXTC+I-1:NEXTC+I-1) .EQ. ' ') THEN
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
180 LPIECE = I-1
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
181 IDELTA = 1
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
182 GOTO 54
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
183 ENDIF
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
184 52 CONTINUE
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
185 ENDIF
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
186 54 CBUFF(LPREF+1:LPREF+LPIECE) = MESSG(NEXTC:NEXTC+LPIECE-1)
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
187 NEXTC = NEXTC + LPIECE + IDELTA
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
188 ELSEIF (LPIECE .EQ. 1) THEN
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
189 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
190 C WE HAVE A NEW LINE SENTINEL AT MESSG(NEXTC:NEXTC+1).
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
191 C DON'T PRINT A BLANK LINE.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
192 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
193 NEXTC = NEXTC + 2
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
194 GO TO 50
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
195 ELSEIF (LPIECE .GT. LWRAP+1) THEN
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
196 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
197 C LPIECE SHOULD BE SET DOWN TO LWRAP.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
198 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
199 IDELTA = 0
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
200 LPIECE = LWRAP
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
201 DO 56 I=LPIECE+1,2,-1
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
202 IF (MESSG(NEXTC+I-1:NEXTC+I-1) .EQ. ' ') THEN
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
203 LPIECE = I-1
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
204 IDELTA = 1
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
205 GOTO 58
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
206 ENDIF
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
207 56 CONTINUE
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
208 58 CBUFF(LPREF+1:LPREF+LPIECE) = MESSG(NEXTC:NEXTC+LPIECE-1)
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
209 NEXTC = NEXTC + LPIECE + IDELTA
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
210 ELSE
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
211 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
212 C IF WE ARRIVE HERE, IT MEANS 2 .LE. LPIECE .LE. LWRAP+1.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
213 C WE SHOULD DECREMENT LPIECE BY ONE.
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
214 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
215 LPIECE = LPIECE - 1
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
216 CBUFF(LPREF+1:LPREF+LPIECE) = MESSG(NEXTC:NEXTC+LPIECE-1)
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
217 NEXTC = NEXTC + LPIECE + 2
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
218 ENDIF
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
219 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
220 C PRINT
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
221 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
222 DO 60 I=1,NUNIT
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
223 WRITE(IU(I), '(A)') CBUFF(1:LPREF+LPIECE)
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
224 60 CONTINUE
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
225 C
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
226 IF (NEXTC .LE. LENMSG) GO TO 50
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
227 RETURN
5a691cbef111 [project @ 1999-10-12 05:21:34 by jwe]
jwe
parents:
diff changeset
228 END