Hello David, I send you the copy code of the program.
Thanks in advance. Hilario 2017-10-20 14:38 GMT+02:00 David Crayford <[email protected]>: > Can you post a snippet of source code? > > > > On 20/10/2017 7:33 PM, Hilario Garcia wrote: > >> Hello David, >> >> Thank you very much for your comments on this. >> >> I have made changes to my Compile JCl: >> >> >> LIST LONGNAME RENT SOURCE ASCII CONVLIT LOCALE (EN_US.IBM-037) >> >> LIST LONGNAME RENT SOURCE ASCII CONVLIT LOCALE (EN_US.IBM-1047) >> >> I always receive the same errors in the C ++ & Binder Compilation process. >> You can tell me something I should do wrong. >> >> Thank you very much. >> >> Hilario >> >> PS: Errors are: >> G CCN0049 'FJA.SAMPLE.C (LPCSI)': 0 The option "" is not supported. >> CCN3166 FJA.SAMPLE.C (LPCSI): 43 Definition of function \ u00d1include >> requires >> CCN3276 FJA.SAMPLE.C (LPCSI): 43 Syntax error: possible missing '{'? >> CCN3766 FJA.SAMPLE.C (LPCSI): 51 The universal character name "[" is not >> in >> the >> fier >> CCN3766 FJA.SAMPLE.C (LPCSI): 52 The universal character name "[" is not >> in >> the >> fier >> CCN3766 FJA.SAMPLE.C (LPCSI): 53 The universal character name "[" is not >> in >> the >> fier >> CCN3766 FJA.SAMPLE.C (LPCSI): 54 The universal character name "[" is not >> in >> the >> fier >> CCN3766 FJA.SAMPLE.C (LPCSI): 62 The universal character name "[" is not >> in >> the >> fier >> CCN3275 FJA.SAMPLE.C (LPCSI): 62 Unexpected text ']' encountered. >> CCN3273 FJA.SAMPLE.C (LPCSI): 63 Missing type in declaration of filtkey. >> CCN3766 FJA.SAMPLE.C (LPCSI): 67 The universal character name "[" is not >> in >> the >> fier >> CCN3275 FJA.SAMPLE.C (LPCSI): 67 Unexpected text ']' encountered. >> CCN3766 FJA.SAMPLE.C (LPCSI): 84 The universal character name "[" is not >> in >> the >> fier >> CCN3275 FJA.SAMPLE.C (LPCSI): 84 Unexpected text ']' encountered. >> >> 2017-10-19 13:45 GMT+02:00 David Crayford <[email protected]>: >> >> Those aren't special characters, they're fundamental to the language. Only >>> square brackets and the ^ operator are usually a problem for English code >>> pages. NOLOCALE is your problem. Specify what code page you want to use >>> in the LOCALE() compiler option. For example LOCALE(EN_US.IBM-1047) or >>> LOCALE(EN_US.IBM-037) . >>> >>> >>> >>> On 19/10/2017 7:39 PM, Hilario Garcia wrote: >>> >>> Hello, >>>> >>>> I am new to using c / c ++ language. I try to compile the first program >>>> under Z / os 2.1. The compiler detects errors when using special >>>> characters >>>> (#, [,], _ ..) >>>> >>>> I have been trying to fix the problems through the compiler options: >>>> NOASCII CONVLIT NOLOCALE, but I have not managed to solve it. >>>> >>>> Can someone tell me something about how to solve this problem? >>>> >>>> Thank you very much. >>>> >>>> Hilario >>>> >>>> PD (Attached compilation process >>>> >>>> ---------------------------------------------------------------------- >>>> For IBM-MAIN subscribe / signoff / archive access instructions, >>>> send email to [email protected] with the message: INFO IBM-MAIN >>>> >>>> ---------------------------------------------------------------------- >>> For IBM-MAIN subscribe / signoff / archive access instructions, >>> send email to [email protected] with the message: INFO IBM-MAIN >>> >>> ---------------------------------------------------------------------- >> For IBM-MAIN subscribe / signoff / archive access instructions, >> send email to [email protected] with the message: INFO IBM-MAIN >> > > ---------------------------------------------------------------------- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to [email protected] with the message: INFO IBM-MAIN > ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
/* ================================================================== */ /* LPCSI */ /* */ /* This C sample program shows how to use the z/OS Catalog Search */ /* Interface (CSI) to get dataset information. This utility is */ /* very handy for searcing through catalogs for datasets. */ /* */ /* The CSI can be used to search through catalogs, and provide */ /* any information required. Searches can be done by dataset name */ /* dataset pattern, dataset type, and catalog name. */ /* */ /* Any of the information in the catalog can be output by */ /* specifying the field names required in the filter key section. */ /* */ /* In this example, we're specifying a fixed dataset pattern, */ /* getting all types of datasets from all catalogs, and getting */ /* one extra field: volume serial number. IGGCSI00 can also get */ /* ATL information. But we're not doing that here. */ /* */ /* David Stephens */ /* 23-Sep-2010 */ /* Longpela Expertise */ /* www.longpelaexpertise.com.au */ /* */ /* (C) Copyright 2010 Longpela Expertise */ /* */ /* This program is free software: you can redistribute it and/or */ /* modify it under the terms of the GNU General Public License as */ /* published by the Free Software Foundation, either version 3 of the */ /* License, or (at your option) any later version. */ /* */ /* This program is distributed in the hope that it will be useful, */ /* but WITHOUT ANY WARRANTY; without even the implied warranty of */ /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU */ /* General Public License for more details at */ /* http://www.gnu.org/licenses/ */ /* ================================================================== */ /* ================================================================== */ /* Includes */ /* ================================================================== */ /* --- Includes ---------------------------------------------------- */ #include <stdio.h> #include <stdlib.h> /* ================================================================== */ /* Structures to Map IGGCSI00 input and output */ /* ================================================================== */ /* --- Filter Parameter Structure ----------------------------------- */ typedef struct filtkey { char csifiltk[44]; /* Generic filter key */ char csicatnm[44]; /* Catalog Name */ char csiresnm[44]; /* Resume Name */ char csidtypd[16]; /* Entry Types */ /* CSI Options */ char csicldi; /* data/index option */ char csiresum; /* Resume indicator (set by */ /* IGGCSI00) */ char csis1cat; /* Y=Only 1 catalog srched */ char csioptns; /* fullword/halfword option */ unsigned short csinumen; /* Y=Only 1 catalog srched */ char csifldnm[8]; /* Field Name */ } filtkey; /* --- Reason Code Structure ---------------------------------------- */ typedef struct reascde { char reasmod[2]; /* 2 byte module ID */ char reasrc; /* Return code */ char reasreas; /* Reason code */ } reascde; /* --- Workarea Header ---------------------------------------------- */ typedef struct wrkhdr { int csiusrln; /* Length of workarea */ int csireqln; /* Miminum len for 1 entry */ int csiusdln; /* Length of used workarea */ short csinumfd; /* Number fields + 1 */ } wrkhdr; /* --- Workarea Entry ----------------------------------------------- */ typedef struct wrkent { char csieflag; /* Entry flags */ char csietype; /* Entry Type */ char csiename[44]; /* Entry name */ char csieretm[2]; /* Entry return module */ char csieretr; /* Entry return reason code */ char csieretc; /* Entry return code */ /* Returned Data */ short csiedata_len; /* Field Length */ char csiedata[6]; /* Field data. In our case, */ /* the volume serial. */ /* Volsers are always 6 */ /* characters */ } wrkent; /* ================================================================== */ /* Variables and Other Definitions */ /* ================================================================== */ /* --- Define the IGGCSI00 Program as External With OS Parms -------- */ extern int iggcsi00( reascde * __iggrsn, /* Input - fullword for reason code*/ struct filtkey * __iggfield, /* Input - selection criteria fields */ void * __iggwork); /* Output - workarea */ #pragma map(iggcsi00, "IGGCSI00") /* --- Variables ---------------------------------------------------- */ int rc=0; /* Return Code */ char * str1, * str2; /* Output buffer */ reascde igg_reas; /* reason code from IGGCSI00 */ reascde * ptr_reas; /* Ptr to reason code */ char * work1; /* IGGCSI00 workarea */ filtkey * filt1; /* Filter area pointer */ const int worksize=1024; /* Workarea size - IBM */ /* recommends 64000 */ wrkhdr * wrkhdr1; /* Workarea header pointer */ wrkent * wrkent1; /* Workarea dataset entry */ int wrkpos; /* Position on workarea */ int usdwrk; /* Amount workarea used */ int numdset=0; /* Number of datasets */ char more='Y'; /* More to process? */ /* ================================================================== */ /* Main Program */ /* ================================================================== */ main() { /* --------------------------------------------------------------- */ /* Initialise areas */ /* --------------------------------------------------------------- */ str1= (char *)malloc(80); /* Area for printing strings */ memset(str1,0,sizeof(str1)); /* Zero output buffer */ str2= (char *)malloc(80); /* Area for printing strings */ memset(str2,0,sizeof(str2)); /* Zero output buffer */ /* --------------------------------------------------------------- */ /* Setup parameters to IGGCSI00 */ /* Here we're setting a constant datasetname pattern to */ /* search for: SYS1.** - this will return all datasets */ /* beginning with SYS1. */ /* We're also setting one field: VOLSER. So we will get */ /* Volume Serial number information for each dataset */ /* --------------------------------------------------------------- */ ptr_reas = &igg_reas; /* Set ptr for reason info */ work1= (char *)malloc(worksize); /* IGGCSI00 workarea */ wrkhdr1 = (wrkhdr *)work1; /* Ptr to workarea */ filt1= (filtkey *)malloc(sizeof(filtkey)); /* Filter Key pointer */ memset(filt1,' ',sizeof(filtkey)); /* Set filter to spaces */ memcpy(filt1->csifiltk,"SYS1.**",7); /* Set Filter Key */ filt1->csinumen = 1; /* One field */ memcpy(filt1->csifldnm,"VOLSER ",8); /* Get volser field */ wrkhdr1->csiusrln=worksize; /* Workarea size */ /* --------------------------------------------------------------- */ /* Print Out a Heading Line. */ /* --------------------------------------------------------------- */ printf("Type Dataset Name "); printf(" Volume\n"); printf("---- -------------------------------------------- "); printf("--------\n"); /* --------------------------------------------------------------- */ /* Call IGGCSI00 Until there's an error, or there's no more */ /* data to process. */ /* IGGCSI00 will put a 'Y' in the csiresum field of the filter key */ /* if there's more data to process, and the last datasetname in the*/ /* csiresnm field. This happens if the workarea is too small for */ /* all the datasets. */ /* So we check for the Y, and if it's there, we call IGGCSI00 */ /* again for the rest. */ /* --------------------------------------------------------------- */ while (more == 'Y' && rc==0) { rc = iggcsi00(ptr_reas,filt1,work1); more = filt1->csiresum; /* Is there more output? */ /* ------------------------------------------------------------ */ /* If IGGCSI00 went OK, output every dataset. */ /* IGGCSI00 will output one entry for every dataset, and one */ /* entry for every catalog. We only want the dataset names. */ /* ------------------------------------------------------------ */ if (rc == 0) { /* --- Called IGGCSI00 successfully ------------------------ */ usdwrk=wrkhdr1->csiusdln; /* Amount of workarea used */ wrkpos = 14; /* Start position */ /* --------------------------------------------------------- */ /* Search through every entry provided in our workarea. */ /* The workarea conssists of a 14 byte header, and then */ /* Entries. The length depends on the entry: */ /* Catalog Entries - 50 bytes. */ /* Dataset Entries - 50 bytes+field data. */ /* --------------------------------------------------------- */ /* --- Get Every Entry and Output It ----------------------- */ while (wrkpos < usdwrk) { wrkent1 = (wrkent *)(work1+wrkpos); /* Map this entry */ if (wrkent1->csietype != '0') { /* --- Not a catalog entry --------------------------- */ memcpy(str1,wrkent1->csiename,44); wrkpos = wrkpos+50; /* Move ptr over entry */ /* --------------------------------------------------- */ /* Here we check if we have our field data. In this */ /* example we've only requested one field: volser. */ /* We check there is no error, and the field length */ /* is greater than 0. */ /* Lengths are halfwords (short) because we specified */ /* a space in the CSIOPTNs field in the filter key. */ /* --------------------------------------------------- */ if (wrkent1->csiedata_len >0 ) { /* --- Len = 0, have our volume serial number ----- */ memcpy(str2,wrkent1->csiedata, wrkent1->csiedata_len); } /* If have a volser */ wrkpos = wrkpos + wrkent1->csiedata_len + 2; /* Skip over volser field */ printf("(%c) %s (%s)\n", wrkent1->csietype,str1, str2); /* --------------------------------------------------- */ /* Here we're printing out the dataset type. This */ /* could be: */ /* A - Non-VSAM dataset */ /* B - GDG */ /* C - VSAM Cluster */ /* D - VSAM Data Component */ /* G - VSAM Alternate Index */ /* H - Generation Dataset */ /* I - VSAM Index Component */ /* R - Path */ /* X - Alias */ /* U - User Catalog Connector Entry */ /* L - ATL Library entry */ /* W - ATL Volume entry */ /* --------------------------------------------------- */ memset(str1,0,sizeof(str1)); /* Zero output buffer */ memset(str2,0,sizeof(str2)); /* Zero output buffer */ numdset++; /* Increment dataset count */ } else { /* --- Catalog Entry --------------------------------- */ wrkpos = wrkpos + 50; /* Skip to next entry */ } /* else */ } /* do while more in wrkarea */ } else { /* if rc=0 */ /* --- Had an error, so output the information ------------- */ printf("IGGCSI00 rc = %d, reas= %d (reas) / %d (retc)\n", rc, igg_reas.reasrc, igg_reas.reasreas); } /* else */ } /* while rc=0 and more */ if (rc == 0) { /* --- No errors, so output number of datasets ---------------- */ printf(" \n"); printf(" %d Datasets Found\n", numdset); } /* if rc = 0 */ } /* main */ ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
