title: Fossil fuel power station

text: The second law of thermodynamics states that any closed-loop cycle can only convert a fraction of the heat produced during combustion into mechanical work. The rest of the heat, called waste heat, must be released into a cooler environment during the return portion of the cycle. The fraction of heat released into a cooler medium must be equal or larger than the ratio of absolute temperatures of the cooling system (environment) and the heat source (combustion furnace). Raising the furnace temperature improves the efficiency but complicates the design, primarily by the selection of alloys used for construction, making the furnace more expensive. The waste heat cannot be converted into mechanical energy without an even cooler cooling system. However, it may be used in cogeneration plants to heat buildings, produce hot water, or to heat materials on an industrial scale, such as in some oil refineries, plants, and chemical synthesis plants.


title: Fossil fuel power station

text: Typical thermal efficiency for utility-scale electrical generators is around 37% for coal and oil-fired plants, and 56 – 60% (LEV) for combined-cycle gas-fired plants. Plants designed to achieve peak efficiency while operating at capacity will be less efficient when operating off-design (i.e. temperatures too low.)


title: Fossil fuel power station

text: Practical fossil fuels stations operating as heat engines cannot exceed the Carnot cycle limit for conversion of heat energy into useful work. Fuel cells do not have the same thermodynamic limits as they are not heat engines.


title: Fossil fuel power station

text: The efficiency of a fossil fuel plant may be expressed as its heat rate, expressed in BTU/kilowatthour or megajoules/kilowatthour.


title: Fossil fuel power station

text: In a steam turbine power plant, fuel is burned in a furnace and the hot gasses flow through a boiler. Water is converted to steam in the boiler; additional heating stages may be included to superheat the steam. The hot steam is sent through controlling valves to a turbine. As the steam expands and cools, its energy is transferred to the turbine blades which turn a generator. The spent steam has very low pressure and energy content; this water vapor is fed through a condenser, which removes heat from the steam. The condensed water is then pumped into the boiler to repeat the cycle.


title: Fossil fuel power station

text: Emissions from the boiler include carbon dioxide, oxides of sulfur, and in the case of coal fly ash from non-combustible substances in the fuel. Waste heat from the condenser is transferred either to the air, or sometimes to a cooling pond, lake or river.


title: Fossil fuel power station

text: One type of fossil fuel power plant uses a gas turbine in conjunction with a heat recovery steam generator (HRSG). It is referred to as a combined cycle power plant because it combines the Brayton cycle of the gas turbine with the Rankine cycle of the HRSG. The turbines are fueled either with natural gas or fuel oil.


title: Fossil fuel power station

text: Diesel engine generator sets are often used for prime power in communities not connected to a widespread power grid. Emergency (standby) power systems may use reciprocating internal combustion engines operated by fuel oil or natural gas. Standby generators may serve as emergency power for a factory or data center, or may also be operated in parallel with the local utility system to reduce peak power demand charge from the utility. Diesel engines can produce strong torque at relatively low rotational speeds, which is generally desirable when driving an alternator, but diesel fuel in long-term storage can be subject to problems resulting from water accumulation and chemical decomposition. Rarely used generator sets may correspondingly be installed as natural gas or LPG to minimize the fuel system maintenance requirements.


title: Fossil fuel power station

text: Spark-ignition internal combustion engines operating on gasoline (petrol), propane, or LPG are commonly used as portable temporary power sources for construction work, emergency power, or recreational uses.


title: Fossil fuel power station

text: Reciprocating external combustion engines such as the Stirling engine can be run on a variety of fossil fuels, as well as renewable fuels or industrial waste heat. Installations of Stirling engines for power production are relatively uncommon.


title: Fossil fuel power station

text: Historically, the first central stations used reciprocating steam engines to drive generators. As the size of the electrical load to be served grew, reciprocating units became too large and cumbersome to install economically. The steam turbine rapidly displaced all reciprocating engines in central station service.


title: Fossil fuel power station

text: Coal is the most abundant fossil fuel on the planet, and widely used as the source of energy in thermal power stations and is a relatively cheap fuel. Coal is an impure fuel and produces more greenhouse gas and pollution than an equivalent amount of petroleum or natural gas. For instance, the operation of a 1000-MWe coal-fired power plant results in a nuclear radiation dose of 490 person-rem/year, compared to 136 person-rem/year, for an equivalent nuclear power plant including uranium mining, reactor operation and waste disposal.


title: Fossil fuel power station

text: Coal is delivered by highway truck, rail, barge, collier ship or coal slurry pipeline. Generating stations adjacent to a mine may receive coal by conveyor belt or massive diesel-electric-drive trucks.


title: Fossil fuel power station

text: Gas is a very common fuel and has mostly replaced coal in countries where gas was found in the late 20th century or early 21st century, such as the US and UK. Sometimes coal-fired steam plants are refitted to use natural gas to reduce net carbon dioxide emissions. Oil-fuelled plants may be converted to natural gas to lower operating cost.


title: Fossil fuel power station

text: Heavy fuel oil was once a significant source of energy for electric power generation. After oil price increases of the 1970s, oil was displaced by coal and later natural gas. Distillate oil is still important as the fuel source for diesel engine power plants used especially in isolated communities not interconnected to a grid. Liquid fuels may also be used by gas turbine power plants, especially for peaking or emergency service. Of the three fossil fuel sources, oil has the advantages of easier transportation and handling than solid coal, and easier on-site storage than natural gas.


title: Fossil fuel power station

text: Combined heat and power (CHP), also known as cogeneration, is the use of a thermal power station to provide both electric power and heat (the latter being used, for example, for district heating purposes). This technology is practiced not only for domestic heating (low temperature) but also for industrial process heat, which is often high temperature heat. Calculations show that Combined Heat and Power District Heating (CHPDH) is the cheapest method in reducing (but not eliminating) carbon emissions, if conventional fossil fuels remain to be burned.


title: Fossil fuel power station

text: Thermal power plants are one of the main artificial sources of producing toxic gases and particulate matter. Fossil fuel power plants cause the emission of pollutants such as , SO, , CO, PM, organic gases and polycyclic aromatic hydrocarbons. World organizations and international agencies, like the IEA, are concerned about the environmental impact of burning fossil fuels, and coal in particular. The combustion of coal contributes the most to acid rain and air pollution, and has been connected with global warming. Due to the chemical composition of coal there are difficulties in removing impurities from the solid fuel prior to its combustion. Modern day coal power plants pollute less than older designs due to new "scrubber" technologies that filter the exhaust air in smoke stacks. However, emission levels of various pollutants are still on average several times greater than natural gas power plants and the scrubbers transfer the captured pollutants to wastewater, which still requires treatment in order to avoid pollution of receiving water bodies. In these modern designs, pollution from coal-fired power plants comes from the emission of gases such as carbon dioxide, nitrogen oxides, and sulfur dioxide into the air, as well a significant volume of wastewater which may contain lead, mercury, cadmium and chromium, as well as arsenic, selenium and nitrogen compounds (nitrates and nitrites).


title: Fossil fuel power station

text: Acid rain is caused by the emission of nitrogen oxides and sulfur dioxide. These gases may be only mildly acidic themselves, yet when they react with the atmosphere, they create acidic compounds such as sulfurous acid, nitric acid and sulfuric acid which fall as rain, hence the term acid rain. In Europe and the US, stricter emission laws and decline in heavy industries have reduced the environmental hazards associated with this problem, leading to lower emissions after their peak in 1960s.


title: Fossil fuel power station

text: In 2008, the European Environment Agency (EEA) documented fuel-dependent emission factors based on actual emissions from power plants in the European Union.


title: Fossil fuel power station

text: Electricity generation using carbon-based fuels is responsible for a large fraction of carbon dioxide (CO) emissions worldwide and for 34% of U.S. man-made carbon dioxide emissions in 2010. In the U.S. 70% of electricity is generated by combustion of fossil fuels.


title: Fossil fuel power station

text: Coal contains more carbon than oil or natural gas fossil fuels, resulting in greater volumes of carbon dioxide emissions per unit of electricity generated. In 2010, coal contributed about 81% of CO emissions from generation and contributed about 45% of the electricity generated in the United States. In 2000, the carbon intensity (CO emissions) of U.S. coal thermal combustion was 2249 lbs/MWh (1,029 kg/MWh) while the carbon intensity of U.S. oil thermal generation was 1672 lb/MWh (758 kg/MWh or 211 kg/GJ) and the carbon intensity of U.S. natural gas thermal production was 1135 lb/MWh (515 kg/MWh or 143 kg/GJ).


title: Fossil fuel power station

text: The Intergovernmental Panel on Climate Change (IPCC) reports that increased quantities of the greenhouse gas carbon dioxide within the atmosphere will "very likely" lead to higher average temperatures on a global scale (global warming). Concerns regarding the potential for such warming to change the global climate prompted IPCC recommendations calling for large cuts to CO emissions worldwide.


title: Fossil fuel power station

text: Emissions can be reduced with higher combustion temperatures, yielding more efficient production of electricity within the cycle. the price of emitting CO to the atmosphere is much lower than the cost of adding carbon capture and storage (CCS) to fossil fuel power stations, so owners have not done so.


title: Fossil fuel power station

text: where "capacity" is the "nameplate capacity" or the maximum allowed output of the plant, "capacity factor" or "load factor" is a measure of the amount of power that a plant produces compared with the amount it would produce if operated at its rated capacity nonstop, heat rate is thermal energy in/electrical energy out, emission intensity (also called emission factor) is the CO emitted per unit of heat generated for a particular fuel.


title: Fossil fuel power station

text: As an example, a new 1500 MW supercritical lignite-fueled power station running on average at half its capacity might have annual CO emissions estimated as:


title: Fossil fuel power station

text: The results of similar estimations are mapped by organisations such as Global Energy Monitor, Carbon Tracker and ElectricityMap.


title: Fossil fuel power station

text: Alternatively it may be possible to measure emissions (perhaps indirectly via another gas) from satellite observations.


title: Fossil fuel power station

text: Another problem related to coal combustion is the emission of particulates that have a serious impact on public health. Power plants remove particulate from the flue gas with the use of a bag house or electrostatic precipitator. Several newer plants that burn coal use a different process, Integrated Gasification Combined Cycle in which synthesis gas is made out of a reaction between coal and water. The synthesis gas is processed to remove most pollutants and then used initially to power gas turbines. Then the hot exhaust gases from the gas turbines are used to generate steam to power a steam turbine. The pollution levels of such plants are drastically lower than those of "classic" coal power plants.


