Z/OS Version 2 Release 3

Total Page:16

File Type:pdf, Size:1020Kb

Z/OS Version 2 Release 3 z/OS Version 2 Release 3 XL C/C++ Language Reference IBM SC14-7308-30 Note Before using this information and the product it supports, read the information in “Notices” on page 553. This edition applies to Version 2 Release 3 of z/OS (5650-ZOS) and to all subsequent releases and modifications until otherwise indicated in new editions. Last updated: 2019-02-15 © Copyright International Business Machines Corporation 1998, 2017. US Government Users Restricted Rights – Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. Contents About this document...........................................................................................xiii Who should read this document............................................................................................................... xiii How to use this document.........................................................................................................................xiii How this document is organized............................................................................................................... xiii Conventions............................................................................................................................................... xiv z/OS XL C/C++ and related documents................................................................ xix Summary of changes for z/OS Version 2 Release 3............................................... xxi Chapter 1. Scope and linkage.................................................................................1 Scope............................................................................................................................................................1 Block/local scope................................................................................................................................... 2 Function scope....................................................................................................................................... 2 Function prototype scope...................................................................................................................... 3 File/global scope.................................................................................................................................... 3 Examples of scope in C...........................................................................................................................3 Class scope (C++ only)........................................................................................................................... 4 Namespaces of identifiers......................................................................................................................4 Name hiding (C++ only)..........................................................................................................................5 Lifetime of C++ temporaries (C++ only).................................................................................................6 Program linkage........................................................................................................................................... 9 Internal linkage.................................................................................................................................... 10 External linkage....................................................................................................................................10 No linkage.............................................................................................................................................11 Language linkage (C++ only)................................................................................................................ 11 Chapter 2. Lexical elements................................................................................. 15 Tokens........................................................................................................................................................ 15 Keywords.............................................................................................................................................. 15 Identifiers............................................................................................................................................. 18 Literals.................................................................................................................................................. 20 Punctuators and operators.................................................................................................................. 31 Source program character set................................................................................................................... 33 Multibyte characters............................................................................................................................ 34 Escape sequences................................................................................................................................35 The Unicode standard.......................................................................................................................... 36 Digraph characters............................................................................................................................... 37 Trigraph sequences.............................................................................................................................. 38 Comments..................................................................................................................................................39 Chapter 3. Data objects and declarations............................................................. 41 Overview of data objects and declarations...............................................................................................41 Overview of data objects......................................................................................................................41 Overview of data declarations and definitions.................................................................................... 43 _Static_assert declaration (C11)...............................................................................................................44 static_assert declaration (C++11).............................................................................................................45 Storage class specifiers............................................................................................................................. 47 The auto storage class specifier.......................................................................................................... 47 The static storage class specifier.........................................................................................................48 The extern storage class specifier....................................................................................................... 49 iii The mutable storage class specifier (C++ only).................................................................................. 50 The register storage class specifier..................................................................................................... 50 Type specifiers........................................................................................................................................... 52 Integral types....................................................................................................................................... 53 Boolean types.......................................................................................................................................53 Floating-point types............................................................................................................................. 54 Fixed point decimal types (C only).......................................................................................................56 Character types ................................................................................................................................... 56 The void type........................................................................................................................................ 57 User-defined types...............................................................................................................................57 The auto type specifier (C++11).......................................................................................................... 71 The decltype(expression) type specifier (C++11)............................................................................... 73 The constexpr specifier (C++11)...............................................................................................................77 Compatibility of arithmetic types (C only).................................................................................................79 Type qualifiers............................................................................................................................................79 The __callback type qualifier............................................................................................................... 81 The const type qualifier........................................................................................................................81
Recommended publications
  • Preview Objective-C Tutorial (PDF Version)
    Objective-C Objective-C About the Tutorial Objective-C is a general-purpose, object-oriented programming language that adds Smalltalk-style messaging to the C programming language. This is the main programming language used by Apple for the OS X and iOS operating systems and their respective APIs, Cocoa and Cocoa Touch. This reference will take you through simple and practical approach while learning Objective-C Programming language. Audience This reference has been prepared for the beginners to help them understand basic to advanced concepts related to Objective-C Programming languages. Prerequisites Before you start doing practice with various types of examples given in this reference, I'm making an assumption that you are already aware about what is a computer program, and what is a computer programming language? Copyright & Disclaimer © Copyright 2015 by Tutorials Point (I) Pvt. Ltd. All the content and graphics published in this e-book are the property of Tutorials Point (I) Pvt. Ltd. The user of this e-book can retain a copy for future reference but commercial use of this data is not allowed. Distribution or republishing any content or a part of the content of this e-book in any manner is also not allowed without written consent of the publisher. We strive to update the contents of our website and tutorials as timely and as precisely as possible, however, the contents may contain inaccuracies or errors. Tutorials Point (I) Pvt. Ltd. provides no guarantee regarding the accuracy, timeliness or completeness of our website or its contents including this tutorial. If you discover any errors on our website or in this tutorial, please notify us at [email protected] ii Objective-C Table of Contents About the Tutorial ..................................................................................................................................
    [Show full text]
  • CWM) Specification
    Common Warehouse Metamodel (CWM) Specification Volume 1 Version 1.0 October 2001 Copyright © 1999, Dimension EDI Copyright © 1999, Genesis Development Corporation Copyright © 1999, Hyperion Solutions Corporation Copyright © 1999, International Business Machines Corporation Copyright © 1999, NCR Corporation Copyright © 2000, Object Management Group Copyright © 1999, Oracle Corporation Copyright © 1999, UBS AG Copyright © 1999, Unisys Corporation The companies listed above have granted to the Object Management Group, Inc. (OMG) a nonexclusive, royalty-free, paid up, worldwide license to copy and distribute this document and to modify this document and distribute copies of the mod- ified version. Each of the copyright holders listed above has agreed that no person shall be deemed to have infringed the copyright in the included material of any such copyright holder by reason of having used the specification set forth herein or having conformed any computer software to the specification. PATENT The attention of adopters is directed to the possibility that compliance with or adoption of OMG specifications may require use of an invention covered by patent rights. OMG shall not be responsible for identifying patents for which a license may be required by any OMG specification, or for conducting legal inquiries into the legal validity or scope of those patents that are brought to its attention. OMG specifications are prospective and advisory only. Prospective users are responsible for protecting themselves against liability for infringement of patents. NOTICE The information contained in this document is subject to change without notice. The material in this document details an Object Management Group specification in accordance with the license and notices set forth on this page.
    [Show full text]
  • By Kumari Priyadarshani 22-04-2020 BBM 3Rd Year Variables in C a Variable Is a Name of the Memory Location. It Is Used to Store Data
    By Kumari priyadarshani 22-04-2020 BBM 3rd year Variables in C A variable is a name of the memory location. It is used to store data. Its value can be changed, and it can be reused many times. It is a way to represent memory location through symbol so that it can be easily identified. Let's see the syntax to declare a variable: type variable_list; The example of declaring the variable is given below: int a; float b; char c; Here, a, b, c are variables. The int, float, char are the data types. We can also provide values while declaring the variables as given below: int a=10,b=20;//declaring 2 variable of integer type float f=20.8; char c='A'; Rules for defining variables A variable can have alphabets, digits, and underscore. A variable name can start with the alphabet, and underscore only. It can't start with a digit. No whitespace is allowed within the variable name. A variable name must not be any reserved word or keyword, e.g. int, float, etc. Valid variable names: int a; int _ab; int a30; Invalid variable names: int 2; int a b; int long; Types of Variables in C There are many types of variables in c: local variable global variable static variable automatic variable external variable 1)Local Variable A variable that is declared inside the function or block is called a local variable. It must be declared at the start of the block. void function1(){ int x=10;//local variable } You must have to initialize the local variable before it is used.
    [Show full text]
  • Declaring Pointers in Functions C
    Declaring Pointers In Functions C isSchoolgirlish fenestrated Tye or overlain usually moltenly.menace some When babbling Raleigh orsubmersing preappoints his penetratingly. hums wing not Calvinism insidiously Benton enough, always is Normie outdance man? his rectorials if Rodge Please suggest some time binding in practice, i get very complicated you run this waste and functions in the function pointer arguments Also allocated on write in c pointers in declaring function? Been declared in function pointers cannot declare more. After taking these requirements you do some planning start coding. Leave it to the optimizer? Web site in. Functions Pointers in C Programming with Examples Guru99. Yes, here is a complete program written in C, things can get even more hairy. How helpful an action do still want? This title links to the home page. The array of function pointers offers the facility to access the function using the index of the array. If you want to avoid repeating the loop implementations and each branch of the decision has similar code, or distribute it is void, the appropriate function is called through a function pointer in the current state. Can declare functions in function declarations and how to be useful to respective function pointer to the basic concepts of characters used as always going to? It in functions to declare correct to the declaration of your site due to functions on the modified inside the above examples. In general, and you may publicly display copies. You know any type of a read the licenses of it is automatically, as small number types are functionally identical for any of accessing such as student structure? For this reason, every time you need a particular behavior such as drawing a line, but many practical C programs rely on overflow wrapping around.
    [Show full text]
  • What Are the Problems with Embedded Linux?
    What Are the Problems with Embedded Linux? Every Operating System Has Benefits and Drawbacks Linux is ubiquitous. It runs most internet servers, is inside Android* smartphones, and is used on millions of embedded systems that, in the past, ran Real-Time Operating Systems (RTOSes). Linux can (and should) be used were possible for embedded projects, but while it gives you extreme choice, it also presents the risk of extreme complexity. What, then, are the trade-offs between embedded Linux and an RTOS? In this article, we cover some key considerations when evaluating Linux for a new development: ■ Design your system architecture first ■ What is Linux? ■ Linux vs. RTOSes ■ Free software is about liberty—not price ■ How much does Embedded Linux cost? ■ Why pay for Embedded Linux? ■ Should you buy Embedded Linux or roll-your-own (RYO)? ■ To fork or not to fork? ■ Software patching ■ Open source licensing ■ Making an informed decision The important thing is not whether Linux or an RTOS is “the best,” but whether either operating system—or both together—makes the most technical and financial sense for your project. We hope this article helps you make an informed decision. Design Your System Architecture First It is important to design your system architecture first—before choosing either Linux or an RTOS—because both choices can limit architectural freedom. You may discover that aspects of your design require neither Linux nor an RTOS, making your design a strong candidate for a heterogeneous approach that includes one or more bare-metal environments (with possibly a Linux and/or RTOS environment as well).
    [Show full text]
  • An Empirical Study Into COBOL Type Inferencing*
    Science of Computer Programming ELSEVIERI Science of Computer Programming 40 (2001) 189-211 www.elsevier.nl/locate/scico An empirical study into COBOL type inferencing* Arie van Deursen 1, Leon Moonen 1 * CWL P. 0. Box 94079, 1090 GB Amsterdam, Netherlands Accepted 2 February 2001 Abstract In a typical COBOL program, the data division consists of 50% of the lines of code. Automatic type inference can help to understand the large collections of variable declarations contained therein, showing how variables are related based on their actual usage. The most problematic aspect of type inference is pollution, the phenomenon that types become too large, and contain variables that intuitively should not belong to the same type. The aim of the paper is to provide empirical evidence for the hypothesis that the use of subtyping is an effective way for dealing with pollution. The main results include a tool set to carry out type inference experiments, a suite of metrics characterizing type inference outcomes, and the experimental observation that only one instance of pollution occurs in the case study conducted. @ 2001 Elsevier Science B.V. All rights reserved. Keywords: Software maintenance; Static program analysis; Variable usage; Case study 1. Introduction In this paper, we will be concerned with the variables occurring in a COBOL pro­ gram. The two main parts of a COBOL program are the data division, containing declarations for all variables used, and the procedure division, which contains the state­ ments performing the program's functionality. Since it is in the procedure division that the actual computations are made, one would expect this division to be larger than the data division.
    [Show full text]
  • Strings in C++
    Programming Abstractions C S 1 0 6 X Cynthia Lee Today’s Topics Introducing C++ from the Java Programmer’s Perspective . Absolute value example, continued › C++ strings and streams ADTs: Abstract Data Types . Introduction: What are ADTs? . Queen safety example › Grid data structure › Passing objects by reference • const reference parameters › Loop over “neighbors” in a grid Strings in C++ STRING LITERAL VS STRING CLASS CONCATENATION STRING CLASS METHODS 4 Using cout and strings int main(){ int n = absoluteValue(-5); string s = "|-5|"; s += " = "; • This prints |-5| = 5 cout << s << n << endl; • The + operator return 0; concatenates strings, } and += works in the way int absoluteValue(int n) { you’d expect. if (n<0){ n = -n; } return n; } 5 Using cout and strings int main(){ int n = absoluteValue(-5); But SURPRISE!…this one string s = "|-5|" + " = "; doesn’t work. cout << s << n << endl; return 0; } int absoluteValue(int n) { if (n<0){ n = -n; } return n; } C++ string objects and string literals . In this class, we will interact with two types of strings: › String literals are just hard-coded string values: • "hello!" "1234" "#nailedit" • They have no methods that do things for us • Think of them like integer literals: you can’t do "4.add(5);" //no › String objects are objects with lots of helpful methods and operators: • string s; • string piece = s.substr(0,3); • s.append(t); //or, equivalently: s+= t; String object member functions (3.2) Member function name Description s.append(str) add text to the end of a string s.compare(str) return
    [Show full text]
  • Delimited Escape Sequences
    Delimited escape sequences Document #: D2290R2 Date: 2021-07-15 Programming Language C++ Audience: EWG, SG-22 Reply-to: Corentin Jabot <[email protected]> Abstract We propose an additional, clearly delimited syntax for octal, hexadecimal and universal character name escape sequences. Revisions R2 • Improve wording • Add a note about feature macros (we do not need one) • Mention that a paper will be submitted to the C committee R1 • Remove obsolete note about wording Motivation universal-character-name escape sequences As their name does not indicate, universal-character-name escape sequences represent Uni- code scalar values, using either 4, or 8 hexadecimal digits, which is either 16 or 32 bits. However, the Unicode codespace is limited to 0-0x10FFFF, and all currently assigned code- points can be written with 5 or less hexadecimal digits (Supplementary Private Use Area-B non-withstanding). As such, the ~50% of codepoints that needs 5 hexadecimal digits to be expressed are currently a bit awkward to write: \U0001F1F8. 1 Octal and hexadecimal escape sequences have variable length \1, \01, \001 are all valid escape sequences. \17 is equivalent to 0x0F while \18 is equivalent to "0x01" "8" While octal escape sequences accept 1 to 3 digits as arguments, hexadecimal sequences accept an arbitrary number of digits applying the maximal much principle. This is how the Microsoft documentation describes this problem: Unlike octal escape constants, the number of hexadecimal digits in an escape sequence is unlimited. A hexadecimal escape sequence terminates at the first character that is not a hexadecimal digit. Because hexadecimal digits include the letters a through f, care must be exercised to make sure the escape sequence terminates at the intended digit.
    [Show full text]
  • Truffle/C Interpreter
    JOHANNES KEPLER UNIVERSITAT¨ LINZ JKU Faculty of Engineering and Natural Sciences Truffle/C Interpreter Master’s Thesis submitted in partial fulfillment of the requirements for the academic degree Diplom-Ingenieur in the Master’s Program Computer Science Submitted by Manuel Rigger, BSc. At the Institut f¨urSystemsoftware Advisor o.Univ.-Prof. Dipl.-Ing. Dr.Dr.h.c. Hanspeter M¨ossenb¨ock Co-advisor Dipl.-Ing. Lukas Stadler Dipl.-Ing. Dr. Thomas W¨urthinger Xiamen, April 2014 Contents I Contents 1 Introduction 3 1.1 Motivation . .3 1.2 Goals and Scope . .4 1.3 From C to Java . .4 1.4 Structure of the Thesis . .6 2 State of the Art 9 2.1 Graal . .9 2.2 Truffle . 10 2.2.1 Rewriting and Specialization . 10 2.2.2 Truffle DSL . 11 2.2.3 Control Flow . 12 2.2.4 Profiling and Inlining . 12 2.2.5 Partial Evaluation and Compilation . 12 2.3 Clang . 13 3 Architecture 14 3.1 From Clang to Java . 15 3.2 Node Construction . 16 3.3 Runtime . 16 4 The Truffle/C File 17 4.1 Truffle/C File Format Goals . 17 4.2 Truffle/C File Format 1 . 19 4.2.1 Constant Pool . 19 4.2.2 Function Table . 20 4.2.3 Functions and Attributes . 20 4.3 Truffle/C File Considerations and Comparison . 21 4.3.1 Java Class File and Truffle/C File . 21 4.3.2 ELF and Truffle/C File . 22 4.4 Clang Modification Truffle/C File . 23 Contents II 5 Truffle/C Data Types 25 5.1 Data Type Hierarchy: Boxing, Upcasts and Downcasts .
    [Show full text]
  • Assignment 4 Computer Science 235 Due Start of Class, October 4, 2005
    Assignment 4 Computer Science 235 Due Start of Class, October 4, 2005 This assignment is intended as an introduction to OCAML programming. As always start early and stop by if you have any questions. Exercise 4.1. Twenty higher-order OCaml functions are listed below. For each function, write down the type that would be automatically reconstructed for it. For example, consider the following OCaml length function: let length xs = match xs with [] -> 0 | (_::xs') = 1 + (length xs') The type of this OCaml function is: 'a list -> int Note: You can check your answers by typing them into the OCaml interpreter. But please write down the answers first before you check them --- otherwise you will not learn anything! let id x = x let compose f g x = (f (g x)) let rec repeated n f = if (n = 0) then id else compose f (repeated (n - 1) f) let uncurry f (a,b) = (f a b) let curry f a b = f(a,b) let churchPair x y f = f x y let rec generate seed next isDone = if (isDone seed) then [] else seed :: (generate (next seed) next isDone) let rec map f xs = match xs with [] -> [] Assignment 4 Page 2 Computer Science 235 | (x::xs') -> (f x) :: (map f xs') let rec filter pred xs = match xs with [] -> [] | (x::xs') -> if (pred x) then x::(filter pred xs') else filter pred xs' let product fs xs = map (fun f -> map (fun x -> (f x)) xs) fs let rec zip pair = match pair with ([], _) -> [] | (_, []) -> [] | (x::xs', y::ys') -> (x,y)::(zip(xs',ys')) let rec unzip xys = match xys with [] -> ([], []) | ((x,y)::xys') -> let (xs,ys) = unzip xys' in (x::xs, y::ys) let rec
    [Show full text]
  • Refining Indirect-Call Targets with Multi-Layer Type Analysis
    Where Does It Go? Refining Indirect-Call Targets with Multi-Layer Type Analysis Kangjie Lu Hong Hu University of Minnesota, Twin Cities Georgia Institute of Technology Abstract ACM Reference Format: System software commonly uses indirect calls to realize dynamic Kangjie Lu and Hong Hu. 2019. Where Does It Go? Refining Indirect-Call Targets with Multi-Layer Type Analysis. In program behaviors. However, indirect-calls also bring challenges 2019 ACM SIGSAC Conference on Computer and Communications Security (CCS ’19), November 11–15, 2019, to constructing a precise control-flow graph that is a standard pre- London, United Kingdom. ACM, New York, NY, USA, 16 pages. https://doi. requisite for many static program-analysis and system-hardening org/10.1145/3319535.3354244 techniques. Unfortunately, identifying indirect-call targets is a hard problem. In particular, modern compilers do not recognize indirect- call targets by default. Existing approaches identify indirect-call 1 Introduction targets based on type analysis that matches the types of function Function pointers are commonly used in C/C++ programs to sup- pointers and the ones of address-taken functions. Such approaches, port dynamic program behaviors. For example, the Linux kernel however, suffer from a high false-positive rate as many irrelevant provides unified APIs for common file operations suchas open(). functions may share the same types. Internally, different file systems have their own implementations of In this paper, we propose a new approach, namely Multi-Layer these APIs, and the kernel uses function pointers to decide which Type Analysis (MLTA), to effectively refine indirect-call targets concrete implementation to invoke at runtime.
    [Show full text]
  • Contents of Lecture 4: Declarations
    Contents of Lecture 4: Declarations Implicint int Storage class specifiers Type specifiers Enumeration specifiers Type qualifiers Jonas Skeppstedt ([email protected]) Lecture 4 2014 1 / 39 Now obsolete: implicit int Sometimes you can see code such as: main() // invalid { } or even: #include <stdio.h> count; // invalid float x; In earlier versions of C one could skip the type, which then became int, and is called implicit int. Calling a function before its declaration also set its return type to int. It’s invalid C so don’t use it — but compilers often allow it... Jonas Skeppstedt ([email protected]) Lecture 4 2014 2 / 39 Storage class specifiers Last lecture we discussed the different kinds of storage durations. Now we will see how to specify some of them explicitly. Dynamic (important) and temporary (less important) storage duration are not specified by the programmer using any particular syntax but defined by the standard. The storage class specifiers are: typedef extern static _Thread_local auto register Of these typedef does not refer to any kind of storage duration — instead it introduces another name of a type and not a new type: typedef int num_t; int* p; num_t* q; p = q; // valid since p and q have the same type. Jonas Skeppstedt ([email protected]) Lecture 4 2014 3 / 39 Storage class specifiers: static at file scope static int count; /∗ initialized to zero. ∗/ static void init(void) { /∗ Do some initializations ... ∗/ } Used to make an identifier invisible outside the source file With static at file scope, there is no risk of name conflicts with other files.
    [Show full text]