|
Henrik,
Does "system field name" equal to "field names" of RPG programs, display
files and printer files and so on?
If that is true, you are right. But that is not a runtime problem, but a
development/compile problem. From my point of view developers should avoid
using special characters in field names, although that is common practice.
Anyway, those special characters do not hurt, as long as you ship compiled
objects, does'nt it?
Thomas.
-----Ursprüngliche Nachricht-----
Von: RPG400-L [mailto:rpg400-l-bounces@xxxxxxxxxxxx] Im Auftrag von
Henrik Rützou
Gesendet: Mittwoch, 22. Februar 2017 09:29
An: RPG programming on the IBM i (AS/400 and iSeries)
Betreff: Re: Question about Code pages and writing file directly to IFS
with RPG program
Thomas
your method only solves half of the problem because the same problem
exists in naming fields.
On a CCSid 37 systems field names like ##NO @@NO, $$NO are allowed but on
a CCSid 277 system (danish) they are NOT and but must be renamed to ÆÆNO,
ØØNO and ÅÅNO in order for one to be able to compile the program.
On Wed, Feb 22, 2017 at 9:06 AM, Thomas Raddatz <thomas.raddatz@xxxxxx>
wrote:
John,
As you already figured out, using different constants depending on the
CCSID of the current job is not a good idea. Here is a demo that
shows, how to use Unicode literals. It produces the following output:
Job running with CCSID 273:
¬hex-constants|
[unicode-constants]
Job running with CCSID 37:
[hex-constants]
[unicode-constants]
You see, the Unicode constants work for both CCSIDs.
Please refer to my posting from Tuesday to get a copy of the UNICODE
command.
Regards,
Thomas.
**free
// ============================================================
=======
// STRPREPRC Compile Options:
// >>PRE-COMPILER<<
// >>CRTCMD<< CRTBNDRPG PGM(&LI/&OB) +
// SRCFILE(&SL/&SF) SRCMBR(&SM);
// >>IMPORTANT<<
// >>PARM<< TRUNCNBR(*NO);
// >>PARM<< DBGVIEW(*LIST);
// >>PARM<< OPTION(*EVENTF);
// >>END-IMPORTANT<<
// >>EXECUTE<<
// >>END-PRE-COMPILER<<
// ============================================================
=======
ctl-opt main(ccsiddemo) bnddir('QC2LE');
ctl-opt debug(*yes);
/if defined(CRTBNDRPG)
ctl-opt dftactgrp(*no) actgrp(*new);
/endif
// fd/-1 = open()--Open File ==> include <fcntl.h>
dcl-pr open int(10) extproc('open');
i_path pointer options(*string) value;
i_opnFlag int(10) value;
i_mode uns(10) options(*nopass) value;
i_codePage uns(10) options(*nopass) value;
i_crtCodePage uns(10) options(*nopass) value;
end-pr;
dcl-c O_WRONLY 2;
dcl-c O_CREAT 8;
dcl-c O_CCSID 32;
dcl-c O_TRUNC 64;
dcl-c O_TEXTDATA 16777216;
dcl-c O_CODEPAGE 8388608;
dcl-c O_TEXT_CREAT 33554432;
dcl-c S_IRWXU 448;
dcl-c S_IRWXO 7;
// value/-1 = write()--Write to Descriptor ==> include <unistd.h>
dcl-pr write int(10) extproc('write');
i_fd int(10) value;
i_pBuffer pointer value;
i_bufLen uns(10) value;
end-pr;
// 0/-1 = close()--Close File or Socket Descriptor ==> include
<unistd.h>
dcl-pr close int(10) extproc('close');
i_fd int(10) value;
end-pr;
dcl-proc ccsiddemo;
dcl-pi *n end-pi;
dcl-s fd int(10);
dcl-s len int(10);
dcl-c X_BrktL X'BA';
dcl-c X_BrktR X'BB';
dcl-c U_BrktL u'005B';
dcl-c U_BrktR u'005D';
dcl-c CRLF x'0D25';
dcl-s E_BrktL char(1);
dcl-s E_BrktR char(1);
dcl-s buffer varchar(100);
// Initialize special characters
E_BrktL = %char(U_BrktL);
E_BrktR = %char(U_BrktR);
// Open IFS file
fd = open('/home/raddatz/ccsidDemo.txt':
O_CREAT + O_WRONLY + O_TRUNC + O_CCSID + O_TEXT_CREAT
+
O_TEXTDATA:
S_IRWXU + S_IRWXO: 1252: 0); // Convert data from job
CCSID to 1252
// when appending data
to the file
// Write some data to the file
buffer = X_BrktL + 'hex-constants' + X_BrktR + CRLF;
len = write(fd: %addr(buffer: *data): %len(buffer));
buffer = E_BrktL + 'unicode-constants' + E_BrktR + CRLF;
len = write(fd: %addr(buffer: *data): %len(buffer));
// Close the file
callp close(fd);
end-proc;
-----Ursprüngliche Nachricht-----
Von: RPG400-L [mailto:rpg400-l-bounces@xxxxxxxxxxxx] Im Auftrag von
John Allen
Gesendet: Dienstag, 21. Februar 2017 17:21
An: 'RPG programming on the IBM i (AS/400 and iSeries)'
Betreff: RE: Question about Code pages and writing file directly to
IFS with RPG program
Thanks for the info.
The program is always compiled using CCSID 37 I do not use constant
character [ and ] instead I use variable fields where I load their
values based on the CCSID of the system where the program is running
EVAL W$BrktL = X'BA'
EVAL W$BrktR = X'BB'
Then I tried (without success) using different variations of this:
C WHEN W$CdPage = 284
C EVAL W$BrktL = X'4A'
C EVAL W$BrktR = X'5A'
Then I figured this was not the correct/best solution for this. There
has to be a simpler/better way As I still need to get all of the
Spanish characters in the spool file to map correctly as well
--
IMPORTANT NOTICE:
This email is confidential, may be legally privileged, and is for the
intended recipient only. Access, disclosure, copying, distribution, or
reliance on any of it by anyone else is prohibited and may be a
criminal offence. Please delete if obtained in error and email
confirmation to the sender.
--
This is the RPG programming on the IBM i (AS/400 and iSeries)
(RPG400-L) mailing list To post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx Before posting, please take a
moment to review the archives at http://archive.midrange.com/rpg400-l.
Please contact support@xxxxxxxxxxxx for any subscription related
questions.
Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD
--
Regards,
Henrik Rützou
http://powerEXT.com <http://powerext.com/>
--
This is the RPG programming on the IBM i (AS/400 and iSeries) (RPG400-L)
mailing list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe,
unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives at
http://archive.midrange.com/rpg400-l.
Please contact support@xxxxxxxxxxxx for any subscription related
questions.
Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD
--
IMPORTANT NOTICE:
This email is confidential, may be legally privileged, and is for the
intended recipient only. Access, disclosure, copying, distribution, or
reliance on any of it by anyone else is prohibited and may be a criminal
offence. Please delete if obtained in error and email confirmation to the
sender.
--
This is the RPG programming on the IBM i (AS/400 and iSeries) (RPG400-L)
mailing list
To post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.
Please contact support@xxxxxxxxxxxx for any subscription related
questions.
Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 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.