title: Fossil fuel power station

text: Particulate matter from coal-fired plants can be harmful and have negative health impacts. Studies have shown that exposure to particulate matter is related to an increase of respiratory and cardiac mortality. Particulate matter can irritate small airways in the lungs, which can lead to increased problems with asthma, chronic bronchitis, airway obstruction, and gas exchange.


title: Fossil fuel power station

text: There are different types of particulate matter, depending on the chemical composition and size. The dominant form of particulate matter from coal-fired plants is coal fly ash, but secondary sulfate and nitrate also comprise a major portion of the particulate matter from coal-fired plants. Coal fly ash is what remains after the coal has been combusted, so it consists of the incombustible materials that are found in the coal.


title: Fossil fuel power station

text: The size and chemical composition of these particles affects the impacts on human health. Currently coarse (diameter greater than 2.5 μm) and fine (diameter between 0.1 μm and 2.5 μm) particles are regulated, but ultrafine particles (diameter less than 0.1 μm) are currently unregulated, yet they pose many dangers. Unfortunately much is still unknown as to which kinds of particulate matter pose the most harm, which makes it difficult to come up with adequate legislation for regulating particulate matter.


title: Fossil fuel power station

text: There are several methods of helping to reduce the particulate matter emissions from coal-fired plants. Roughly 80% of the ash falls into an ash hopper, but the rest of the ash then gets carried into the atmosphere to become coal-fly ash. Methods of reducing these emissions of particulate matter include:


title: Fossil fuel power station

text: The baghouse has a fine filter that collects the ash particles, electrostatic precipitators use an electric field to trap ash particles on high-voltage plates, and cyclone collectors use centrifugal force to trap particles to the walls. A recent study indicates that sulfur emissions from fossil fueled power stations in China may have caused a 10-year lull in global warming (1998-2008).


title: Fossil fuel power station

text: Fossil-fuel power stations, particularly coal-fired plants, are a major source of industrial wastewater. Wastewater streams include flue-gas desulfurization, fly ash, bottom ash and flue gas mercury control. Plants with air pollution controls such as wet scrubbers typically transfer the captured pollutants to the wastewater stream.


title: Fossil fuel power station

text: Ash ponds, a type of surface impoundment, are a widely used treatment technology at coal-fired plants. These ponds use gravity to settle out large particulates (measured as total suspended solids) from power plant wastewater. This technology does not treat dissolved pollutants. Power stations use additional technologies to control pollutants, depending on the particular wastestream in the plant. These include dry ash handling, closed-loop ash recycling, chemical precipitation, biological treatment (such as an activated sludge process), membrane systems, and evaporation-crystallization systems. In 2015 EPA published a regulation pursuant to the Clean Water Act that requires US power plants to use one or more of these technologies. Technological advancements in ion exchange membranes and electrodialysis systems has enabled high efficiency treatment of flue-gas desulfurization wastewater to meet the updated EPA discharge limits.


title: Fossil fuel power station

text: Coal is a sedimentary rock formed primarily from accumulated plant matter, and it includes many inorganic minerals and elements which were deposited along with organic material during its formation. As the rest of the Earth's crust, coal also contains low levels of uranium, thorium, and other naturally occurring radioactive isotopes whose release into the environment leads to radioactive contamination. While these substances are present as very small trace impurities, enough coal is burned that significant amounts of these substances are released. A 1,000 MW coal-burning power plant could have an uncontrolled release of as much as 5.2 metric tons per year of uranium (containing of uranium-235) and 12.8 metric tons per year of thorium. In comparison, a 1,000 MW nuclear plant will generate about 30 metric tons of high-level radioactive solid packed waste per year. It is estimated that during 1982, US coal burning released 155 times as much uncontrolled radioactivity into the atmosphere as the Three Mile Island incident. The collective radioactivity resulting from all coal burning worldwide between 1937 and 2040 is estimated to be 2,700,000 curies or 0.101 EBq. During normal operation, the effective dose equivalent from coal plants is 100 times that from nuclear plants. Normal operation however, is a deceiving baseline for comparison: just the Chernobyl nuclear disaster released, in iodine-131 alone, an estimated 1.76 EBq. of radioactivity, a value one order of magnitude above this value for total emissions from all coal burned within a century, while the iodine-131, the major radioactive substance which comes out in accident situations, has a half life of just 8 days.


title: Fossil fuel power station

text: A study released in August 2010 that examined state pollution data in the United States by the organizations Environmental Integrity Project, the Sierra Club and Earthjustice found that coal ash produced by coal-fired power plants dumped at sites across 21 U.S. states has contaminated ground water with toxic elements. The contaminants including the poisons arsenic and lead. The study concluded that the problem of coal ash-caused water contamination is even more extensive in the United States than has been estimated. The study brought to 137 the number of ground water sites across the United States that are contaminated by power plant-produced coal ash.


title: Fossil fuel power station

text: Arsenic has been shown to cause skin cancer, bladder cancer and lung cancer, and lead damages the nervous system. Coal ash contaminants are also linked to respiratory diseases and other health and developmental problems, and have disrupted local aquatic life. Coal ash also releases a variety of toxic contaminants into nearby air, posing a health threat to those who breathe in fugitive coal dust.


title: Fossil fuel power station

text: U.S. government scientists tested fish in 291 streams around the country for mercury contamination. They found mercury in every fish tested, according to the study by the U.S. Department of the Interior. They found mercury even in fish of isolated rural waterways. Twenty five percent of the fish tested had mercury levels above the safety levels determined by the U.S. Environmental Protection Agency (EPA) for people who eat the fish regularly. The largest source of mercury contamination in the United States is coal-fueled power plant emissions.


title: Fossil fuel power station

text: Several methods exist to reduce pollution and reduce or eliminate carbon emissions of fossil fuel power plants. A frequently used and cost-efficient method is to convert a plant to run on a different fuel. This includes conversions of coal power plants to energy crops/biomass or waste and conversions of natural gas power plants to biogas or hydrogen. Conversions of coal powered power plants to waste-fired power plants have an extra benefit in that they can reduce landfilling. In addition, waste-fired power plants can be equipped with material recovery, which is also beneficial to the environment. In some instances, torrefaction of biomass may benefit the power plant if energy crops/biomass is the material the converted fossil fuel power plant will be using. Also, when using energy crops as the fuel, and if implementing biochar production, the thermal power plant can even become carbon negative rather than just carbon neutral. Improving the energy efficiency of a coal-fired power plant can also reduce emissions.


title: Fossil fuel power station

text: Besides simply converting to run on a different fuel, some companies also offer the possibility to convert existing fossil-fuel power stations to grid energy storage systems which use electric thermal energy storage (ETES)


title: Fossil fuel power station

text: Coal pollution mitigation is a process whereby coal is chemically washed of minerals and impurities, sometimes gasified, burned and the resulting flue gases treated with steam, with the purpose of removing sulfur dioxide, and reburned so as to make the carbon dioxide in the flue gas economically recoverable, and storable underground (the latter of which is called "carbon capture and storage"). The coal industry uses the term "clean coal" to describe technologies designed to enhance both the efficiency and the environmental acceptability of coal extraction, preparation and use, but has provided no specific quantitative limits on any emissions, particularly carbon dioxide. Whereas contaminants like sulfur or mercury can be removed from coal, carbon cannot be effectively removed while still leaving a usable fuel, and clean coal plants without carbon sequestration and storage do not significantly reduce carbon dioxide emissions. James Hansen in an open letter to then U.S. President Barack Obama advocated a "moratorium and phase-out of coal plants that do not capture and store CO". In his book "Storms of My Grandchildren", similarly, Hansen discusses his "Declaration of Stewardship", the first principle of which requires "a moratorium on coal-fired power plants that do not capture and sequester carbon dioxide".


title: Fossil fuel power station

text: Hydrogen can at first be created from natural gas through steam reforming, as a step towards a hydrogen economy, thus eventually reducing carbon emissions.


title: Fossil fuel power station

text: Since 2013, the conversion process has been improved by scientists at Karlsruhe Liquid-metal Laboratory (KALLA), using a process called methane pyrolysis.


title: Fossil fuel power station

text: They succeeded in allowing the soot to be easily removed (soot is a byproduct of the process and damaged the working parts in the past -most notably the nickel-iron-cobaltcatalyst-). The soot (which contains the carbon) can then be stored underground and is not released into the atmosphere.


title: Fossil fuel power station

text: there is still a chance of keeping global warming below 1.5 °C if no more fossil fuel power plants are built and some existing fossil fuel power plants are shut down early, together with other measures such as reforestation.


title: Fossil fuel power station

text: Alternatives to fossil fuel power plants include nuclear power, solar power, geothermal power, wind power, hydropower, biomass power plants and other renewable energies (see non-carbon economy). Most of these are proven technologies on an industrial scale, but others are still in prototype form.


title: Fossil fuel power station

text: Some countries only include the cost to produce the electrical energy, and do not take into account the social cost of carbon or the indirect costs associated with the many pollutants created by burning coal (e.g. increased hospital admissions due to respiratory diseases caused by fine smoke particles).


title: Fossil fuel power station

text: When comparing power plant costs, it is customary to start by calculating the cost of power at the generator terminals by considering several main factors. External costs such as connections costs, the effect of each plant on the distribution grid are considered separately as an additional cost to the calculated power cost at the terminals.


title: Fossil fuel power station

text: These costs occur over the 30–50 year life of the fossil fuel power plants, using discounted cash flows.


title: Hsinchu

text: Hsinchu (, Chinese: 新竹, Pinyin: "Xīnzhú", Wade–Giles: "Hsin¹-chu²") is a city located in northwestern Taiwan. It is the most populous city in Taiwan Province not among the special municipalities, with estimated 450,655 inhabitants. Hsinchu is a coastal city bordering the Taiwan Strait to the west, Hsinchu County to the north and east, and Miaoli County to the south. Nicknamed the "Windy City" for its strong northeastern monsoon during the autumn and winter seasons.


title: Hsinchu

