About chdir... and directory/file storage

GCC Consulting gcc at optonline.net
Thu Sep 2 15:36:46 PDT 2004


Top Post

I would like to personally thank you for the effort you put into this answer.

I did solve my problem the "old fashioned way". I connected the printer to the
XP box and shared it from there.  Apparently the "Trading partners" program is
having problems with XP and an NT Server.

I spoke with my client this AM and everything printed perfectly. 

However, as I indicated on an earlier follow-up.  This is a good programming
exercise.

By the way, the only thing stored in the directory indicated is the 997.rpt file
which is overwritten each time.  There are extensive other directories which
store current and historical information.

Richard


> -----Original Message-----
> From: filepro-list-bounces at lists.celestial.com 
> [mailto:filepro-list-bounces at lists.celestial.com] On Behalf 
> Of John Esak
> Sent: Thursday, September 02, 2004 6:40 AM
> To: filePro mailing list
> Subject: About chdir... and directory/file storage
> 
> 
> Richard (and others),
> 
> I know you may not be able to change your scheme for storing 
> files from EDI, but this may help in some way... Here's how I 
> do it. (As usual, I try and work _within_ filePro so there is 
> no reliance on platform based utilities.)
> 
> The problem of EDI and storing so much incoming data is very 
> important. It is necessary to store the files that arrive 
> daily in some manner that makes sense and can be dealt with 
> easily as time goes by, days, months, years.
> That is why I took some time to develop this scheme. It has 
> saved me untold headaches over the past several years. I have 
> to deal with both DOS and Unix so it deals with the 
> slash/backslash thing in a way that makes sense to me, in 
> that it works on both sides. Admittedly, there are many 
> different ways to handle this and there are times when a / 
> will work equally well on both platforms... still, this is 
> how I handled it. More to the point of the actual traversing 
> of directories, I adopted the following procedure.
> 
> On any day that files come into the system, I put them in a 
> directory with a hierarchy of that year, that month and then 
> that day with a batch number from 1 to 100, so that multiple 
> incoming files for each day can be accommodated. To do this, 
> I have filePro check to see if the full dirpath is already 
> there, if so, I use it. If not, I create the path, whether it 
> be just to add a new month to the current year, or to add a 
> new year if it doesn't exist and then add the new month as 
> well. Happily, the system has been working for quite some 
> time now without any attendance from me. I have directories 
> (and files) which look like this now and it is very easy to 
> traverse them with filePro processes _and_ human-applied 
> searches with "cd".
> I can find anything quickly by date and that is the name of 
> the game. (Also, more importantly, they can be traversed by 
> either Windows filePro or Unix
> filePro.) These are not exact portrayals of the directories 
> created in the processing, but close, just to give you the idea...
> 
>     /u/edi/ups/arch/inv/01/01/invbat01.dat
>     /u/edi/ups/arch/inv/01/01/invbat02.dat
>     /u/edi/ups/arch/inv/01/02/invbat01.dat
>     /u/edi/ups/arch/inv/01/02/invbat01.dat
>     /u/edi/ups/arch/inv/01/12/invbat01.dat
>     /u/edi/ups/arch/inv/02/01/invbat01.dat
>     /u/edi/ups/arch/inv/02/01/invbat02.dat
>     /u/edi/ups/arch/inv/02/02/invbat01.dat
>     /u/edi/ups/arch/inv/02/02/invbat01.dat
>     /u/edi/ups/arch/inv/02/12/invbat01.dat
> and
>     /u/edi/ups/arch/po/01/01/invbat01.dat
>     /u/edi/ups/arch/po/01/01/invbat02.dat
>     /u/edi/ups/arch/po/01/02/invbat01.dat
>     /u/edi/ups/arch/po/01/02/invbat01.dat
>     /u/edi/ups/arch/po/01/12/invbat01.dat
>     /u/edi/ups/arch/po/02/01/invbat01.dat
>     /u/edi/ups/arch/po/02/01/invbat02.dat
>     /u/edi/ups/arch/po/02/02/invbat01.dat
>     /u/edi/ups/arch/po/02/02/invbat01.dat
>     /u/edi/ups/arch/po/02/12/invbat01.dat
> 
> 
> Here is the processing which does the directory/file 
> allocation. I hope it helps. Without doing things in this 
> way, any data collection method would be extremely limited in 
> helping "humans" to find files when required. If any part of 
> this code is not understandable to anyone, feel free to ask.
> 
> 
>      filePro File: npi_edi_ups_run
>  Processing Table: quick
>     Last Modified: Thursday - Sep  2, 2004 at  6:09 AM
>        Documented: Thursday - Sep  2, 2004 at  6:11 AM
> 
>     1  Then: end
> errout   If: 'errout
>     2  Then:
>     3  Then: close;  exit
> @once    If: '@once
>     4  Then:
>     5  Then: lookup ctrl=npi_edi_ups_ctl r=("1")
>     6  Then: declare sls(1);  sls=chr("92")
>     7  Then: declare rec_dl(1), fld_dl(1), seg_dl(1)
>     8  Then: 'fld_dl="^";  rec_dl="~";  seg_dl=">"
>     9  Then: fld_dl="*";  rec_dl="~";  seg_dl=">"
>    10  Then: declare DirShare, DirIn, DirOut, DirArc, 
> DirArcCat, DirArcIn,
>              DirArcOut
>    11  Then: DirShare="u:";  DirIn="inbox";  DirOut="outbox"; 
> DirArc="archive"
>    12  Then: DirArcCat="inv"
>    13  Then: DirArcIn=DirArc{sls{DirArcCat{sls{"in";  DirArcOut=
>              DirArc{sls{DirArcCat{sls{"out"
>    14  Then: declare DosPathWork; DosPathWork=
> 
> "c:"{sls{"progra~1"{sls{"peregrine"{sls{"trustedlink"{sls{"work"
>    15  Then: declare SysCommand
>    16  Then: declare DirStamp
>    17  Then: declare InStamp(8)
>    18  Then: declare InNum(3,.2), InDate(6,ymd)
>    19  Then: declare count(2,.0);  count="1"
>    20  Then: InDate=@td
>    21  Then: lookup bat = npi_edi_ups_invbatch  k=(InDate) i=a -nx
> morbat   If: not bat
>    22  Then: goto getit
>          If: bat(1) ne InDate
>    23  Then: goto getit
>    24  Then: count=count+"1";  getnext bat;  goto morbat
> getit    If: 'getit
>    25  Then:
>    26  Then: InNum=count/"100"
>    27  Then: lookup bat=npi_edi_ups_invbatch r=free
>    28  Then: bat(1)=InDate;  bat(2)=InNum;  write bat
>    29  Then: InStamp=InDate & mid(InNum,"2","2")
>    30  Then: 'test the dirs
>    31  Then: declare year(2),  month(2)
>    32  Then: Year=mid(InDate,"1","2");  Month=mid(InDate,"3","2")
>    33  Then: declare DirYear, DirMonth
>    34  Then: DirYear=DirShare { sls { DirArcIn { sls { Year
>    35  Then: DirMonth=DirShare { sls { DirArcIn { sls { Year 
> { sls { Month
> tstYR    If: exists(DirYear) eq "1"
>    36  Then:
> tstMO    If: exists(DirMonth) eq "1"
>    37  Then:
>          If: not tstYR
>    38  Then: system noredraw "mkdir" < DirYear
>          If: not tstMO
>    39  Then: system noredraw "mkdir" < DirMonth
>    40  Then: declare FullPath1, FullPath2
>    41  Then: FullPath1=DosPathWork { sls { "output.dat"
>    42  Then: declare file_is_inv(1);  file_is_inv=""
>          If: 'maybe use later
>    43  Then: 'gosub tst4inv
>          If: 'file_is_inv eq "N"
>    44  Then: 'goto errout
>    45  Then: FullPath2=Dirshare { sls { DirIn { sls { "inv_infile.dat"
>    46  Then: SysCommand="copy" < FullPath1 < FullPath2
>          If: 'jje remove comment for production
>    47  Then: system SysCommand
>    48  Then: FullPath2=DirMonth { sls { InStamp { ".dat"
>    49  Then: SysCommand="copy" < FullPath1 < FullPath2
>          If: 'jje
>    50  Then: system SysCommand
>    51  Then: '
>    52  Then: 'file manipulation starts her
>    53  Then: declare infile(256), outfile(256)
>    54  Then: declare outline
>    55  Then: declare h_i(4,.0), h_o(4,.0), h_ow(4,.0),  
> h_c(4,.0), h_s(8,.0)
>    56  Then: infile=DirShare { sls { DirIn { sls { 
> "inv_infile.dat"; outfile=
>              DirShare { sls { DirOut { sls { "inv.out1"
>    57  Then: '
>    58  Then: declare there(4,.0)
>    59  Then: there=exists(infile)
>          If: there eq "0"
>    60  Then: goto errout
>    61  Then: h_o=open(outfile,"rw0tc")
> loop     If:
>    62  Then: import ascii inf=(infile) f=255 r=~
>          If: not inf
>    63  Then: close inf;  h_c=close(h_o);  goto pass2
>          If: 'mid(inf(1),"1","3") eq "IEA"
>    64  Then: 'debug on
>          If: 'for files without newlines
>    65  Then: 'outline="" { inf(1) { rec_dl { chr("10") { ""
>          If: 'for files with newlines!  windows\stx32.ini newline=1
>    66  Then: outline="" { inf(1) { rec_dl { ""
>    67  Then: h_ow=write(h_o,outline)
>    68  Then: goto loop
> 
> 
> 
> 
> _______________________________________________
> Filepro-list mailing list
> Filepro-list at lists.celestial.com
> http://mailman.celestial.com/mailman/listinfo/filepro-list
> 




More information about the Filepro-list mailing list