I am about to give up on this as being hopelessly beyond my skills. The
help has been generous and precise, but it just sends my head into a
tailspin. Here's where I got to: (passwords, etc, are just made-up, btw)
My XP Pro PC has three accounts. The one I use for Client Access is
"Booth, password "abc123"". The System i is "Booth, password "xyz987".
I would like to put the data from the System i into a folder on the
desktop called "RWFiles" I believe the path to the folder is
"C:\Documents and Settings\Booth\Desktop\RWFiles"
and I believe I have it marked as shared.
I copied in a program that yields the IP address of the workstation, but
it changes with each log-in. I tried the piece with QNTC but nothing
works. Obviously it works for you, so its right, but I just can;t get
it to connect.
The good news is that at least now I can get the ip address
Thanks for the help; its appreciated.
Scott Klement wrote:
> Hi Booth...
> The QDCRDEVD API can give you the IP address of the PC that has
> connected to an interactive session. Search archive.midrange.com and
> you'll find examples (if you don't, let me know and I'll find one on my
> system... I know I have one, but I'm too lazy to look right now.)
> Once you have the IP address, you can tell i5/OS to connect to it via
> /QNTC by creating an IFS directory (if it doesn't already exist). It's
> worth noting that i5/OS doesn't normally use IP address (it usually uses
> the host's name instead) so you do have to create the directories manually.
> So here's (untested) program code that creates an IFS directory that
> connects to a given PC. The IP address is the one retrieved from
> QDCRDEVD. If first checks if the dir exists, if not it creates it. The
> act of creating it establishes the connection to the PC (which may take
> time, so I only want to do it if i have to):
> dirname = '/QNTC/' + %trim(IPADDR) + '/CSVShare';
> if access(%trimr(dirname):F_OK) <> 0;
> if mkdir(%trimr(dirname)) <> 0;
> // check errno
> Now that the share exists, you can write your CSV file to it
> filename = %trimr(dirname) +'/' + 'myfile.csv';
> fd = open( %trimr(filename) ... etc ... )
> Again, you'll have a problem if the userid/password on the iSeries isn't
> acceptable to the PC, or if the PC doesn't have a share set up to write
> to, or doesn't allow the iSeries to connect, etc.
> A different approach is to use the smbclient tool from the Samba suite.
> It's a program that runs in PASE and is able to treat a Windows file
> share like an FTP server. You sign in with userid/password, and then
> can do things like put/get, etc... but that's a whole different
> conversation -- still, it might be useful to know there's an alternative.
> Booth Martin wrote:
>> Man... now i feel even more dense.
>> Scott, your explanation was, as always, concise and easy to understand.
>> However I still can't figure out how to do it. Maybe I can ask the
>> question in a simple enough way that even I can understand the answer?
>> Lets use, for an example, this problem: I want a user, any authorized
>> user, to be able to take an i5 menu option, get a screen asking for a
>> month and year, and then have the i5 gather the data and send that data
>> in a .csv file to the desktop of the user that made the request. The
>> ordinary user will not know the name of his PC, nor the path to his
>> desktop. I can do almost all of that right now, including writing the
>> file to the IFS (thanks to your work). But I can't write to the desktop.
>> The issue has importance here because the .csv file is close to 90 megs
>> in size, and opening the file from a mapped network drive to the IFS
>> takes forever to open in Excel. From the desktop it opens in under a
>> minute. We haven't tested it yet but we are suspicious that opening the
>> file from a Windows server will also be slow, so we are hoping we can
>> write directly to the desktop, which we suspect the user really wants,
>> At first I felt it was just me being obtuse, stubborn, ans silly, but as
>> I ask others that I know are knowledgeable i5 users it becomes clear to
>> me that while I may be dense, I am not alone in my denseness.
>> And! Scott, thank you.
>> And! Vern, thank you.
>> Scott Klement wrote:
>>> Hi Booth,
>>> I guess I don't really understand the problem. You say you want to
>>> write to a windows PC. Let's assume that the Windows PC is named
>>> BOOTHSPC and on that PC is a shared named "SharedDir".
>>> You code your open statement like this:
>>> filename = '/QNTC/BOOTHSPC/SharedDir/MyFile.txt';
>>> fd = open( %trimr(filename): O_CREAT+O_WRONLY; S_IRWXU);
>>> That's pretty much it. Just by starting the filename with
>>> '/QNTC/BOOTHSPC/SharedDir' the system will automatically connect to
>>> BOOTHSPC, log in (using the userid/password you're signed into i5/OS
>>> under) and create the file on that PC.
>>> How could it be more easy/straightforward that that?
>>> Things only get tricky when your Windows network won't let i5/OS
>>> connect, or when your userid/password on i5/OS doesn't match the ones
>>> that Windows accepts.
>>> Booth Martin wrote:
>>>> Man, I can be dense. None of these answers look easy & straight forward.
>>>> I am using Scott Klement's examples to write a PC file to the IFS of the
>>>> System i. It uses a path & file name, which of course I expect. It
>>>> occurs to me that one can type in any path name and there is no real
>>>> reason that it won't write directly to what ever is at that path?
>>>> But like so many things, it just isn't so. My first question is: Am I
>>>> dreaming? Is it really simple, or is it a lot of hoop-jumping and
>>>> therefore of limited value??
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
or email: MIDRANGE-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
As an Amazon Associate we earn from qualifying purchases.
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.