|
Jon, Sorry I can't give you a complete program but here is a snippet that might answer your questions. Basically, you have to create a user space (QUSCRTUS) for QBNLPGMI to write its output into and then delete it (QUSDLTUS) when you are done. -Marty /********************************************************************/ /* Generic header returned in userspaces following a call to */ /* a "LIST" module. */ /********************************************************************/ typedef _Packed struct header_struct_bn { char user_data[64]; int generic_header_size; char header_version[4]; char format_name[8]; char srvpgm_name[10]; char time_generated[13]; char information_status; int usrspc_used; int parm_section_offset; int parm_section_size; int header_section_offset; int header_section_size; int list_section_offset; int list_section_size; int number_of_entries; int size_of_entry; int CCSID_of_entry; char country_id[2]; char language_id[2]; char subsetted_list_indicator; char reserved[42]; } header_struct_bn_t; /****** Error Code structure ******/ struct errcode { int bytes_provided ; int bytes_available ; char exception_id[7] ; char reserved ; char *exception_data ; } ErrCode ; /****** qualified program name ******/ char Pgm_and_lib[21] ; void get_ILE_info( void ) { char uspace_name[21] = {"USPBNLINFOQTEMP "}; char description[50]; int count; header_struct_bn_t *header; char *list_section; Qbn_LPGMI_PGML0100_t *mod_info; char dt1[20]; char dt2[20]; memset(description, ' ', sizeof(description)); ErrCode.bytes_provided = 0 ; QUSCRTUS( uspace_name, /* user space name */ " ", /* extended attribute */ 10240, /* user space size */ " ", /* initial value */ "*USE ", /* public authority */ description, /* text description */ "*YES ", /* replace */ (char*)&ErrCode ) ; /* exception output */ ErrCode.bytes_provided = 0 ; /* call AS/400 program information API */ QBNLPGMI( uspace_name, /* response area */ "PGML0100", /* response format */ Pgm_and_lib, /* input parms */ (char*)&ErrCode ) ; /* exception output */ ErrCode.bytes_provided = 0 ; QUSPTRUS( uspace_name, /* user space name */ &header, /* ptr to user space */ (char*)&ErrCode ) ; /* exception output */ list_section = (char *)header; list_section = list_section + header->list_section_offset; mod_info = (Qbn_LPGMI_PGML0100_t *) list_section; dspmsg("This is an ILE program bound from %d modules:", header->number_of_entries ); count = 0; while (count < header->number_of_entries) { memcpy(dt1,fixup(mod_info->Module_Creation_Timestamp),sizeof(dt1) ); memcpy(dt2,fixup(mod_info->Source_File_Updated_Timestamp),sizeof(dt2) ); dspmsg("Module %.10s/%.10s ----------- Created %s from " "Source %.10s/%.10s(%.10s) Updated %s.", mod_info->Bound_Module_Library_Name, mod_info->Bound_Module_Name, dt1, mod_info->Source_File_Library_Name, mod_info->Source_File_Name, mod_info->Source_File_Member, dt2 ); count++; mod_info++; } ErrCode.bytes_provided = 0 ; QUSDLTUS( uspace_name, /* user space name */ (char*)&ErrCode ) ; /* exception output */ return; } ------------------------------ date: Tue, 25 Jul 2006 16:42:25 -0500 from: "Jon Sinner" <JSinner@xxxxxxxx> subject: QBNLPGMI API Does anybody have a working example of the QBNLPGMI API they would be willing to post. I have searched the archives and have not found an example. I am somewhat confused about the user space requirement in the Required Parameter Group Thanks Jon
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.