text: The area was originally settled by the Austronesian Taiwanese indigenous peoples, with the settlement being named "Tek-kham" by the Hoklo immigrants. The city was founded by Han Chinese settlers in 1711, and renamed to its current form in 1878. During the Japanese Era, the city was the seat of Shinchiku Prefecture, named after the city. The prefecture encompassed present-day Hsinchu City and County, as well as entire Taoyuan and Miaoli. After the ROC rule in 1945, the urban area of Hsinchu was organized as a provincial city.


title: Hsinchu

text: In 1980, the Taiwanese government established the Hsinchu Science Park, a major industrial park, a significant centre for semiconductor manufacturing, industrial and computer technology development. The park contributes a major proportion of Taiwan's GDP. This made Hsinchu a vital economic hub for its economy; the headquarters of TSMC, world's largest independent semiconductor foundry, and United Microelectronics Corporation, are both located in the park.


title: Hsinchu

text: Besides its industry, Hsinchu is also an important cultural center of Taiwan. The Chenghuang Temple of Hsinchu, built during the Kingdom of Tungning, is a common prayer destination. The research institutions of National Yang Ming Chiao Tung University and National Tsing Hua University are both located near the science park.


title: Hsinchu

text: "Hsin-chu" is the Wade-Giles romanization of the Mandarin pronunciation of the Chinese name . The same name is rendered "Xīnzhú" in Hanyu Pinyin and "Sinjhú" in Tongyong Pinyin.


title: Hsinchu

text: This name refers to the settlement's original Hokkien name "Tek-chhàm" (), meaning "bamboo barrier". The name may transcribe an aboriginal name meaning "Seashore". The same name is variously recorded as Teukcham, Teuxham, Tekcham, and Teckcham; its Mandarin pronunciation appears as Chuchien.


title: Hsinchu

text: Hsinchu is popularly nicknamed "The Windy City" for its windy climate and "The Garden City of Culture and Technology" by its tourism department.


title: Hsinchu

text: The area around Hsinchu City was inhabited by the Taokas aboriginies when the Spanish occupied northern Taiwan in the 17th century. Catholic missionaries reached the settlement of Tek-kham in 1626. The Spanish were expelled by the Dutch a few decades later.


title: Hsinchu

text: Under the Qing, a Chinese town was established at Tek-kham by and other Han settlers in 1711. Wang and his party of over 180 people were natives of Kinmen who first camped alongside what is now Dongqian Street in East District, Hsinchu.


title: Hsinchu

text: As part of the reorganization of Taiwan by Shen Baozhen, the viceroy of Liangjiang, Zhuqian Subprefecture (i.e., Tek-kham) was raised to the level of a county and renamed Xinzhu (i.e., Sin-tek or Hsinchu) in 1878. When Taiwan was made a province in 1887, Hsinchu was made a part of Taipeh Prefecture.


title: Hsinchu

text: During the Japanese occupation following the First Sino-Japanese War, the cityknown at the time as Shinchikuwas among the province's most populous. In 1904, its 16,371 residents ranked it in 7th place, behind Keelung and ahead of Changhua ("Shoka"). Shinchiku was raised to town status in 1920 and city status in 1930. At the same time, it became the seat of Shinchiku Prefecture. In 1941, its prefecture was expanded, annexing Xiangshan ("Kōzan"). Jiugang ("Kyūminato") and Liujia ("Rokka") merged to become Zhubei ("Chikuhoku").


title: Hsinchu

text: The Nationalist government of the Republic of China established the Hsinchu City Government in 1945 to oversee all of what had been Shinchiku Prefecture under the Japanese.


title: Hsinchu

text: In 1946, the Take-Over Committee dissolved and replaced by the Hsinchu County Government, located in Taoyuan. As the administrative districts were readjusted, Hsinchu was granted provincial city status. It used the old prefecture office as its city hall at 120 Road. In February 1946, representative congresses were formed for seven district offices. On 15 April, the city congress was formed. Provincial representatives were elected from among the city legislators.


title: Hsinchu

text: On 16 August 1950, the administrative districts on Taiwan were re-adjusted once more, demarcating 16 counties and 5 provincial cities.


title: Hsinchu

text: In June 1982, under presidential order, the Xiangshan Township of Hsinchu County merged into Hsinchu City. A new municipal government was formally established on 1 July 1982, comprising 103 villages and 1,635 neighborhoods. These were organized into the East, North, and Xiangshan districts by 1November. By June 1983, the new government consisted of three bureaus (Civil Service, Public Works, and Education), four departments (Finance, Social Welfare, Compulsory Military Service, and Land Affairs), four offices (Secretary, Planning, Personnel, and Auditing), and 49 various sections. The Police Department, Tax Department, and Medicine and Hygiene Department were considered affiliate institutions.


title: Hsinchu

text: From 1994 to 1999, as Taiwan made its transition from authoritarian rule to a representative democracy and the mostly "pro forma" provincial level of government began to be dissolved, regulations were established for the self-government of Hsinchu. A deputy mayor, consumer officer, and three consultants were added to the city government. In 2002, the city added a Bureau of Labor and transferred Compulsory Military Service to the Department of Civil Service.


title: Hsinchu

text: A movement is underway from 2021 to have Hsinchu City and Hsinchu County to be upgraded to the nation's seventh special municipality.


title: Hsinchu

text: The city is bordered by Hsinchu County to the north and east, Miaoli County to the south, and the Taiwan Strait to the west.


title: Hsinchu

text: Hsinchu's climate is humid subtropical (Koppen: Cfa). The city is located in a part of the island that has a rainy season that lasts from February to September, with the heaviest time coming late April through August during the southwest monsoon, and also experiences heavy "plum rains" in May and early June. The city succumbs to hot humid weather from June until September, while October to December are arguably the most pleasant times of year. Hsinchu is affected by easterly winds off of the East China Sea. Natural hazards such as typhoons and earthquakes are common in the region.


title: Hsinchu

text: Hsinchu City is administered as a city. North District is the seat of Hsinchu City which houses the Hsinchu City Government and Hsinchu City Council. The incumbent Acting Mayor of Hsinchu City is Chen Chang-hsien.


title: Hsinchu

text: Hsinchu City voted one Kuomintang legislator to be in the Legislative Yuan during the 2020 Taiwan general election.


title: Hsinchu

text: The Hsinchu Science Park is home to 360 high tech companies. As a result, the city has the highest income level in Taiwan.


title: Hsinchu

text: The purpose of the park is to attract high tech investment to Taiwan and to make the area the economic center for the information industry. The park is designed to cater for high quality R&D, production, work, life and also recreation. From its establishment in 1978, the government has invested over NT$30 billion on software and hardware ventures. In 2001, it developed of land in the park and in southern Hsinchu, attracting 312 high-tech companies' investments. Viewing the performance of Hsinchu Science Park in the past 21 years, it can be said that it holds a decisive position in the economic development in Taiwan, with international acclaim.


title: Hsinchu

text: Although the semiconductor and related electronic businesses have been doing well, they face fierce competition from South Korea and the United States. This has resulted in lower profits and over-supply of some electronic products such as memory and semiconductors. Therefore, manufacturers, government, academia, and the R&D sectors all recognize the challenges faced by Taiwan's high-tech development. The government has endeavored to upgrade Hsinchu Science Park into a global manufacturing and R&D center of high-end products. They also plan to intensify the cooperation among the manufacturing, academic, and research sectors by introducing incubation centers, in order to elevate the technological standard in the park. Further, through the development of the northern, central, and southern industrial park and its satellite sites, it hopes to sow the seeds of high tech business in all of Taiwan, leading to a vigorous era of high tech development.


title: Hsinchu

text: In 2020, Hsinchu is classified as a "Sufficiency" level global city by the Globalization and World Cities Research Network.


title: Hsinchu

text: Hsinchu City is one of the most focused educational centers in northern Taiwan. It has six universities in this concentrated area and among these universities, National Yang Ming Chiao Tung University and National Tsing Hua University are highly focused by government in Taiwan on its academic development. Other public and private educational institutions in the city included 33 elementary schools, 19 middle schools, 12 high school and complete secondary school.


title: Hsinchu

text: Hsinchu City is mainly served by Hsinchu railway station along with five other minor TRA stations on both Western Trunk line and Neiwan line. There is also an HSR station in nearby Zhubei, Hsinchu County on Taiwan High Speed Rail.


title: Hsinchu

text: Hsinchu City has recently created a series of cycling routes to help cyclists navigate the city more easily. Hsinchu is home to many cycling clubs


title: Hsinchu

text: Pleasure and fishing ports are located at Nanliao Street, North District and in Haishan, Xiangshan district.


title: Al-Futtaim Group

text: The group was founded in the 1930s and expanded rapidly in the 1940s and 1950s becoming an integrated commercial, industrial, and services organization.


title: Al-Futtaim Group

text: The Al-Futtaim family split its business interests in 2000 with Abdulla Al Futtaim controlling the automotive and mainly retail business, and his cousin Majid controlling a property development business (now known as Majid Al Futtaim Group).


title: Al-Futtaim Group

text: In September 2013, the group bid $86 million to take full control of the Nairobi-based car retailer CMC Holdings.


title: Al-Futtaim Group

text: Al-Futtaim Group employs over 44,000 people and operates eight divisions comprising automotive, electronics, insurance, services, real estate, retail, industries, and overseas. Sheikh Mohammed bin Rashid Al Maktoum mediated a settlement between Abdulla Al Futtaim and his rival, cousin Majid Al Futtaim, in 2000 which split the assets, liabilities and operations of the then-larger Al Futtaim Group.


title: Al-Futtaim Group

text: The CEO of the group was Robert Willett until he suddenly resigned in January 2011. After that, Omar Al-Futtaim became a board member, CEO and vice chairman.


title: Al-Futtaim Group

text: In September 2022, the group was listed by Forbes in the Middle East's Top 100 Arab Family Businesses, ranking third.


title: Al-Futtaim Group

text: Al Futtaim Motors: Established by the group in 1955, it is the exclusive distributor of Toyota, Lexus, Hino trucks and Toyota Material Handling equipment in the UAE.


title: Al-Futtaim Group

text: Robinsons & Co.: In April 2008, the Al-Futtaim Group bought 88% of the shares of Robinsons & Co. at S$7.20 per share.


title: Al-Futtaim Group

text: IKEA: The group holds the franchise rights to operate IKEA stores in UAE, Qatar, Egypt and Oman. It operates four IKEA stores in UAE, Qatar and Egypt.


title: Al-Futtaim Group

