It's eerie that I was just working on something 2 weeks ago that needed to 
retain trailing space, and finally gave up and went a different direction in my 
code after reading the posts from July 2013 that also had no solution, but it 
was suggested (B.Chitiea) a function of RTspace (Retain Space) function should 
be requested.  I wonder if anyone did bother to request this enhancement 
officially..

Frank Taylor - Director of Information Technology
F.J. O'Hara & Sons,  Inc - Araho Transfer Inc.
Boston, MA - Rockland, ME - Miami, FL
Direct Dial - 617-790-3093
Email: [email protected]

From: [email protected] [mailto:[email protected]] On Behalf Of Javier Valencia
Sent: Monday, January 05, 2015 8:12 PM
To: RBASE-L Mailing List
Subject: [RBASE-L] - Re: Fixed field file

I have seen this issue raised several time and it happens because the SFIL 
function loses trailing blanks.
I t would be nice to have a function:
SET VAR vspad = (SPAD(' ', 100)
That will keep the blanks at the end of the string. :)

Javier,

Javier Valencia, PE
O: 913-829-0888
H: 913-397-9605
C: 913-915-3137

From: [email protected]<mailto:[email protected]> [mailto:[email protected]] On 
Behalf Of Karen Tellef
Sent: Monday, January 05, 2015 5:43 PM
To: RBASE-L Mailing List
Subject: [RBASE-L] - Re: Fixed field file

Thanks but nope, it still does not retain the 675 sfil-ed spaces at the end.

Looks like maybe I will have to resort to using a cursor with a 
sfil/sput/write.  I don't want to do that because there are thousands of rows 
to cursor through, and this one select is almost instantaneous.

Karen


-----Original Message-----
From: Bill Downall 
<[email protected]<mailto:[email protected]>>
To: RBASE-L Mailing List <[email protected]<mailto:[email protected]>>
Sent: Mon, Jan 5, 2015 5:20 pm
Subject: [RBASE-L] - Re: Fixed field file
Karen,
SELECT that way does its own CR/LF.
How about:
SET V v675spaces TEX = (SFIL(' ', 675))
...Blah blah
SELECT ( LJS(SGET(policy_no,12,1),50) + LJS(tmpUniqueText,50) + LJS(ssn,9) + 
LJS(firstname,50) +
  + .......    + .v675spaces   )=1450 +
  FROM tmpMIB
Bill
(sent from Android mobile)
On Jan 5, 2015 6:10 PM, "Karen Tellef" 
<[email protected]<mailto:[email protected]>> wrote:
Well, Albert's solution ALMOST works.  It does indeed put a carriage return 
exactly where I want it, so it retains the 675 blank spaces at the end.  
However, it puts an extra carriage return (therefore a blank row) between each 
row of data.  Is there a way to suppress that, like a "write.... continue" 
would?  Here's the relevant code and how different "vCRLF" variables evaluated:

SET WIDTH 1500
SET VAR vCRLF = (CHAR(013))
SET HEADINGS OFF
SET SELMARGIN 1
OUTPUT MIB.TXT
SELECT ( LJS(SGET(policy_no,12,1),50) + LJS(tmpUniqueText,50) + LJS(ssn,9) + 
LJS(firstname,50) +
  + .......    + (SFIL(' ',675)) + .vCRLF    )=1450 +
  FROM tmpMIB
OUTPUT SCREEN


Value of vCRLF:
char(013) + char(010)    this puts a blank row between each data row
char(013)    same as above
char(010)    does not retain the blank spaces, does a carriage return right 
after last data

Karen


-----Original Message-----
From: Albert Berry <[email protected]<mailto:[email protected]>>
To: RBASE-L Mailing List <[email protected]<mailto:[email protected]>>
Sent: Sun, Jan 4, 2015 6:18 pm
Subject: [RBASE-L] - Re: Fixed field file
Would something like this work to create the line? Assumption is no CRLF at the 
end of the variable .vDataLine.

SELECT (DataLine + (SFIL(' ',675)) + .vCRLF) FROM ...

Albert


On 1/4/2015 1:14 PM, Karen Tellef wrote:
I need to create a file with fixed field lengths.  Rather than doing SFIL/SPUT 
I did a "select" statement and it works great and is easy to code, except...

I need to have 675 blank spaces at the end of each line and I can't figure out 
how to do that using a "select" statement.  Has anyone done that, or do I need 
to use SFIL/SPUT.    According to my notes, if I use SFIL/SPUT I'll have to use 
a cursor and then do something like this (and thanks to whoever originally 
posted this code and I saved it):

   --Add CarriageReturn/LineFeed charaters to the line
Set var vDataLine = (SPUT(.vDataLine,.vCRLF,.vPastEnd))

  --Make sure no trash data exists beyond CR/LF
Set var vDataLine = (SGET(.vDataLine,..vTotalLength,1))

  --Write the line, telling RBASE not to add its own CRLF
 WRITE .vDataLine  CONTINUE


Karen




--

A democracy ..." can only exist until the majority discovers it can vote itself 
largess out of the public treasury."

Attributed to Alexander Fraser Tytler 1747-1813

Reply via email to