CINXE.COM

IP Pascal - Wikipedia

<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>IP Pascal - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )enwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy", "wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"4621d6d6-68b8-42d7-a16f-4e8e823cc04e","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"IP_Pascal","wgTitle":"IP Pascal","wgCurRevisionId":1259369094,"wgRevisionId":1259369094,"wgArticleId":2096603,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Articles with short description","Short description matches Wikidata","Articles needing additional references from November 2016","All articles needing additional references","Wikipedia introduction cleanup from April 2018","All pages needing cleanup","Articles covered by WikiProject Wikify from April 2018","All articles covered by WikiProject Wikify","Articles with multiple maintenance issues","Use mdy dates from May 2018","Articles that may contain original research from February 2017", "All articles that may contain original research","Pascal programming language family","Pascal (programming language) compilers"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"IP_Pascal","wgRelevantArticleId":2096603,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":false,"wgFlaggedRevsParams":{"tags":{"status":{"levels":1}}},"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":40000,"wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage", "wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q5973171","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.pygments":"ready","ext.cite.styles":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","jquery.makeCollapsible.styles":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"}; RLPAGEMODULES=["ext.pygments.view","ext.cite.ux-enhancements","mediawiki.page.media","site","mediawiki.page.ready","jquery.makeCollapsible","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.ReferenceTooltips","ext.gadget.switcher","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.cx.uls.quick.actions","wikibase.client.vector-2022","ext.checkUser.clientHints","ext.quicksurveys.init","ext.growthExperiments.SuggestedEditSession","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&amp;modules=ext.cite.styles%7Cext.pygments%2CwikimediaBadges%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cjquery.makeCollapsible.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&amp;only=styles&amp;skin=vector-2022"> <script async="" src="/w/load.php?lang=en&amp;modules=startup&amp;only=scripts&amp;raw=1&amp;skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&amp;modules=site.styles&amp;only=styles&amp;skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="IP Pascal - Wikipedia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//en.m.wikipedia.org/wiki/IP_Pascal"> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=IP_Pascal&amp;action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (en)"> <link rel="EditURI" type="application/rsd+xml" href="//en.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://en.wikipedia.org/wiki/IP_Pascal"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en"> <link rel="alternate" type="application/atom+xml" title="Wikipedia Atom feed" href="/w/index.php?title=Special:RecentChanges&amp;feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-IP_Pascal rootpage-IP_Pascal skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-contents" class="mw-list-item"><a href="/wiki/Wikipedia:Contents" title="Guides to browsing Wikipedia"><span>Contents</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Portal:Current_events" title="Articles related to current events"><span>Current events</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Visit a randomly selected article [x]" accesskey="x"><span>Random article</span></a></li><li id="n-aboutsite" class="mw-list-item"><a href="/wiki/Wikipedia:About" title="Learn about Wikipedia and how it works"><span>About Wikipedia</span></a></li><li id="n-contactpage" class="mw-list-item"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us" title="How to contact Wikipedia"><span>Contact us</span></a></li> </ul> </div> </div> <div id="p-interaction" class="vector-menu mw-portlet mw-portlet-interaction" > <div class="vector-menu-heading"> Contribute </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Help:Contents" title="Guidance on how to use and edit Wikipedia"><span>Help</span></a></li><li id="n-introduction" class="mw-list-item"><a href="/wiki/Help:Introduction" title="Learn how to edit Wikipedia"><span>Learn to edit</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:Community_portal" title="The hub for editors"><span>Community portal</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes to Wikipedia [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_upload_wizard" title="Add images or other media for use on Wikipedia"><span>Upload file</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Main_Page" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-en.svg" style="width: 7.5em; height: 1.125em;"> <img class="mw-logo-tagline" alt="The Free Encyclopedia" src="/static/images/mobile/copyright/wikipedia-tagline-en.svg" width="117" height="13" style="width: 7.3125em; height: 0.8125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search Wikipedia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search Wikipedia" aria-label="Search Wikipedia" autocapitalize="sentences" title="Search Wikipedia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page&#039;s font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=C13_en.wikipedia.org&amp;uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&amp;returnto=IP+Pascal" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&amp;returnto=IP+Pascal" title="You&#039;re encouraged to log in; however, it&#039;s not mandatory. [o]" accesskey="o" class=""><span>Log in</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Log in and more options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=C13_en.wikipedia.org&amp;uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&amp;returnto=IP+Pascal" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&amp;returnto=IP+Pascal" title="You&#039;re encouraged to log in; however, it&#039;s not mandatory. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages for logged out editors <a href="/wiki/Help:Introduction" aria-label="Learn more about editing"><span>learn more</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">(Top)</div> </a> </li> <li id="toc-Overview" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Overview"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Overview</span> </div> </a> <ul id="toc-Overview-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Language" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Language"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Language</span> </div> </a> <button aria-controls="toc-Language-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Language subsection</span> </button> <ul id="toc-Language-sublist" class="vector-toc-list"> <li id="toc-Modules,_including_parallel_task_constructs_process,_monitor_and_share" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Modules,_including_parallel_task_constructs_process,_monitor_and_share"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1</span> <span>Modules, including parallel task constructs process, monitor and share</span> </div> </a> <ul id="toc-Modules,_including_parallel_task_constructs_process,_monitor_and_share-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Dynamic_arrays" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Dynamic_arrays"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.2</span> <span>Dynamic arrays</span> </div> </a> <ul id="toc-Dynamic_arrays-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Constant_expressions" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Constant_expressions"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.3</span> <span>Constant expressions</span> </div> </a> <ul id="toc-Constant_expressions-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Radix_for_numbers" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Radix_for_numbers"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.4</span> <span>Radix for numbers</span> </div> </a> <ul id="toc-Radix_for_numbers-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Alphanumeric_goto_labels" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Alphanumeric_goto_labels"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.5</span> <span>Alphanumeric goto labels</span> </div> </a> <ul id="toc-Alphanumeric_goto_labels-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-underscore_in_all_labels" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#underscore_in_all_labels"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.6</span> <span>underscore in all labels</span> </div> </a> <ul id="toc-underscore_in_all_labels-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-underscore_in_numbers" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#underscore_in_numbers"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.7</span> <span>underscore in numbers</span> </div> </a> <ul id="toc-underscore_in_numbers-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Special_character_sequences_that_can_be_embedded_in_constant_strings" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Special_character_sequences_that_can_be_embedded_in_constant_strings"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.8</span> <span>Special character sequences that can be embedded in constant strings</span> </div> </a> <ul id="toc-Special_character_sequences_that_can_be_embedded_in_constant_strings-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Duplication_of_forwarded_headers" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Duplication_of_forwarded_headers"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.9</span> <span>Duplication of forwarded headers</span> </div> </a> <ul id="toc-Duplication_of_forwarded_headers-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-halt_procedure" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#halt_procedure"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.10</span> <span>halt procedure</span> </div> </a> <ul id="toc-halt_procedure-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Special_predefined_header_files" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Special_predefined_header_files"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.11</span> <span>Special predefined header files</span> </div> </a> <ul id="toc-Special_predefined_header_files-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Automatic_connection_of_program_header_files_to_command_line_names" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Automatic_connection_of_program_header_files_to_command_line_names"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.12</span> <span>Automatic connection of program header files to command line names</span> </div> </a> <ul id="toc-Automatic_connection_of_program_header_files_to_command_line_names-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-File_naming_and_handling_operations" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#File_naming_and_handling_operations"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.13</span> <span>File naming and handling operations</span> </div> </a> <ul id="toc-File_naming_and_handling_operations-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-fixed_declarations_which_declare_structured_constant_types" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#fixed_declarations_which_declare_structured_constant_types"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.14</span> <span>fixed declarations which declare structured constant types</span> </div> </a> <ul id="toc-fixed_declarations_which_declare_structured_constant_types-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Boolean_bit_operators" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Boolean_bit_operators"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.15</span> <span>Boolean bit operators</span> </div> </a> <ul id="toc-Boolean_bit_operators-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Extended_range_variables" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Extended_range_variables"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.16</span> <span>Extended range variables</span> </div> </a> <ul id="toc-Extended_range_variables-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Semaphores" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Semaphores"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.17</span> <span>Semaphores</span> </div> </a> <ul id="toc-Semaphores-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Overrides" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Overrides"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.18</span> <span>Overrides</span> </div> </a> <ul id="toc-Overrides-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Overloads" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Overloads"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.19</span> <span>Overloads</span> </div> </a> <ul id="toc-Overloads-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Objects" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Objects"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.20</span> <span>Objects</span> </div> </a> <ul id="toc-Objects-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Structured_exception_handling" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Structured_exception_handling"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.21</span> <span>Structured exception handling</span> </div> </a> <ul id="toc-Structured_exception_handling-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Assertions" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Assertions"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.22</span> <span>Assertions</span> </div> </a> <ul id="toc-Assertions-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Unicode" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Unicode"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.23</span> <span>Unicode</span> </div> </a> <ul id="toc-Unicode-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Constant_for_character_high_limit" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Constant_for_character_high_limit"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.24</span> <span>Constant for character high limit</span> </div> </a> <ul id="toc-Constant_for_character_high_limit-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Modular_structure" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Modular_structure"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Modular structure</span> </div> </a> <ul id="toc-Modular_structure-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Porting_platform" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Porting_platform"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Porting platform</span> </div> </a> <ul id="toc-Porting_platform-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-History" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#History"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>History</span> </div> </a> <button aria-controls="toc-History-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle History subsection</span> </button> <ul id="toc-History-sublist" class="vector-toc-list"> <li id="toc-The_Z80_implementation" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#The_Z80_implementation"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.1</span> <span>The Z80 implementation</span> </div> </a> <ul id="toc-The_Z80_implementation-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-The_80386_implementation" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#The_80386_implementation"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.2</span> <span>The 80386 implementation</span> </div> </a> <ul id="toc-The_80386_implementation-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-The_Linux_implementation" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#The_Linux_implementation"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.3</span> <span>The Linux implementation</span> </div> </a> <ul id="toc-The_Linux_implementation-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Steps_to_&quot;write_once,_run_anywhere&quot;" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Steps_to_&quot;write_once,_run_anywhere&quot;"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.4</span> <span>Steps to "write once, run anywhere"</span> </div> </a> <ul id="toc-Steps_to_&quot;write_once,_run_anywhere&quot;-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Pascaline" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Pascaline"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.5</span> <span>Pascaline</span> </div> </a> <ul id="toc-Pascaline-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Petit-Ami" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Petit-Ami"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.6</span> <span>Petit-Ami</span> </div> </a> <ul id="toc-Petit-Ami-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Lessons" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Lessons"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.7</span> <span>Lessons</span> </div> </a> <ul id="toc-Lessons-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Further_reading" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Further_reading"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>Further reading</span> </div> </a> <ul id="toc-Further_reading-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-References" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#References"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>References</span> </div> </a> <ul id="toc-References-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-External_links" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#External_links"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>External links</span> </div> </a> <ul id="toc-External_links-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">IP Pascal</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="This article exist only in this language. Add the article for other languages" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-0" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">Add languages</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> <div class="after-portlet after-portlet-lang"><span class="uls-after-portlet-link"></span><span class="wb-langlinks-add wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q5973171#sitelinks-wikipedia" title="Add interlanguage links" class="wbc-editpage">Add links</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/IP_Pascal" title="View the content page [c]" accesskey="c"><span>Article</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Talk:IP_Pascal" rel="discussion" title="Discuss improvements to the content page [t]" accesskey="t"><span>Talk</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/IP_Pascal"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=IP_Pascal&amp;action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=IP_Pascal&amp;action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/IP_Pascal"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=IP_Pascal&amp;action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=IP_Pascal&amp;action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/IP_Pascal" title="List of all English Wikipedia pages containing links to this page [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/IP_Pascal" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_Upload_Wizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=IP_Pascal&amp;oldid=1259369094" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=IP_Pascal&amp;action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Special:CiteThisPage&amp;page=IP_Pascal&amp;id=1259369094&amp;wpFormIdentifier=titleform" title="Information on how to cite this page"><span>Cite this page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&amp;url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FIP_Pascal"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&amp;url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FIP_Pascal"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&amp;page=IP_Pascal&amp;action=show-download-screen" title="Download this page as a PDF file"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=IP_Pascal&amp;printable=yes" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q5973171" title="Structured data on this page hosted by Wikidata [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">From Wikipedia, the free encyclopedia</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><div class="shortdescription nomobile noexcerpt noprint searchaux" style="display:none">Implementation of Pascal programming language</div> <style data-mw-deduplicate="TemplateStyles:r1251242444">.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}</style><style data-mw-deduplicate="TemplateStyles:r1248332772">.mw-parser-output .multiple-issues-text{width:95%;margin:0.2em 0}.mw-parser-output .multiple-issues-text>.mw-collapsible-content{margin-top:0.3em}.mw-parser-output .compact-ambox .ambox{border:none;border-collapse:collapse;background-color:transparent;margin:0 0 0 1.6em!important;padding:0!important;width:auto;display:block}body.mediawiki .mw-parser-output .compact-ambox .ambox.mbox-small-left{font-size:100%;width:auto;margin:0}.mw-parser-output .compact-ambox .ambox .mbox-text{padding:0!important;margin:0!important}.mw-parser-output .compact-ambox .ambox .mbox-text-span{display:list-item;line-height:1.5em;list-style-type:disc}body.skin-minerva .mw-parser-output .multiple-issues-text>.mw-collapsible-toggle,.mw-parser-output .compact-ambox .ambox .mbox-image,.mw-parser-output .compact-ambox .ambox .mbox-imageright,.mw-parser-output .compact-ambox .ambox .mbox-empty-cell,.mw-parser-output .compact-ambox .hide-when-compact{display:none}</style><table class="box-Multiple_issues plainlinks metadata ambox ambox-content ambox-multiple_issues compact-ambox" role="presentation"><tbody><tr><td class="mbox-image"><div class="mbox-image-div"><span typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/b/b4/Ambox_important.svg/40px-Ambox_important.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/b/b4/Ambox_important.svg/60px-Ambox_important.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/b/b4/Ambox_important.svg/80px-Ambox_important.svg.png 2x" data-file-width="40" data-file-height="40" /></span></span></div></td><td class="mbox-text"><div class="mbox-text-span"><div class="multiple-issues-text mw-collapsible"><b>This article has multiple issues.</b> Please help <b><a href="/wiki/Special:EditPage/IP_Pascal" title="Special:EditPage/IP Pascal">improve it</a></b> or discuss these issues on the <b><a href="/wiki/Talk:IP_Pascal" title="Talk:IP Pascal">talk page</a></b>. <small><i>(<a href="/wiki/Help:Maintenance_template_removal" title="Help:Maintenance template removal">Learn how and when to remove these messages</a>)</i></small> <div class="mw-collapsible-content"> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1251242444"><table class="box-More_citations_needed plainlinks metadata ambox ambox-content ambox-Refimprove" role="presentation"><tbody><tr><td class="mbox-image"><div class="mbox-image-div"><span typeof="mw:File"><a href="/wiki/File:Question_book-new.svg" class="mw-file-description"><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/50px-Question_book-new.svg.png" decoding="async" width="50" height="39" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/75px-Question_book-new.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/100px-Question_book-new.svg.png 2x" data-file-width="512" data-file-height="399" /></a></span></div></td><td class="mbox-text"><div class="mbox-text-span">This article <b>needs additional citations for <a href="/wiki/Wikipedia:Verifiability" title="Wikipedia:Verifiability">verification</a></b>.<span class="hide-when-compact"> Please help <a href="/wiki/Special:EditPage/IP_Pascal" title="Special:EditPage/IP Pascal">improve this article</a> by <a href="/wiki/Help:Referencing_for_beginners" title="Help:Referencing for beginners">adding citations to reliable sources</a>. Unsourced material may be challenged and removed.<br /><small><span class="plainlinks"><i>Find sources:</i>&#160;<a rel="nofollow" class="external text" href="https://www.google.com/search?as_eq=wikipedia&amp;q=%22IP+Pascal%22">"IP Pascal"</a>&#160;–&#160;<a rel="nofollow" class="external text" href="https://www.google.com/search?tbm=nws&amp;q=%22IP+Pascal%22+-wikipedia&amp;tbs=ar:1">news</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="https://www.google.com/search?&amp;q=%22IP+Pascal%22&amp;tbs=bkt:s&amp;tbm=bks">newspapers</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="https://www.google.com/search?tbs=bks:1&amp;q=%22IP+Pascal%22+-wikipedia">books</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="https://scholar.google.com/scholar?q=%22IP+Pascal%22">scholar</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="https://www.jstor.org/action/doBasicSearch?Query=%22IP+Pascal%22&amp;acc=on&amp;wc=on">JSTOR</a></span></small></span> <span class="date-container"><i>(<span class="date">November 2016</span>)</i></span><span class="hide-when-compact"><i> (<small><a href="/wiki/Help:Maintenance_template_removal" title="Help:Maintenance template removal">Learn how and when to remove this message</a></small>)</i></span></div></td></tr></tbody></table> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1251242444"><table class="box-Lead_too_short plainlinks metadata ambox ambox-content ambox-lead_too_short" role="presentation"><tbody><tr><td class="mbox-image"><div class="mbox-image-div"><span typeof="mw:File"><a href="/wiki/File:Wiki_letter_w.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/en/thumb/6/6c/Wiki_letter_w.svg/40px-Wiki_letter_w.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/6/6c/Wiki_letter_w.svg/60px-Wiki_letter_w.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/6/6c/Wiki_letter_w.svg/80px-Wiki_letter_w.svg.png 2x" data-file-width="44" data-file-height="44" /></a></span></div></td><td class="mbox-text"><div class="mbox-text-span">This article's <a href="/wiki/Wikipedia:Manual_of_Style/Lead_section#Length" title="Wikipedia:Manual of Style/Lead section">lead section</a> <b>may be too short to adequately <a href="/wiki/Wikipedia:Summary_style" title="Wikipedia:Summary style">summarize</a> the key points</b>.<span class="hide-when-compact"> Please consider expanding the lead to <a href="/wiki/Wikipedia:Manual_of_Style/Lead_section#Provide_an_accessible_overview" title="Wikipedia:Manual of Style/Lead section">provide an accessible overview</a> of all important aspects of the article.</span> <span class="date-container"><i>(<span class="date">April 2018</span>)</i></span></div></td></tr></tbody></table> </div> </div><span class="hide-when-compact"><i> (<small><a href="/wiki/Help:Maintenance_template_removal" title="Help:Maintenance template removal">Learn how and when to remove this message</a></small>)</i></span></div></td></tr></tbody></table> <p class="mw-empty-elt"> </p><p><b>IP Pascal</b> is an implementation of the <a href="/wiki/Pascal_(programming_language)" title="Pascal (programming language)">Pascal programming language</a> using the IP portability platform, a multiple machine, operating system and language implementation system. It implements the language "Pascaline" (named after Blaise Pascal's calculator), and has passed the Pascal Validation Suite. </p><p>This article follows a fairly old version of Pascaline. A newer version of Pascaline exists as Pascal-P6, part of the Pascal-P series. See the references below. </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="Overview">Overview</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=1" title="Edit section: Overview"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>IP Pascal implements the language "Pascaline" (named after <a href="/wiki/Blaise_Pascal" title="Blaise Pascal">Blaise Pascal</a>'s calculator), which is a highly extended superset of ISO 7185 Pascal. It adds <a href="/wiki/Module_(programming)" class="mw-redirect" title="Module (programming)">modularity</a> with <a href="/wiki/Namespace" title="Namespace">namespace</a> control, including the parallel tasking <a href="/wiki/Monitor_(synchronization)" title="Monitor (synchronization)">monitor</a> concept, dynamic <a href="/wiki/Array_data_structure" class="mw-redirect" title="Array data structure">arrays</a>, <a href="/wiki/Polymorphism_(computer_science)" title="Polymorphism (computer science)">overloads</a> and overrides, <a href="/wiki/Object_(computer_science)" title="Object (computer science)">objects</a>, and a host of other minor extensions to the language. IP implements a porting platform, including a <a href="/wiki/Widget_toolkit" title="Widget toolkit">widget toolkit</a>, <a href="/wiki/Internet_protocol_suite" title="Internet protocol suite">TCP/IP</a> library, <a href="/wiki/MIDI" title="MIDI">MIDI</a> and sound library and other functions, that allows both programs written under IP Pascal, and IP Pascal itself, to move to multiple operating systems and machines. </p><p>IP Pascal is one of the only Pascal implementations that still exist that has passed the Pascal Validation Suite, a large suite of tests created to verify compliance with ISO 7185 Pascal. </p><p>Although Pascaline extends ISO 7185 Pascal, it does not reduce the type safety of Pascal (as many other dialects of Pascal have by including so called "type escapes"). The functionality of the language is similar to that of <a href="/wiki/C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a> (which implements a C++ like language but with the type insecurities removed), and Pascaline can be used anywhere that managed programs can be used (even though it is based on a language 30 years older than C#). </p> <div class="mw-heading mw-heading2"><h2 id="Language">Language</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=2" title="Edit section: Language"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>IP Pascal starts with <a href="/wiki/International_Organization_for_Standardization" title="International Organization for Standardization">ISO</a> 7185 <a href="/wiki/Pascal_programming_language" class="mw-redirect" title="Pascal programming language">Pascal</a> (which standardized <a href="/wiki/Niklaus_Wirth" title="Niklaus Wirth">Niklaus Wirth</a>'s original language), and adds: </p> <div class="mw-heading mw-heading3"><h3 id="Modules,_including_parallel_task_constructs_process,_monitor_and_share"><span id="Modules.2C_including_parallel_task_constructs_process.2C_monitor_and_share"></span>Modules, including parallel task constructs process, monitor and share</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=3" title="Edit section: Modules, including parallel task constructs process, monitor and share"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <pre><b>module</b> mymod(input, output);<br /> <b>uses</b> extlib; <b>const</b> one = 1;<br /> <b>type</b> string = <b>packed</b> <b>array</b> <b>of</b> char;<br /> <b>procedure</b> wrtstr(<b>view</b> s: string);<br /> <b>private</b><br /> <b>var</b> s: string;<br /> <b>procedure</b> wrtstr(<b>view</b> s: string);<br /> <b>var</b> i: integer;<br /> <b>begin</b><br /> <b>for</b> i&#160;:= 1 <b>to</b> max(s) <b>do</b> write(s[i])<br /> <b>end</b>;<br /> <b>begin</b> { initialize monitor }<br /> <b>end</b>;<br /> <b>begin</b> { shutdown monitor }<br /> <b>end</b>. </pre> <p>Modules have entry and exit sections. Declarations in modules form their own interface specifications, and it is not necessary to have both interface and implementation sections. If a separate interface declaration file is needed, it is created by stripping the code out of a module and creating a "skeleton" of the module. This is typically done only if the object for a module is to be sent out without the source. </p><p>Modules must occupy a single file, and modules reference other modules via a <b>uses</b> or <b>joins</b> statement. To allow this, a module must bear the same name as its file name. The <b>uses</b> statement indicates that the referenced module will have its global declarations merged with the referencing module, and any name conflicts that result will cause an error. The <b>joins</b> statement will cause the referenced module to be accessible via the referencing module, but does not merge the name spaces of the two modules. Instead, the referencing module must use a so-called "qualified identifier": </p> <pre>module.identifier </pre> <p>A <b>program</b> from ISO 7185 Pascal is directly analogous to a module, and is effectively a module without an exit section. Because all modules in the system are "daisy chained" such that each are executed in order, a program assumes "command" of the program simply because it does not exit its initialization until its full function is complete, unlike a module which does. In fact, it is possible to have multiple program sections, which would execute in sequence. </p><p>A <b>process</b> module, like a <b>program</b> module, has only an initialization section, and runs its start, full function and completion in that section. However, it gets its own thread for execution aside from the main thread that runs <b>program</b> modules. As such, it can only call <b>monitor</b> and <b>share</b> modules. </p><p>A <b>monitor</b> is a module that includes task locking on each call to an externally accessible <b>procedure</b> or <b>function</b>, and implements communication between tasks by semaphores. </p><p>A <b>share</b> module, because it has no global data at all, can be used by any other module in the system, and is used to place library code in. </p><p>Because the module system directly implements multitasking/multithreading using the <a href="/wiki/Monitor_(synchronization)" title="Monitor (synchronization)">Monitor</a> concept, it solves the majority of multithreading access problems. Data for a module is bound to the code with <a href="/wiki/Mutex" class="mw-redirect" title="Mutex">mutexes</a> or <a href="/wiki/Mutex" class="mw-redirect" title="Mutex">Mutually Exclusive Sections</a>. Subtasks/subthreads are started transparently with the process module. Multiple subtasks/subthreads can access monitors or share modules. A share module is a module without data, which does not need the locking mechanisms of a monitor. </p> <div class="mw-heading mw-heading3"><h3 id="Dynamic_arrays">Dynamic arrays</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=4" title="Edit section: Dynamic arrays"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In IP Pascal, dynamics are considered "containers" for static arrays. The result is that IP Pascal is perhaps the only Pascal where <a href="/wiki/Dynamic_array" title="Dynamic array">dynamic arrays</a> are fully compatible with the ISO 7185 static arrays from the original language. A static array can be passed into a dynamic array parameter to a procedure or function, or created with new </p> <pre><b>program</b> test(output);<br /> <b>type</b> string = <b>packed</b> <b>array</b> <b>of</b> char;<br /> <b>var</b> s: string;<br /> <b>procedure</b> wrtstr(<b>view</b> s: string);<br /> <b>var</b> i: integer;<br /> <b>begin</b><br /> <b>for</b> i&#160;:= 1 <b>to</b> max(s) <b>do</b> write(s[i])<br /> <b>end</b>;<br /> <b>begin</b><br /> new(s, 12); s&#160;:= 'Hello, world'; wrtstr(s^); wrtstr('That's all folks')<br /> <b>end</b>. </pre> <p>Such "container" arrays can be any number of dimensions. </p> <div class="mw-heading mw-heading3"><h3 id="Constant_expressions">Constant expressions</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=5" title="Edit section: Constant expressions"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A constant declaration can contain expressions of other constants </p> <pre><b>const</b> b = a+10; </pre> <div class="mw-heading mw-heading3"><h3 id="Radix_for_numbers">Radix for numbers</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=6" title="Edit section: Radix for numbers"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <pre>$ff, &amp;76, %011000 </pre> <div class="mw-heading mw-heading3"><h3 id="Alphanumeric_goto_labels">Alphanumeric goto labels</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=7" title="Edit section: Alphanumeric goto labels"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <pre><b>label</b> exit; <b>goto</b> exit; </pre> <div class="mw-heading mw-heading3"><h3 id="underscore_in_all_labels">underscore in all labels</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=8" title="Edit section: underscore in all labels"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <pre><b>var</b> my_number: integer; </pre> <div class="mw-heading mw-heading3"><h3 id="underscore_in_numbers">underscore in numbers</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=9" title="Edit section: underscore in numbers"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <pre>a&#160;:= 1234_5678; </pre> <p>The '_' (break) character can be included anywhere in a number except for the first digit. It is ignored, and serves only to separate digits in the number. </p> <div class="mw-heading mw-heading3"><h3 id="Special_character_sequences_that_can_be_embedded_in_constant_strings">Special character sequences that can be embedded in constant strings</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=10" title="Edit section: Special character sequences that can be embedded in constant strings"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <pre><b>const</b> str = 'the rain in Spain\cr\lf'; </pre> <p>Using standard <a href="/wiki/ISO_8859-1" class="mw-redirect" title="ISO 8859-1">ISO 8859-1</a> mnemonics. </p> <div class="mw-heading mw-heading3"><h3 id="Duplication_of_forwarded_headers">Duplication of forwarded headers</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=11" title="Edit section: Duplication of forwarded headers"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <pre><b>procedure</b> x(i: integer); <b>forward</b>;<br /> ...<br /> <b>procedure</b> x(i: integer);<br /> <b>begin</b><br /> ...<br /> <b>end</b>; </pre> <p>This makes it easier to declare a forward by cut-and-paste, and keeps the parameters of the procedure or function in the actual header where they can be seen. </p> <div class="mw-heading mw-heading3"><h3 id="halt_procedure">halt procedure</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=12" title="Edit section: halt procedure"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <pre><b>procedure</b> error(<b>view</b> s: string);<br /> <b>begin</b><br /> writeln('*** Error: ', s:0); halt { terminate program }<br /> <b>end</b>; </pre> <div class="mw-heading mw-heading3"><h3 id="Special_predefined_header_files">Special predefined header files</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=13" title="Edit section: Special predefined header files"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <pre><b>program</b> myprog(input, output, list);<br /> <b>begin</b><br /> writeln(list, 'Start of listing:'); ... </pre> <pre><b>program</b> echo(output, command);<br /> <b>var</b> c: char;<br /> <b>begin</b><br /> <b>while</b> <b>not</b> eoln(command) <b>do</b> <b>begin</b><br /> read(command, c); write(c)<br /> <b>end</b>; writeln<br /> <b>end</b>. </pre> <pre><b>program</b> newprog(input, output, error);<br /> <b>begin</b><br /> ... writeln(error, 'Bad parameter'); halt ... </pre> <p>'command' is a file that connects to the command line, so that it can be read using normal file read operations. </p> <div class="mw-heading mw-heading3"><h3 id="Automatic_connection_of_program_header_files_to_command_line_names">Automatic connection of program header files to command line names</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=14" title="Edit section: Automatic connection of program header files to command line names"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <pre><b>program</b> copy(source, destination);<br /> <b>var</b> source, destination: text; c: char;<br /> <b>begin</b><br /> reset(source); rewrite(destination); <b>while</b> <b>not</b> eof(source) <b>do</b> <b>begin</b><br /> <b>while</b> <b>not</b> eoln(source) <b>do</b> <b>begin</b><br /> read(source, c); write(destination, c)<br /> <b>end</b>; readln(source); writeln(destination)<br /> <b>end</b><br /> <b>end</b>. </pre> <p>'source' and 'destination' files are automatically connected to the parameters on the command line for the program. </p> <div class="mw-heading mw-heading3"><h3 id="File_naming_and_handling_operations">File naming and handling operations</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=15" title="Edit section: File naming and handling operations"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-highlight mw-highlight-lang-pascal mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="k">program</span><span class="w"> </span><span class="n">extfile</span><span class="p">(</span><span class="n">output</span><span class="p">)</span><span class="o">;</span> <span class="w"> </span><span class="k">var</span><span class="w"> </span><span class="n">f</span><span class="o">:</span><span class="w"> </span><span class="k">file</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="kt">integer</span><span class="o">;</span> <span class="w"> </span><span class="k">begin</span> <span class="w"> </span><span class="n">assign</span><span class="p">(</span><span class="n">f</span><span class="o">,</span><span class="w"> </span><span class="s">&#39;myfile&#39;</span><span class="p">)</span><span class="o">;</span><span class="w"> </span><span class="cm">{ set name of external file }</span> <span class="w"> </span><span class="n">update</span><span class="p">(</span><span class="n">f</span><span class="p">)</span><span class="o">;</span><span class="w"> </span><span class="cm">{ keep existing file, and set to write mode }</span> <span class="w"> </span><span class="n">position</span><span class="p">(</span><span class="n">f</span><span class="o">,</span><span class="w"> </span><span class="nb">length</span><span class="p">(</span><span class="n">f</span><span class="p">))</span><span class="o">;</span><span class="w"> </span><span class="cm">{ position to end of file to append to it }</span> <span class="w"> </span><span class="nb">writeln</span><span class="p">(</span><span class="s">&#39;The end of the file is: &#39;</span><span class="o">,</span><span class="w"> </span><span class="n">location</span><span class="p">(</span><span class="n">f</span><span class="p">))</span><span class="o">;</span><span class="w"> </span><span class="cm">{ tell user location of new element }</span> <span class="w"> </span><span class="nb">write</span><span class="p">(</span><span class="n">f</span><span class="o">,</span><span class="w"> </span><span class="mi">54321</span><span class="p">)</span><span class="o">;</span><span class="w"> </span><span class="cm">{ write new last element }</span> <span class="w"> </span><span class="nb">close</span><span class="p">(</span><span class="n">f</span><span class="p">)</span><span class="w"> </span><span class="cm">{ close the file }</span> <span class="w"> </span><span class="k">end</span><span class="o">.</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="fixed_declarations_which_declare_structured_constant_types">fixed declarations which declare structured constant types</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=16" title="Edit section: fixed declarations which declare structured constant types"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <pre><b>fixed</b> table: <b>array</b> [1..5] <b>of</b> <b>record</b> a: integer; <b>packed</b> <b>array</b> [1..10] <b>of</b> char <b>end =</b> <b>array</b><br /> <b>record</b> 1, 'data1 ' <b>end</b>, <b>record</b> 2, 'data2 ' <b>end</b>, <b>record</b> 3, 'data3 ' <b>end</b>, <b>record</b> 4, 'data4 ' <b>end</b>, <b>record</b> 5, 'data5 ' <b>end</b><br /> <b>end</b>; </pre> <div class="mw-heading mw-heading3"><h3 id="Boolean_bit_operators">Boolean bit operators</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=17" title="Edit section: Boolean bit operators"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <pre><b>program</b> test; <b>var</b> a, b: integer; <b>begin</b> a&#160;:= a <b>and</b> b; b&#160;:= b <b>or</b> $a5; a&#160;:= <b>not</b> b; b&#160;:= a <b>xor</b> b <b>end</b>. </pre> <div class="mw-heading mw-heading3"><h3 id="Extended_range_variables">Extended range variables</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=18" title="Edit section: Extended range variables"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <pre><b>program</b> test; <b>var</b> a: linteger; b: cardinal; c: lcardinal; d: 1..maxint*2; ... </pre> <p>Extended range specifications give rules for scalars that lie outside the range of -maxint..maxint. It is implementation-specific as to just how large a number is possible, but Pascaline defines a series of standard types that exploit the extended ranges, including linteger for double-range integers, cardinal for unsigned integers, and lcardinal for unsigned double range integers. Pascaline also defines new limits for these types, as maxlint, maxcrd, and maxlcrd. </p> <div class="mw-heading mw-heading3"><h3 id="Semaphores">Semaphores</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=19" title="Edit section: Semaphores"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <pre><b>monitor</b> test;<br /> <b>var</b> notempty, notfull: semaphore; <b>procedure</b> enterqueue; <b>begin</b> <b>while</b> nodata <b>do</b> wait(notempty); ... signalone(notfull) <b>end</b>; ... <b>begin</b> <b>end</b>. </pre> <p>Semaphores implement task event queuing directly in the language, using the classical methods outlined by <a href="/wiki/Per_Brinch_Hansen" title="Per Brinch Hansen">Per Brinch Hansen</a>. </p> <div class="mw-heading mw-heading3"><h3 id="Overrides">Overrides</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=20" title="Edit section: Overrides"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <pre><b>module</b> test1; <b>virtual</b> <b>procedure</b> x; <b>begin</b> ... <b>end</b>; </pre> <pre><b>program</b> test; <b>joins</b> test1; <b>override</b> <b>procedure</b> x; <b>begin</b> <b>inherited</b> x <b>end</b>; <b>begin</b> <b>end</b>. </pre> <p>Overriding a procedure or function in another module effectively "hooks" that routine, replacing the definition for all callers of it, but makes the original definition available to the hooking module. This allows the overriding module to add new functionality to the old procedure or function. This can be implemented to any depth. </p> <div class="mw-heading mw-heading3"><h3 id="Overloads">Overloads</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=21" title="Edit section: Overloads"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <pre><b>procedure</b> x; <b>begin</b> <b>end</b>; <b>overload</b> <b>procedure</b> x(i: integer); <b>begin</b> <b>end</b>; <b>overload</b> <b>function</b> x: integer; <b>begin</b> xx:= 1 <b>end</b>; </pre> <p>Overload "groups" allow a series of procedures and/or functions to be placed under the same name and accessed by their formal parameter or usage "signature". Unlike other languages that implement the concept, Pascaline will not accept overloads as belonging to the same group unless they are not ambiguous with each other. This means that there is no "priority" of overloads, nor any question as to which routine of an overload group will be executed for any given actual reference. </p> <div class="mw-heading mw-heading3"><h3 id="Objects">Objects</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=22" title="Edit section: Objects"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <pre><b>program</b> test; <b>uses</b> baseclass; <b>class</b> alpha; <b>extends</b> beta; <b>type</b> alpha_ref = <b>reference</b> <b>to</b> alpha; <b>var</b> a, b: integer; next: alpha_ref; <b>virtual</b> <b>procedure</b> x(d: integer); <b>begin</b> aa:= d; selfl:= next <b>end</b>; <b>private</b> <b>var</b> q: integer; <b>begin</b> <b>end</b>. <b>var</b> r: alpha_ref; <b>begin</b> new(r); ... <b>if</b> r <b>is</b> alpha <b>then</b> r.a&#160;:= 1; r.x(5); ... <b>end</b>. </pre> <p>In Pascaline, classes are a dynamic instance of a module (and modules are a static instance of a class). Classes are a code construct (not a type) that exists between modules and procedures and functions. Because a class is a module, it can define any code construct, such as constants, types, variables, fixed, procedures and functions (which become "methods"), and make them public to clients of the class, or hide them with the "private" keyword. Since a class is a module, it can be accessed via a qualified identifier. </p><p>Classes as modules have automatic access to their namespace as found in C# and C++ in that they do not require any qualification. Outside of the class, all members of the class can be accessed either by qualified identifier or by a reference. A reference is a pointer to the object that is created according to the class. Any number of instances of a class, known as "objects" can be created with the new() statement, and removed with the dispose() statement. Class members that have instance data associated with them, such as variables (or fields) and methods must be accessed via a reference. A reference is a type, and resembles a pointer, including the ability to have the value nil, and checking for equality with other reference types. It is not required to qualify the pointer access with "^". </p><p>Pascaline implements the concept of "reference grace" to allow a reference to access any part of the object regardless of whether or not it is per-instance. This characteristic allows class members to be "promoted", that is moved from constants to variables, and then to "properties" (which are class fields whose read and write access are provided by "get" and "set" methods). </p><p>Both overloads and overrides are provided for and object's methods. A method that will be overridden must be indicated as virtual. </p><p>Object methods can change the reference used to access them with the <code>self</code> keyword. </p><p>Single inheritance only is implemented. </p> <div class="mw-heading mw-heading3"><h3 id="Structured_exception_handling">Structured exception handling</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=23" title="Edit section: Structured exception handling"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <pre><b>try</b> ... <b>except</b> ... <b>else</b> ...; throw </pre> <p>The "try" statement can guard a series of statements, and any exceptions flagged within the code are routined to the statement after "except". The try statement also features an else clause that allows a statement to be executed on normal termination of the try block. </p><p>Exceptions are raised in the code via the throw() procedure. Try statements allow the program to bail out of any nested block, and serve as a better replacement for intra-procedure gotos (which are still supported under Pascaline). Since unhandled exceptions generate errors by default, the throw() procedure can serve as a general purpose error flagging system. </p> <div class="mw-heading mw-heading3"><h3 id="Assertions">Assertions</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=24" title="Edit section: Assertions"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <pre>assert(expression); </pre> <p>The system procedure assert causes the program to terminate if the value tested is false. It is typically coupled to a runtime dump or diagnostic, and can be removed by compiler option. </p> <div class="mw-heading mw-heading3"><h3 id="Unicode">Unicode</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=25" title="Edit section: Unicode"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>IP Pascal can generate either <a href="/wiki/ISO_8859-1" class="mw-redirect" title="ISO 8859-1">ISO 8859-1</a> mode programs (8-bit characters) or <a href="/wiki/Unicode" title="Unicode">Unicode</a> mode programs by a simple switch at compile time (unlike many other languages, there is no source difference between Unicode and non-Unicode programs). The ASCII upward-compatible <a href="/wiki/UTF-8" title="UTF-8">UTF-8</a> format is used in text files, and these files are read to and from 8- or 16-bit characters internal to the program (the upper 128 characters of ISO 8859-1 are converted to and from UTF-8 format in text files even in an 8-bit character encoded program). </p> <div class="mw-heading mw-heading3"><h3 id="Constant_for_character_high_limit">Constant for character high limit</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=26" title="Edit section: Constant for character high limit"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Similar to maxint, Pascaline has a maxchr, which is the maximum character that exists in the character set (and may not in fact have a graphical representation). The range of the type char is then defined as 0..maxchr. This is an important addition for dealing with types like "set of char", and aids when dealing with different character set options (such as ISO 8859-1 or Unicode). </p> <div class="mw-heading mw-heading2"><h2 id="Modular_structure">Modular structure</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=27" title="Edit section: Modular structure"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>IP Pascal uses a unique stacking concept for modules. Each module is stacked one atop the other in memory, and executed at the bottom. The bottom module calls the next module up, and that module calls the next module, and so on. </p> <pre>wrapper serlib program cap </pre> <p>The cap module (sometimes called a "cell" in IP Pascal terminology, after a concept in <a href="/wiki/Integrated_circuit" title="Integrated circuit">integrated circuit</a> design) terminates the stack, and begins a return process that ripples back down until the program terminates. Each module has its startup or entry section performed on the way up the stack, and its finalization or exit section performed on the way back down. </p><p>This matches the natural dependencies in a program. The most primitive modules, such as the basic I/O support in "serlib", perform their initialization first, and their finalization last, before and after the higher level modules in the stack. </p> <div class="mw-heading mw-heading2"><h2 id="Porting_platform">Porting platform</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=28" title="Edit section: Porting platform"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>IP Pascal has a series of modules (or "libraries") that form a "porting platform" called Petit-Ami (French for "little friend"). These libraries present an idealized <a href="/wiki/API" title="API">API</a> for each function that applies, such as files and extended operating system functions, graphics, midi and sound, etc. The whole collection forms the basis for an implementation on each operating system and machine that IP Pascal appears on. </p><p>The two important differences between IP Pascal and many other languages that have simply been mated with portable graphics libraries are that: </p> <ol><li>IP Pascal uses its own porting platform for its own low level code, so that once the platform is created for a particular operating system and machine, both the IP system and the programs it compiles can run on that. This is similar to the way <a href="/wiki/Java_(programming_language)" title="Java (programming language)">Java</a> and the <a href="/wiki/UCSD_Pascal" title="UCSD Pascal">UCSD Pascal</a> systems work, but with true high optimization compiled code, not interpreted code or "just in time" compiled code.</li> <li>Since modules can override lower level functions such as Pascal's "write" statement, normal, unmodified ISO 7185 Pascal programs can also use advanced aspects of the porting platform. This is unlike many or most portable graphics libraries that force the user to use a completely different I/O methodology to access a windowed graphics system, for example C, other Pascals, and <a href="/wiki/Visual_Basic" title="Visual Basic">Visual Basic</a>.</li></ol> <p>IP modules can also be created that are system independent, and rely only on the porting platform modules. The result is that IP Pascal is very highly portable. </p><p><br /> Example: The standard "hello world" program is coupled to output into a graphical window. </p> <pre><b>program</b> HelloWorld(output); <b>begin</b> writeln('Hello, World!') <b>end</b>. </pre> <p><br /> Example: "hello world" with graphical commands added. Note that standard Pascal output statements are still used. </p> <div class="mw-highlight mw-highlight-lang-pascal mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="k">program</span><span class="w"> </span><span class="n">hello</span><span class="p">(</span><span class="n">input</span><span class="o">,</span><span class="w"> </span><span class="n">output</span><span class="p">)</span><span class="o">;</span> <span class="w"> </span><span class="k">uses</span><span class="w"> </span><span class="n">gralib</span><span class="o">;</span> <span class="w"> </span><span class="k">var</span><span class="w"> </span><span class="n">er</span><span class="o">:</span><span class="w"> </span><span class="n">evtrec</span><span class="o">;</span> <span class="w"> </span><span class="k">begin</span> <span class="w"> </span><span class="n">bcolor</span><span class="p">(</span><span class="n">output</span><span class="o">,</span><span class="w"> </span><span class="n">green</span><span class="p">)</span><span class="o">;</span> <span class="w"> </span><span class="n">curvis</span><span class="p">(</span><span class="n">output</span><span class="o">,</span><span class="w"> </span><span class="k">false</span><span class="p">)</span><span class="o">;</span> <span class="w"> </span><span class="n">auto</span><span class="p">(</span><span class="n">output</span><span class="o">,</span><span class="w"> </span><span class="k">false</span><span class="p">)</span><span class="o">;</span> <span class="w"> </span><span class="n">page</span><span class="p">(</span><span class="n">output</span><span class="p">)</span><span class="o">;</span> <span class="w"> </span><span class="n">fcolor</span><span class="p">(</span><span class="n">output</span><span class="o">,</span><span class="w"> </span><span class="n">red</span><span class="p">)</span><span class="o">;</span> <span class="w"> </span><span class="n">frect</span><span class="p">(</span><span class="n">output</span><span class="o">,</span><span class="w"> </span><span class="mi">50</span><span class="o">,</span><span class="w"> </span><span class="mi">50</span><span class="o">,</span><span class="w"> </span><span class="n">maxxg</span><span class="p">(</span><span class="n">output</span><span class="p">)</span><span class="o">-</span><span class="mi">50</span><span class="o">,</span><span class="w"> </span><span class="n">maxyg</span><span class="p">(</span><span class="n">output</span><span class="p">)</span><span class="o">-</span><span class="mi">50</span><span class="p">)</span><span class="o">;</span> <span class="w"> </span><span class="n">fcolorg</span><span class="p">(</span><span class="n">output</span><span class="o">,</span><span class="w"> </span><span class="n">maxint</span><span class="o">,</span><span class="w"> </span><span class="n">maxint</span><span class="o">-</span><span class="p">(</span><span class="n">maxint</span><span class="w"> </span><span class="k">div</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="o">,</span><span class="w"> </span><span class="n">maxint</span><span class="o">-</span><span class="n">maxint</span><span class="w"> </span><span class="k">div</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="o">;</span> <span class="w"> </span><span class="n">frect</span><span class="p">(</span><span class="n">output</span><span class="o">,</span><span class="w"> </span><span class="mi">50</span><span class="o">,</span><span class="w"> </span><span class="mi">50</span><span class="o">,</span><span class="w"> </span><span class="mi">53</span><span class="o">,</span><span class="w"> </span><span class="n">maxyg</span><span class="p">(</span><span class="n">output</span><span class="p">)</span><span class="o">-</span><span class="mi">50</span><span class="p">)</span><span class="o">;</span> <span class="w"> </span><span class="n">frect</span><span class="p">(</span><span class="n">output</span><span class="o">,</span><span class="w"> </span><span class="mi">50</span><span class="o">,</span><span class="w"> </span><span class="mi">50</span><span class="o">,</span><span class="w"> </span><span class="n">maxxg</span><span class="p">(</span><span class="n">output</span><span class="p">)</span><span class="o">-</span><span class="mi">50</span><span class="o">,</span><span class="w"> </span><span class="mi">53</span><span class="p">)</span><span class="o">;</span> <span class="w"> </span><span class="n">fcolorg</span><span class="p">(</span><span class="n">output</span><span class="o">,</span><span class="w"> </span><span class="n">maxint</span><span class="w"> </span><span class="k">div</span><span class="w"> </span><span class="mi">2</span><span class="o">,</span><span class="w"> </span><span class="mi">0</span><span class="o">,</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="o">;</span> <span class="w"> </span><span class="n">frect</span><span class="p">(</span><span class="n">output</span><span class="o">,</span><span class="w"> </span><span class="mi">52</span><span class="o">,</span><span class="w"> </span><span class="n">maxyg</span><span class="p">(</span><span class="n">output</span><span class="p">)</span><span class="o">-</span><span class="mi">53</span><span class="o">,</span><span class="w"> </span><span class="n">maxxg</span><span class="p">(</span><span class="n">output</span><span class="p">)</span><span class="o">-</span><span class="mi">50</span><span class="o">,</span><span class="w"> </span><span class="n">maxyg</span><span class="p">(</span><span class="n">output</span><span class="p">)</span><span class="o">-</span><span class="mi">50</span><span class="p">)</span><span class="o">;</span> <span class="w"> </span><span class="n">frect</span><span class="p">(</span><span class="n">output</span><span class="o">,</span><span class="w"> </span><span class="n">maxxg</span><span class="p">(</span><span class="n">output</span><span class="p">)</span><span class="o">-</span><span class="mi">53</span><span class="o">,</span><span class="w"> </span><span class="mi">52</span><span class="o">,</span><span class="w"> </span><span class="n">maxxg</span><span class="p">(</span><span class="n">output</span><span class="p">)</span><span class="o">-</span><span class="mi">50</span><span class="o">,</span><span class="w"> </span><span class="n">maxyg</span><span class="p">(</span><span class="n">output</span><span class="p">)</span><span class="o">-</span><span class="mi">50</span><span class="p">)</span><span class="o">;</span> <span class="w"> </span><span class="n">font</span><span class="p">(</span><span class="n">output</span><span class="o">,</span><span class="w"> </span><span class="n">font_sign</span><span class="p">)</span><span class="o">;</span> <span class="w"> </span><span class="n">fontsiz</span><span class="p">(</span><span class="n">output</span><span class="o">,</span><span class="w"> </span><span class="mi">100</span><span class="p">)</span><span class="o">;</span> <span class="w"> </span><span class="n">binvis</span><span class="p">(</span><span class="n">output</span><span class="p">)</span><span class="o">;</span> <span class="w"> </span><span class="n">fcolor</span><span class="p">(</span><span class="n">output</span><span class="o">,</span><span class="w"> </span><span class="n">cyan</span><span class="p">)</span><span class="o">;</span> <span class="w"> </span><span class="n">cursorg</span><span class="p">(</span><span class="n">output</span><span class="o">,</span><span class="w"> </span><span class="n">maxxg</span><span class="p">(</span><span class="n">output</span><span class="p">)</span><span class="w"> </span><span class="k">div</span><span class="w"> </span><span class="mi">2</span><span class="o">-</span><span class="n">strsiz</span><span class="p">(</span><span class="n">output</span><span class="o">,</span><span class="w"> </span><span class="s">&#39;hello, world&#39;</span><span class="p">)</span><span class="w"> </span><span class="k">div</span><span class="w"> </span><span class="mi">2</span><span class="o">+</span><span class="mi">3</span><span class="o">,</span> <span class="w"> </span><span class="n">maxyg</span><span class="p">(</span><span class="n">output</span><span class="p">)</span><span class="w"> </span><span class="k">div</span><span class="w"> </span><span class="mi">2</span><span class="o">-</span><span class="mi">100</span><span class="w"> </span><span class="k">div</span><span class="w"> </span><span class="mi">2</span><span class="o">+</span><span class="mi">3</span><span class="p">)</span><span class="o">;</span> <span class="w"> </span><span class="nb">writeln</span><span class="p">(</span><span class="s">&#39;hello, world&#39;</span><span class="p">)</span><span class="o">;</span> <span class="w"> </span><span class="n">fcolor</span><span class="p">(</span><span class="n">output</span><span class="o">,</span><span class="w"> </span><span class="n">blue</span><span class="p">)</span><span class="o">;</span> <span class="w"> </span><span class="n">cursorg</span><span class="p">(</span><span class="n">output</span><span class="o">,</span><span class="w"> </span><span class="n">maxxg</span><span class="p">(</span><span class="n">output</span><span class="p">)</span><span class="w"> </span><span class="k">div</span><span class="w"> </span><span class="mi">2</span><span class="o">-</span><span class="n">strsiz</span><span class="p">(</span><span class="n">output</span><span class="o">,</span><span class="w"> </span><span class="s">&#39;hello, world&#39;</span><span class="p">)</span><span class="w"> </span><span class="k">div</span><span class="w"> </span><span class="mi">2</span><span class="o">,</span> <span class="w"> </span><span class="n">maxyg</span><span class="p">(</span><span class="n">output</span><span class="p">)</span><span class="w"> </span><span class="k">div</span><span class="w"> </span><span class="mi">2</span><span class="o">-</span><span class="mi">100</span><span class="w"> </span><span class="k">div</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">;</span> <span class="w"> </span><span class="nb">writeln</span><span class="p">(</span><span class="s">&#39;hello, world&#39;</span><span class="p">)</span><span class="o">;</span> <span class="w"> </span><span class="k">repeat</span><span class="w"> </span><span class="n">event</span><span class="p">(</span><span class="n">input</span><span class="o">,</span><span class="w"> </span><span class="n">er</span><span class="p">)</span><span class="w"> </span><span class="k">until</span><span class="w"> </span><span class="n">er</span><span class="o">.</span><span class="n">etype</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">etterm</span> <span class="w"> </span><span class="k">end</span><span class="o">.</span> </pre></div> <figure class="mw-halign-right" typeof="mw:File/Thumb"><a href="/wiki/File:Breakshot.png" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/0/02/Breakshot.png/400px-Breakshot.png" decoding="async" width="400" height="252" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/0/02/Breakshot.png/600px-Breakshot.png 1.5x, //upload.wikimedia.org/wikipedia/commons/0/02/Breakshot.png 2x" data-file-width="648" data-file-height="409" /></a><figcaption>Example: Breakout game.</figcaption></figure> <figure class="mw-default-size mw-halign-right" typeof="mw:File/Thumb"><a href="/wiki/File:Clockg.png" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/en/1/12/Clockg.png" decoding="async" width="208" height="203" class="mw-file-element" data-file-width="208" data-file-height="203" /></a><figcaption>Example: Graphical clock in a sizable window.</figcaption></figure> <p>Because IP Pascal modules can "override" each other, a graphical extension module (or any other type of module) can override the standard I/O calls implemented in a module below it. Thus, paslib implements standard Pascal statements such as read, write, and other support services. gralib overrides these services and redirects all standard Pascal I/O to graphical windows. </p><p>The difference between this and such libraries in other implementations is that you typically have to stop using the standard I/O statements and switch to a completely different set of calls and paradigms. This means that you cannot "bring forward" programs implemented with the serial I/O paradigm to graphical systems. </p><p>Another important difference with IP Pascal is that it uses procedural language methods to access the Windowed graphics library. Most graphics toolkits force the use of <a href="/wiki/Object-oriented_programming" title="Object-oriented programming">object-oriented programming</a> methods to the toolkit. One reason for this is because object oriented programming is a good match for graphics, but it also occurs because common systems such as Windows force the application program to appear as a service program to the operating system, appearing as a collection of functions called by the operating system, instead of having the program control its own execution and call the operating system. This is commonly known as <a href="/wiki/Callback_(computer_science)" class="mw-redirect" title="Callback (computer science)">callback</a> design. Object-oriented code often works better with callbacks because it permits an object's methods to be called as callbacks, instead of a programmer having to register several pointers to functions to event handling code, each of which would be an individual callback. </p><p>IP Pascal makes object-oriented programming an optional, not required, methodology to write programs. IP Pascal's ability to use procedural methods to access all graphics functions means that there is no "<a href="/wiki/Cliff_effect" title="Cliff effect">cliff effect</a>" for older programs. They don't need to be rewritten just to take advantage of modern programming environments. </p><p>The IP porting platform supports a character mode, even in graphical environments, by providing a "character grid" that overlays the pixel grid. Programs that use only character mode calls (that would work on any terminal or telnet connection) work under graphical environments automatically. </p> <div class="mw-heading mw-heading2"><h2 id="History">History</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=29" title="Edit section: History"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="The_Z80_implementation">The Z80 implementation</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=30" title="Edit section: The Z80 implementation"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The compiler started out in 1980 on <a href="/wiki/Micropolis_(company)" class="mw-redirect" title="Micropolis (company)">Micropolis</a> Disk Operating System, but was moved rapidly to <a href="/wiki/CP/M" title="CP/M">CP/M</a> running on the Z80. The original system was coded in Z80 assembly language, and output direct machine code for the <a href="/wiki/Z80" class="mw-redirect" title="Z80">Z80</a>. It was a <a href="/wiki/Single-pass_compiler" class="mw-redirect" title="Single-pass compiler">single-pass compiler</a> without a linker, it included its system support library within the compiler, and relocated and output that into the generated code into the runnable disk file. </p><p>After the compiler was operational, almost exactly at the new year of 1980, a companion assembler for the compiler was written, in Pascal, followed by a linker, in Z80 assembly language. This odd combination was due to a calculation that showed the linker tables would be a problem in the 64kb limited Z80, so the linker needed to be as small as possible. This was then used to move the compiler and linker Z80 source code off the Micropolis assembler (which was a linkerless assembler that created a single output binary) to the new assembler linker system. </p><p>After this, the compiler was retooled to output to the linker format, and the support library moved into a separate file and linked in. </p><p>In 1981, the compiler was extensively redone to add optimization, such as register allocation, Boolean to jump, dead code, constant folding, and other optimizations. This created a Pascal implementation that benchmarked better than any existing Z80 compilers, as well as most 8086 compilers. Unfortunately, at 46kb, it also was difficult to use, being able to compile only a few pages of source code before overflowing its tables (this was a common problem with most Pascal implementations on small address processors). The system was able to be used primarily because of the decision to create a compact linker allowed for large systems to be constructed from these small object files. </p><p>Despite this, the original IP Pascal implementation ran until 1987 as a general purpose compiler. In this phase, IP Pascal was C like in its modular layout. Each source file was a unit, and consisted of some combination of a 'program' module, types, constants, variables, procedures or functions. These were in "free format". Procedures, functions, types, constants and variables could be outside of any block, and in any order. Procedures, functions, and variables in other files were referenced by 'external' declarations, and procedures, functions, and variables in the current file were declared 'global'. Each file was compiled to an object file, and then linked together. There was no type checking across object files. </p><p>As part of the original compiler, a device independent terminal I/O module was created to allow use of any serial terminal (similar to <a href="/wiki/Turbo_Pascal" title="Turbo Pascal">Turbo Pascal</a>'s CRT unit), which remains to this day. </p><p>In 1985, an effort was begun to rewrite the compiler in Pascal. The new compiler would be two pass with intermediate, which was designed to solve the memory problems associated with the first compiler. The front end of the compiler was created and tested without intermediate code generation capabilities (parse only). </p><p>in 1987, the Z80 system used for IP was exchanged for an 80386 IBM-PC, and work on it stopped. From that time several other, ISO 7185 standard compilers were used, ending with the SVS Pascal compiler, a 32 bit <a href="/wiki/DOS_Protected_Mode_Interface" title="DOS Protected Mode Interface">DPMI</a> extender based implementation. </p> <div class="mw-heading mw-heading3"><h3 id="The_80386_implementation">The 80386 implementation</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=31" title="Edit section: The 80386 implementation"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>By 1993, ISO 7185 compatible compilers that delivered high quality 32 bit code were dying off. At this point, the choice was to stop using Pascal, or to revive the former IP Pascal project and modernize it as an 80386 compiler. At this point, a Pascal parser, and assembler (for Z80) were all that existed which were usable on the IBM-PC. From 1993 to 1994, the assembler was made modular to target multiple CPUs including the 80386, a linker to replace the Z80 assembly language linker was created, and a Pascal compiler front end was finished to output to intermediate code. Finally, an intermediate code simulator was constructed, in Pascal, to prove the system out. </p><p>In 1994, the simulator was used to extend the ISO 7185 IP Pascal "core" language to include features such as dynamic arrays. </p><p>In 1995, a "check encoder" was created to target 80386 machine code, and a converter program created to take the output object files and create a "Portable Executable" file for Windows. The system support library was created for IP Pascal, itself in IP Pascal. This was an unusual step taken to prevent having to later recode the library from assembly or another Pascal to IP Pascal, but with the problem that both the 80386 code generator and the library would have to be debugged together. </p><p>At the beginning of 1996, the original target of Windows NT was switched to Windows 95, and IP Pascal became fully operational as an 80386 compiler under Windows. The system bootstrapped itself, and the remaining Pascal code was ported from SVS Pascal to IP Pascal to complete the bootstrap. This process was aided considerably by the ability of the <a href="/wiki/DOS_Protected_Mode_Interface" title="DOS Protected Mode Interface">DPMI</a> based SVS Pascal to run under Windows 95, which meant that the need to boot back and forth between DOS and Windows 95 was eliminated. </p> <div class="mw-heading mw-heading3"><h3 id="The_Linux_implementation">The Linux implementation</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=32" title="Edit section: The Linux implementation"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In 2000, a <a href="/wiki/Linux" title="Linux">Linux</a> (Red Hat) version was created for text mode only. This implementation directly uses the system calls and avoids the use of <a href="/wiki/Glibc" title="Glibc">glibc</a>, and thus creates thinner binaries than if the full support system needed for C were used, at the cost of binary portability. </p><p>The plan is to create a version of the text library that uses termcap info, and the graphical library under X11. </p> <div class="mw-heading mw-heading3"><h3 id="Steps_to_&quot;write_once,_run_anywhere&quot;"><span id="Steps_to_.22write_once.2C_run_anywhere.22"></span>Steps to "write once, run anywhere"</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=33" title="Edit section: Steps to &quot;write once, run anywhere&quot;"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In 1997, a version of the terminal library from the original 1980 IP Pascal was ported to windows, and a final encoder started for the 80386. However, the main reason for needing an improved encoder, execution speed, was largely made irrelevant by increases in processor speed in the IBM-PC. As a result, the new encoder wasn't finished until 2003. </p><p>In 2001, a companion program to IP Pascal was created to translate C header files to Pascal header files. This was meant to replace the manual method of creating operating system interfaces for IP Pascal. </p><p>In 2003, a fully graphical, operating system independent module was created for IP Pascal. </p><p>In 2005, the windows management and widget kit was added. </p> <div class="mw-heading mw-heading3"><h3 id="Pascaline">Pascaline</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=34" title="Edit section: Pascaline"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In approximately 2015, the language specification for IP Pascal was collected and extended. The result was a language called "Pascaline". A lot of the Pascaline specification was implemented in IP Pascal. However, the decision was made to first bring up the majority of the language on the Pascal-P6 compiler codebase. The Pascal-P series is the original compiler from ETH Zurich by Wirth's students there and exists today as Pascal-P4 (the name chosen by Niklaus Wirth). It was converted to ISO 7185 Pascal in Pascal-P5, and is being upgraded to the language Pascaline in Pascal-P6. At the same time, Pascal-P6 is being fitted as a full compiler, starting with code generation for the AMD64 processor model, with the aim to extend it to other processors such as ARM and RISC-V. The goal is to reach Pascal-P6 1.0 when the Pascaline specification is fully implemented. </p> <div class="mw-heading mw-heading3"><h3 id="Petit-Ami">Petit-Ami</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=35" title="Edit section: Petit-Ami"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In about 2019, The support library for IP Pascal was recoded in C. The idea of this was twofold: First, to make the library useful to all languages, not just Pascal, and second, to make coding and debugging on new platforms easier and faster. Petit-Ami is now present for Windows, Linux, and a partial implementation on Mac OS and BSD Unix. </p> <div class="mw-heading mw-heading3"><h3 id="Lessons">Lessons</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=36" title="Edit section: Lessons"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1251242444"><table class="box-Original_research plainlinks metadata ambox ambox-content ambox-Original_research" role="presentation"><tbody><tr><td class="mbox-image"><div class="mbox-image-div"><span typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/b/b4/Ambox_important.svg/40px-Ambox_important.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/b/b4/Ambox_important.svg/60px-Ambox_important.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/b/b4/Ambox_important.svg/80px-Ambox_important.svg.png 2x" data-file-width="40" data-file-height="40" /></span></span></div></td><td class="mbox-text"><div class="mbox-text-span">This section <b>possibly contains <a href="/wiki/Wikipedia:No_original_research" title="Wikipedia:No original research">original research</a></b>.<span class="hide-when-compact"> Please <a class="external text" href="https://en.wikipedia.org/w/index.php?title=IP_Pascal&amp;action=edit">improve it</a> by <a href="/wiki/Wikipedia:Verifiability" title="Wikipedia:Verifiability">verifying</a> the claims made and adding <a href="/wiki/Wikipedia:Citing_sources#Inline_citations" title="Wikipedia:Citing sources">inline citations</a>. Statements consisting only of original research should be removed.</span> <span class="date-container"><i>(<span class="date">February 2017</span>)</i></span><span class="hide-when-compact"><i> (<small><a href="/wiki/Help:Maintenance_template_removal" title="Help:Maintenance template removal">Learn how and when to remove this message</a></small>)</i></span></div></td></tr></tbody></table> <p>In retrospect, the biggest error in the Z80 version was its single-pass structure. There was no real reason for it; the author's preceding (Basic) compiler was multiple pass with intermediate storage. The only argument for it was that single-pass compilation was supposed to be faster. However, single-pass compiling turns out to be a bad match for small machines, and isn't likely to help the advanced optimizations common in large machines. </p><p>Further, the single pass aspect slowed or prevented getting the compiler bootstrapped out of Z80 assembly language and onto Pascal itself. Since the compiler was monolithic, the conversion to Pascal could not be done one section at a time, but had to proceed as a wholesale replacement. When replacement was started, the project lasted longer than the machine did. The biggest help that two pass compiling gave the I80386 implementation was the maintenance of a standard book of intermediate instructions which communicated between front and back ends of the compiler. This well understood "stage" of compilation reduced overall complexity. Intuitively, when two programs of equal size are mated intimately, the complexity is not additive, but multiplicative, because the connections between the program halves multiply out of control. </p><p>Another lesson from the Z80 days, which was corrected on the 80386 compiler, was to write as much of the code as possible into Pascal itself, even the support library. Having the 80386 support code all written in Pascal has made it so modular and portable that most of it was moved out of the operating system specific area and into the "common code" library section, a section reserved for code that never changes for each machine and operating system. Even the "system specific" code needs modification only slightly from implementation to implementation. The result is great amounts of implementation work saved while porting the system. </p><p>Finally, it was an error to enter into a second round of optimization before bootstrapping the compiler. Although the enhancement of the output code was considerable, the resulting increase in complexity of the compiler caused problems with the limited address space. At the time, better optimized code was seen to be an enabler to bootstrapping the code in Pascal. In retrospect, the remaining assembly written sections WERE the problem, and needed to be eliminated, the sooner the better. Another way to say this is that the space problems could be transient, but having significant program sections written in assembly are a serious and lasting problem. </p> <div class="mw-heading mw-heading2"><h2 id="Further_reading">Further reading</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=37" title="Edit section: Further reading"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>Kathleen Jansen and <a href="/wiki/Niklaus_Wirth" title="Niklaus Wirth">Niklaus Wirth</a>: <i>PASCAL – User Manual and Report</i>. Springer-Verlag, 1974, 1985, 1991, <style data-mw-deduplicate="TemplateStyles:r1238218222">.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}</style><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/0-387-97649-3" title="Special:BookSources/0-387-97649-3">0-387-97649-3</a>, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/0-387-90144-2" title="Special:BookSources/0-387-90144-2">0-387-90144-2</a>, and <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/3-540-90144-2" title="Special:BookSources/3-540-90144-2">3-540-90144-2</a><sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">&#91;</span>1<span class="cite-bracket">&#93;</span></a></sup></li> <li>Niklaus Wirth: "The Programming Language Pascal". <i>Acta Informatica</i>, 1, (June 1971) 35–63</li> <li>ISO/IEC 7185: <i>Programming Languages - PASCAL</i>.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">&#91;</span>2<span class="cite-bracket">&#93;</span></a></sup></li></ul> <div class="mw-heading mw-heading2"><h2 id="References">References</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=38" title="Edit section: References"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1239543626">.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}</style><div class="reflist"> <div class="mw-references-wrap"><ol class="references"> <li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFSupcik1997" class="citation web cs1">Supcik, Jacques (December 5, 1997). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20050314152247/http://www.cs.inf.ethz.ch/~wirth/books/Pascal/">"PASCAL - User Manual and Report"</a>. ETH Zürich: Department of Computer Science. Archived from <a rel="nofollow" class="external text" href="http://www.cs.inf.ethz.ch/~wirth/books/Pascal/">the original</a> on March 14, 2005<span class="reference-accessdate">. Retrieved <span class="nowrap">June 23,</span> 2005</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=PASCAL+-+User+Manual+and+Report&amp;rft.pub=ETH+Z%C3%BCrich%3A+Department+of+Computer+Science&amp;rft.date=1997-12-05&amp;rft.aulast=Supcik&amp;rft.aufirst=Jacques&amp;rft_id=http%3A%2F%2Fwww.cs.inf.ethz.ch%2F~wirth%2Fbooks%2FPascal%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AIP+Pascal" class="Z3988"></span></span> </li> <li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFMoore" class="citation web cs1">Moore, Scott A. <a rel="nofollow" class="external text" href="http://www.moorecad.com/standardpascal/">"ANSIISO PASCAL"</a>. Moorecad.com<span class="reference-accessdate">. Retrieved <span class="nowrap">February 21,</span> 2017</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=ANSIISO+PASCAL&amp;rft.pub=Moorecad.com&amp;rft.aulast=Moore&amp;rft.aufirst=Scott+A.&amp;rft_id=http%3A%2F%2Fwww.moorecad.com%2Fstandardpascal%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AIP+Pascal" class="Z3988"></span></span> </li> </ol></div></div> <div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=IP_Pascal&amp;action=edit&amp;section=39" title="Edit section: External links"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><span class="official-website"><span class="url"><a rel="nofollow" class="external text" href="http://www.moorecad.com/ippas/">Official website</a></span></span></li> <li><a rel="nofollow" class="external text" href="http://www.standardpascal.org/">The standard, ISO 7185 Pascal website</a></li> <li><a rel="nofollow" class="external text" href="https://github.com/samiam95124/Pascal-P6/">Pascal-P6 Main Repository</a></li> <li><a rel="nofollow" class="external text" href="https://sourceforge.net/projects/pascal-p6/">Pascal-P6 Mirror Repository</a></li></ul> <div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}</style><style data-mw-deduplicate="TemplateStyles:r1236075235">.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}</style><style data-mw-deduplicate="TemplateStyles:r886047488">.mw-parser-output .nobold{font-weight:normal}</style></div><div role="navigation" class="navbox" aria-labelledby="Pascal_programming_language_family" style="padding:3px"><table class="nowraplinks hlist mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="3"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><style data-mw-deduplicate="TemplateStyles:r1239400231">.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}</style><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"><a href="/wiki/Template:Pascal_programming_language_family" title="Template:Pascal programming language family"><abbr title="View this template">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:Pascal_programming_language_family" title="Template talk:Pascal programming language family"><abbr title="Discuss this template">t</abbr></a></li><li class="nv-edit"><a href="/wiki/Special:EditPage/Template:Pascal_programming_language_family" title="Special:EditPage/Template:Pascal programming language family"><abbr title="Edit this template">e</abbr></a></li></ul></div><div id="Pascal_programming_language_family" style="font-size:114%;margin:0 4em"><a href="/wiki/Pascal_(programming_language)" title="Pascal (programming language)">Pascal programming language</a> family</div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Programming_language#Dialects,_flavors_and_implementations" title="Programming language">Dialects</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Pascal_(programming_language)" title="Pascal (programming language)">Pascal</a></li> <li><a href="/wiki/Object_Pascal" title="Object Pascal">Object Pascal</a></li> <li><a href="/wiki/Pascal_Script" title="Pascal Script">Pascal Script</a></li> <li><a href="/wiki/Oxygene_(programming_language)" title="Oxygene (programming language)">Oxygene</a></li> <li><a href="/wiki/Clascal" title="Clascal">Clascal</a></li> <li><a href="/wiki/Concurrent_Pascal" title="Concurrent Pascal">Concurrent Pascal</a></li> <li><a href="/wiki/Joyce_(programming_language)" title="Joyce (programming language)">Joyce</a></li> <li><a href="/wiki/SuperPascal" title="SuperPascal">SuperPascal</a></li></ul> </div></td><td class="noviewer navbox-image" rowspan="6" style="width:1px;padding:0 0 0 2px"><div><span typeof="mw:File"><a href="/wiki/File:Niklaus_Wirth,_UrGU_(cropped).jpg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/2/22/Niklaus_Wirth%2C_UrGU_%28cropped%29.jpg/90px-Niklaus_Wirth%2C_UrGU_%28cropped%29.jpg" decoding="async" width="90" height="114" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/2/22/Niklaus_Wirth%2C_UrGU_%28cropped%29.jpg/135px-Niklaus_Wirth%2C_UrGU_%28cropped%29.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/2/22/Niklaus_Wirth%2C_UrGU_%28cropped%29.jpg/180px-Niklaus_Wirth%2C_UrGU_%28cropped%29.jpg 2x" data-file-width="306" data-file-height="389" /></a></span></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Compiler" title="Compiler">Compilers</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Current</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Delphi_(software)" title="Delphi (software)">Delphi</a> (<a href="/wiki/History_of_Delphi_(software)" title="History of Delphi (software)">history</a>)</li> <li><a href="/wiki/Oxygene_(programming_language)" title="Oxygene (programming language)">Oxygene</a></li> <li><a href="/wiki/Pascal_(programming_language)#Compilers_and_interpreters" title="Pascal (programming language)">VSI Pascal</a></li> <li><a class="mw-selflink selflink">IP Pascal</a></li> <li><a href="/wiki/Free_Pascal" title="Free Pascal">Free Pascal</a> (<a href="/wiki/Lazarus_(software)" title="Lazarus (software)">Lazarus</a>)</li> <li><a href="/wiki/PascalABC.NET" title="PascalABC.NET">PascalABC.NET</a></li> <li><a href="/wiki/GNU_Pascal" title="GNU Pascal">GNU Pascal</a></li> <li><a href="/wiki/Turbo51" title="Turbo51">Turbo51</a></li> <li><a href="/wiki/Pic_Micro_Pascal" title="Pic Micro Pascal">Pic Micro Pascal</a></li> <li><a href="/wiki/Amsterdam_Compiler_Kit" title="Amsterdam Compiler Kit">ACK</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Discontinued</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Virtual_Pascal" title="Virtual Pascal">Virtual Pascal</a></li> <li><a href="/wiki/Apple_Pascal" title="Apple Pascal">Apple Pascal</a></li> <li><a href="/wiki/Borland_Kylix" title="Borland Kylix">Borland Kylix</a></li> <li><a href="/wiki/Turbo_Pascal" title="Turbo Pascal">Turbo Pascal</a></li> <li><a href="/wiki/Microsoft_Pascal" title="Microsoft Pascal">Microsoft Pascal</a></li> <li><a href="/wiki/UCSD_Pascal" title="UCSD Pascal">UCSD Pascal</a></li> <li><a href="/wiki/JRT_Pascal" title="JRT Pascal">JRT Pascal</a></li> <li><a href="/wiki/Pascal/MT%2B" title="Pascal/MT+">Pascal/MT+</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/API" title="API">API</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Component_Library_for_Cross_Platform" title="Component Library for Cross Platform">CLX</a></li> <li><a href="/wiki/Free_Component_Library" title="Free Component Library">FCL</a></li> <li><a href="/wiki/FireMonkey" title="FireMonkey">FireMonkey</a></li> <li><a href="/wiki/Lazarus_Component_Library" title="Lazarus Component Library">LCL</a></li> <li><a href="/wiki/Object_Windows_Library" title="Object Windows Library">Object Windows Library</a></li> <li><a href="/wiki/OpenWire_(library)" title="OpenWire (library)">OpenWire</a></li> <li><a href="/wiki/Free_Pascal_Runtime_Library" title="Free Pascal Runtime Library">RTL</a></li> <li><a href="/wiki/Turbo_Vision" title="Turbo Vision">Turbo Vision</a></li> <li><a href="/wiki/Visual_Component_Library" title="Visual Component Library">Visual Component Library</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Microcomputer" title="Microcomputer">Microcomputer</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Pascal_MicroEngine" title="Pascal MicroEngine">Pascal MicroEngine</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Comparison_of_programming_languages" title="Comparison of programming languages">Comparisons</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Comparison_of_Pascal_and_C" title="Comparison of Pascal and C">Pascal and C</a></li> <li><a href="/wiki/Comparison_of_Pascal_and_Delphi" title="Comparison of Pascal and Delphi">Pascal and Delphi</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Designer</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Niklaus_Wirth" title="Niklaus Wirth">Niklaus Wirth</a></li></ul> </div></td></tr><tr><td class="navbox-abovebelow" colspan="3"><div> <ul><li><a href="/wiki/Generic_programming#Genericity_in_Pascal" title="Generic programming">Genericity</a></li></ul> <dl><dt><span class="nobold">Related to</span></dt> <dd><a href="/wiki/ALGOL" title="ALGOL">ALGOL</a> (1958)</dd> <dd><a href="/wiki/Modula-2" title="Modula-2">Modula-2</a> (1977)</dd> <dd><a href="/wiki/Ada_(programming_language)" title="Ada (programming language)">Ada</a> (1983)</dd> <dd><a href="/wiki/Oberon_(programming_language)" title="Oberon (programming language)">Oberon</a> (1986)</dd> <dd><a href="/wiki/Modula-3" title="Modula-3">Modula-3</a> (1988)</dd> <dd><a href="/wiki/Oberon-2" title="Oberon-2">Oberon-2</a> (1991)</dd> <dd><a href="/wiki/Component_Pascal" title="Component Pascal">Component Pascal</a> (1991)</dd></dl> </div></td></tr></tbody></table></div> <div class="navbox-styles"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236075235"></div><div role="navigation" class="navbox" aria-labelledby="List_of_widget_toolkits" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1239400231"><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"><a href="/wiki/Template:Widget_toolkits" title="Template:Widget toolkits"><abbr title="View this template">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:Widget_toolkits" title="Template talk:Widget toolkits"><abbr title="Discuss this template">t</abbr></a></li><li class="nv-edit"><a href="/wiki/Special:EditPage/Template:Widget_toolkits" title="Special:EditPage/Template:Widget toolkits"><abbr title="Edit this template">e</abbr></a></li></ul></div><div id="List_of_widget_toolkits" style="font-size:114%;margin:0 4em"><a href="/wiki/List_of_widget_toolkits" title="List of widget toolkits">List</a> of <a href="/wiki/Widget_toolkit" title="Widget toolkit">widget toolkits</a></div></th></tr><tr><td colspan="2" class="navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"><b>Low-level platform-specific</b></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">On <a href="/wiki/AmigaOS" title="AmigaOS">AmigaOS</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Intuition_(Amiga)" title="Intuition (Amiga)">Intuition</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">On <a href="/wiki/Classic_Mac_OS" title="Classic Mac OS">Classic Mac OS</a>, <a href="/wiki/MacOS" title="MacOS">macOS</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Macintosh_Toolbox" title="Macintosh Toolbox">Macintosh Toolbox</a></li> <li><a href="/wiki/Carbon_(API)" title="Carbon (API)">Carbon</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">On <a href="/wiki/Microsoft_Windows" title="Microsoft Windows">Windows</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Windows_API" title="Windows API">Windows API</a></li> <li><a href="/wiki/Universal_Windows_Platform" title="Universal Windows Platform">UWP</a> <ul><li><a href="/wiki/Windows_Runtime" title="Windows Runtime">WinRT</a></li></ul></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">On <a href="/wiki/Unix" title="Unix">Unix</a>,<br />under <a href="/wiki/X_Window_System" title="X Window System">X11</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Xlib" title="Xlib">Xlib</a></li> <li><a href="/wiki/XCB" title="XCB">XCB</a></li> <li><a href="/wiki/X_Toolkit_Intrinsics" title="X Toolkit Intrinsics">X Toolkit Intrinsics</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">On <a href="/wiki/BeOS" title="BeOS">BeOS</a>, <a href="/wiki/Haiku_(operating_system)" title="Haiku (operating system)">Haiku</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/BeOS_API" class="mw-redirect" title="BeOS API">BeOS API</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">On <a href="/wiki/Android_(operating_system)" title="Android (operating system)">Android</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th id="CLI" scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Common_Language_Infrastructure" title="Common Language Infrastructure">CLI</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Mono_(software)#Xamarin.Android" title="Mono (software)">Xamarin.Android</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr><tr><td colspan="2" class="navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"><b>Low Level Cross-platform</b></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Common_Language_Infrastructure" title="Common Language Infrastructure">CLI</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/OpenTK" title="OpenTK">OpenTK</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/C_(programming_language)" title="C (programming language)">C</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/GDK" title="GDK">GDK</a></li> <li><a href="/wiki/Simple_DirectMedia_Layer" title="Simple DirectMedia Layer">Simple DirectMedia Layer</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Java_(programming_language)" title="Java (programming language)">Java</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Java_OpenGL" title="Java OpenGL">JOGL</a></li> <li><a href="/wiki/Lightweight_Java_Game_Library" class="mw-redirect" title="Lightweight Java Game Library">LWJGL</a></li></ul> </div></td></tr><tr><td colspan="2" class="navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"><b>High-level, platform-specific</b></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">On <a href="/wiki/AmigaOS" title="AmigaOS">AmigaOS</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/BOOPSI" title="BOOPSI">BOOPSI</a></li> <li><a href="/wiki/Magic_User_Interface" title="Magic User Interface">MUI</a></li> <li><a href="/wiki/ReAction_GUI" title="ReAction GUI">ReAction GUI</a></li> <li><a href="/wiki/Zune_(widget_toolkit)" title="Zune (widget toolkit)">Zune</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">On <a href="/wiki/Classic_Mac_OS" title="Classic Mac OS">Classic Mac OS</a>, <a href="/wiki/MacOS" title="MacOS">macOS</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Object_Pascal" title="Object Pascal">Object Pascal</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/MacApp" title="MacApp">MacApp</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Objective-C" title="Objective-C">Objective-C</a>, <a href="/wiki/Swift_(programming_language)" title="Swift (programming language)">Swift</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Cocoa_(API)" title="Cocoa (API)">Cocoa</a></li> <li><a href="/wiki/Cocoa_Touch" class="mw-redirect" title="Cocoa Touch">Cocoa Touch</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/C%2B%2B" title="C++">C++</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/MacApp" title="MacApp">MacApp</a></li> <li><a href="/wiki/PowerPlant" title="PowerPlant">PowerPlant</a></li> <li><a href="/wiki/THINK_C" title="THINK C">THINK C</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Common_Language_Infrastructure" title="Common Language Infrastructure">CLI</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Xamarin#Xamarin.Mac" title="Xamarin">Xamarin.Mac</a></li> <li><a href="/wiki/Mono_(software)#Xamarin.iOS" title="Mono (software)">Xamarin.iOS</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">On <a href="/wiki/Microsoft_Windows" title="Microsoft Windows">Windows</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Common_Language_Infrastructure" title="Common Language Infrastructure">CLI</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Windows_Forms" title="Windows Forms">Windows Forms</a></li> <li><a href="/wiki/Extensible_Application_Markup_Language" title="Extensible Application Markup Language">XAML</a> <ul><li><a href="/wiki/Windows_Presentation_Foundation" title="Windows Presentation Foundation">Windows Presentation Foundation</a></li> <li><a href="/wiki/Windows_UI_Library" title="Windows UI Library">Windows UI Library</a></li> <li><a href="/wiki/Microsoft_Silverlight" title="Microsoft Silverlight">Silverlight</a></li></ul></li> <li><a href="/wiki/Microsoft_XNA" title="Microsoft XNA">Microsoft XNA</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/C%2B%2B" title="C++">C++</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Microsoft_Foundation_Class_Library" title="Microsoft Foundation Class Library">MFC</a></li> <li><a href="/wiki/Active_Template_Library" title="Active Template Library">Active Template Library</a></li> <li><a href="/wiki/Windows_Template_Library" title="Windows Template Library">Windows Template Library</a></li> <li><a href="/wiki/Object_Windows_Library" title="Object Windows Library">Object Windows Library</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Object_Pascal" title="Object Pascal">Object Pascal</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Visual_Component_Library" title="Visual Component Library">Visual Component Library</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">On <a href="/wiki/Unix" title="Unix">Unix</a>,<br />under <a href="/wiki/X_Window_System" title="X Window System">X11</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/X_Athena_Widgets" title="X Athena Widgets">Athena (Xaw)</a></li> <li><a href="/wiki/LessTif" title="LessTif">LessTif</a></li> <li><a href="/wiki/Motif_(software)" title="Motif (software)">Motif</a></li> <li><a href="/wiki/OLIT" title="OLIT">OLIT</a></li> <li><a href="/wiki/XForms_(toolkit)" title="XForms (toolkit)">XForms</a></li> <li><a href="/wiki/XView" title="XView">XView</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">On <a href="/wiki/Android_(operating_system)" title="Android (operating system)">Android</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Android_software_development#Qt_for_Android" title="Android software development">Qt for Android</a></li></ul> </div></td></tr><tr><td colspan="2" class="navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"><b>High-level, cross-platform</b></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/C_(programming_language)" title="C (programming language)">C</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Enlightenment_Foundation_Libraries" title="Enlightenment Foundation Libraries">Enlightenment Foundation Libraries</a></li> <li><a href="/wiki/GTK" title="GTK">GTK</a></li> <li><a href="/wiki/IUP_(software)" title="IUP (software)">IUP</a></li> <li><a href="/wiki/XForms_(toolkit)" title="XForms (toolkit)">XForms</a></li> <li><a href="/wiki/XVT" title="XVT">XVT</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/C%2B%2B" title="C++">C++</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Bedrock_(framework)" title="Bedrock (framework)">Bedrock</a></li> <li><a href="/wiki/CEGUI" title="CEGUI">CEGUI</a></li> <li><a href="/wiki/Component_Library_for_Cross_Platform" title="Component Library for Cross Platform">Component Library for Cross Platform</a></li> <li><a href="/wiki/FLTK" title="FLTK">FLTK</a></li> <li><a href="/wiki/Fox_toolkit" title="Fox toolkit">FOX toolkit</a></li> <li><a href="/wiki/OpenGL_User_Interface_Library" class="mw-redirect" title="OpenGL User Interface Library">OpenGL User Interface Library</a></li> <li><a href="/wiki/Gtkmm" title="Gtkmm">gtkmm</a></li> <li><a href="/wiki/JUCE" title="JUCE">JUCE</a></li> <li><a href="/wiki/Qt_(software)" title="Qt (software)">Qt</a></li> <li><a href="/wiki/Rogue_Wave_Software" title="Rogue Wave Software">Rogue Wave Views</a></li> <li><a href="/wiki/TnFOX" class="mw-redirect" title="TnFOX">TnFOX</a></li> <li><a href="/wiki/Ultimate%2B%2B" title="Ultimate++">U++</a></li> <li><a href="/wiki/Wt_(web_toolkit)" title="Wt (web toolkit)">Wt</a></li> <li><a href="/wiki/WxWidgets" title="WxWidgets">wxWidgets</a></li> <li><a href="/wiki/Simple_and_Fast_Multimedia_Library" title="Simple and Fast Multimedia Library">Simple and Fast Multimedia Library</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Objective-C" title="Objective-C">Objective-C</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/GNUstep" title="GNUstep">GNUstep</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Common_Language_Infrastructure" title="Common Language Infrastructure">CLI</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Gtk_Sharp" class="mw-redirect" title="Gtk Sharp">Gtk#</a></li> <li><a href="/wiki/Tao_Framework" title="Tao Framework">Tao Framework</a> <ul><li><a href="/wiki/OpenTK" title="OpenTK">OpenTK</a></li></ul></li> <li><a href="/wiki/UIML" title="UIML">UIML</a></li> <li><a href="/wiki/MonoGame" title="MonoGame">MonoGame</a></li> <li><a href="/wiki/Moonlight_(runtime)" title="Moonlight (runtime)">Moonlight</a></li> <li><a href="/wiki/Xamarin#Xamarin.Forms" title="Xamarin">Xamarin.Forms</a></li> <li><a href="/w/index.php?title=XWT_(Mono)&amp;action=edit&amp;redlink=1" class="new" title="XWT (Mono) (page does not exist)">XWT</a><a rel="nofollow" class="external autonumber" href="https://www.mono-project.com/docs/gui/#xwt">[1]</a><a rel="nofollow" class="external autonumber" href="https://github.com/mono/xwt">[2]</a></li> <li><a href="/wiki/.NET#.NET_MAUI" title=".NET">.NET MAUI</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Adobe_Flash" title="Adobe Flash">Adobe Flash</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Apache_Flex" title="Apache Flex">Apache Flex</a> <ul><li><a href="/wiki/MXML" title="MXML">MXML</a></li></ul></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Go_(programming_language)" title="Go (programming language)">Go</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Fyne_(software)" title="Fyne (software)">Fyne</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Haskell" title="Haskell">Haskell</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/WxHaskell" title="WxHaskell">wxHaskell</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Java_(programming_language)" title="Java (programming language)">Java</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Abstract_Window_Toolkit" title="Abstract Window Toolkit">Abstract Window Toolkit</a></li> <li><a href="/wiki/FXML" title="FXML">FXML</a></li> <li><a href="/wiki/JavaFX" title="JavaFX">JavaFX</a></li> <li><a href="/wiki/Qt_Jambi" class="mw-redirect" title="Qt Jambi">Qt Jambi</a></li> <li><a href="/wiki/Swing_(Java)" title="Swing (Java)">Swing</a></li> <li><a href="/wiki/Standard_Widget_Toolkit" title="Standard Widget Toolkit">Standard Widget Toolkit</a></li> <li><a href="/wiki/Google_Web_Toolkit" title="Google Web Toolkit">Google Web Toolkit</a></li> <li><a href="/wiki/Lightweight_User_Interface_Toolkit" title="Lightweight User Interface Toolkit">Lightweight User Interface Toolkit</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/JavaScript" title="JavaScript">JavaScript</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Dojo_Toolkit" title="Dojo Toolkit">Dojo Toolkit</a></li> <li><a href="/wiki/Echo_(framework)" title="Echo (framework)">Echo</a></li> <li><a href="/wiki/Ext_JS" title="Ext JS">Ext JS</a></li> <li><a href="/wiki/Google_Closure_Tools" title="Google Closure Tools">Google Closure Tools</a></li> <li><a href="/wiki/JQuery_UI" title="JQuery UI">jQuery UI</a></li> <li><a href="/wiki/OpenUI5" title="OpenUI5">OpenUI5</a></li> <li><a href="/wiki/Qooxdoo" title="Qooxdoo">Qooxdoo</a></li> <li><a href="/wiki/YUI_Library" title="YUI Library">YUI</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Common_Lisp" title="Common Lisp">Common Lisp</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/LispWorks" title="LispWorks">CAPI</a></li> <li><a href="/wiki/Common_Lisp_Interface_Manager" title="Common Lisp Interface Manager">CLIM</a></li> <li><a href="/wiki/Allegro_Common_Lisp" title="Allegro Common Lisp">Common Graphics</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Lua_(programming_language)" title="Lua (programming language)">Lua</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/IUP_(software)" title="IUP (software)">IUP</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Pascal_(programming_language)" title="Pascal (programming language)">Pascal</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Lazarus_Component_Library" title="Lazarus Component Library">Lazarus Component Library</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Object_Pascal" title="Object Pascal">Object Pascal</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Component_Library_for_Cross_Platform" title="Component Library for Cross Platform">Component Library for Cross Platform</a></li> <li><a href="/wiki/FpGUI" title="FpGUI">fpGUI</a></li> <li><a class="mw-selflink selflink">IP Pascal</a></li> <li><a href="/wiki/FireMonkey" title="FireMonkey">FireMonkey</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Perl" title="Perl">Perl</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li>Perl/<a href="/wiki/Tk_(software)" title="Tk (software)">Tk</a></li> <li><a href="/wiki/WxPerl" class="mw-redirect" title="WxPerl">wxPerl</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/PHP" title="PHP">PHP</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/PHP-GTK" title="PHP-GTK">PHP-GTK</a></li> <li><a href="/wiki/WxPHP" title="WxPHP">wxPHP</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Python_(programming_language)" title="Python (programming language)">Python</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Tkinter" title="Tkinter">Tkinter</a></li> <li><a href="/wiki/Kivy_(framework)" title="Kivy (framework)">Kivy</a></li> <li><a href="/wiki/PySide" title="PySide">PySide</a></li> <li><a href="/wiki/PyQt" title="PyQt">PyQt</a></li> <li><a href="/wiki/PyGTK" title="PyGTK">PyGTK</a></li> <li><a href="/wiki/WxPython" title="WxPython">wxPython</a></li> <li><a href="/wiki/Pyjs" title="Pyjs">Pyjs</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Shoes_(GUI_toolkit)" class="mw-redirect" title="Shoes (GUI toolkit)">Shoes</a></li> <li><a href="/wiki/QtRuby" class="mw-redirect" title="QtRuby">QtRuby</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Tcl" title="Tcl">Tcl</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Tk_(software)" title="Tk (software)">Tcl/Tk</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/XML" title="XML">XML</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Glade_Interface_Designer" title="Glade Interface Designer">GladeXML</a></li> <li><a href="/wiki/Lively_Kernel" title="Lively Kernel">Lively Kernel</a></li> <li><a href="/wiki/Extensible_Application_Markup_Language" title="Extensible Application Markup Language">Extensible Application Markup Language</a></li> <li><a href="/wiki/XUL" title="XUL">XUL</a></li> <li><a href="/wiki/Wt_(web_toolkit)" title="Wt (web toolkit)">Wt</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Unix_shell" title="Unix shell">shell</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Newt_(programming_library)" title="Newt (programming library)">Newt</a></li> <li><a href="/wiki/CDK_(programming_library)" title="CDK (programming library)">CDK</a></li> <li><a href="/wiki/Dialog_(software)" title="Dialog (software)">Dialog</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Dart_(programming_language)" title="Dart (programming language)">Dart</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Flutter_(software)" title="Flutter (software)">Flutter</a></li></ul> </div></td></tr></tbody></table></div> <!-- NewPP limit report Parsed by mw‐web.eqiad.main‐5dc468848‐kwxnb Cached time: 20241124202314 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.413 seconds Real time usage: 0.545 seconds Preprocessor visited node count: 2637/1000000 Post‐expand include size: 109064/2097152 bytes Template argument size: 10183/2097152 bytes Highest expansion depth: 14/100 Expensive parser function count: 8/500 Unstrip recursion depth: 1/20 Unstrip post‐expand size: 52302/5000000 bytes Lua time usage: 0.226/10.000 seconds Lua memory usage: 4860256/52428800 bytes Number of Wikibase entities loaded: 1/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 427.826 1 -total 23.04% 98.554 6 Template:Navbox 19.99% 85.517 1 Template:Pascal_programming_language_family 19.13% 81.845 1 Template:Multiple_issues 15.36% 65.716 1 Template:Reflist 15.02% 64.271 1 Template:Short_description 14.52% 62.124 3 Template:ISBN 13.30% 56.920 3 Template:Ambox 12.74% 54.515 1 Template:More_citations_needed 12.23% 52.307 2 Template:Cite_web --> <!-- Saved in parser cache with key enwiki:pcache:idhash:2096603-0!canonical and timestamp 20241124202314 and revision id 1259369094. Rendering was triggered because: page-view --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://en.wikipedia.org/w/index.php?title=IP_Pascal&amp;oldid=1259369094">https://en.wikipedia.org/w/index.php?title=IP_Pascal&amp;oldid=1259369094</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Help:Category" title="Help:Category">Categories</a>: <ul><li><a href="/wiki/Category:Pascal_programming_language_family" title="Category:Pascal programming language family">Pascal programming language family</a></li><li><a href="/wiki/Category:Pascal_(programming_language)_compilers" title="Category:Pascal (programming language) compilers">Pascal (programming language) compilers</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Hidden categories: <ul><li><a href="/wiki/Category:Articles_with_short_description" title="Category:Articles with short description">Articles with short description</a></li><li><a href="/wiki/Category:Short_description_matches_Wikidata" title="Category:Short description matches Wikidata">Short description matches Wikidata</a></li><li><a href="/wiki/Category:Articles_needing_additional_references_from_November_2016" title="Category:Articles needing additional references from November 2016">Articles needing additional references from November 2016</a></li><li><a href="/wiki/Category:All_articles_needing_additional_references" title="Category:All articles needing additional references">All articles needing additional references</a></li><li><a href="/wiki/Category:Wikipedia_introduction_cleanup_from_April_2018" title="Category:Wikipedia introduction cleanup from April 2018">Wikipedia introduction cleanup from April 2018</a></li><li><a href="/wiki/Category:All_pages_needing_cleanup" title="Category:All pages needing cleanup">All pages needing cleanup</a></li><li><a href="/wiki/Category:Articles_covered_by_WikiProject_Wikify_from_April_2018" title="Category:Articles covered by WikiProject Wikify from April 2018">Articles covered by WikiProject Wikify from April 2018</a></li><li><a href="/wiki/Category:All_articles_covered_by_WikiProject_Wikify" title="Category:All articles covered by WikiProject Wikify">All articles covered by WikiProject Wikify</a></li><li><a href="/wiki/Category:Articles_with_multiple_maintenance_issues" title="Category:Articles with multiple maintenance issues">Articles with multiple maintenance issues</a></li><li><a href="/wiki/Category:Use_mdy_dates_from_May_2018" title="Category:Use mdy dates from May 2018">Use mdy dates from May 2018</a></li><li><a href="/wiki/Category:Articles_that_may_contain_original_research_from_February_2017" title="Category:Articles that may contain original research from February 2017">Articles that may contain original research from February 2017</a></li><li><a href="/wiki/Category:All_articles_that_may_contain_original_research" title="Category:All articles that may contain original research">All articles that may contain original research</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 24 November 2024, at 20:23<span class="anonymous-show">&#160;(UTC)</span>.</li> <li id="footer-info-copyright">Text is available under the <a href="/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License" title="Wikipedia:Text of the Creative Commons Attribution-ShareAlike 4.0 International License">Creative Commons Attribution-ShareAlike 4.0 License</a>; additional terms may apply. By using this site, you agree to the <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use" class="extiw" title="foundation:Special:MyLanguage/Policy:Terms of Use">Terms of Use</a> and <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy" class="extiw" title="foundation:Special:MyLanguage/Policy:Privacy policy">Privacy Policy</a>. Wikipedia® is a registered trademark of the <a rel="nofollow" class="external text" href="https://wikimediafoundation.org/">Wikimedia Foundation, Inc.</a>, a non-profit organization.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:About">About Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:General_disclaimer">Disclaimers</a></li> <li id="footer-places-contact"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us">Contact Wikipedia</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/en.wikipedia.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//en.m.wikipedia.org/w/index.php?title=IP_Pascal&amp;mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-5cd4cd96d5-c8skm","wgBackendResponseTime":137,"wgPageParseReport":{"limitreport":{"cputime":"0.413","walltime":"0.545","ppvisitednodes":{"value":2637,"limit":1000000},"postexpandincludesize":{"value":109064,"limit":2097152},"templateargumentsize":{"value":10183,"limit":2097152},"expansiondepth":{"value":14,"limit":100},"expensivefunctioncount":{"value":8,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":52302,"limit":5000000},"entityaccesscount":{"value":1,"limit":400},"timingprofile":["100.00% 427.826 1 -total"," 23.04% 98.554 6 Template:Navbox"," 19.99% 85.517 1 Template:Pascal_programming_language_family"," 19.13% 81.845 1 Template:Multiple_issues"," 15.36% 65.716 1 Template:Reflist"," 15.02% 64.271 1 Template:Short_description"," 14.52% 62.124 3 Template:ISBN"," 13.30% 56.920 3 Template:Ambox"," 12.74% 54.515 1 Template:More_citations_needed"," 12.23% 52.307 2 Template:Cite_web"]},"scribunto":{"limitreport-timeusage":{"value":"0.226","limit":"10.000"},"limitreport-memusage":{"value":4860256,"limit":52428800}},"cachereport":{"origin":"mw-web.eqiad.main-5dc468848-kwxnb","timestamp":"20241124202314","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"IP Pascal","url":"https:\/\/en.wikipedia.org\/wiki\/IP_Pascal","sameAs":"http:\/\/www.wikidata.org\/entity\/Q5973171","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q5973171","author":{"@type":"Organization","name":"Contributors to Wikimedia projects"},"publisher":{"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2005-06-23T00:37:04Z","dateModified":"2024-11-24T20:23:12Z","headline":"implementation of Pascal programming language"}</script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10