text: Ace Hardware: First opened in Dubai in 1991 by the group, Ace now trades in six locations in the United Arab Emirates including Dubai, Abu Dhabi, Ras Al Khaimah, and Al Ain. Each of the six stores are also certified as ‘Ace Helpful’ in keeping with global Ace standards.


title: Al-Futtaim Group

text: Orient: Founded by Al-Futtaim in 1982, Orient is the largest insurance company in the United Arab Emirates by financial capital, with up to 500 million AED (approx. 136.1 million USD). Headquartered in Dubai, it works with major clients in Abu Dhabi, Dubai, Sharjah, and Ras Al Khaimah, as well as Oman and Bahrain.


title: Al-Futtaim Group

text: Toys "R" Us: The firm opened the U.A.E.'s first Toys "R" Us store in 1995, and owns and operates 19 Toys "R" Us and Babies "R" Us stores across Bahrain, Egypt, Kuwait, Oman, Qatar, and the United Arab Emirates. Its stores were unaffected by the franchiser's 2018 bankruptcy in the United States.


title: 203 mm howitzer M1931 (B-4)

text: 203 mm howitzer M1931 (B-4) (, GRAU index 52-G-625) was a 203 mm (8 inch) Soviet high-power heavy howitzer. During the Second World War, it was under the command of the Stavka's strategic reserve. It was nicknamed "Stalin's sledgehammer" by German soldiers. These guns were used with success against Finnish pillboxes at the Mannerheim Line, heavy German fortifications and in urban combat for destroying protected buildings and bunkers. These guns were used until the end of the war in the Battle of Berlin, during which the Red Army used them to smash German fortifications at point blank range with their heavy 203mm shells. In the spring of 1944, a KV-1S tank chassis was used to create a self-propelled variant, the S-51. The heavy recoil from the muzzle blast threw the crew off their seats and damaged the transmission, and so it was cancelled.


title: 203 mm howitzer M1931 (B-4)

text: With an elevation angle of up to 60 degrees and 12 propellant loads to choose from, the B-4 virtually met all the expectations it was given, capable of crushing its targets via an optimal projectile trajectory.


title: 203 mm howitzer M1931 (B-4)

text: The Artillery Committee (known in short as the Artkom), then led by R.A. Durlyakhov, set up an artillery design bureau in November 1920, with Frantz Lender as its leader. This design bureau was entrusted with work on "a 203mm howitzer with long range" in January 1926, with the Artkom issuing a resolution on December 11, 1926 to "entrust the Artkom design bureau with designing a 203mm howitzer of long range within 46 months". The Bolshevik plant (now Obukhov State Plant) took over after Lender's death in 1927, with the Artkom design bureau charged with designing universal 122mm corps guns and 203/152 mm cannons as Letter No. 51255/12Ya5 specified.


title: 203 mm howitzer M1931 (B-4)

text: The 203mm howitzer was presented in two variants, namely one with and one without the muzzle brake. The two guns were otherwise identical to each other. Preference was eventually given to the brake-free variant with technical drawings by the Artkom design bureau, and a tracked carriage (a common sight on heavy Soviet artillery pieces) from the Bolshevik plant. The first prototype B-4 howitzer was made in the Bolshevik plant in early 1931. Firing tests were made from July to August 1931 with the aim of choosing appropriate shells for use by the B-4. The howitzer was accepted into service as the 203 mm howitzer model 1931 after extensive field and combat tests in 1933.


title: 203 mm howitzer M1931 (B-4)

text: Production of the B-4 started simultaneously at the Bolshevik plant and the Barrikady plant (the latter is now Titan-Barrikady), with the latter experiencing serious production difficulties. It was only able to prepare a single howitzer for delivery in 1933, but delivery was not completed. It delivered its first two B-4's during the first half of 1934, delivering a further 13 until the end of the year, after which production at the plant paused until 1938. This pause was due to the aforementioned difficulties and the planned shift to 122 mm A-19 corps gun production. The Bolshevik plant did not do well either, producing 104 howitzers from 1932 to 1936 and 42 in 1937. This caused production to shift back to Stalingrad. 75 howitzers were made there in 1938, and 181 the next year. The Barrikady plant managed a 165-piece batch in 1940, and a further batch of 300 pieces in 1941. The final three howitzers were made in Stalingrad from remaining reserves. The Novokramatorsky plant joined production in 1938/39, producing 49 howitzers in 1938 with the Bolshevik plant, a further 48 in 1939, 3 in 1940 and 26 in 1941. Of the 326 B-4 howitzers made in 1941, 221 were delivered in the first half of 1941, with serial production ending in October 1941, when the final nine howitzers were delivered.


title: 203 mm howitzer M1931 (B-4)

text: Technical drawings of the B-4 differed from plant to plant, with their own modifications to facilitate serial production. As a result, despite bearing the common designation of B-4, there were virtually two different models of the howitzers in practical service. Drawings were not unified until 1937, when individual parts and assembly designs, then already tested both in production and in trials, had their layouts changed. The only innovation was the tracked carriage, which allowed firing outright from the ground without any kind of special platforms, unlike many similar weapons. Tracks were also used because the Soviets had invested a great deal into tractor factories during the 1920s and 1930s, making the use of tracks an obvious and economical choice of carriage. Attempts to fully unify howitzer production between the Bolshevik and the Barrikady plant—let alone the late-joiner Novokramatorsky—failed.


title: 203 mm howitzer M1931 (B-4)

text: 36 B-4 howitzers were planned for the 17 howitzer artillery regiments according to the approved August 1939 mobilization plan, alongside 1374 men allocated to each regiment. 13 of these regiments would be allocated two howitzers instead of one.


title: 203 mm howitzer M1931 (B-4)

text: The total need for the howitzers, at 612 units, was not fully covered until June 1941, when 849 B-4's were placed into service in the Red Army. To cover wartime losses, another 571 units were planned for production.


title: 203 mm howitzer M1931 (B-4)

text: The B-4 participated in the Winter War, with 142 howitzers placed along the front on March 1, 1940, of which four were knocked out. The B-4 was also called the "Karelia Sculptor" as Finnish pillboxes hit were virtually turned into a hodge-podge of concrete chunks and iron armatures.


title: 203 mm howitzer M1931 (B-4)

text: 23 B-4's were captured by the German 11th Panzer Division as the town of Dubno was captured at nighttime on June 25, 1941.


title: 203 mm howitzer M1931 (B-4)

text: A total of 75 B-4 howitzers were lost from June 22 to December 1, 1941, and a further 105 howitzers were built from factories to make up for the loss. After the start of the Great Patriotic War, the Howitzer Regiments were evacuated to the far rear for protection, only returning on November 19, 1942 when the strategic initiative was wrestled back into Soviet hands. These howitzers would still be placed in the strategic reserve all the way up to the end of the war.


title: 203 mm howitzer M1931 (B-4)

text: Captured B-4's used by the Wehrmacht were given the designation 20,3 cm H.503(r), of which 8 pieces remained at the Eastern Front by March, 1944, firing a mix of G-620 concrete-buster and German shells.


title: 203 mm howitzer M1931 (B-4)

text: B-4 howitzer crews were not given instructions on direct-firing against visible targets, however Captain Ivan Vedmedenko was awarded the title Hero of the Soviet Union for his actions of direct-firing against enemies.


title: 203 mm howitzer M1931 (B-4)

text: The B-4 has a separated-charge propellant load, with provisions to use full or 11 types of propellant charges. Propellant weight varied from 3.24 kg all the way up to 15.0-15.5 kg. The B-4 can fire 100 kilogram F-265 (with screwed-in cap) or F-625D high explosive or G-620/G-620T bunker-buster shells weighing 100–146 kg, as well as a certain 150-kilogram heavy atomic shell with a range of 18 km still in service today.


title: 203 mm howitzer M1931 (B-4)

text: Muzzle velocity varied from 288 to 607 m/s for the high-explosive shells depending on propellant charge weight, whereas bunker-buster shells were made to fire at 607 m/s.


title: Reagan (2023 film)

text: Reagan is an upcoming biographical historical drama film directed by Sean McNamara, starring Dennis Quaid and David Henrie as United States President Ronald Reagan. The film also features Penelope Ann Miller, Kevin Dillon, Nick Searcy, Skip Schwink, Mena Suvari, Lesley-Anne Down and Jon Voight in supporting roles. Screenwriter Howard Klausner based the script on the book "The Crusader: Ronald Reagan and the Fall of Communism".


title: Reagan (2023 film)

text: Principal photography on the film began on September 9, 2020 and included locations such as Guthrie, Oklahoma.


title: Reagan (2023 film)

text: The film follows Ronald Reagan's life from his childhood to his years as President of the United States, told by a former KGB agent.


title: Reagan (2023 film)

text: Principal photography began on September 9, 2020. Filming locations included Guthrie, Oklahoma. It was announced on October 22, 2020 that filming had shut down after several crew members tested positive for COVID-19 in the midst of the ongoing pandemic. Filming resumed on November 5, 2020.


title: Adam Kownacki

text: Kownacki was born in Łomża, Poland. When he was 7 years old, he emigrated to Greenpoint, Brooklyn in 1996 along with his parents and brothers, settling into the large Polish community there. As a youngster, he played a variety of sports, including basketball, baseball, football and soccer. He graduated from Abraham Lincoln High School in Brooklyn in 2007.


title: Adam Kownacki

text: He grew up watching Andrew Golota fights, which got him interested in boxing. As an overweight youngster who spoke English with a Polish accent, he was frequently the target of bullies at school and on the streets, which gave him further motivation to enter the boxing gym. Early in his boxing career, Kownacki had to work in construction and security in nightclubs to support himself.


title: Adam Kownacki

text: Kownacki started training at Gleason's Gym at the age of 15. He first won the New York Golden Gloves heavyweight tournament in 2006 at the age of 17. He then went on to be the runner up in 2007 and 2008, then won the tournament for the second time in 2009.


title: Adam Kownacki

text: Kownacki made his professional debut on 30 October 2009, at the PAL Gym in New York, United States, where he knocked out Carossee Auponte in the first round.


title: Adam Kownacki

text: His first fight of 2010 was against Tyyab Beale, which he won by knockout in the second round. He went on to fight twice more in 2010, knocking out Yohan Banks and Damon Clement.


title: Adam Kownacki

text: He fought once in 2013, beating Calbert Lewis by knockout in the second round. Kownacki next fought on 29 March 2014, against Excell Holmes, who he knocked out in the second round. Kownacki went on to get knockout wins against Charles Ellis and Jamal Woods to finish off the year.


