SECTIONS is used to generate a report header for each transaction. Syncsort - sort, ZD to PD, sum PD, PD to ZD, Build output -IBM Mainframes SORT FIELDS=( logically appears after the INCLUDE (wherever you code it) and by using OPTION COPY it is clear, up front, and in a logical place, that it is a COPY operation. OUTREC control statement use in SORT OUTREC control statement is used to reformat (adds, deletes, or reformats fields) each record after they are sorted, merged, or copied by specifying all of its items one by one. Where, OUTREC= (1,10,50,4,40,4) Both examples will reformat the record so that it consists of the first 10 bytes of the input record, followed by the 4 bytes starting at position 50, followed by the 4 bytes starting at position 40. Overwrite input record content. Likewise, the sequence number will be 1 for the first trailer record, 2 for the second trailer record and 3 for the third trailer record. Following records will be selected from the input file. record length and LRECL must be set to a particular value (for And setting Return Code if it crossing a threshold (90%). OUTREC in SORT - mainframegurukul.com Minimising the environmental effects of my dyson brain. In addition to this it will replace 3 letter day-of-week name at position 11 in input file with its full name at position 11. INREC and OUTREC do the same, but the only difference is the way reformatting is done. Site design / logo 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA. example, if DIGITS(10) is specified, 10 digits are used instead of 15. than or equal to n, ICETOOL sets the record length and LRECL to n. To subscribe to this RSS feed, copy and paste this URL into your RSS reader. Each FILE DD has only 1 record from the below and all the records are copied to the sortout. SORT FIELDS=COPY It is for copy records to output file. value by not specifying WIDTH(n). BUILD in SORT - mainframegurukul.com OUTREC FIELDS= (1:1,20,CTOTAL,26:5Z,31:21,10), SORT FIELDS=COPY
In the input file, the content in position 1,6 is overwritten to the position 47,6 and then copied to the output file. C'SAT',C'SATURDAY'), -
//SORTOUT DD DSN=DEPT.EMPL.DATA.OUTPUT2,
Why is there a voltage on my HDMI and coaxial cables? instead. There. The output file will contain the unique employee numbers sorted in ascending order. Reformatting Records Using OUTREC - Part 1 Hence, 10 records are written to output. This will make the whole process inefficient. . You have your counts. You can use four types of IFTHEN statements as follows: Use one or more WHEN=INIT clauses to apply build or overlay items to all of your input records. AKSHAY TUE 10000
Using OUREC in SORT JCL - Example. The same functionality can be achieved using ICETOOL also. Reformat each record by specifying just the items that overlay specific columns. Find centralized, trusted content and collaborate around the technologies you use most. OUTREC keeps only positions 1-80 for the OUTFIL output records, thus removing the identifier byte and sequence number we added in positions 81-83 with the INREC statement (we do not want these temporary fields in the OUTFIL output records). Here is the OUTREC SORT card. //SORTOUT DD DSN=DEPT.EMPL.DATA.OUTPUT1,
SORT FIELDS=COPY
rev2023.3.3.43278. OUTFIL 03 gets all the not 0000s which are not 'Y'. than n, ICETOOL issues an error message and terminates the operation. OUTREC OVERLAY=(..,45:45,3,ZD,MUL,+10,TO=ZD,LENGTH=4) the data from 45th byte multiplies with 10 and writes the result to output of the length 4 from 45th position. OUTREC is processed after SORT/MERGE and SUM (if present) otherwise after INREC. OUTREC control statement is used to reformat (adds, deletes, or reformats fields) each record after they are sorted, merged, or copied by specifying all of its items one by one. In addition I want only part of the record in the output file given by the below 3 BUILD's. OUTREC method INCLUDE COND=(5,1,GE,C'M'),FORMAT=CH OUTREC FIELDS=(10,3,20,8,33,11,5,1) SORT FIELDS=(20,8,CH,A,10,3,FI,A) SUM FIELDS=(38,4,BI) Theseexamples illustrate how a fixed-length input data set is sorted and reformatted for output. Statement OUTREC FIELDS=(1:6,25,26:46,5) is coded to specify that field at position (6 to 30 i.e. If clause 3 is satisfied, its build items are applied and processing continues. 2 Incredible DFSORT Insert Separators Examples in JCL | Srinimf. You can delete, rearrange and insert fields and constants. Staging Ground Beta 1 Recap, and Reviewers needed for Beta 2, How to change the properties of a ps or an pds, Passing symbol value using DFSORT to file, mainframe - generate a report with sum of particular fields. Example: PARSE can be used for many different types of variable fields including delimited fields, comma-separated values (CSV), tab-separated values, blank-separated values, keyword-separated fields, null-terminated strings, and so on. // UNIT=TEST,SPACE=(CYL,(50,10),RLSE)
Each day we want only the records for that day to be copied into the output file. OUTREC OVERLAY=(60:SEQNUM,2,ZD,START=5,INCR=5) Generates the sequence number of length 2 from 60th byte. (adsbygoogle = window.adsbygoogle || []).push({}). To insert 5 blanks, write 5X between the two fields. The location and length of the number sold field. JOHN 28000, //SORTSTEP EXEC PGM=SORT
INREC adds, deletes, or reformats fields before the records are sorted or merged. If clause 6 is not satisfied, its build items are not applied and processing stops. Let us assume input file has following data and structure INPUT FILE . FINDREP indicates doing a find and replace operation. OUTREC FIELDS=(..,45,30) copies the input file data from 45th byte of length 30 as it is to output starts at 45th byte. Is it suspicious or odd to stand by the gate of a GA airport watching the planes? confused.. Can you please explain how this would work over the syntax i have tried. OUTREC statement used above will copy first 10 bytes from input file & convert all letters to lowercase letters. Follow Up: struct sockaddr storage initialization by network format-string. 1,20 - data at 1st position of input file with length 20 copied to 1st position(if you don't specific position, it will start from 1st position) of output file. //SYSPRINT DD SYSOUT=*
Not the answer you're looking for? places 'B' (matched records), '1' (present in file1, but not in file2), or '2' (present in file2 but not in file1) in the 1st position of the output BUILD. JOHN THU 28000
so that performance will be improved SORT OUTREC Example JCL. 11111AKSHAY HR 10000
VIJAY SUN 30000, //SORTSTEP EXEC PGM=SORT
If you use PGM=SORT, for example, that's a utility. appropriate record length and LRECL by not specifying WIDTH(n). By clicking Post Your Answer, you agree to our terms of service, privacy policy and cookie policy. Next . In the above example, employee number is in the field position 1,15. BUILD parameter can be used on INREC and OUTREC statements in SORT card. If clause 3 is not satisfied, its build items are not applied and processing continues. IFTHEN clauses let you use sophisticated conditional logic to choose how different record types are reformatted. CHANGE=(10, -
You can use X or 1X to specify a single blank. Inserting Zeros, Spaces and Character strings to your output You can insert blanks before, between, or after fields. Example: PARSE can be used for many different types of variable fields including delimited fields, comma separated values (CSV), tab separated values, blank separated values, keyword separated fields, null-terminated strings, and so on. Although you may invoke it via JCL, it is NOT JCL. example, if DIGITS(5) results in overflow, you can use DIGITS(6) SMITH 25000
TRAN=UTOL, can be used to convert data from upper case to lower case. Use WIDTH(n) if your count record length and LRECL must be set to a IFTHEN clauses for the OUTREC statement can be used to select subsets of the output records and apply different BUILD, FINDREP or OVERLAY items to them. Making statements based on opinion; back them up with references or personal experience. Use one or more WHEN=NONE clauses to apply build or overlay items to your input records that did not meet the criteria for any of the WHEN=(logexp) clauses. record length. SUM FIELDS=NONE removes duplicates on fields specified in SORT FIELDS. If the records are variable-length, the RDW of the record would be reduced to indicate the new length after the shorter literals are substituted. Batch split images vertically in half, sequentially numbering the output files. If you know that your count requires less than 15 digits, you can use . If you input file record is 2015/04/0415:30 theoutput will be Run Date:2015/04/04|Run Time:13:30. You can use X or 1X to specify a single blank. is the protected brand of Scrum.org. WIDTH can only be specified What is \newluafunction? value, you can let ICETOOL determine and set the appropriate LRECL You can use Z or 1Z to specify a single binary zero. If you use DIGITS(d) and the count overflows the number of digits OUTREC as equivalent of BUILD is only on OUTFIL. For instance, you want to know when one file is within 10% of the size of the other. There are two files FILE1.DATA and FILE2.DATA It should be: Code: INREC FIELDS= (.) OK, perhaps 7.3m is not so large, but, when you have your "solution", the next person along is going to do it with 100,000 records, the next with 1,000,000 records. SORT FIELDS=(1,3,ZD,A) - Once the above two tasks done, the file will sorted and the same writes to output after sorting. BUILD parameter can be used on INREC and OUTREC statements in SORT card. View all posts by Srini. The OUTREC control statement allows you to reformat the input records after they are sorted, merged, or copied. Does a summoned creature play immediately after being summoned by a ready action? Thanks for contributing an answer to Stack Overflow! Identify those arcade games from a 1983 Brazilian music video, AC Op-amp integrator with DC Gain Control in LTspice. IFTHEN clauses are processed in the following order: For this example, the IFTHEN clauses are processed as follows: PARSE fields using IFTHEN parameter : Click Here. But if any of the fields in your records have variable positions or lengths, you can use PARSE to treat them as fixed parsed fields in BUILD or OVERLAY. Is it possible to create a concave light? When INREC is used reformatting of records is doneBEFOREthe sort. Syntax for using FIELDS parameter in its simplest form:- OUTREC [FIELDS|BUILD] = ( C:P,M,.) TOT calculates the number of records in the input file. Note that if all of the fields in your records have fixed positions and lengths, you don't need to use PARSE. You can delete, rearrange and insert fields and constants. JCL does not have BUILD/OUTREC statements. Example 1: Formating a file (USING INREC) //SYSIN DD * SORT FIELDS=COPY INREC FIELDS= (7:2,5,20:10,3) /* Explanation: SORT FIELDS=COPY It is for copy records to output file INREC FIELDS= (7:2,5,20:10,3) - Here we have two formattings, 7:2,5 - data at 2nd position of input file with length 5 copied to 7th position of output file LENGTH=6 limits the result to six digits. length required to write the count record and uses it as follows: v If WIDTH(n) is specified and the calculated record length is less Using SORT DATE Functions you can dynamically insert the date, like yyyy-mm-dd or any format instead of a constant date like 2021-01-01. IEBGENER copies the file in SYSUT1 to file in SYSUT2. If you want to replace or remove data anywhere in records, the FINDREP parameter of the OUTREC statement needs to use instead. OUTREC FIELDS=(..,30,30) Copies the input file data from 30th byte of length 30 copies to output as it is. If clause 4 is satisfied, its build items are applied and processing stops. Making statements based on opinion; back them up with references or personal experience. //SYSIN DD *
Skills in Development, Coding, Testing and Debugging. ICETOOL always calculates the record Since the sequence number is not specified for the detail records, it will be blank. NOMATCH=(11,3), -
88888JOHN PURCHASING 08000
Convert the first five bytes ZD to FS in the input file. Alternatively, something has already previously read or written those files. Example: The below OVERLAY will extend the records. IFTHEN Syncsort utility with examples - Tech Agilist On the Mainframe, the client pays for resources. For yyyymm + 3 months, you could use DATE2+3; For Pyyyyddd 150 days, you could use DATE3P-150; For Zmmddyy + 7 days, you could use YDATE1+7. v If WIDTH(n) is not specified, ICETOOL sets the record length and Lets say we have a file with a date in a particular position and we want to select only records where the date is greater than the current or a particular date + or N number of days and it can be 0 to 9999. CSM, CSPO, CSD, CSP, A-CSPO, A-CSM are registered trademarks of Scrum Alliance. Build parameter can be used in OUTFIL statement also. To calculate percentage (Number of records in FILE1/Number of records in FILE2)*100 using DFSORT in Mainframe. If you do not specify a WHEN=NONE clause, only the WHEN=INIT changes (if any) are applied to input records that do not meet the criteria for any of the WHEN=(logexp) clauses. Tell them what you want to do, and they probably already have something you can use to do it with (when discussing this, bear in mind that these are technically data sets, not files). For example: OUTREC BUILD=(DATE3,TIME1,1,6) would produce a character timestamp in output positions 1-12 of the form: yyyydddhhmmss . You can delete, rearrange and insert fields and constants. decimal digits with leading zeros. . TRAN=LTOU, can be used to convert data from lower case to upper case
OUTREC FIELDS=(..,5X,..) adds 5 spaces from 63rd position. After step 4) the sign is missing. Exactly what else depends on your actual task, which we don't know, we only know of the solution you have chosen for your task. OUTREC FIELDS=(1,29,JFY=(.., LEAD=C'<,TRAIL=C>),..) adds the C< as a lead and C> as a trail. JOINKEYS specifies the field on which the two files are compared. OUTREC FIELDS=(1,5,2X,6,10), SORT FIELDS=COPY
One way, if on-the-dot accuracy is not required, is to talk to the technical staff who manage your storage. . Other usages with Inrecand Outrec:(SOurce IBM). For Inrecworks just like if you wantto replace a part of your input record to your data. By clicking Accept all cookies, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy. We can even add spaces/zeroes/any character into the output record based on the requirement. Please do not use JCL as a general term for utilities. INREC WHEN=GROUP can be used with BEGIN to identify a header record starting a group and END to identify a trailer record ending a group. present. What exactly you are getting? Input file has one or more records for same employee number. If any match found in the list, respective data will be moved to output file. //SORTIN DD DSN=DEPT.EMPL.DATA.OUTPUT1,DISP=SHR
. DIGITS can only be specified if Normally it will be given with Join Keys or during the sort. SMITH WED 25000
Brackets affect the "precedence" of numeric operators in a normal way (consult the manual to be familiar with the precedence rules). Note that if all of the fields in your records have fixed positions and lengths, you dont need to use PARSE. . /*, ----+----1----+----2----+----3
Magic. INCLUDE and OMIT statements can be used to select records using a variety of formats for todays date like Cyyyymmdd, Cyyyy/mm/dd, +yyyymmdd, Cyyyyddd, Cyyyy/ddd, +yyyyddd, Cyymmdd and so on. . //SYSPRINT DD SYSOUT=*
Read the answer please. default of 15 digits. For details of what that mask is, look it up in the manual, as you will discover other useful pre-defined masks at the time. SORT FIELDS=COPY
OUTREC IFTHEN=(WHEN=INIT,BUILD=(1:1,80)),..) Copies the 80 bytes data from input file to output as it is. You can read my previous installment if you miss it. The first 10 records need to be written to output file. It confuses people trying to give you an answer. You can prevent the overflow My code is GPL licensed, can I issue a license to have my code be distributed in a specific MIT licensed project? //SORTIN DD DSN=DEPT.EMPL.DATA.OUTPUT1,DISP=SHR
The count is written as d DFSORTis a very good concept for record manipulation. Build gives you complete control over the items you want in your reformatted OUTREC records and the order in which they appear. If clause 2 is satisfied, its build items are applied and processing continues. Selected records will be copied to the output file. INREC statement. What is the purpose of non-series Shimano components? Read this book to get more exposure. Overlay lets you change specific existing columns without affecting the entire record. By using this website, you agree with our Cookies Policy. . C'WED',C'WEDNESDAY', -
Data at position 11 in input file will be compared with CHANGE list. OUTREC OVERLAY=(..,85:45,3,ZD,MUL,+10,TO=ZD,LENGTH=4) the data from 45th byte multiplies with 10 and writes the result to output of the length 4 from 85th position. Did you read the documentation of COUNT (No, is the answer, so do so)? Product Owner Interview Questions and Answers Part II, JIRA Workflow for Optimal Project Tracking, Automatically Assign Issues JIRA Automation, JIRADashboard Popular Gadgets for Agile Teams, Vertical Slice vs Horizontal Slice User Story, WHEN=(logexp) clauses and WHEN=ANY clauses. If you use PGM=SORT, for example, that's a utility. Statement SORT FIELDS=COPY is coded to specify that all records should be copied from input file to output file. JOHN MON 08000
Connect and share knowledge within a single location that is structured and easy to search. When is the condition Overlay is the actualvalue to be replaced similarly. rev2023.3.3.43278. A countdd DD statement must be Staging Ground Beta 1 Recap, and Reviewers needed for Beta 2. We make use of First and third party cookies to improve our user experience. If clause 4 is not satisfied, its build items are not applied and processing continues. Batch split images vertically in half, sequentially numbering the output files. INREC:Specifies how records are reformatted before they are sorted, copied, or merged. by specifying an appropriately higher d value for DIGITS(d). vijay XXX 24000
particular value (for example, 80), or if you want to ensure that the JOHN 28000 00004, SORT FIELDS=COPY
Syncsort Manual: Click Here. For the input record: NEW YORK,ABC NEW JERSEY,XYZ,NEW YORK, The output record would contain: NY,ABC NJ,XYZ,NY. ICETOOL pads the count record on the right with blanks to the record ICETOOL sets the attributes of the count data set as follows: If WIDTH(n) is specified, LRECL is set to n. Use WIDTH(n) if your count The advantage of the above types of solution is that they basically use very few resources. Build gives you complete control over the items you want in your reformatted INREC records and the order in which they appear. OUTREC control statement use in SORT - Tech Agilist If you have any doubts or queries related to this chapter, get them clarified from our Mainframe experts on ibmmainframer Community! JOHN 08000 00001
. Please post your sysouts including the syntax errors.. FWIW- Those are not ZD values. Example: Reformat different records in different ways by specifying how build, overlay, find/replace, or group operation items are applied to records that meet given criteria. it came up with its own figure. If WIDTH(n) is not specified, LRECL is set to the calculated required We will try to explore the many uses of OUTREC in this article with some examples . What are the RECFM and LRECL of your inputs? If the last program to do so does not already produce counts of what it has read/written (to my mind, standard good practice, with the program reconciling as well) then amend the programs to do so now. smith WEDNESDAY 25000
There are multiple Date Functions by which you can reformat input dates. OUTREC FIELDS=(..,55,8,Y4W,ADDYEARS,+2,TOJUL=Y4T(/)) adds +2 years to the date in the input file and converts it to Julian date before writing it to output file from 68th position. Build gives you complete control over the items you want in your reformatted OUTREC records and the order in which they appear. OUTREC FIELDS=(1,39,..)copies first 39 bytes from input file to output as it is. OUTFIL 01, moved to make it easier to follow, gets all the records which are not selected on another OUTFIL (by using SAVE). Table 2. OUTREC FIELDS=(..,55,8,Y4W,TOJUL=Y4T)- data from 55th byte of length 8 will be converted to Y4T Julian date format. d can be 1 to 15. Example: OVERLAY: Reformat each record by specifying just the items that overlay specific columns. How can I use SYNCSORT to format a Packed Decimal field with a specifc sign value? Reformatting records after sorting with BUILD or FIELDS - IBM All the AMSAM00 records are INCLUDED, everything else (which is unwanted for the OUTFILs) is ignored. You can use INCLUDE and OMIT to select records using a variety of formats for past and future dates like Cyyyymmdd, Cyyyy/mm/dd, +yyyymmdd, Cyyyyddd, Cyyyy/ddd, +yyyyddd, Cyymmdd and so on. IFTHEN=(WHEN=(30,5,CH,EQ,Csmall),OVERLAY=(45:C***)) overlays the marks of the student with *** who are belong to small. Following records will be selected from the input file. To subscribe to this RSS feed, copy and paste this URL into your RSS reader. OUTREC FILEDS or OUTREC BUILD It is used to reformat each record by specifying all of its items one by one. In the following example an INREC statement will be used to abbreviate each instance of NEW JERSEY and NEW YORK in a record when position 24 of the record contains a X01. The IFTHEN WHEN=NONE clause identifies and operates on detail records (not HDR or TRL in positions 1-3); OVERLAY adds a 1 in position 81 and does not affect the rest of the record. 1,6,ZD means "the information, at this moment, at start-position one for a length of six, which is a zoned-decimal format". To learn more, see our tips on writing great answers. Let me know if that resolves the issue. C'SUN',C'SUNDAY', -
Default for PARSE: None; must be specified. "After the incident", I started to be more careful not to trip over things. OVERLAY - Replace the selected columns without impacting other columns. IN identifies the constant (the find constant) and OUT identifies the constant (the replace constant). LRECL to the calculated record length. OUTREC is processed after SORT/MERGE and SUM (if present) otherwise after INREC. SORT DATE Functions with Examples - Tech Agilist . EDIT=(TTT.TT) is a used-defined edit mask, in this case inserting a decimal point, truncating the otherwise existing left-most digit, and having significant leading zeros when necessary. 1,6,ZD,DIV,+2 means "take the six-digit number starting at position one, and divide it by two, giving a 'result', which will be placed at the next available position (16 in your case). . Do you have an example of the input and expected output? My approach has to be execute a statement check the results then add the next statement. INREC and OUTREC in Sort JCL -IBM Mainframes Note, the physical order in which these are specified in the JCL does not affect the order they are processed in. To covert the input data from lower case to upper case. Reformat each record by specifying all of its items one by one. Statement SORT FIELDS=COPY is used here to indicate that all records will be copied from input file to output file. Example: OUTREC FINDREP=(IN=Csmall,OUT=CSMALL) finds the text small in the entire input file with the SMALL and writes to the output. I will go through your answer, Multiplication division using DFSORT utility in Mainframe, How Intuit democratizes AI development across teams through reusability. The sequence number will be 1 for the first header record, 2 for the second header record and 3 for the third header record. But if any of the fields in your records have variable positions or lengths, you can use PARSE to treat them as fixed parsed fields in BUILD or OVERLAY. How can I use it? Find centralized, trusted content and collaborate around the technologies you use most. Table 1. What sort of strategies would a medieval military use against a fantasy giant? // UNIT=TEST,SPACE=(CYL,(50,10),RLSE)
steve MONDAY 20000
However while writing to output file, two spaces will be added between fields at position 1-5 and 6-10. Based on the 6th position of the file, the BUILD of output file varies. Why do many companies reject expired SSL certificates as bugs in bug bounties? Writing Only Publisher, Number In Stock, and Number Sold Fields. Statement SORT FIELDS=COPY, is used here to indicate that all records should be copied from input file to output file. Reformat each record by specifying all of its items one by one. Requirement 2: Copy input file to output file as it is, however, while writing output records, copy field at position 1-20 from input file followed by string ' TOTAL ' followed by 5 zeroes followed by field at position 21-30 from input file. FIELDS is overloaded. Agree vijay SUNDAY 30000. Example: INREC OVERLAY= (45:45,8,TRAN=LTOU) FINDREP: We share solutions for developer day to day problems and interview questions. I added DIGITS(6) in step001 and modified below OUTFIL FNAMES=SETRC,NULLOFL=RC4,INCLUDE=(23,6,CH,GT,C'090.00'). REFORMAT FIELDS=? OUTREC FIELDS= (1,20,CTOTAL,5Z,21,10), ----+----1----+----2----+----3
Did any DOS compatibility layers exist for any UNIX-like systems before DOS started to become outmoded? JOHN 08000
BUILD gives you complete control over the items you want in your reformatted OUTREC records and the order in which they appear. PMP, PMBOK, PMI-ACP and PMI are registered trademarks of the Project Management Institute, Inc. Professional Scrum Master, PSM, Professional Scrum Product Owner, PSPO etc. Note, the physical order in which these are specified in the JCL does not affect the order they are processed in. BUILD parameter is an alias of the FIELDS parameter. //SYSOUT DD SYSOUT=*
Do new devs get fired if they can't solve a certain bug? You can mix p,m fields (fixed fields) and %nn fields (parsed fields) in BUILD and OVERLAY. 15: is "column 15" (position 15) on the record. If your logic is wrong, that'd be the problem. OUTREC FIELDS=(1,80,SQZ=(..,PREBLANK=C'(),..)) Blanks out the (). How to get the unload result in Packed decimal format if the table column is in INTEGER formmat in the DB2 table? REMOVECC removes the ANSI carriage control characters and ensures that the RECFM is FB rather than FBA. OUTREC FIELDS=(1,54,..)copies first 54 bytes of input file data to output as it is. You can assign up to 1000 parsed fields (%0-%999) to the variable fields you want to extract. IFTHEN clauses let you use sophisticated conditional logic to choose how different record types are reformatted. JIRA Workflow for Optimal Project Tracking, Automatically Assign Issues JIRA Automation, JIRADashboard Popular Gadgets for Agile Teams, Vertical Slice vs Horizontal Slice User Story.
James Henry Funeral Notices Ballymena,
Products Similar To Mary Kay Timewise,
Ano Ang Kahalagahan Ng Paggamit Ng Kasangkapang Metal,
Fatal Shooting In Fayetteville, Nc,
Articles O