Strange pkeepin'
Bruce Easton
bruce at stn.com
Wed May 7 15:04:54 PDT 2008
I'm seeing some strange browse pkeep behavior today on
Windows filepro 5.0.14. I don't think the couple of items
I see in the release notes about pkeep from 5.0.14 on describe
what I am seeing. Also, I'm pretty sure that I've coded
the exact same under Unix and did not see the behavior there.
I'll first post code where everything works as expected
(subroutine 'clearm' [not shown] just deletes records for
session out of file 'mymarkfile'):
595 ------- - - - - - - - - - - - -
@wbl4 ? If: 'sets kn(8,.0) to one-up # for marking file
Then: gosub getctrl '(used as marking session key)
596 ------- - - - - - - - - - - - -
? If: 'browse spec
Then: bt="(brw=12 xkey=xm prc=filmk show=pkeep fill=asc)"
597 ------- - - - - - - - - - - - -
? If:
Then: bu="[Mark Type of Document]"
598 ------- - - - - - - - - - - - -
? If:
Then: bv=" *mk *2"
599 ------- - - - - - - - - - - - -
? If:
Then: ky(60,*)=""
600 ------- - - - - - - - - - - - -
rptbrw ? If:
Then: cls("22"); showctr("23") "\r M \r-Mark \r X \r-Exit"
601 ------- - - - - - - - - - - - -
? If: 'MAIN BROWSE for marking
Then: lookup brfil = myfile@ k=ky i=A -ng b=(bt&bu&bv)
602 ------- - - - - - - - - - - - -
? If: not brfil 'data missing fr supporting file
Then: beep; errorbox "Docs missing"; clearb; screen ,4
603 ------- - - - - - - - - - - - -
? If: @sk eq "BRKY" or @bk eq "X" 'operator exiting
Then: gosub clearm; clearb; screen ,4
604 ------- - - - - - - - - - - - -
? If: @bk eq "M" 'operator marking record in browse
Then: gosub markit; goto rptbrw
605 ------- - - - - - - - - - - - -
? If: 'future xkey vals tested down here
Then: goto rptbrw 'should now never reach here.
606 ------- - - - - - - - - - - - -
markit ? If: '**** subroutine for marking one record
Then: 'triggered from @bk="M" on browse
607 ------- - - - - - - - - - - - -
? If:
Then: hk(14,*)=kn&brfil(1)
608 ------- - - - - - - - - - - - -
? If:
Then: lookup mrkfil = mymarkfile@ k=hk i=B -nx
609 ------- - - - - - - - - - - - -
? If: mrkfil
Then: return 'already marked
610 ------- - - - - - - - - - - - -
? If: 'make a marking record
Then: lookup mrkfil = mymarkfile@ r=free -ep
611 ------- - - - - - - - - - - - -
? If:
Then: mrkfil(1)=kn; mrkfil(2)=brfil(1)
612 ------- - - - - - - - - - - - -
? If:
Then: return
613 ------- - - - - - - - - - - - -
filmk ? If: 'fill (drop) processing for browse above ******
Then: '(tests existence of marking record)
614 ------- - - - - - - - - - - - -
? If:
Then: mk(1,*)=""; hk=kn&brfil(1)
615 ------- - - - - - - - - - - - -
? If:
Then: lookup thisbr = mymarkfile@ k=hk i=B -nx
616 ------- - - - - - - - - - - - -
? If: thisbr
Then: mk="M"
617 ------- - - - - - - - - - - - -
? If:
Then: end
618 ------- - - - - - - - - - - - -
This all works fine. The way I used to write these procedures
included a 'close mrkfil' - for here that would be before
the return on line 612. In this case when I try to close
the marking file, pkeep is no longer able to keep its place,
and every time the browse is re-executed at 'rptbrw', the
browse pointer is at position of the original key.
I started to think that since I was closing the file
that is also used in the drop processing (to show the
status of what was just marked), that I might be
confusing clerk there.
But even when I kept the 'close mrkfil' at 612 before
the return and removed the 'prc=filmk' from the browse
specification, it still would return the browse pointer
to the beginning of the original key after each 'M'
keypress on the browse. So even though I'm not closing
the file that I'm browsing, closing some other file,
even if not called in drop processing is affecting pkeep.
I guess I can live without the close (although there is
also a routine to delete marks and I really would like
to be able to at least close there).
I'm sure that I was doing it that way before in Unix
(although it probably was an earlier 5.0 filepro).
Bruce
Bruce Easton
STN, Inc.
More information about the Filepro-list
mailing list