title: Adam Kownacki

text: His first fight of 2015 was against Randy Easton, who he knocked out in the first round. His next fight took place on 29 May, where he beat Ytalo Perea by unanimous decision over 8 rounds, the first time he had gone the distance in his professional career. His next fight was against Maurenzo Smith on 1 August, at the Barclays Center, New York. He knocked Maurenzo out in the second round. His last fight of 2015 was a unanimous decision win over Rodney Hernandez. Kownacki fought twice in 2016, with a unanimous decision over Danny Kelly and a knockout win against Jesse Barboza. He then went on to face Joshua Tufte on 14 January 2017, who he knocked out in the second round.


title: Adam Kownacki

text: On 15 July 2017 at the Nassau Coliseum in New York, he faced former world title challenger Artur Szpilka. Szpilka represented Kownacki's toughest opponent to date. He knocked out Szpilka in the 4th round.


title: Adam Kownacki

text: Kownacki's first fight of 2018 was against Iago Kiladze, at the Barclays Center, New York, on the undercard of Errol Spence Jr. vs Lamont Peterson. He won the fight by knockout in the sixth round. On 8 September 2018 he faced former IBF heavyweight world champion Charles Martin. After a close ten round fight, Kownacki won by unanimous decision with all judges scoring the bout 96–94 in favor of Kownacki. The bout was a part of the undercard for Danny García vs Shawn Porter at the Barclays Center, New York.


title: Adam Kownacki

text: On 26 January 2019 Kownacki faced Gerald Washington. Kownacki was ranked #5 by the IBF and #8 by the WBC. Kownacki knocked out Washington at the beginning of 2nd round.


title: Adam Kownacki

text: In his second bout of 2019, on 3 August at the Barclays Center, New York, Kownacki defeated Chris Arreola by unanimous decision (118–110, 117–111, 117–111), winning the IBF Inter-Continental heavyweight title. The fight broke the CompuBox record for the most combined punches thrown (2,172) and landed (667) in a heavyweight fight.


title: Adam Kownacki

text: On 7 March 2020, Kownacki faced Robert Helenius in a WBA title eliminator. Kownacki was ranked #3 by the IBF, #4 by the WBA and the WBO and #6 by the WBC, while Helenius was ranked #7 by the WBA. While Kownacki was the heavy favorite, Helenius pulled off a significant upset by stopping Kownacki in the fourth round, handing him his first professional loss.


title: Adam Kownacki

text: After over a year out of the ring, Kownacki returned on 9 October 2021 on the undercard of Tyson Fury vs. Deontay Wilder III, against Robert Helenius in a rematch of their previous 2020 fight. The bout was stopped after six rounds of dominance by Helenius against a clearly overpowered Kownacki. The former had inflicted his opponent with a swollen left eye, before suffering repeated low blows, which caused Kownacki to be disqualified in the sixth round. After the bout, the result was later changed to a technical knockout victory for Helenius.


title: PL/I

text: PL/I (Programming Language One, pronounced and sometimes written PL/1) is a procedural, imperative computer programming language developed and published by IBM. It is designed for scientific, engineering, business and system programming. It has been used by academic, commercial and industrial organizations since it was introduced in the 1960s, and is still used.


title: PL/I

text: PL/I's main domains are data processing, numerical computation, scientific computing, and system programming. It supports recursion, structured programming, linked data structure handling, fixed-point, floating-point, complex, character string handling, and bit string handling. The language syntax is English-like and suited for describing complex data formats with a wide set of functions available to verify and manipulate them.


title: PL/I

text: In the 1950s and early 1960s, business and scientific users programmed for different computer hardware using different programming languages. Business users were moving from Autocoders via COMTRAN to COBOL, while scientific users programmed in Fortran, ALGOL, GEORGE, and others. The IBM System/360 (announced in 1964 and delivered in 1966) was designed as a common machine architecture for both groups of users, superseding all existing IBM architectures. Similarly, IBM wanted a single programming language for all users. It hoped that Fortran could be extended to include the features needed by commercial programmers. In October 1963 a committee was formed composed originally of three IBMers from New York and three members of SHARE, the IBM


title: PL/I

text: scientific users group, to propose these extensions to Fortran. Given the constraints of Fortran, they were unable to do this and embarked on the design of a new programming language based loosely on ALGOL labeled NPL. This acronym conflicted with that of the UK's National Physical Laboratory and was replaced briefly by MPPL (MultiPurpose Programming Language) and, in 1965, with PL/I (with a Roman numeral "I"). The first definition appeared in April 1964.


title: PL/I

text: IBM took NPL as a starting point and completed the design to a level that the first compiler could be written: the NPL definition was incomplete in scope and in detail. Control of the PL/I language was vested initially in the New York Programming Center and later at the IBM UK Laboratory at Hursley. The SHARE and GUIDE user groups were involved in extending the language and had a role in IBM's process for controlling the language through their PL/I Projects. The experience of defining such a large language showed the need for a formal definition of PL/I. A project was set up in 1967 in IBM Laboratory Vienna to make an unambiguous and complete specification. This led in turn to one of the first large scale Formal Methods for development, VDM.


title: PL/I

text: The language was first specified in detail in the manual "PL/I Language Specifications. C28-6571", written in New York in 1965, and superseded by "PL/I Language Specifications. GY33-6003", written by Hursley in 1967. IBM continued to develop PL/I in the late sixties and early seventies, publishing it in the GY33-6003 manual. These manuals were used by the Multics group and other early implementers.


title: PL/I

text: The goals for PL/I evolved during the early development of the language. Competitiveness with COBOL's record handling and report writing was required. The language's scope of usefulness grew to include system programming and event-driven programming. Additional goals for PL/I were:


title: PL/I

text: To achieve these goals, PL/I borrowed ideas from contemporary languages while adding substantial new capabilities and casting it with a distinctive concise and readable syntax. Many principles and capabilities combined to give the language its character and were important in meeting the language's goals:


title: PL/I

text: The language is designed to be all things to all programmers. The summary is extracted from the ANSI PL/I Standard


title: PL/I

text: A PL/I program consists of a set of procedures, each of which is written as a sequence of statements. The codice_5 construct is used to include text from other sources during program translation. All of the statement types are summarized here in groupings which give an overview of the language (the Standard uses this organization).


title: PL/I

text: Names may be declared to represent data of the following types, either as single values, or as aggregates in the form of arrays, with a lower-bound and upper-bound per dimension, or structures (comprising nested structure, array and scalar variables):


title: PL/I

text: The base, scale, precision and scale factor of the codice_7 type is encoded within the codice_8. The mode is specified separately, with the codice_9 applied to both the real and the imaginary parts.


title: PL/I

text: Values are computed by expressions written using a specific set of operations and builtin functions, most of which may be applied to aggregates as well as to single values, together with user-defined procedures which, likewise, may operate on and return aggregate as well as single values. The assignment statement assigns values to one or more variables.


title: PL/I

text: There are no reserved words in PL/I. A statement is terminated by a semi-colon. The maximum length of a statement is implementation defined. A comment may appear anywhere in a program where a space is permitted and is preceded by the characters forward slash, asterisk and is terminated by the characters asterisk, forward slash (i.e. ). Statements may have a label-prefix introducing an entry name (codice_10 and codice_11 statements) or label name, and a condition prefix enabling or disabling a computational condition e.g. codice_12). Entry and label names may be single identifiers or identifiers followed by a subscript list of constants (as in codice_13).


title: PL/I

text: A sequence of statements becomes a "group" when preceded by a codice_4 statement and followed by an codice_15 statement. Groups may include nested groups and begin blocks. The codice_16 statement specifies a group or a single statement as the codice_17 part and the codice_18 part (see the sample program). The group is the unit of iteration. The begin "block" (codice_19) may contain declarations for names and internal procedures local to the block. A "procedure" starts with a codice_11 statement and is terminated syntactically by an codice_15 statement. The body of a procedure is a sequence of blocks, groups, and statements and contains declarations for names and procedures local to the procedure or codice_22 to the procedure.


title: PL/I

text: An "ON-unit" is a single statement or block of statements written to be executed when one or more of these "conditions" occur:


title: PL/I

text: A declaration of an identifier may contain one or more of the following attributes (but they need to be mutually consistent):


title: PL/I

text: Current compilers from Micro Focus, and particularly that from IBM implement many extensions over the standardized version of the language. The IBM extensions are summarised in the Implementation sub-section for the compiler later. Although there are some extensions common to these compilers the lack of a current standard means that compatibility is not guaranteed.


title: PL/I

text: Language standardization began in April 1966 in Europe with ECMA TC10. In 1969 ANSI established a "Composite Language Development Committee", nicknamed "Kludge", later renamed X3J1 PL/I. Standardization became a joint effort of ECMA TC/10 and ANSI X3J1. A subset of the GY33-6003 document was offered to the joint effort by IBM and became the base document for standardization. The major features omitted from the base document were multitasking and the attributes for program optimization (e.g. codice_27 and codice_28).


title: PL/I

text: Proposals to change the base document were voted upon by both committees. In the event that the committees disagreed, the chairs, initially Michael Marcotty of General Motors and C.A.R. Hoare representing ICL had to resolve the disagreement. In addition to IBM, Honeywell, CDC, Data General, Digital Equipment Corporation, Prime Computer, Burroughs, RCA, and Univac served on X3J1 along with major users Eastman Kodak, MITRE, Union Carbide, Bell Laboratories, and various government and university representatives. Further development of the language occurred in the standards bodies, with continuing improvements in structured programming and internal consistency, and with the omission of the more obscure or contentious features.


title: PL/I

text: As language development neared an end, X3J1/TC10 realized that there were a number of problems with a document written in English text. Discussion of a single item might appear in multiple places which might or might not agree. It was difficult to determine if there were omissions as well as inconsistencies. Consequently, David Beech (IBM), Robert Freiburghouse (Honeywell), Milton Barber (CDC), M. Donald MacLaren (Argonne National Laboratory), Craig Franklin (Data General), Lois Frampton (Digital Equipment Corporation), and editor, D.J. Andrews of IBM undertook to rewrite the entire document, each producing one or more complete chapters. The standard is couched as a formal definition using a "PL/I Machine" to specify the semantics. It was the first, and possibly the only, programming language standard to be written as a semi-formal definition.


