| 
 | 
Wondering if anyone would be able give a simple source example of an external data structure definition in OPM C and ILE C ... if the concept even exists.
Two ways that I know of #pragma mapinc and GENCSRCThey basically do the same thing, except that the #pragma is a preprocessor directive and therefore is run automatically when you invoke the compiler (making it more like RPG's version of this) and GENCSRC is a CL command that you run manually from the command line.
What these options do (both of them) is generate a source member that contains the external definition of the file. In both cases, you have to #include that source member in order to use the data structure definition in your C program.
For example, if you put the following in your C source:
#pragma mapinc ("includeme","mylib/myfile(myrecfmt)","input","")
#include "includeme"
It will generate a (temporary) source member called "includeme" on the 
fly that contains the data structure definition. It will generate it using 
the record format called myrecfmt from the file mylib/myfile.  It includes 
input fields (i.e. fields that are not output only, like specifying *INPUT 
in RPG)
The next line includes that source member so that I can use it in my program. The name of the structure definition will be MYLIB_MYFILE_MYRECFMT_i_t (the "i" stands for input). So I can use that structure definition like that:
int main(int argc, char **argv) {
  MYLIB_MYFILE_MYRECFMT_i_t rec;
  memset(&rec.field1, ' ', 10);
  .
  .
}
That's probably not a great example, but hopefully you get the idea.
The only difference when using GENCSRC is that it's a CL command that you 
run yourself (or put in a Makefile or whatever) that generates the source 
member.  You use that instead of the #pragma.
That way, you can see the source member that it generates, and keep it around, etc. You still #include it the same way, and use it the same way in your programs.
We're looking for examples in a C program that will cause a file or external data structure to NOT be picked up by a DSPPGMREF.
I don't think those options will cause anything to be picked up by DSPPGMREF, since all they do is generate source members. The compiler doesn't really know that the source came from a file -- it's just a data structure definition. But, I haven't tested this. Give it a try and see what happens...
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.