Is COBOL Holding You Hostage with Math? | by Marianne Bellotti | Medium

Total Page:16

File Type:pdf, Size:1020Kb

Is COBOL Holding You Hostage with Math? | by Marianne Bellotti | Medium 7/31/2020 Is COBOL holding you hostage with Math? | by Marianne Bellotti | Medium This is your last free story this month. Sign up and get an extra one for free. Is COBOL holding you hostage with Math? Marianne Bellotti Follow Jul 28, 2018 · 12 min read Face it: nobody likes fractions, not even computers. When we talk about COBOL the first question on everyone’s mind is always Why are we still using it in so many critical places? Banks are still running COBOL, close to 7% of the GDP is dependent on COBOL in the form of payments from the Centers for Medicare & Medicaid Services, The IRS famously still uses COBOL, airlines still use COBOL (Adam Fletcher dropped my favorite fun fact on this topic in his Systems We Love talk: the reservation number on your ticket used to be just a pointer), lots of critical infrastructure both in the private and public sector still runs on COBOL. Why? The traditional answer is deeply cynical. Organizations are lazy, incompetent, stupid. They are cheap: unwilling to invest the money needed upfront to rewrite the whole system in something modern. Overall we assume that the reason so much of civil society runs on COBOL is a combination of inertia and shortsightedness. And certainly there is a little truth there. Rewriting a mass of spaghetti code is no small task. It is expensive. It is difficult. And if the existing software seems to be working fine there might be little incentive to invest in the project. But back when I was working with the IRS the old COBOL developers used to tell me: “We tried to rewrite the code in Java and Java couldn’t do the calculations right.” This was a very strange concept to me. So much so that a panicked thought popped immediately into my head: “my God the IRS has been rounding up everyone’s tax bill for https://medium.com/@bellmar/is-cobol-holding-you-hostage-with-math-5498c0eb428b 1/12 7/31/2020 Is COBOL holding you hostage with Math? | by Marianne Bellotti | Medium 50 years!!!” I simply could not believe that COBOL could beat Java at the type of math the IRS needed. After all, they weren’t launching men into space over at New Carrollton. One of the fun side effects of my summer learning COBOL is that I’m beginning to understand that it’s not that Java can’t do math correctly, it’s how Java does math correctly. And when you understand how Java does math and how COBOL does the same math, you begin to understand why it’s so difficult for many industries to move away from their legacy. Where’s Your Point? I took a little break from writing about COBOL to write about the ways computers stored information before binary became the de facto standard (and also a primer on how to use the z/OS interface but that’s neither here nor there). Turns out that was a useful digression when considering this problem. In that post I talked about various ways one might use on/off states to store base 2 numbers, base 3 numbers, base 10 numbers, negative numbers and so on. The one thing I left out was … How do we store decimals? If you were designing your own binary computer you might start off by just sticking with a base 2 representation. Bits left of the point represent 1,2,4,8… and bits right of the point represent 1/2, 1/4, 1/8… 2.75 in binary The problem is figuring out how to store the decimal point — or actually I should say the binary point because this is base two after all. This topic is not obscure, so you might realize that I’m referring to floating point -vs- fixed point. In floating point the binary point can be placed anywhere (it can float) with its exact location stored as an exponent. Floating the point gives you a wider range of numbers you can store. You can move the decimal point all the way to the back of the number and devote all the bits to integer values representing very large numbers, or you could move it all the way to the front and represent very small numbers. But you sacrifice precision in exchange. Take another https://medium.com/@bellmar/is-cobol-holding-you-hostage-with-math-5498c0eb428b 2/12 7/31/2020 Is COBOL holding you hostage with Math? | by Marianne Bellotti | Medium look at the binary representation of 2.75 above. Going from four to eight is a much longer jump than going from one-fourth to one-eight. It might be easier to visualize if we wrote it out like this: Don’t measure the gaps, I just eyeballed this to demonstrate the concept. It’s easy to calculate the difference yourself: the distance between 1/16 and 1/32 is 0.03125 but the distance between 1/2 and 1/4 is .25. Why does this matter? With integers it really doesn’t, some combination of bits can fill in the gaps, but with fractions things can and do fall through the gaps making it impossible for the exact number to be represented in binary. The classic example of this is .1 (one-tenth). How do we represent this in binary? 2-¹ is 1/2 or .5 which is too large. 1/16 is .0625 which is too small. 1/16 + 1/32 gets us closer (0.09375) but 1/16+1/32+1/64 knocks us over with 0.109375. If you’re thinking to yourself this could go on forever: yes, that’s exactly what it does. Okay, you say to yourself, why don’t we just store it the same way we store the number 1? We can store the number 1 without problems, let’s just take out the decimal point and store everything as an integer. Which is a great solution to this problem except that it requires you to fix the decimal/binary point at a specific place. Otherwise 10.00001 and 100000.1 become the same number. But with the places right of the point fixed at two we’d round off 10.00001 to 10.00 and 100000.1 would become 100000.10 Voilà! And that’s fixed point. Another thing you can do more easily with fixed point? Bring back our good friend Binary Coded Decimal. FYI this is how the majority of scientific and graphing calculators work, things that you really want to be able to get math right. https://medium.com/@bellmar/is-cobol-holding-you-hostage-with-math-5498c0eb428b 3/12 7/31/2020 Is COBOL holding you hostage with Math? | by Marianne Bellotti | Medium Remember me? BCD baby~ Muller’s Recurrence Fixed point is thought to be more precise because the gaps between are consistent and rounding only occurs when you’ve exhausted the available places, whereas with floating points we can represent larger and smaller numbers with the same amount of memory but we cannot represent all numbers within that range accurately and must round to fill in the gaps. COBOL was designed for fixed point by default, but does that mean COBOL is better at math than more modern languages? If we stuck to problems like .1 + .2 the answer might seem like a yes, but that’s boring. Let’s push this even further. We’re going to experiment with COBOL using something called Muller’s Recurrence. Jean-Michel Muller is a French computer scientist with perhaps the best computer science job in the world. He finds ways to break computers using math. I’m sure he would say he studies reliability and accuracy problems, but no no no: He designs math problems that break computers. One such problem is his recurrence formula. Which looks something like this: https://medium.com/@bellmar/is-cobol-holding-you-hostage-with-math-5498c0eb428b 4/12 7/31/2020 Is COBOL holding you hostage with Math? | by Marianne Bellotti | Medium From Muller’s Recurrence — roundo gone wrong That doesn’t look so scary does it? The recurrence problem is useful for our purposes because: It is straight forward math, no complicated formulas or concepts We start off with two decimal places, so it’s easy to imagine this happening with a currency calculation. The error produced is not a slight rounding error but orders of magnitude off. And here’s a quick python script that produces floating point and fixed point versions of Muller’s Recurrence side by side: from decimal import Decimal def rec(y, z): return 108 - ((815-1500/z)/y) def floatpt(N): x = [4, 4.25] for i in range(2, N+1): x.append(rec(x[i-1], x[i-2])) return x def fixedpt(N): x = [Decimal(4), Decimal(17)/Decimal(4)] for i in range(2, N+1): x.append(rec(x[i-1], x[i-2])) return x N = 20 flt = floatpt(N) fxd = fixedpt(N) https://medium.com/@bellmar/is-cobol-holding-you-hostage-with-math-5498c0eb428b 5/12 7/31/2020 Is COBOL holding you hostage with Math? | by Marianne Bellotti | Medium for i in range(N): print str(i) + ' | '+str(flt[i])+' | '+str(fxd[i]) Which gives us the following output: i | floating pt | fixed pt -- | -------------- | --------------------------- 0 | 4 | 4 1 | 4.25 | 4.25 2 | 4.47058823529 | 4.4705882352941176470588235 3 | 4.64473684211 | 4.6447368421052631578947362 4 | 4.77053824363 | 4.7705382436260623229461618 5 | 4.85570071257 | 4.8557007125890736342039857 6 | 4.91084749866 | 4.9108474990827932004342938 7 | 4.94553739553 | 4.9455374041239167246519529 8 | 4.96696240804 | 4.9669625817627005962571288 9 | 4.98004220429 | 4.9800457013556311118526582 10 | 4.9879092328 | 4.9879794484783912679439415 11 | 4.99136264131 | 4.9927702880620482067468253 12 | 4.96745509555 | 4.9956558915062356478184985 13 | 4.42969049831 | 4.9973912683733697540253088 14 | -7.81723657846 | 4.9984339437852482376781601 15 | 168.939167671 | 4.9990600687785413938424188 16 | 102.039963152 | 4.9994358732880376990501184 17 | 100.099947516 | 4.9996602467866575821700634 18 | 100.004992041 | 4.9997713526716167817979714 19 | 100.000249579 | 4.9993671517118171375788238 Up until about the 12th iteration the rounding error seems more or less negligible but things quickly go off the rails.
Recommended publications
  • SAP Backup Using Tivoli Storage Manager
    Front cover SAP Backup using Tivoli Storage Manager Covers and compares data management techniques for SAP Presents a sample implementation of DB2 and Oracle databases Explains LAN-free and FlashCopy techniques Budi Darmawan Miroslav Dvorak Dhruv Harnal Gerson Makino Markus Molnar Rennad Murugan Marcos Silva ibm.com/redbooks International Technical Support Organization SAP Backup using Tivoli Storage Manager June 2009 SG24-7686-00 Note: Before using this information and the product it supports, read the information in “Notices” on page xi. First Edition (June 2009) This edition applies to Version 5, Release 5, Modification 0 of Tivoli Storage Manager and its related components: Tivoli Storage Manager Server, 5608-ISM Tivoli Storage Manager for Enterprise Resource Planning, 5608-APR Tivoli Storage Manager for Databases, 5608-APD Tivoli Stroage Manager for Advanced Copy Services, 5608-ACS Tivoli Storage Manager for SAN, 5608-SAN © Copyright International Business Machines Corporation 2009. All rights reserved. Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. Contents Notices . xi Trademarks . xii Preface . xv The team that wrote this book . xv Become a published author . xvii Comments welcome. xviii Part 1. Concepts . 1 Chapter 1. SAP data management. 3 1.1 SAP . 4 1.2 Data management. 4 1.3 Book structure . 5 Chapter 2. SAP overview . 7 2.1 SAP product history. 8 2.2 SAP solutions and products . 11 2.2.1 Enterprise solutions. 11 2.2.2 Business solutions . 13 2.2.3 SAP solutions for small businesses and mid-size companies . 13 2.3 SAP NetWeaver overview .
    [Show full text]
  • IBM Db2 for Linux, UNIX, and Windows Database: IBM Db2 for Linux, UNIX, and Windows
    Installation Guide | PUBLIC Software Provisioning Manager 1.0 SP 32 Document Version: 3.5 – 2021-06-21 Installation of SAP Systems Based on the Application Server ABAP of SAP NetWeaver 7.0 to 7.03 on UNIX: IBM Db2 for Linux, UNIX, and Windows Database: IBM Db2 for Linux, UNIX, and Windows company. All rights reserved. All rights company. Operating System: UNIX and Linux affiliate THE BEST RUN 2021 SAP SE or an SAP SE or an SAP SAP 2021 © Content 1 About this Document........................................................12 1.1 SAP Products Based on SAP NetWeaver 7.0 to 7.0 EHP3 Supported for Installation Using Software Provisioning Manager 1.0 .......................................................13 1.2 Naming Conventions..........................................................14 1.3 New Features...............................................................15 1.4 Constraints................................................................20 1.5 Before You Start.............................................................20 1.6 SAP Notes for the Installation....................................................21 2 Installation Options Covered by this Guide........................................23 2.1 Central System..............................................................23 2.2 Distributed System...........................................................24 2.3 High-Availability System.......................................................25 2.4 ASCS Instance with Integrated SAP Web Dispatcher ...................................26
    [Show full text]
  • SAP Overview
    SAP Overview What is SAP? SAP (Systems, Applications, Products in Data Processing), is headquartered in Walldorf, Germany. They provide business software designed to help companies execute and optimize business and IT strategies. SAP defines business software as comprising enterprise resource planning (ERP) and related applications such as supply chain management (SCM), customer relationship management (CRM), product life‐cycle management, and supplier relationship management (SRM).1 SAP currently has: • More than 51,000 employees in over 50 countries developing, marketing, and selling applications and services • 82,000 customers of all sizes across 25 industries and in over 120 countries • Listings on the Frankfurt and New York stock exchanges SAP operates in three geographic regions: EMEA (representing Europe, Middle East, and Africa), Americas, and Asia Pacific Japan (APJ, representing Japan, Australia, and parts of Asia). 2 History of SAP In 1972, SAP was founded by 5 former IBM employees in Mannheim, Germany with the vision to “to develop standard application software for real‐time business processing.” After the first year, they created the first financial accounting software application, which came to be known as the "R/1 system." "R" stands for real‐time data processing. By the end of the 1970s, R/1 evolved into SAP R/2. The programming language ABAP (Advanced Business Application Programming) was also a derivative of R/2, originally serving as the report language for the system.3 In the 1980s, SAP R/2 was updated to handle different languages and currencies‐‐subsequently, this lead to SAP’s international expansion into Austria, Denmark, Sweden, Italy, and the United States.
    [Show full text]
  • Best Practices for SAP BI Using DB2 9 for Z/OS
    Front cover Best Practices for SAP BI using DB2 9 for z/OS Benefits of SAP Business Information Warehouse on z/OS Best practices and troubleshooting Scalability of the BI Accelerator Lydia Parziale Wilfried Alle Martin Cardoso Lindy Crawford Giovanni Grita Theodor Kuebler Georg Mayer ibm.com/redbooks International Technical Support Organization Best Practices for SAP BI using DB2 9 for z/OS March 2008 SG24-6489-02 Note: Before using this information and the product it supports, read the information in “Notices” on page ix. Third Edition (March 2008) This edition applies to DB2 Version 9 for z/OS, Release 1, and SAP BI Version 7.0 . © Copyright International Business Machines Corporation 2005, 2007, 2008. All rights reserved. Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. Contents Notices . ix Trademarks . x Preface . xi The team that wrote this IBM Redbook . xii Become a published author . xv Comments welcome. xv Chapter 1. Introduction. 1 1.1 Product overview. 2 1.2 The audience for this IBM Redbooks publication . 3 1.3 Why run SAP BI on IBM System z . 4 1.3.1 Value provided by System z, z/OS, and DB2 . 4 Chapter 2. Overview of SAP BI and related data . 9 2.1 BI architecture . 10 2.2 Which cubes, DSO, and PSA objects are in your BI system. 12 2.2.1 Report SAP_BWTOOLPGM_DB2 . 13 2.3 BI data and DB2 partitioning . 14 2.3.1 Why partitioning . 15 2.3.2 Range partitioning of F- fact tables .
    [Show full text]
  • Micro Focus Fortify Static Code Analyzer User Guide, Which Are No Longer Published As of This Release
    Micro Focus Fortify Static Code Analyzer Software Version: 20.1.2 User Guide Document Release Date: July 2020 Software Release Date: July 2020 User Guide Legal Notices Micro Focus The Lawn 22-30 Old Bath Road Newbury, Berkshire RG14 1QN UK https://www.microfocus.com Warranty The only warranties for products and services of Micro Focus and its affiliates and licensors (“Micro Focus”) are set forth in the express warranty statements accompanying such products and services. Nothing herein should be construed as constituting an additional warranty. Micro Focus shall not be liable for technical or editorial errors or omissions contained herein. The information contained herein is subject to change without notice. Restricted Rights Legend Confidential computer software. Except as specifically indicated otherwise, a valid license from Micro Focus is required for possession, use or copying. Consistent with FAR 12.211 and 12.212, Commercial Computer Software, Computer Software Documentation, and Technical Data for Commercial Items are licensed to the U.S. Government under vendor's standard commercial license. Copyright Notice © Copyright 2003 - 2020 Micro Focus or one of its affiliates Trademark Notices All trademarks, service marks, product names, and logos included in this document are the property of their respective owners. Documentation Updates The title page of this document contains the following identifying information: l Software Version number l Document Release Date, which changes each time the document is updated l Software Release
    [Show full text]
  • Single Sign on for SAP Netweaver Application Server (ABAP) On
    Single Sign On for SAP NetWeaver Application Server (ABAP) on Power Systems How to enable Single Sign On with Secure Network Communication using Kerberos on SAP Application Servers (ABAP) running on Power Linux or AIX with a central Active Directory serving as Kerberos server Cäcilie Hampel ODOE Technology & Solutions Development Oktober 2009 This document can be found on the web, www.ibm.com/support/techdocs © Copyright IBM Corporation, 2009. All Rights Reserved. All trademarks or registered trademarks mentioned herein are the property of their respective holders Table of contents Abstract ................................................... ................................................... ........................... 3 Preface ................................................... ................................................... ........................... 3 Kerberos Client Configuration ................................................... ......................................... 5 a.) Novell Linux Kerberos Client Configuration ................................................... ................................ 5 b.) Red Hat Linux Kerberos Client Configuration ................................................... ............................ 6 c.) AIX Kerberos Client Configuration ................................................... .............................................. 8 Add Linux/AIX Server as host to Active Directory and create keytab .............................. 9 a.) Initialize keytab on Linux host ..................................................
    [Show full text]
  • SAP Netweaver® Application Server ABAP/Java on Oracle Cloud Infrastructure
    SAP NetWeaver® Application Server ABAP/Java on Oracle Cloud Infrastructure August 2021, Version 2.1 Copyright © 2021, Oracle and/or its affiliates Public 1 SAP NetWeaver® Application Server ABAP/Java on Oracle Cloud Infrastructure / Version 2.1 Copyright © 2021, Oracle and/or its affiliates / Pub lic Disclaimer This document in any form, software or printed matter, contains proprietary information that is the exclusive property of Oracle. Your access to and use of this confidential material is subject to the terms and conditions of your Oracle software license and service agreement, which has been executed and with which you agree to comply. This document and information contained herein may not be disclosed, copied, reproduced or distributed to anyone outside Oracle without prior written consent of Oracle. This document is not part of your license agreement nor can it be incorporated into any contractual agreement with Oracle or its subsidiaries or affiliates. This document is for informational purposes only and is intended solely to assist you in planning for the implementation and upgrade of the product features described. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described in this document remains at the sole discretion of Oracle. Due to the nature of the product architecture, it may not be possible to safely include all features described in this document without risking significant destabilization of the code. Revision History The following revisions have been made to this technical brief since its initial publication: DATE REVISION August 2021 Version 2.1 of this document covers the VM.Standard.E4.Flex shape.
    [Show full text]
  • ABAP Development for SAP HANA? Your Comments and 1.2 Basic Principles of In-Memory Technology
    First-hand knowledge. Reading Sample As an ABAP developer you will want to use views and database procedures you created in SAP HANA Studio in ABAP. In this samp- le chapter, you will learn how to consistently transport native SAP HANA development objects, via the Change and Transport System “Integrating Native SAP HANA Development Objects with ABAP” Contents Index The Authors Hermann Gahm, Thorsten Schneider, Christiaan Swanepoel, Eric Wes- tenberger ABAB Development for SAP HANA 625 Pages, 2016, $79.95 ISBN 978-1-4932-1304-7 www.sap-press.com/3973 Chapter 5 ABAP developers want to use views and database procedures that they’ve created in SAP HANA Studio in ABAP. Developers are also used to a high-performance transport system and expect consistent transport of native SAP HANA development objects via the Change and Transport System. 5 Integrating Native SAP HANA Development Objects with ABAP Chapter 4 illustrated how you can create analytical models (views) and database procedures using SAP HANA Studio. Now we’ll explain how you can call these native SAP HANA objects from ABAP. We’ll also discuss how you can transport ABAP programs that use native SAP HANA objects consistently in your system landscape. 5.1 Integrating Analytic Views In the previous chapter, you learned how to model the different view types in SAP HANA Studio and how to access the results of a view using the Data Preview or Microsoft Excel. In Chapter 4, Section 4.4.4, we also explained how to address the generated column views via SQL. This section describes how to access the views from ABAP.
    [Show full text]
  • How to Develop in Abap
    HOW TO DEVELOP IN ABAP How to Develop in ABAP Applies to: SAP NetWeaver 7.0. For more information, visit the ABAP homepage. Summary This is the PDF version of the development blog series on SDN published in 2007 that gave an introduction to ABAP newbies who want to learn how to develop simple programs in ABAP. This PDF file does not contain the few blogs of the original series that explained how to install and administrate the ABAP demo version and how to import and export programs. This PDF document solely focuses on the many blogs that focused on development in ABAP. This is why the PDF file starts with blog 3 and has some gaps in the numbering. The main author of this blogs is Thomas Weiss but some blogs were written by other authors (Manfred Lutz, Hans Tillinger, Dirk Feeken). For more information read the original blogs. If you are interested in the comments and answers to the comments on the blogs you should read the original blogs on SDN. Otherwise this PDF file gives you an easy opportunity to work your way through the whole series. Author Bio Thomas Weiss has a Ph.D. in analytic philosophy. He worked as a professional writer before joining, in 2001, the SAP NetWeaver product management training team where his responsibilities included the e-Learning strategy for ABAP. After becoming more involved in writing ABAP material himself, he is now a member of the SAP NetWeaver Application Server Solution Management. One of his main interests lies in rolling out ABAP topics both for experts and for beginners by writing blogs in SDN.
    [Show full text]
  • Comparative Programming Languages CM20253
    We have briefly covered many aspects of language design And there are many more factors we could talk about in making choices of language The End There are many languages out there, both general purpose and specialist And there are many more factors we could talk about in making choices of language The End There are many languages out there, both general purpose and specialist We have briefly covered many aspects of language design The End There are many languages out there, both general purpose and specialist We have briefly covered many aspects of language design And there are many more factors we could talk about in making choices of language Often a single project can use several languages, each suited to its part of the project And then the interopability of languages becomes important For example, can you easily join together code written in Java and C? The End Or languages And then the interopability of languages becomes important For example, can you easily join together code written in Java and C? The End Or languages Often a single project can use several languages, each suited to its part of the project For example, can you easily join together code written in Java and C? The End Or languages Often a single project can use several languages, each suited to its part of the project And then the interopability of languages becomes important The End Or languages Often a single project can use several languages, each suited to its part of the project And then the interopability of languages becomes important For example, can you easily
    [Show full text]
  • Database Administration Guide for SAP on IBM Db2 for Linux, UNIX, and Windows Company
    Administration Guide | PUBLIC Document Version: 2.5 – 2021-09-23 Database Administration Guide for SAP on IBM Db2 for Linux, UNIX, and Windows company. All rights reserved. All rights company. affiliate THE BEST RUN 2021 SAP SE or an SAP SE or an SAP SAP 2021 © Content 1 Introduction................................................................7 1.1 Document History............................................................ 8 1.2 Naming Conventions..........................................................10 2 Administration Tools and Tasks.................................................12 2.1 Administration Tools..........................................................12 2.2 Administration Tasks..........................................................13 3 Architectural Overview.......................................................16 3.1 SAP Application Server for ABAP.................................................16 3.2 SAP Application Server for Java..................................................17 3.3 Db2 Components............................................................18 3.4 Db2 Client Connectivity........................................................19 4 User Management and Security................................................ 21 4.1 SAP System Users and Groups...................................................21 Access Authorizations for Db2 Directories and Database-Related Files....................25 4.2 Role-Based Security Concept for Database Users..................................... 27 Database Roles for
    [Show full text]
  • Getting Started with SAP ABAP ERP Adapter for Oracle Data Integrator
    Oracle® Fusion Middleware Getting Started with SAP ABAP ERP Adapter for Oracle Data Integrator 12c (12.2.1.3.0) E96501-04 March 2019 Oracle Fusion Middleware Getting Started with SAP ABAP ERP Adapter for Oracle Data Integrator, 12c (12.2.1.3.0) E96501-04 Copyright © 2010, 2019, Oracle and/or its affiliates. All rights reserved. Primary Author: Oracle Corporation This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited. The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing. If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, then the following notice is applicable: U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency- specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.
    [Show full text]