title: PL/I

text: A "PL/I General-Purpose Subset" ("Subset-G") standard was issued by ANSI in 1981 and a revision published in 1987. The General Purpose subset was widely adopted as the kernel for PL/I implementations.


title: PL/I

text: PL/I was first implemented by IBM, at its Hursley Laboratories in the United Kingdom, as part of the development of System/360. The first production PL/I compiler was the PL/I F compiler for the OS/360 Operating System, built by John Nash's team at Hursley in the UK: the runtime library team was managed by I.M. (Nobby) Clarke. The PL/I F compiler was written entirely in System/360 assembly language. Release 1 shipped in 1966. OS/360 is a real-memory environment and the compiler was designed for systems with as little as 64 kilobytes of real storage – F being 64 kB in S/360 parlance. To fit a large compiler into the 44 kilobytes of memory available on a 64-kilobyte machine, the compiler consists of a control phase and a large number of compiler phases (approaching 100). The phases are brought into memory from disk, one at a time, to handle particular language features and aspects of compilation. Each phase makes a single pass over the partially-compiled program, usually held in memory.


title: PL/I

text: Aspects of the language were still being designed as PL/I F was implemented, so some were omitted until later releases. PL/I RECORD I/O was shipped with PL/I F Release 2. The list processing functions Based Variables, Pointers, Areas and Offsets and LOCATE-mode I/O were first shipped in Release 4. In a major attempt to speed up PL/I code to compete with Fortran object code, PL/I F Release 5 does substantial program optimization of DO-loops facilitated by the REORDER option on procedures.


title: PL/I

text: A version of PL/I F was released on the TSS/360 timesharing operating system for the System/360 Model 67, adapted at the IBM Mohansic Lab. The IBM La Gaude Lab in France developed "Language Conversion Programs" to convert Fortran, Cobol, and Algol programs to the PL/I F level of PL/I.


title: PL/I

text: The PL/I D compiler, using 16 kilobytes of memory, was developed by IBM Germany for the DOS/360 low end operating system. It implements a subset of the PL/I language requiring all strings and arrays to have fixed extents, thus simplifying the run-time environment. Reflecting the underlying operating system, it lacks dynamic storage allocation and the "controlled" storage class. It was shipped within a year of PL/I F.


title: PL/I

text: Compilers were implemented by several groups in the early 1960s. The Multics project at MIT, one of the first to develop an operating system in a high-level language, used Early PL/I (EPL), a subset dialect of PL/I, as their implementation language in 1964. EPL was developed at Bell Labs and MIT by Douglas McIlroy, Robert Morris, and others. Initially, it was developed using the TMG compiler-compiler. The influential Multics PL/I compiler was the source of compiler technology used by a number of manufacturers and software groups. EPL was a system programming language and a dialect of PL/I that had some capabilities absent in the original PL/I.


title: PL/I

text: The PL/I Optimizer and Checkout compilers produced in Hursley support a common level of PL/I language and aimed to replace the PL/I F compiler. The checkout compiler is a rewrite of PL/I F in BSL, IBM's PL/I-like proprietary implementation language (later PL/S). The performance objectives set for the compilers are shown in an IBM presentation to the BCS. The compilers had to produce identical results the Checkout Compiler is used to debug programs that would then be submitted to the Optimizer. Given that the compilers had entirely different designs and were handling the full PL/I language this goal was challenging: it was achieved.


title: PL/I

text: IBM introduced new attributes and syntax including BUILTIN, case statements (SELECT/WHEN/OTHERWISE), loop controls (ITERATE and LEAVE) and null argument lists to disambiguate, e.g., DATE().


title: PL/I

text: The PL/I optimizing compiler took over from the PL/I F compiler and was IBM's workhorse compiler from the 1970s to the 1990s. Like PL/I F, it is a multiple pass compiler with a 44 kilobyte design point, but it is an entirely new design. Unlike the F compiler, it has to perform compile time evaluation of constant expressions using the run-time library, reducing the maximum memory for a compiler phase to 28 kilobytes. A second-time around design, it succeeded in eliminating the annoyances of PL/I F such as cascading diagnostics. It was written in S/360 Macro Assembler by a team, led by Tony Burbridge, most of whom had worked on PL/I F. Macros were defined to automate common compiler services and to shield the compiler writers from the task of managing real-mode storage, allowing the compiler to be moved easily to other memory models. The gamut of program optimization techniques developed for the contemporary IBM Fortran H compiler were deployed: the Optimizer equaled Fortran execution speeds in the hands of good programmers. Announced with IBM S/370 in 1970, it shipped first for the DOS/360 operating system in August 1971, and shortly afterward for OS/360, and the first virtual memory IBM operating systems OS/VS1, MVS, and VM/CMS. (The developers were unaware that while they were shoehorning the code into 28 kb sections, IBM Poughkeepsie was finally ready to ship virtual memory support in OS/360). It supported the batch programming environments and, under TSO and CMS, it could be run interactively. This compiler went through many versions covering all mainframe operating systems including the operating systems of the Japanese plug-compatible machines (PCMs).


title: PL/I

text: The PL/I checkout compiler, (colloquially "The Checker") announced in August 1970 was designed to speed and improve the debugging of PL/I programs. The team was led by Brian Marks. The three-pass design cut the time to compile a program to 25% of that taken by the F Compiler. It can be run from an interactive terminal, converting PL/I programs into an internal format, "H-text". This format is interpreted by the Checkout compiler at run-time, detecting virtually all types of errors. Pointers are represented in 16 bytes, containing the target address and a description of the referenced item, thus permitting "bad" pointer use to be diagnosed. In a conversational environment when an error is detected, control is passed to the user who can inspect any variables, introduce debugging statements and edit the source program. Over time the debugging capability of mainframe programming environments developed most of the functions offered by this compiler and it was withdrawn (in the 1990s?)


title: PL/I

text: Perhaps the most commercially successful implementation aside from IBM's was Digital Equipment Corporation's VAX PL/I, later known as DEC PL/I. The implementation is "a strict superset of the ANSI X3.4-1981 PL/I General Purpose Subset and provides most of the features of the new ANSI X3.74-1987 PL/I General Purpose Subset", and was first released in 1988. It originally used a compiler backend named the VAX Code Generator (VCG) created by a team led by Dave Cutler. The front end was designed by Robert Freiburghouse, and was ported to VAX/VMS from Multics. It runs on VMS on VAX and Alpha, and on Tru64. During the 1990s, Digital sold the compiler to UniPrise Systems, who later sold it to a company named Kednos. Kednos marketed the compiler as Kednos PL/I until October 2016 when the company ceased trading.


title: PL/I

text: In the late 1960s and early 1970s, many US and Canadian universities were establishing time-sharing services on campus and needed conversational compiler/interpreters for use in teaching science, mathematics, engineering, and computer science. Dartmouth was developing BASIC, but PL/I was a popular choice, as it was concise and easy to teach. As the IBM offerings were unsuitable, a number of schools built their own subsets of PL/I and their own interactive support. Examples are:


title: PL/I

text: In the 1960s and early 1970s, Allen-Babcock implemented the Remote Users of Shared Hardware (RUSH) time sharing system for an IBM System/360 Model 50 with custom microcode and subsequently implemented IBM's CPS, an interactive time-sharing system for OS/360 aimed at teaching computer science basics, offered a limited subset of the PL/I language in addition to BASIC and a remote job entry facility.


title: PL/I

text: PL/C, a dialect for teaching, a compiler developed at Cornell University, had the unusual capability of never failing to compile any program through the use of extensive automatic correction of many syntax errors and by converting any remaining syntax errors to output statements. The language was almost all of PL/I as implemented by IBM. PL/C was a very fast compiler.


title: PL/I

text: PLAGO, created at the Polytechnic Institute of Brooklyn, used a simplified subset of the PL/I language and focused on good diagnostic error messages and fast compilation times.


title: PL/I

text: The Computer Systems Research Group of the University of Toronto produced the SP/k compilers which supported a sequence of subsets of PL/I called SP/1, SP/2, SP/3, ..., SP/8 for teaching programming. Programs that ran without errors under the SP/k compilers produced the same results under other contemporary PL/I compilers such as IBM's PL/I F compiler, IBM's checkout compiler or Cornell University's PL/C compiler.


title: PL/I

text: Other examples are PL0 by P. Grouse at the University of New South Wales, PLUM by Marvin Victor Zelkowitz at the University of Maryland., and PLUTO from the University of Toronto.


title: PL/I

text: In a major revamp of PL/I, IBM Santa Teresa in California launched an entirely new compiler in 1992. The initial shipment was for OS/2 and included most ANSI-G features and many new PL/I features. Subsequent releases provided additional platforms (MVS, VM, OS/390, AIX and Windows), but as of 2021, the only supported platforms are z/OS and AIX. IBM continued to add functions to make PL/I fully competitive with other languages (particularly C and C++) in areas where it had been overtaken. The corresponding "IBM Language Environment" supports inter-operation of PL/I programs with Database and Transaction systems, and with programs written in C, C++, and COBOL, the compiler supports all the data types needed for intercommunication with these languages.


title: PL/I

text: The PL/I design principles were retained and withstood this major extension, comprising several new data types, new statements and statement options, new exception conditions, and new organisations of program source. The resulting language is a compatible super-set of the PL/I Standard and of the earlier IBM compilers. Major topics added to PL/I were:


title: PL/I

text: The latest series of PL/I compilers for z/OS, called Enterprise PL/I for z/OS, leverage code generation for the latest z/Architecture processors (z14, z13, zEC12, zBC12, z196, z114) via the use of ARCHLVL parm control passed during compilation, and was the second High level language supported by z/OS Language Environment to do so (XL C/C++ being the first, and Enterprise COBOL v5 the last.)


title: PL/I

text: but in addition the name and internal values are accessible via built-in functions. Built-in functions provide access to an ordinal value's predecessor and successor.


title: PL/I

text: The codice_40 (see below) allows additional codice_33s to be declared composed from PL/I's built-in attributes.


title: PL/I

text: The codice_42 locator data type is similar to the codice_43 data type, but strongly typed to bind only to a particular data structure. The codice_44 operator is used to select a data structure using a handle.


title: PL/I

text: The codice_34 attribute (equivalent to codice_46 in early PL/I specifications) permits several scalar variables, arrays, or structures to share the same storage in a unit that occupies the amount of storage needed for the largest alternative.


