chaat
Sophomore Member
Posts: 59
|
Post by chaat on Sept 29, 2014 14:35:44 GMT -5
When I enter a "I" line command and start entering lines of text. If I use the spacebar to put a single (or more) blanks on the current line and then hit the enter key. Then I'm exited from insert mode and the blank line is NOT added to the text that I'm editting.
According to the documentation if i enter a space on the current line when I'm in insert mode it should add a blank line to the file being editted.
An interesting observation is that this problem happens when editting a *.cbl file and not others. For example when editting a *.lst file the blank lines get added just fine. From what I have seen on ISPF, the behavior of the "I" line command should not be impacted by your profiles (at least the behavior for handling the entry of a blank line).
here is the profile for lst.ini
[File] ProfLock=0 ProfUsing= AutoBkup=0 AutoSave=3 StateFlag=0 Source=ANSI Case=T Preserve=1 TabsFlag=0 CapsFlag=0 HexMFlag=1 HiFind=1 HiAuto=1 ImportTabs=8 UndoLevels=10 LRECL=0 RECFM=U EOLFlag=CRLF ColsFlag=0 ScrollAmount=CSR SubArg= Start=FIRST DLMS="+-*/\(){}[]:;'<>,.?&%$#@!~`_=¬¢£€^| TABS="" MARK="" BNDS="< >>" MarkFlag=1 MINLEN=0 Change=D Page=0 PageOffset=0 WORD=A-Z a-z 0-9 MASK="" AutoCaps=0 FoldFlag=0 Collate=ANSI SubCmd= BndL=1 BndR=0
here is the profile for cbl.ini
[File] ProfLock=0 ProfUsing=COBOL AutoBkup=0 AutoSave=3 StateFlag=0 Source=ANSI Case=T Preserve=0 TabsFlag=0 CapsFlag=0 HexMFlag=1 HiFind=1 HiAuto=1 ImportTabs=8 UndoLevels=20 LRECL=0 RECFM=U EOLFlag=CRLF ColsFlag=0 ScrollAmount=CSR SubArg= Start=FIRST DLMS="+-*/\(){}[]:;'<>,.?&%$#@!~`_=¬¢£€^| TABS="" MARK="" BNDS="< >> MarkFlag=1 MINLEN=80 MASK="" Change=D Page=0 PageOffset=0 WORD=A-Z a-z 0-9 AutoCaps=0 FoldFlag=0 Collate=ANSI SubCmd= BndL=1 BndR=0
|
|
chaat
Sophomore Member
Posts: 59
|
Post by chaat on Oct 20, 2014 15:11:32 GMT -5
Just a reminder for George.
I would expect that he might be catching up for a while. This is not urgent.
|
|
|
Post by George on Oct 21, 2014 10:22:07 GMT -5
chaat: Robert: A really tough one. It's caused entirely by MINLEN.
When checking to see if an Inserted line is changed, it is done by seeing if it is different from the MASK line.
So ...
MASK = "" MINLEN =80
Because of MINLEN, whenever the MASK data is compared, it is padded to MINLEN if needed.
a few blanks are entered on the new I ' ' ' ' ' ' line.
The text line data is forced to 80 blanks because of MINLEN
An unused I ' ' ' ' ' ' line is also forced to 80 blanks because of MINLEN (even though you may never have typed into it, it's STILL 80 bytes long.
How do I detect the line that was typed into vs the line that wasn't typed into? Their data is identical. The used line, the unused line and the MASK data all consist of 80 blanks.
I can't TRIM them all first, or I wouldn't see the few blanks when they are typed.
I'm stuck as to how to correct this right now.
George
|
|
chaat
Sophomore Member
Posts: 59
|
Post by chaat on Oct 21, 2014 22:27:45 GMT -5
robert / george,
i was using the minlen to allow find p'== ' at the end of a line and then change it to p'==#' ; c '#' '.' to put a period at the end of a range of lines. with the APPEND command, i don't think that i will need that functionality so i reset my cbl file profile to minlen 0. i think that will solve this issue.
thanks for the explanation.
|
|
|
Post by George on Oct 22, 2014 9:32:20 GMT -5
chaat: You should check out the extended picture codes of [ ] { } which enable you to manipulate end of line strings a lot easier.
Robert: I'll check out doing that, it IS the only differentiator.
George
|
|
|
Post by George on Oct 22, 2014 13:37:21 GMT -5
Robert: All the "how a 3270 emulator might do it" is just noise, since they all ultimately send a 3270 format buffer back to the host. None of that applies or helps me.
The two areas which make this tough are MINLEN, since it forces characters into the text field which never get typed, and similarly, the auto-insert of a new line when you press Enter automatically indents the new line to match the previous one, thus also inserting untyped spaces.
Using the cursor doesn't help either. The routine that cleans up and deletes unused ' ' ' ' ' ' lines runs AFTER the user finally hits Enter on the last Insert line. At that point there could be numerous unused lines, and the cursor is on none of them.
e.g. I enter I6 and get
000003 Text '''''' '''''' '''''' '''''' '''''' '''''' 000010 Text
And then enter
000003 Text
'''''' AAA
''''''
'''''' BBB ''''''
'''''' CCC ''''''
000010 Text
The lines after AAA BBB and CCC have to be removed, but how do I tell if the user entered blanks on them?
I've been poking at this most of the day and all I accomplish is different flavors of wrongness. It's a very hairy area for these ' ' ' ' ' ' lines, they sort of exist but don't exist, why IBM couldn't have just inserted lines absolutely like the N line command is a mystery. I'm still playing, but can't honestly say I've made 1 iota of progress.
George
P.S. I know IBM says the lines get removed if they still equal the mask line. Why? How big an impact would it be to just say the lines get removed if you never type into them. How often would this cause a problem? How often would someone type chars into a non-null MASK line and just overtype the line with what's already there and then expect it to 'go away'? I think all this comparing to the MASK data is just not needed and creating an enormous problem for us.
.
|
|
|
Post by George on Oct 23, 2014 10:50:04 GMT -5
Robert: MINLEN is applied 'instantly', before all this was-it-used logic gets it's turn, there is no problem figuring out how many blanks to retain.
Doesn't keeping a high-column number just serve to indicate the line was typed into? All I'm proposing is that that act, typing into a ' ' ' ' ' ' line, be treated as sufficient action to retain the line, even if the result still matches the MASK line. I don't see this as a serious problem for anyone.
You type into a ' ' ' ' ' ' line - it stays.
You don't type into it - it gets removed.
Simple, straightforward. I just can't see adding yet another flag/counter/etc. to the line data structure, fiddle all the places where it must be set/cleared/tested just to overcome this peculiarity of MINLEN.
George
|
|
|
Post by George on Oct 24, 2014 12:01:51 GMT -5
Robert: Well, I'll change it to my described way and we'll see how it works. I believe that unless you told an old ISPF user to watch carefully for any differences in how inserted lines are handled, that absolutely nobody would detect the logic change.
George
P.S. Completed the change. I think the result is quite satisfactory.
|
|