|
So now I am back to:
C Eval AttachDesc = open(%ADDR(IFSFileName
C : O_RDONLY + O_CODEPAGE
C : S_IRWXU + S_IRWXO
C : st_codepage)
EVAL statds
ST_MODE OF STATDS = 33221
ST_INO OF STATDS = 10036
ST_NLINK OF STATDS = 1
ST_RESERVED1 OF STATDS = ' '
ST_UID OF STATDS = 525
ST_GID OF STATDS = 0
ST_SIZE OF STATDS = 1714
ST_ATIME OF STATDS = 988045246
ST_MTIME OF STATDS = 983203222
ST_CTIME OF STATDS = 983203222
ST_DEV OF STATDS = 0
ST_BLKSIZE OF STATDS = 32768
ST_ALLOCSIZE OF STATDS = 8192
ST_OBJTYPE OF STATDS = '*STMF '
ST_RESERVED2 OF STATDS = ' '
ST_CODEPAGE OF STATDS = 1200
ST_RESERVED3 OF STATDS =
D StatDS DS 128
D st_mode 10U 0
D st_ino 10U 0
D st_nlink 5U 0
D st_reserved1 2A
D st_uid 10U 0
D st_gid 10U 0
D st_size 10U 0
D st_atime 10U 0
D st_mtime 10U 0
D st_ctime 10U 0
D st_dev 10U 0
D st_blksize 10I 0
D st_allocsize 10I 0
D st_objtype 10A
D st_reserved2 2A
D st_codepage 5U 0
D st_reserved3 62A
D st_ino_gen_id 10U 0
Is there something wrong with my definition of st_codepage?
If I do a simple
CRTPF FILE(QTEMP/SERVERS) RCDLEN(100)
CPYFRMIMPF FROMSTMF('/QIBM/UserData/LOTUS/LOTUS_SERVERS')
TOFILE(QTEMP/SERVERS) RCDDLM(*ALL)
Then the results look peachy. So why am I having such a dickens of a time
with the IFS directly?
Rob Berendt
==================
Remember the Cole!
rob@dekko.com
Sent by: To: RPG400-L@midrange.com
owner-rpg400-l@mi cc:
drange.com Subject: Re: CCSID, codepage,
or some such thing on an IFS file,
perhaps?
04/23/01 11:16 AM
Please respond to
RPG400-L
This is the error I am getting:
DSPLY OpenIn->3490:Conversion error.
...
D DominoFile C '/QIBM/UserData/LOTUS/-
D LOTUS_SERVERS'
...
C Eval oflag = O_RDONLY + O_TEXTDATA
C Eval AttachDesc = open(%trimr(DominoFile)
C : oflag)
C If AttachDesc = -1
C CallP DspError('OpenIn')
C EndIf
...
OFLAG = 16777217
Rob Berendt
==================
Remember the Cole!
rob@dekko.com
Sent by: To: RPG400-L@midrange.com
owner-rpg400-l@mi cc:
drange.com Subject: Re: CCSID,
codepage, or some such thing on an IFS file,
perhaps?
04/23/01 09:23 AM
Please respond to
RPG400-L
Gave that a try this morning. The value of AttachDesc went from 3 to -1.
Which I assume is some sort of error. Also, nothing is returned in the
DataRead upon the read statement.
Then I tried the following
C Eval AttachDesc = open(%ADDR(IFSFileName
C : O_RDONLY + O_TEXTDATA
C : S_IRWXU + S_IRWXO)
With the same lack of data.
Rob Berendt
==================
Remember the Cole!
Scott Klement
<klemscot@klement To: RPG400-L@midrange.com
s.com> cc:
Sent by: Subject: Re: CCSID,
codepage, or some such thing on an IFS file,
owner-rpg400-l@mi perhaps?
drange.com
04/19/01 04:36 PM
Please respond to
RPG400-L
I don't have this file on my system, and I'm not familiar with
CCSID 13438, but _if_ you're wanting the system to translate the
character set for you, you need something like this:
C Eval AttachDesc = open(%ADDR(IFSFileName)
C : O_RDONLY + O_TEXTDATA)
It's at least worth a try :)
On Thu, 19 Apr 2001 rob@dekko.com wrote:
>
> So what should my logic look like?
>
> C Eval AttachDesc = open(%ADDR(IFSFileName)
> C : O_RDONLY + O_CODEPAGE
> C : S_IRWXU + S_IRWXO
> C : st_codepage)
>
>
> Rob Berendt
>
> ==================
> Remember the Cole!
>
>
>
> Scott Klement
> <klemscot@klement To:
RPG400-L@midrange.com
> s.com> cc:
> Sent by: Subject: Re: CCSID,
codepage, or some such thing on an IFS file,
> owner-rpg400-l@mi perhaps?
> drange.com
>
>
> 04/18/01 03:13 PM
> Please respond to
> RPG400-L
>
>
>
>
>
>
>
> If you want the system to automatically convert from the file's
> codepage to your job's codepage, you need to specific "O_TEXTDATA" on
> your call to open().
>
> Otherwise, no conversion will be done.
>
> Also... although this isn't actually causing a problem, you might be
> interested to know that the DEFAULT codepage when opening with O_TEXTDATA
> is the one that's already assigned to the file. Therefore, you don't
> really need to do a stat() to get the codepage, you can simply not
> specify it and let it do the work.
>
> HTH
>
>
> On Wed, 18 Apr 2001 rob@dekko.com wrote:
>
> >
> > I grabbed onto some code used previously in the SNDEMAIL utility to
read
> an
> > IFS file for me. What I am trying to do is to read the IFS file which
> > contains a list of Domino servers and create a list user space out of
it.
> >
> > First of all when I use DSPF to look at the file
> > /QIBM/UserData/LOTUS/LOTUS_SERVERS, I see:
> > ************Beginning of data**************
> > SERVER=GDISYS
> > TYPE=DOMINO
> > DIRECTORY=/notes/data
> > SBSD=DOMINO01
> > PARTITION=1
> > LIBRARY=QNOTES
> > EXEPATH=/QIBM/PRODDATA/LOTUS/NOTES
> > CRTREL=5.0.6
> > CURREL=5.0.6
> > INFO=
> > SERVER=GDISYS01
> > TYPE=DOMINO/QUICKPLACE
> > DIRECTORY=/GDISYS01/NOTES/DATA
> > SBSD=DOMINO02
> > PARTITION=2
> > LIBRARY=QNOTES
> > EXEPATH=/QIBM/PRODDATA/LOTUS/NOTES
> > CRTREL=5.0.6
> > ...
> > When ran in debug I am getting:
> > EVAL dataread :x
> > 00000 00530045 00520056 00450052 003D0047 - .ë.á.ê.î.á.ê...å
> > 00010 00440049 00530059 0053000A 00540059 - .à.ñ.ë.ß.ë...è.ß
> > 00020 00500045 003D0044 004F004D 0049004E - .&.á...à.|.(.ñ.+
> > 00030 004F000A 00440049 00520045 00430054 - .|...à.ñ.ê.á.ä.è
> > 00040 004F0052 0059003D 002F006E 006F0074 - .|.ê.ß.....>.?.È
> > 00050 00650073 002F0064 00610074 0061000A - .Á.Ë...À./.È./..
> > 00060 00530042 00530044 003D0044 004F004D - .ë.â.ë.à...à.|.(
> > 00070 0049004E 004F0030 0031000A 00500041 - .ñ.+.|.......&.
> > 00080 00520054 00490054 0049004F 004E003D - .ê.è.ñ.è.ñ.|.+..
> > 00090 0031000A 004C0049 00420052 00410052 - .....<.ñ.â.ê. .ê
> > 000A0 0059003D 0051004E 004F0054 00450053 - .ß...é.+.|.è.á.ë
> > 000B0 000A0045 00580045 00500041 00540048 - ...á.ì.á.&. .è.ç
> > 000C0 003D002F 00510049 0042004D 002F0050 - .....é.ñ.â.(...&
> > ST_CODEPAGE = 1200
> > What the hex?
> > 1) It looks like a null is added before every character.
> > 2) It looks like most of the hex values are off. For example, in the
> > above S is claimed to be hex 53, E hex 45, R hex 52 and so on.
> >
> > Some of the code:
> > ...
> > D*** File Access Modes for open()
> > D O_RDONLY S 10I 0 INZ(1)
> > ...
> > D S_IRWXU S 10I 0 INZ(448)
> > ...
> > D S_IRWXO S 10I 0 INZ(7)
> > ...
> > D*** misc
> > D O_TEXTDATA S 10I 0 INZ(16777216)
> > D O_CODEPAGE S 10I 0 INZ(8388608)
> > ...
> > D*** stat data structure
> > D StatDS DS 128
> > D st_mode 10U 0
> > D st_ino 10U 0
> > D st_nlink 5U 0
> > D st_reserved1 2A
> > D st_uid 10U 0
> > D st_gid 10U 0
> > D st_size 10U 0
> > D st_atime 10U 0
> > D st_mtime 10U 0
> > D st_ctime 10U 0
> > D st_dev 10U 0
> > D st_blksize 10I 0
> > D st_allocsize 10I 0
> > D st_objtype 10A
> > D st_reserved2 2A
> > D st_codepage 5U 0
> > D st_reserved3 62A
> > D st_ino_gen_id 10U 0
> >
> > D AttachDesc S 10I 0
> > D BytesRead S 10I 0
> > D DataRead S 9999A
> > D IfsData S Like(DataRead)
> > ...
> > * Open the Domino File containing the list of servers
> > C Exsr OpenDomino
> >
> > * Read from the Domino File containing the list of servers
> > C Exsr ReadDomino
> > ...
> > /eject
> > C OpenDomino BegSr
> > C Eval IFSFileName=%trimr(DominoFile) + Null
> > C Exsr RtvCodePage
> > C Eval AttachDesc = open(%ADDR(IFSFileName)
> > C : O_RDONLY + O_CODEPAGE
> > C : S_IRWXU + S_IRWXO
> > C : st_codepage)
> > C EndSr
> > ******************************************************************
> > *****************************************************************
> > * Retrieve code page
> > *****************************************************************
> > C RtvCodePage Begsr
> > C*** Retrieve file attributes
> > C Eval ReturnInt = stat(%ADDR(IFSFileName):
> > C %ADDR(StatDS))
> > C If ReturnInt <> *Zero
> > C Clear st_codepage
> > C Endif
> > C***
> > C Endsr
> > C*****************************************************************
> > /eject
> > C ReadDomino BegSr
> > C Eval BytesRead = read(AttachDesc
> > C : %Addr(DataRead)
> > C : %Size(DataRead))
> > ...
> >
> >
> > Display Attributes
> >
> > Object . . . . . . : /QIBM/UserData/LOTUS/LOTUS_SERVERS
> >
> > Type . . . . . . . . . . . . . . . . . : STMF
> >
> > Owner . . . . . . . . . . . . . . . . : QNOTES
> > System object is on . . . . . . . . . : Local
> > Auxiliary storage pool . . . . . . . . : 1
> > Object overflowed . . . . . . . . . : No
> >
> > Coded character set ID . . . . . . . . : 13488
> > Hidden file . . . . . . . . . . . . . : No
> > PC system file . . . . . . . . . . . . : No
> > Read only . . . . . . . . . . . . . . : No
> >
> > Need to archive (PC) . . . . . . . . . : Yes
> > Need to archive (AS/400) . . . . . . . : No
> >
> > Last access date/time . . . . . . . . : 04/18/01 14:16:39
> > Data change date/time . . . . . . . . : 02/26/01 11:00:22
> > Attribute change date/time . . . . . . : 02/26/01 11:00:22
> >
> > Size of object data in bytes . . . . . : 1714
> > Allocated size of object . . . . . . . : 8192
> > File format . . . . . . . . . . . . . : *TYPE2
> > Size of extended attributes . . . . . : 0
> > Storage freed . . . . . . . . . . . . : No
> >
> > Auditing value . . . . . . . . . . . . : *NONE
> >
> > Object domain . . . . . . . . . . . . : *SYSTEM
> >
> > Number of hard links . . . . . . . . . : 1
> >
> > Last used date . . . . . . . . . . . . : 04/18/01
> > Days used count . . . . . . . . . . . : 295
> > Reset date . . . . . . . . . . . . . :
> > Allow write during save . . . . . . . : No
> > Digitally signed . . . . . . . . . . . : No
> > File ID . . . . . . . . . . . . . . . :
> > X'0000000000000001796FA7DD00002734'
> >
> >
> >
> > Rob Berendt
> >
> > ==================
> > Remember the Cole!
> >
+---
| This is the RPG/400 Mailing List!
| To submit a new message, send your mail to RPG400-L@midrange.com.
| To subscribe to this list send email to RPG400-L-SUB@midrange.com.
| To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator:
david@midrange.com
+---
+---
| This is the RPG/400 Mailing List!
| To submit a new message, send your mail to RPG400-L@midrange.com.
| To subscribe to this list send email to RPG400-L-SUB@midrange.com.
| To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator:
david@midrange.com
+---
+---
| This is the RPG/400 Mailing List!
| To submit a new message, send your mail to RPG400-L@midrange.com.
| To subscribe to this list send email to RPG400-L-SUB@midrange.com.
| To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator:
david@midrange.com
+---
+---
| This is the RPG/400 Mailing List!
| To submit a new message, send your mail to RPG400-L@midrange.com.
| To subscribe to this list send email to RPG400-L-SUB@midrange.com.
| To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@midrange.com
+---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.