title: PL/I

text: New string-handling functions were added to centre text, to edit using a picture format, and to trim blanks or selected characters from the head or tail of text, codice_63 to codice_64 from the right. and codice_65 and codice_66 functions.


title: PL/I

text: Compound assignment operators a la C e.g. codice_67, codice_68, codice_69, codice_70 were added. codice_71 is equivalent to codice_72.


title: PL/I

text: Additional parameter descriptors and attributes were added for omitted arguments and variable length argument lists.


title: PL/I

text: The codice_73 attribute declares an identifier as a constant (derived from a specific literal value or restricted expression).


title: PL/I

text: The codice_40 introduces user-specified names (e.g. codice_81) for combinations of built-in attributes (e.g. codice_82). Thus codice_83 creates the codice_33 name codice_81 as an alias for the set of built-in attributes FIXED BINARY(31.0). codice_31 applies to structures and their members; it provides a codice_33 name for a set of structure attributes and corresponding substructure member declarations for use in a structure declaration (a generalisation of the codice_88 attribute).


title: PL/I

text: A codice_89 statement to exit a loop, and an codice_90 to continue with the next iteration of a loop.


title: PL/I

text: The package construct consisting of a set of procedures and declarations for use as a unit. Variables declared outside of the procedures are local to the package, and can use codice_93, codice_94 or codice_95 storage. Procedure names used in the package also are local, but can be made external by means of the codice_96 option of the codice_97.


title: PL/I

text: The codice_98 executed in an ON-unit terminates execution of the ON-unit, and raises the condition again in the procedure that called the current one (thus passing control to the corresponding ON-unit for that procedure).


title: PL/I

text: The codice_99 condition handles invalid operation codes detected by the PC processor, as well as illegal arithmetic operations such as subtraction of two infinite values.


title: PL/I

text: The codice_100 condition is provided to intercept conditions for which no specific ON-unit has been provided in the current procedure.


title: PL/I

text: The codice_101 condition is raised when an codice_102 statement is unable to obtain sufficient storage.


title: PL/I

text: A number of vendors produced compilers to compete with IBM PL/I F or Optimizing compiler on mainframes and minicomputers in the 1970s. In the 1980s the target was usually the emerging ANSI-G subset.


title: PL/I

text: PL/I implementations were developed for mainframes from the late 1960s, mini computers in the 1970s, and personal computers in the 1980s and 1990s. Although its main use has been on mainframes, there are PL/I versions for DOS, Microsoft Windows, OS/2, AIX, OpenVMS, and Unix.


title: PL/I

text: It has been widely used in business data processing and for system use for writing operating systems on certain platforms. Very complex and powerful systems have been built with PL/I:


title: PL/I

text: PL/I did not fulfill its supporters' hopes that it would displace Fortran and COBOL and become the major player on mainframes. It remained a minority but significant player. There cannot be a definitive explanation for this, but some trends in the 1970s and 1980s militated against its success by progressively reducing the territory on which PL/I enjoyed a competitive advantage.


title: PL/I

text: First, the nature of the mainframe software environment changed. Application subsystems for database and transaction processing (CICS and IMS and Oracle on System 370) and application generators became the focus of mainframe users' application development. Significant parts of the language became irrelevant because of the need to use the corresponding native features of the subsystems (such as tasking and much of input/output). Fortran was not used in these application areas, confining PL/I to COBOL's territory; most users stayed with COBOL. But as the PC became the dominant environment for program development, Fortran, COBOL and PL/I all became minority languages overtaken by C++, Java and the like.


title: PL/I

text: Second, PL/I was overtaken in the system programming field. The IBM system programming community was not ready to use PL/I; instead, IBM developed and adopted a proprietary dialect of PL/I for system programming. – PL/S. With the success of PL/S inside IBM, and of C outside IBM, the unique PL/I strengths for system programming became less valuable.


title: PL/I

text: Third, the development environments grew capabilities for interactive software development that, again, made the unique PL/I interactive and debugging strengths less valuable.


title: PL/I

text: Fourth, features such as structured programming, character string operations, and object orientation were added to COBOL and Fortran, which further reduced PL/I's relative advantages.


title: PL/I

text: On mainframes there were substantial business issues at stake too. IBM's hardware competitors had little to gain and much to lose from success of PL/I. Compiler development was expensive, and the IBM compiler groups had an in-built competitive advantage. Many IBM users wished to avoid being locked into proprietary solutions. With no early support for PL/I by other vendors it was best to avoid PL/I.


title: PL/I

text: This article uses the PL/I standard as the reference point for language features. But a number of features of significance in the early implementations were not in the Standard; and some were offered by non-IBM compilers. And the de facto language continued to grow after the standard, ultimately driven by developments on the Personal Computer.


title: PL/I

text: Multithreading, under the name "multitasking", was implemented by PL/I F, the PL/I Checkout and Optimizing compilers, and the newer AIX and Z/OS compilers. It comprised the data types codice_104 and codice_105, the codice_106 on the codice_107 (Fork), the codice_108 (Join), the codice_109, codice_110s on the record I/O statements and the codice_111 statement to unlock locked records on codice_112 files. Event data identify a particular event and indicate whether it is complete ('1'B) or incomplete ('0'B): task data items identify a particular task (or process) and indicate its priority relative to other tasks.


title: PL/I

text: The first IBM "Compile time preprocessor" was built by the IBM Boston Advanced Programming Center located in Cambridge, Mass, and shipped with the PL/I F compiler. The codice_5 statement was in the Standard, but the rest of the features were not. The DEC and Kednos PL/I compilers implemented much the same set of features as IBM, with some additions of their own. IBM has continued to add preprocessor features to its compilers. The preprocessor treats the written source program as a sequence of tokens, copying them to an output source file or acting on them. When a % token is encountered the following compile time statement is executed: when an identifier token is encountered and the identifier has been codice_114d, codice_115d, and assigned a compile time value, the identifier is replaced by this value. Tokens are added to the output stream if they do not require action (e.g. codice_116), as are the values of ACTIVATEd compile time expressions. Thus a compile time variable codice_117 could be declared, activated, and assigned using codice_118. Subsequent occurrences of codice_117 would be replaced by codice_120.


title: PL/I

text: The data type supported are codice_121 integers and codice_122 strings of varying length with no maximum length. The structure statements are:


title: PL/I

text: The feature allowed programmers to use identifiers for constants e.g. product part numbers or mathematical constants and was superseded in the standard by named constants for computational data. Conditional compiling and iterative generation of source code, possible with compile-time facilities, was not supported by the standard. Several manufacturers implemented these facilities.


title: PL/I

text: Structured programming additions were made to PL/I during standardization but were not accepted into the standard. These features were the codice_133 to exit from an iterative codice_4, the codice_135 and codice_136 added to codice_4, and a case statement of the general form:


title: PL/I

text: PL/I F had offered some debug facilities that were not put forward for the standard but were implemented by others notably the CHECK(variable-list) condition prefix, codice_139 on-condition and the codice_140 option. The IBM Optimizing and Checkout compilers added additional features appropriate to the conversational mainframe programming environment (e.g. an codice_141 condition).


title: PL/I

text: Several attempts had been made to design a structure member type that could have one of several datatypes (codice_46 in early IBM). With the growth of classes in programming theory, approaches to this became possible on a PL/I base codice_34, codice_33 etc. have been added by several compilers.


title: PL/I

text: PL/I had been conceived in a single-byte character world. With support for Japanese and Chinese language becoming essential, and the developments on International Code Pages, the character string concept was expanded to accommodate wide non-ASCII/EBCDIC strings.


title: PL/I

text: Time and date handling were overhauled to deal with the millennium problem, with the introduction of the DATETIME function that returned the date and time in one of about 35 different formats. Several other date functions deal with conversions to and from days and seconds.


title: PL/I

text: Though the language is easy to learn and use, implementing a PL/I compiler is difficult and time-consuming. A language as large as PL/I needed subsets that most vendors could produce and most users master. This was not resolved until "ANSI G" was published. The compile time facilities, unique to PL/I, took added implementation effort and additional compiler passes. A PL/I compiler was two to four times as large as comparable Fortran or COBOL compilers, and also that much slower—supposedly offset by gains in programmer productivity. This was anticipated in IBM before the first compilers were written.


title: PL/I

text: Some argue that PL/I is unusually hard to parse. The PL/I "keywords" are not reserved so programmers can use them as variable or procedure names in programs. Because the original PL/I(F) compiler attempts "auto-correction" when it encounters a keyword used in an incorrect context, it often assumes it is a variable name. This leads to "cascading diagnostics", a problem solved by later compilers.


title: PL/I

text: The effort needed to produce good object code was perhaps underestimated during the initial design of the language. Program optimization (needed to compete with the excellent program optimization carried out by available Fortran compilers) is unusually complex owing to side effects and pervasive problems with aliasing of variables. Unpredictable modification can occur asynchronously in exception handlers, which may be provided by "ON statements" in (unseen) callers. Together, these make it difficult to reliably predict when a program's variables might be modified at runtime. In typical use, however, user-written error handlers (the codice_145) often do not make assignments to variables. In spite of the aforementioned difficulties, IBM produced the PL/I Optimizing Compiler in 1971.


title: PL/I

text: PL/I contains many rarely used features, such as multitasking support (an IBM extension to the language) which add cost and complexity to the compiler, and its co-processing facilities require a multi-programming environment with support for non-blocking multiple threads for processes by the operating system. Compiler writers were free to select whether to implement these features.


title: PL/I

text: An undeclared variable is, by default, declared by first occurrence—thus misspelling might lead to unpredictable results. This "implicit declaration" is no different from FORTRAN programs. For PL/I(F), however, an attribute listing enables the programmer to detect any misspelled or undeclared variable.


title: PL/I

text: Many programmers were slow to move from COBOL or Fortran due to a perceived complexity of the language and immaturity of the PL/I F compiler. Programmers were sharply divided into scientific programmers (who used Fortran) and business programmers (who used COBOL), with significant tension and even dislike between the groups. PL/I syntax borrowed from both COBOL and Fortran syntax. So instead of noticing features that would make their job easier, Fortran programmers of the time noticed COBOL syntax and had the opinion that it was a business language, while COBOL programmers noticed Fortran syntax and looked upon it as a scientific language.


title: PL/I

text: Both COBOL and Fortran programmers viewed it as a "bigger" version of their own language, and both were somewhat intimidated by the language and disinclined to adopt it. Another factor was "pseudo"-similarities to COBOL, Fortran, and ALGOL. These were PL/I elements that looked similar to one of those languages, but worked differently in PL/I. Such frustrations left many experienced programmers with a jaundiced view of PL/I, and often an active dislike for the language. An early UNIX fortune file contained the following tongue-in-cheek description of the language:


title: PL/I

text: Speaking as someone who has delved into the intricacies of PL/I, I am sure that only Real Men could have written such a machine-hogging, cycle-grabbing, all-encompassing monster. Allocate an array and free the middle third? Sure! Why not? Multiply a character string times a bit string and assign the result to a float decimal? Go ahead! Free a controlled variable procedure parameter and reallocate it before passing it back? Overlay three different types of variable on the same memory location? Anything you say! Write a recursive macro? Well, no, but Real Men use rescan. How could a language so obviously designed and written by Real Men not be intended for Real Man use?


title: PL/I

text: On the positive side, full support for pointers to all data types (including pointers to structures), recursion, multitasking, string handling, and extensive built-in functions meant PL/I was indeed quite a leap forward compared to the programming languages of its time. However, these were not enough to persuade a majority of programmers or shops to switch to PL/I.


title: PL/I

text: The PL/I F compiler's compile time preprocessor was unusual (outside the Lisp world) in using its target language's syntax and semantics ("e.g." as compared to the C preprocessor's "#" directives).


title: PL/I

text: PL/I provides several 'storage classes' to indicate how the lifetime of variables' storage is to be managed codice_93, codice_147, codice_95, and codice_94. The simplest to implement is codice_93, which indicates that memory is allocated and initialized at load-time, as is done in COBOL "working-storage" and early Fortran. This is the default for codice_22 variables.


title: PL/I

text: PL/I's default storage class for codice_152 variables is codice_147, similar to that of other block-structured languages influenced by ALGOL, like the "auto" storage class in the C language, and default storage allocation in Pascal and "local-storage" in IBM COBOL. Storage for codice_147 variables is allocated upon entry into the codice_155-block, procedure, or codice_156-unit in which they are declared. The compiler and runtime system allocate memory for a stack frame to contain them and other housekeeping information. If a variable is declared with an codice_157-attribute, code to set it to an initial value is executed at this time. Care is required to manage the use of initialization properly. Large amounts of code can be executed to initialize variables every time a scope is entered, especially if the variable is an array or structure. Storage for codice_147 variables is freed at block exit: codice_93, codice_95, or codice_94 variables are used to retain variables' contents between invocations of a procedure or block. codice_95 storage is also managed using a stack, but the pushing and popping of allocations on the stack is managed by the programmer, using codice_102 and codice_164 statements. Storage for codice_94 variables is managed using codice_102/codice_164, but instead of a stack these allocations have independent lifetimes and are addressed through codice_168 or codice_43 variables.


title: PL/I

text: The codice_23 attribute is used to declare programmer-defined heaps. Data can be allocated and freed within a specific area, and the area can be deleted, read, and written as a unit.


title: PL/I

text: There are several ways of accessing allocated storage through different data declarations. Some of these are well defined and safe, some can be used safely with careful programming, and some are inherently unsafe and/or machine dependent.


title: PL/I

text: Passing a variable as an argument to a parameter by reference allows the argument's allocated storage to be referenced using the parameter. The codice_171 attribute (e.g. codice_172) allows part or all of a variable's storage to be used with a different, but consistent, declaration. The language definition includes a codice_46 attribute (later renamed codice_34) to allow different definitions of data to share the same storage. This was not supported by many early IBM compilers. These usages are safe and machine independent.


title: PL/I

text: Record I/O and list processing produce situations where the programmer needs to fit a declaration to the storage of the next record or item, before knowing what type of data structure it has. Based variables and pointers are key to such programs. The data structures must be designed appropriately, typically using fields in a data structure to encode information about its type and size. The fields can be held in the preceding structure or, with some constraints, in the current one. Where the encoding is in the preceding structure, the program needs to allocate a based variable with a declaration that matches the current item (using expressions for extents where needed). Where the type and size information are to be kept in the current structure ("self defining structures") the type-defining fields must be ahead of the type dependent items and in the same place in every version of the data structure. The codice_103-option is used for self-defining extents (e.g. string lengths as in codice_176 where codice_177 is used to allocate instances of the data structure. For self-defining structures, any typing and codice_178 fields are placed ahead of the "real" data. If the records in a data set, or the items in a list of data structures, are organised this way they can be handled safely in a machine independent way.


title: PL/I

text: PL/I implementations do not (except for the PL/I Checkout compiler) keep track of the data structure used when storage is first allocated. Any codice_94 declaration can be used with a pointer into the storage to access the storage inherently unsafe and machine dependent. However, this usage has become important for "pointer arithmetic" (typically adding a certain amount to a known address). This has been a contentious subject in computer science. In addition to the problem of wild references and buffer overruns, issues arise due to the alignment and length for data types used with particular machines and compilers. Many cases where pointer arithmetic might be needed involve finding a pointer to an element inside a larger data structure. The codice_180 function computes such pointers, safely and machine independently.


title: PL/I

text: It relies on pointers being the same length as codice_182 integers and aligned on the same boundaries.


title: PL/I

text: With the prevalence of C and its free and easy attitude to pointer arithmetic, recent IBM PL/I compilers allow pointers to be used with the addition and subtraction operators to giving the simplest syntax (but compiler options can disallow these practices where safety and machine independence are paramount).


title: PL/I

text: When PL/I was designed, programs only ran in batch mode, with no possible intervention from the programmer at a terminal. An exceptional condition such as division by zero would abort the program yielding only a hexadecimal core dump. PL/I exception handling, via codice_156-units, allowed the program to stay in control in the face of hardware or operating system exceptions and to recover debugging information before closing down more gracefully. As a program became properly debugged, most of the exception handling could be removed or disabled: this level of control became less important when conversational execution became commonplace.


title: PL/I

text: Computational exception handling is enabled and disabled by condition prefixes on statements, blocks (including codice_156-units) and procedures. – e.g. codice_185. Operating system exceptions for Input/Output and storage management are always enabled.


title: PL/I

text: The codice_156-unit is a single statement or codice_155-block introduced by an codice_156-statement. Executing the codice_156 statement enables the condition specified, e.g., codice_190-unit. When the exception for this condition occurs and the condition is enabled, the codice_156-unit for the condition is executed. codice_156-units are inherited down the call chain. When a block, procedure or codice_156-unit is activated, the codice_156-units established by the invoking activation are inherited by the new activation. They may be over-ridden by another codice_156-statement and can be reestablished by the codice_196-statement. The exception can be simulated using the codice_197-statement – e.g. to help debug the exception handlers. The dynamic inheritance principle for codice_156-units allows a routine to handle the exceptions occurring within the subroutines it uses.


title: PL/I

text: If no codice_156-unit is in effect when a condition is raised a standard system action is taken (often this is to raise the codice_25 condition). The system action can be reestablished using the codice_201 option of the codice_202. With some conditions it is possible to complete executing an ON-unit and return to the point of interrupt (e.g., the codice_203, codice_204, codice_205, codice_206, codice_23, and codice_208 conditions) and resume normal execution. With other conditions such as codice_209, the codice_25 condition is raised when this is attempted. An ON-unit may be terminated with a codice_211 preventing a return to the point of interrupt, but permitting the program to continue execution elsewhere as determined by the programmer.


title: PL/I

text: An codice_156-unit needs to be designed to deal with exceptions that occur in the codice_156-unit itself. The codice_214 statement allows a nested error trap; if an error occurs within an codice_156-unit, control might pass to the operating system where a system dump might be produced, or, for some computational conditions, continue execution (as mentioned above).


title: PL/I

text: The PL/I codice_216 I/O statements have relatively simple syntax as they do not offer options for the many situations from end-of-file to record transmission errors that can occur when a record is read or written. Instead, these complexities are handled in the codice_156-units for the various file conditions. The same approach was adopted for codice_23 sub-allocation and the codice_23 condition.


title: PL/I

text: The existence of exception handling codice_156-units can have an effect on optimization, because variables can be inspected or altered in codice_156-units. Values of variables that might otherwise be kept in registers between statements, may need to be returned to storage between statements. This is discussed in the section on Implementation Issues above.


title: PL/I

text: Syntax for both COBOL and FORTRAN exist for coding two special two types of GO TO, each of which has a target that is not always the same.


title: PL/I

text: PL/I has statement label variables (with the LABEL attribute), which can store the value of a statement label, and later be used in a GOTO statement.


title: PL/I

text: Statement label variables can be passed to called procedures, and used to return to a different statement in the calling routine.


title: Lemon Incest

text: "Lemon Incest" is a song written, composed and performed by Serge Gainsbourg in duet with his daughter Charlotte Gainsbourg. Recorded in 1984, the song was released as a single from Gainsbourg's album "Love on the Beat" in 1985. It is also available on Charlotte's 1986 album "Charlotte for Ever". It was controversial because of its theme, and reached number 2 on the French charts.


title: Lemon Incest

text: "Lemon Incest" is a "sultry" and "suggestive" pop duet and ballad recorded and composed by Serge Gainsbourg and his then-12- or 13-year-old daughter, Charlotte Gainsbourg, who made her musical debut with the song. It was recorded in 1984 and included on Serge's controversial new wave album "Love on the Beat", which was released the same year, as well as on Charlotte's 1986 unsuccessful debut album "Charlotte For Ever".


title: Lemon Incest

text: The title of "Lemon Incest" is a play on the phrase "un zeste de citron", or lemon zest. Its lyrics, written by Serge, describe an incestuous relationship between Serge and Charlotte, the latter of whom sings, in French, "The love we will never make together is the most beautiful, the most violent, the purest." The song's melody is taken from Étude Op. 10, No. 3 in E major by Frédéric Chopin. Charlotte sings with "wobbly", "shrill", and "breathy" vocals, described by AllMusic's Thom Jurek as a "cracking whisper", backed by synths, keyboards, and a chorus singing the song's title.


title: Lemon Incest

text: The music video for the song shows Serge, shirtless and in jeans, and Charlotte, wearing a blue dress shirt and panties, lying side-by-side in a large white double bed, with Serge caressing Charlotte.