IIIIIIIIIII I I I I I I I l I I I I I I I r} / "It” 5 5‘- :: LIIRARY Michigan State University This is to certify that the thesis entitled An Economic Supply/Demand Balance Sheet For Forecasting And Simulating The United States Corn Industry ' presented by Anthony B. Washington has been accepted towards fulfillment of the requirements for M-S- degree in Agricultunal Economics / Major professor Date ffl/Ef/ 7] /i£00 0-7539 MS U is an Affirmative Action/Equal Opportunity Institution RETURNING MATERIALS: Place in book drop to remove this checkout from your record. FINES will be charged if book is returned after the date stamped below. .._.____.__-__.‘_ F‘- ’if I ~ 1. ~ . . u 3 . I v MSU LlBRARlES AN ECONOMIC SUPPLY/DEMAND BALANCE SHEET FOR FORECASTING AND SIMULATING THE UNITED STATES CORN INDUSTRY BY Anthony B. Washington A THESIS Submitted to Michigan State University in partial fulfillment of the requirements for the degree of MASTER OF SCIENCE "Department of Agricultural Economics 1988 ABSTRACT AN ECONOMIC SUPPLY/DEMAND BALANCE SHEET FOR FORECASTING AND SIMULATING THE UNITED STATES CORN INDUSTRY BY Anthony B. Washington The price and yield fluctuations faced by agricultural producers are chief sources of uncertainty. In an effort to quantify some of the sources of uncertainty, educate producers where the uncertainty exists, and aid in their production decisions, an economic supply/demand balance sheet for use on a microcomputer was designed. The balance sheet uses time series data to forecast the U.S. supply and world demand for corn in a recursive model to determine a 0.8. marketing clearing farm price of corn. The user, be it an educator or producer, can then select to do scenario analysis with the balance sheet by altering the exogenous variables or forecasted values and review the results. Further, the user can chose a particular scenario to estimate a price probability distribution. This probability distribution serves to help producers determine the probable states of nature for risk aversion/decision analysis. ACKNOWLEDGMENTS All praise goes to l .0 ‘ 5“ a L ‘ vv ‘ \ / I am indebted to the people here at Michigan State University for the opportunity to complete my Masters of Science degree. I will never forget you. My major professor, Dr. Jim Hilker, deserves special thanks for his guidance and patience in supervising my program and reviewing manuscripts, without his help this project could never have been undertaken. I am especially thankful to my committee members, Drs. Roy Black, Gerald Schwab and Jack Meyer for their valuable comments and input. My gratitude goes to Eric DeVuyst, Erik Zackmann and Rob Leland members of MSU's Ag Model, for the technical assistance they provided. Finally, I must thank my family members. Each one of them are educationally oriented and have inspired me to set lofty goals and stick to them regardless of the hardships faced. ii TABLE OF CONTENTS Page CHAPTER I PROBLEM AND OBJECTIVES...........................1 1.1 Problem Setting..............................1 1.2 Goal And Objectives..........................3 1.3 Project Justification........................3 1.4 Procedure....................................6 CHAPTER II THEORETICAL AND CONCEPTUAL CONSIDERATIONS FORMODEL CONSTRUCTIONOOOOOOOOOOOOOOOOOOOOO00.0.08 2.1 Elements Of suPPIYOIOOOOOOOOOOO0.00.00.00.0008 2.1.1 Theoretical Considerations............9 2.1.2 Conceptual Considerations............13 2.2 Elements of Demand..........................29 2.2.1 Theoretical Considerations...........30 2.2.2 Conceptual Considerations............36 2.3 Price Determination.........................44 3.1 Theoretical Considerations...........44 3. 2. 2. 2 Conceptual Considerations............46 CHAPTER III SIMULATION MODEL CONSTRUCTION...................48 3.1 The Simulation Model........................48 3.2 General Econometric Procedures..............49 3.3 Statistical Concepts and RandomvariableSOOOOOOO00.0.0000...00.0.51 3.4 Data Source Considerations..................54 3.5 Appraising The Results......................55 iii TABLE or CONTENTS (cont'd) Page 3.6 U.S. Corn Supply Model......................57 1 Results For Acres Planted............57 2 Results For Acres Harvested..........61 3 Results For Yield Per Acre...........63 4 3 3 3 3 Production And Supply................65 6. 6. 6. 6. 3.7 U.S. corn Demand “OdeJ-OOOOOOOOOOOOOO0.0.0.0067 3.7.1 Results For Corn Consumed by Livestock.........................67 3.7.2 Food, Seed, And Industrial Use of Corn...............83 3.7.3 Results For U.S. Corn Exports ........ 83 3.7.4 Results For Policy And Free Ending Stocks..................lOl 3.8 U.S. Corn Price Determination...... ...... ..106 CHAPTER IV THE ECONOMIC SUPPLY/DEMAND BALANCE SHEET WITH APPLICATIONS.0..0.00.00...0.00.00.00.00...O....109 4.1 The Economic Supply/Demand Balance SheetOOOOOOOOOOOOOOOOO0.0...0.0.00.109 4.2 Ex POSt Ana1Y818000ooooooooooooooooo0000000112 4.2.1 The 1985-86 Marketing Year..........113 40202 The 1986-87 Marketing year. 0 o o o o o o o o 120 4.2.3 The 1987-88 Marketing Year..........126 4.3 Scenario Analyses And Sample Runs..........134 1 Change In World Income..............136 2 Change In U.S. YieldOOOOOOOOOOOOOOOOIBB 3 Change In Competitor Crop Prices....139 4 4. 4. 4. 4. Change In Alcohol Use...............140 3. 3. 3. 3. CHAPTER V SUMMARY, CONCLUSIONS AND RECOMMENDATIONS.......141 5.1 Summary And Conclusions....................141 5.2 Recommendations For Increasing Balance Sheet Performance............. ..... 143 IV TABLE OF CONTENTS (cont'd) Page 5.3 Recommendations For Handling Risk... ..... ..144 5.3.1 The Traditional Analysis............145 5.3.2 The Modern Analysis.................146 5.3.3 Decision Problems...................147 5.3.4 Expected Utility Model..............149 5.3.5 Expected Value-Variance AnalYSiSOOOOO00.00.000.000.0.0.0.000151 5.4 Conceptual Assistance To Decision Making............................153 Appendices 1. Data Source Considerations..................155 2. International Regional Groupings............157 3. Supply/Demand Balance Sheet Documentation.OOOOOOOOOOOOOOOO0.0...00......159 4. Computer Input/Output Code..... ............. 184 Bibliography........................ ..... . ........ ..303 10. 11. 12. 13. 14. Table LIST OF TABLES Page USDA Balance Sheet For Corn.................. ..... 4 Ordinary Least Squares Estimates For U.S. Acres Planted To Corn In Million Acres.................60 Ordinary Least Squares Estimates For U.S. Acres Harvested In Million Acres.......................64 Ordinary Least Squares Estimate For U.S. Yield In Bushels/Acre..................................66 Time Relationship Map............................69 Ordinary Least Squares Estimates For Dairy Animal Corn Consumption Per Head.................71 Ordinary Least Squares Estimates For Cattle On Feed Corn Consumption Per Head...................73 Ordinary Least Squares Estimates For Other Beef Cattle Corn Consumption Per Head.................75 Ordinary Least Squares Estimates For Hen, Pullet And Other Chicken Corn Consumption Per Head......76 Ordinary Least Squares Estimate For Broiler corn consumption Per HeadOOOOOOOOOOOOO0.00000000078 Ordinary Least Squares Estimate For Turkey Corn Consumption Per Head........................79 Ordinary Least Squares Estimates For Hog Corn Consumption Per Head........................81 Ordinary Least Squares Estimate For Other And Unallocated Corn Consumption.....................82 Ordinary Least Squares Estimates For Importer Net Imports Per Capita In Thousand Metric Tons............ ........ . ..... 88 vi LIST or TABLES (cont'd) Table Page 15. Ordinary Least Squares Estimates For Importer Yield In Metric Tons/Hectare.....................91 16. Ordinary Least Squares Estimate For Exporter Yield In Metric Tons/Hectare.....................94 17. Ordinary Least Squares Estimate For Exporter Harvested Area In Thousand Hectares..............95 18. Ordinary Least Squares Estimates For Exporter Consumption Per Capita In Thousand Metric Tons..........................97 19. Ordinary Least Squares Estimates For Exporter Ending Stocks Per Capita In Thousand metric TOIISoooooooooooooooooooooo00.100 20. U.S. Feed Grain Exports In Thousand Bushels.....102 21. Ordinary Least Squares Estimates For A Change In Policy Stocks In Thousand Bushels............105 22. Ordinary Least Squares Estimate For Free Stocks In Thousand Bushels......................107 23. Balance Sheet For Corn: The 1985-86 Marketing Year................. ..... 114 24. U.S. Export Demand: The 1985-86 marketing YearOOOOOOOOOOOOOOOOOOOO0.118 25. Exporting Region's Net Exports: The 1985-86 Marketing Year......................118 26. Livestock Consumption Of Corn In The U.S.: The 1985-86 marketing YearOOOOOOOOOOOOO0.0.0....120 27. Balance Sheet For Corn: The 1986-87 marketing YearOOOOOOOOOOOOOOOO0.0.0.122 vii LIST OF TABLES (cont'd) Table Page 28. U.S. Export Demand: The 1986-87 Marketing YearOOOOOOOO0000.00.00....125 29. Exporting Region's Net Exports: The 1986-87 Marketing Year............... ...... .125 30. Livestock Consumption Of Corn In The U.S.: The 1986-87 Marketing Year......................126 31. Balance Sheet For Corn: The 1987-88 marketing YearOOOOOOOO0.00.00.00.000128 32. U.S. Export Demand: The 1987-88 Marketing Year............ .......... 131 33. Exporting Region's Net Exports: The 1987-88 Marketing Year......................131 34. Livestock Consumption Of Corn In The U.S.: The 1987-88 Marketing Year......................133 35. Cattle On Feed Consumption Per Head: The 1987-88 Marketing Year............ .......... 133 36. Other Beef Cattle Consumption Per Head: The 1987-88 Marketing Year......................133 37. Balance Sheet For Corn: The 1988-89 Marketing Year......................135 38. Probability Distributions For Varying Scenarios............. ............ ..137 39. The Decision Table..............................148 40. The Payoff Matrix...............................154 viii LIST OF FIGURES Figure Page 1. Acres Harvested To Corn In Million Acres..........62 2. The E-V Boundary.................................152 3. Title Screen.....................................160 4. Main Menu........................................160 5. Load Screen......................................162 6. Save Screen......................................162 7. Exogenous Variable Menu..........................164 8. Exogenous Variable Screen 1......................164 9. Exogenous Variable Screen 2......................164 10. Exogenous Variable Screen 3.....................165 ll. Exogenous Variable Screen 4.....................165 12. Exogenous Variable Screen 5.....................165 13. U.S. Composites Sub Menu........................166 l4. Govt. Program Participant's Revenue Screen......l66 15. Diversion Payments Screen.......................166 16. Deficiency Payments Screen......................167 17. Food, Seed, And Industrial Use Screen...........167 18. Importers Gross Domestic Product Screen 1.......l69 19. Importers Gross Domestic Product Screen 2.......169 20. Importers Gross Domestic Product Screen 3.......169 ix LIST OF FIGURES (cont'd) Figure Page 21. Exporters Composites Sub Menu...................170 22. Exporter Crop Revenue Screen....................170 23. Exporter Gross Domestic Product Screen 1........171 24. Exporter Gross Domestic Product Screen 2........171 25. Add Factor Screen 1.............................173 26. Add Factor Screen 2.............................173 27. Balance Sheet Screen 1................. ...... ...174 28. Balance Sheet Screen 2..... ........ . .......... ..174 29. Balance Sheet Screen 3..........................l74 30. Livestock Corn Consumption Menu.................175 31. Corn Consumption Summary Screen....u............175 32. Dairy Animal Consumption Per Head Screen........176 33. Other and Unallocated Consumption Screen........176 34. U.S. Export Sub Menu............................l78 35. Exporters Net Exports Screen....................178 36. U.S. Exports Summary Screen.....................178 37. Solve Options Sub Menu..........................179 38. Single Price Solve Screen.......................179 39. Probability Iteration Screen....................180 40. Price Probability Distribution Display screenOO...OOOOCOOOOOOOOOOO0......0.0.0.180 41. EXit screeDOOOOCOOOCOO......OOOOOOOOOOOOOOOOOO0.183 CHAPTER I THE PROBLEM AND OBJECTIVES 1.1 PROBLEM SETTING Of the many uncertainties facing farmers, yield and price fluctuations of the products farmers sell comprise the key sources of uncertainty. The problem is that inputs must be allocated at one point in time while returns come at a later date. Because the future cannot be foretold, the inputs must be allocated without perfect assurance of a particular return. Over the last decade, dramatic price movements, both up and down, have increased interest in more and better information for both policy makers and individual producers. When farmers face a planning period, they need to have an expectation of the price that they will receive for their efforts. A probability distribution around that price would also be helpful. This price expectation is what allows producers to choose how they will allocate their resources and the probability distribution around the price is what allows for individual risk behavior to enter the analysis. With information in this form, decision makers will be better able to comprehend the degree of uncertainty 2 associated with future events. Furthermore, more accurate perceptions about the uncertainty associated with future events will allow decisions to be made that are more consistent with producers individual objectives and risk preferences.1 Recalling from classic micro economic theory, we know that there exist several market structures from which an industry may be operating. The farming industry is considered a close representation of a purely (atomistically) competitive structured market in the sense that individual farmers are price takers. The structure of this market dictates that (among other things): 1) There are a large number of firms, each producing homogeneous products, 2) New firms are free to enter and existing firms are free to exit the industry, 3) There is generally no nonprice competition, and most significantly, 4) Each firm is a price taker assuming that its actions have no effect on market price. Being a price taker implies two major conditions occur. First, producers cannot influence the market price of their product due to the relationship between their production and the quantity of total supply. Second, in the corn subsector, producers are unable to create a unique demand 1. A. N. Halter, and R. Mason, "Utility Measurement for Those Who Need to Know," Western Qogrngl Qf Agricultural E onomics, Vol. 3, No. 2, December 1978, p. 99-109. 3 for their goods because of the homogeneity of their product. By understanding the structure, comparative static analysis can be conducted. 1.2 GOAL AND OBJECTIVES The goal of this project is to develop a microcomputer economic supply/demand balance sheet for forecasting corn prices which can be used as a group-interaction teaching aide. To reach this goal several objectives must be met. The primary objective is for the balance sheet to be simple to use and easy to update or modify yet, comprehensive enough for educational purposes. Second, nation wide corn supply and demand relationships need to be estimated from the available data. Third, these estimated equations will be combined in an algorithm for use on a microcomputer. Finally, the algorithm will be menu driven by the user to display various screens of information which present a comprehensive balance sheet as exhibited in Table 1. 1.3 PROJECT JUSTIFICATION The art/science of forecasting corn prices is imprecise, however most successful market analysts follow an organized procedure. An economic supply/demand balance Table l: USDA Balance Sheet For Corn PROJ. PIOJ. 1981—82 1982-83 1983-88 1988-85 1985-86 1986-87 1987-88 —— — —— ‘— ' (NILLION ACRES) ACRES SET-ASIDE AND ACRES PLANTED 88.1 81.8 60.2 80.8 83.2 76.7 66.0 ACRES NARVESTED 75.5 72.7 51.8 71.8 75.1 69.2 59.2 BUINARVESTED ACRE 108.9 113.2 81.0 106.6 118.0 119.3 119.8 (NILLION BUSNELS) BEGINNING STOCKS 1038 2178 3120 723 1688/1 8080 8882 PRODUCTION 8119 8235 8175 7678 8877 8250 7068 IMPORTS 1 1 2 3 11 2 2 III. III. _ I... 88888 I... .3888 II... TOTAL SUPPLY 9158 10810 7297 8801 10536 12291 11988 USE: FEED 8202 8521 3737 8117 8095 8715 8900 FOOD, SEED 8 IND. USES 811 898 973 1065 1160 1191 1225 TOTAL DOMESTIC 5013 5819 8710 5182 5255 5906 6125 EXPORTS 1967 1871 1868 1838 1281 1508 1700 III! III. III! 8888 III! 8888 .888 TOTAL USE 6980 7290 6578 7020 6896 7810 7825 TOTAL ENDING STOCKS 2178 3120 723 1381/1 8080 8882 8123 TOTAL. 5 OF USE 31.2 82.8 11.0 19.7 62.2 65.9 52.7 STOCKS IN GOVT. PRGRIN CCC INVENTORY 302 1166 201 280 586 1883 FARMER-OVNED RESERVE 1300 1550 825 883 568 1321 UNDER GOVT. LOAN 385 109 20 567 2736 2279? 10m. TEE? 235% "6:3 12;}; 5533 £335 ---- FRSUSHELS 187 295 77 129 192 -161? 1 OF USE 2.7 8.0 1.2 1.8 3.0 0.0 REGULAR LOAN RATE $2.80 82.55 82.65 82.55 82.55 31.88 81.82 U.S. SEASON AVERAGE ...... ------------ ................................... 87:65: FARM PRICE. 3/80 $2.50 $2.68 $3.25 82.62 82.35 81.50 81.85 SOURCE: USDA. 111988-85 ending stocks do not 3 1985-86 beginning stocks due to narkctln; your change. 5 sheet (henceforth called the balance sheet) such as that shown in Table l, is the most common starting point.2 A balance sheet is similar to a checkbook. It records how much corn is in the bin at the start of the year, how much corn is produced during the year, how much grain disappears during the year, and how much grain is left in the bin at the end of the year. When the quantities supplied and demanded are in balance (equilibrium), a market clearing price is established. The computerized balance sheet can be used as a . practical teaching tool by University staff for educating individuals involved in cash grain enterprises. University staff can use this mobile balance sheet at extension meetings to show what factors influence the market price for corn and how changes in those factors will modify the estimated market clearing price. The balance sheet can be used to provide information to anyone involved in the planning stage of production farming such as farmers and extension workers. The balance sheet could assist an individual identify an expected corn price and the variation around that expected price. Information about expected price and the variation associated with that price could aid producers decide upon a crop mixture based 2. Unlike the accountant's balance sheet this does not relate to a point in time but to the balance of flows over a period of time, generally a year. The term is used in the same sense as the Food and Agriculture Organization of the United Nations uses it in their Food Balance Sheets. 6 on capability of diversification and relative prices, while still maintaining eligibility for government programs. The balance sheet could provide a portion of the information needed in the marketing area by supplying both an expected price and a price probability distribution. With information in the form of expected price and probability, producers are better able to determine which marketing alternatives (i.e. hedge, forward contracts, options, storage, etc.) will be most in line with their objectives. Each supply and demand factor of the balance sheet will be available for adjustment. This feature of the balance sheet will allow for quick testing of "what if" situations. Given an adjustment, a new solution can be found and the effect on price of that adjustment will be available for analysis. Finally, the balance sheet could aid in management decisions. Whenever an "if" creeps into the statement of a solution, the concept of risk is implied. By providing a probability distribution associated with the price, producers could make management decisions based upon their own level of risk preference. 1.4 PROCEDURE In Chapter 2 the theoretical and conceptual .considerations for model construction are developed. Elements of supply and demand are presented to provide a 7 basis for static analysis. A review of some of the relevant literature is also included. Chapter 3 contains the derivation of the model. The data calculations, equations used, and empirical results are presented. The balance sheet will be designed in Chapter 4. The chapter will present case studies under different scenarios, and provide documentation on the use of the balance sheet. Finally, Chapter 5 will present a summary, conclusions and recommendations for future work on the balance sheet. CHAPTER II THEORETICAL AND CONCEPTUAL CONSIDERATIONS FOR MODEL CONSTRUCTION This chapter will discuss the necessary economic theory, and present the conceptual framework needed to construct equations that will be used in the single commodity forecasting model. 2.1 ELEMENTS OF SUPPLY The economic unit for the sale of goods and services is the firm. The firm can be a small farmer, cultivating his own land with the help of the members of his family, or it may be a nationalized organization owned by all and operated either directly or indirectly by a local or central authority. In static economic analysis, we are not directly interested in whether the firm is large or small, or if it is owned by one or many, but what happens to supply when firms revise their sales and or purchase plans. 9 2.1.1 Theoretical Considerations Ryan provides the theoretical background of the firm in the short run.1 Doll states that the short run is the time period of such length that at least one resource is varied while other resources are fixed.2 Thus this is the most appropriate time period for the analysis in this project. The production plan of the firm sets the quantities of each of its products that it plans to sell during any period of time, and the price per unit at which it hopes or plans to sell each of them. If 'P' is used to represent the expected selling price, 'Q' to represent the quantity that it hopes to sell, and the subscripts 1,2,3,...,n, to designate particular products, then the production plan will have the following general form: P1 * Ql + p2 * Q2 + ... + Pn * on = R, where R represents the gross revenue that the firm hopes to get from implementing the plan as a whole. This plan assumes the state of the arts in technology, a particular objective in which the firm is pursuing, and a predetermined length of time. The revenue 'R' generated by the production plan is the value of the output produced and is determined by the expected product prices multiplied by the quantity produced. 1. W.J.L. Ryan, Price Theory, Macmillan and Company' Limited, London, 1958, Chapter 2. 2. John P. Doll, Production Economics: Theory With Applications, John Wiley & Sons, New York, 1978, p.17. .— 10 It is assumed (in this industry structure) that the firm will be able to sell everything produced at a given market price. It is further assumed that the firm will choose that level of production which optimizes any cost-benefit analysis and generates the highest revenue. This assumption is reasonable because most farmers trade-off between maximum revenue (benefit) and the degree of risk (cost) associated with that level of revenue and it seems to approximate reality. In order to realize the plan, factors of production are needed. The quantities of land, labor, and capital, and the price it expects to pay for them are set out by the purchase plan. If 'F' is used to represent purchase price, 'X' to represent quantity to be bought, and the subscripts 1,2,3,...,m, to designate particular inputs that are needed, then the general form of the purchase plan will be: Fl * X1 + F2 * X2 + ... + Fm * xm = C, where C represents the total expenditure that the firm feels must be incurred to implement the production plan. This total expenditure must include all opportunity costs to land, labor, capital, and management used in producing the outputs that are listed in the production plan. There are many alternative plans from which the firm can choose, each with a corresponding purchase plan. In the short run, alternatives are limited and a budget constraint is imposed. The budget constraint means that the capital 11 available during the length of run is not sufficient to allow the firm to use an unlimited amount of factors on each product. One must assume that the firm will always plan to produce each product with the quantities of factors that cost least and meet the objective that the firm is pursuing. To discover how a firm will revise its production plan given a change in information, the production possibility surface must be introduced. The production possibility surface is the combination of products which can be produced from a given amount of factors. The concept of marginal rate of product substitution (MRPS) refers to the amount by which one product changes in quantity when another product is increased by one unit along the product possibility surface ceteris paribus. The critical part of this analysis is the marginal criterion for resource allocation. Maximum net revenue from a limited amount of factors of production occurs when the value of the marginal product of the factor is the same for each product. VMleql VMPanl VMleqz _ VMPanz _ _ UMleqm _ _ VMIanm where VMP is the product price multiplied by the marginal. physical product for each output. This marginal resource allocation criterion specifies that when all ratios are 12 equal to one, the optimum amount of factors are used to produce each product given the firm's objectives. The relationship between planned sales and the expected selling price is the firm's short run supply schedule. This supply schedule shows the production plan that the firm would choose at each expected selling price, with its given production possibilities, objective and contractual obligations, and the given prices expected from the purchase plan. The supply schedule of each existing firm can be derived in precisely the same manner. By assuming that the prices of the variable inputs are the same for all firms, the industry supply schedule may be obtained simply by horizontally summing the supply schedules for each firm at each expected selling price. While each firm operates under the assumption that the market price for its products is beyond its control, the total effect of all firms implementing their production plans is to assist in the determination of the market price for each product. The price elasticity of supply measures the responsive- ness of planned sales to changes in the expected selling price holding all other factors constant. Elasticity is valid because it causes the measurement of responsiveness to be unitless, and only records changes in terms of percentages. Given a large elasticity, firms show a great responsiveness to changes in price. With a small elasticity, firms show little responsiveness. The aggregate 13 short run supply on farm products is extremely inelastic. Tweeten and Quance estimate that the short run price elasticity of aggregate supply of farm products in the U.S. falls somewhere between 0 and 0.2.3 Tweeten goes on to estimate short run elasticities of supply for selected commodities and finds the elasticity for feed grains to be 0.4.4 In the next section the conceptual considerations needed to derive the supply equations for the model are presented. 2.1.2 Conceptual Considerations The industry supply of corn for grain in any period is based upon the amount of corn produced in the period and the amount of carryover from the previous period plus any imports. Factors which affect the production are the price of corn, the ability to incorporate substitute crops given the relative price differences, the capital flow of the firm, the biological nature of agricultural production, and the existence or absence of government programs. The carryover can be viewed as predetermined, and the imports of corn grain into the U.S. nearly insignificant. Soybeans and wheat are major competitors for corn land and production resources. Therefore the prices of these 3. L.G. Tweeten, and C.L. Quance, "Positivistic Measures of Aggregate Supply Elasticities: Some New Approaches," AQAE, Vol.51, No.2, 1969, p. 351. 4. L.G. Tweeten, Foundations of Farm Policy, University of Nebraska Press, Lincoln, 1970, p. 243. l4 crops are important determinants of expectations for future prices. If the expected profit of the substitutes is higher relative to the expected profit of corn the profit maximizer will substitute one or more of these alternative crops into production in order to equate the value of marginal product from an acre of the substitute crop to the value of marginal product from an acre of corn. Nerlove examined three works based upon studies of expectations of the future value of economic variables.5 These studies show that there is widespread underestimation of actual changes and that forecasters could generally do a better job at predicting the levels of outcomes if they used a naive model. In the study of static economic theory of supply, price changes are usually considered as permanent changes. It is argued that the profitability of responding to price changes considered only temporary is likely to be so limited that entrepreneurs forecast and react primarily to changes which they consider to be permanent, i.e., changes in the average level about which future prices are expected to fluctuate. This average is what Nerlove refers to as expected "normal" price. Nerlove raises the question as to whether entrepreneurs are really trying to forecast a particular value of an economic variable, or whether, they try to forecast the "normal" level of future values of the variable. Nerlove adds, "Any model of expectation formation should take account of the fact that these expectations 5. Marc Nerlove, The Qypgmigs pf Sppply: Estimation of Farmers' Response To Price, The John Hopkins Press, 1958. 15 probably do not refer to the immediate and temporary future" (i.e. the immediate and very short run lengths of time). Expectations of "normal" price are shaped by a multitude of influences. Expected prices cannot be observed and must be approximated by observable prices, so that a representation of expected price as a function of past prices may merely be a convenient way to summarize the effects of these many and diverse influences of price expectations. Eisner suggests that expectations may be based on a concept of the normal as a starting point in our development of a model of expectation formation.6 Government policy reflects an attempt to reduce surplus production, address the problem of low farm income, and the problem of price instability. Historically, plantings of corn have been substantially influenced by government policy. Mc Keon notes that increases in the level of corn price supports have increased plantings while increases in diversion payments have reduced plantings. He continues: "The significant response to diversion programs reflects the -fact that producers, throughout the U.S., were willing to remove from production poorer quality crop land in return for diversion payments. As better land is bid out of production, however, the response to diversion payments 6. Robert Eisner, Erpectatipps, Plans, and Capital Erpendirures: A Synthesis of Ex Post and Ex Apte Data presented at the Conference on Expectations, Uncertainty, and Business Behavior, October 1955. 16 "7 In all works reviewed, the government would decline. policy towards crop supply has received much attention. As discussed earlier, each firms supply curve is shaped by the expected selling price. Since the farm price in recent years has been below the guaranteed support prices, producers, having the option, have found it advantageous to participate in the government programs. These producer options for reaction to price stimuli would support the testable hypothesis, as presented by Houck, Ryan, and Subotnik,8 that the expected prices can be expressed by a linear function: * P it = 011 Pit—1 + “12 PVlit where P*it is the expected price of crop i in year t, Pit-1 is the actual price received by farmers for crop i in year t-l, and PVlit is the price support policy variable for crop i in year t, the ai's are the coefficients associated with the explanatory variables. Price support operations have consisted of guaranteed support prices, acreage restrictions, and diversion payments for fallowing land. The guaranteed support prices include a nonrecourse loan, and direct support payments which vary according to participation level and historical production 7. John Mc Keon, Farm Commodity Prpgrams: Tpgir Effect On Plantings of Feed Grains and Soypeans, doctoral dissertation, Michigan State University, 1974, Abstract. 8. J.P. Houck, M.E. Ryan, and A. Subotnik, Spybgans and Their Products, University on Minnesota Press, Minneapolis, 1972, p.90. 17 levels. The diversion payments, when in operation, use the same criteria as the support payments. Because of the various elements of the price support and diversion payments, it is difficult to measure the impact of the government programs on plantings. Houck and Ryan suggest a means of weighting the announced price support by the acreage restrictions imposed, to obtain the "effective price support."9 Similarly, they obtained an "effective diversion payment" by weighting the announced diversion rate by the eligible diversion acreage. a) Acres Planted A number of researchers have examined supply responses for various crops. Each of their models had feed grain sub- models and some disaggregated feed grains into corn specifi- cally. A short review of some empirical research will follow. e eo Model Mc Keon develops theoretical and empirical estimates of acres planted to feed grains and soybeans.10 The Mc Keon study, cites the work of John L. Dillon to develop the necessary economic theory for calculating the input demand function. From there he modifies the function into a general statistical form which follows: 9. J.P. Houck, and M.E. Ryan, "Supply Analysis for Corn in the United States: The Impact of Changing Government Programs," AQAE, Vol. 54, No. 2, May 1972, p. 184-91. 10. Mc Keon, op. cit. 18 _ 1: a: where APit is the acreage planted to crop i in year t, P*it and P*jt are the expected prices of crop i and competing crop j, respectively, in year t, kat is the price of input k in t, 2 includes such factors as government programs, technical change and weather, the 31's are the coefficients associated with the explanatory variables, and Ut is a random mean-zero disturbance with finite variance. This equation offers a guide to construction estimable equations for supply response. Mc Keon notes that the form of the price expectations must be presented in observable terms as must the variables on government policy, technolog- ical change, weather and input prices. Following a discussion of the form of the variables which are used in estimation work, Mc Keon identifies a typical equation used in his work. The form of the equation follows: APCt = fio + £1 PVlCt + 32 PVZCt + 53 PCt_1 + B4 Pkt-l + 35 YCt_1 + 56 wt + 57 IPt + BB DV + Ut , where APCt is the acreage planted to corn in time t, PV1Ct and PVZCt are the calculated effective price support and effective diversion payment (as put forth by Houck and Ryan), respectively, for corn in time t, PCt_1 is the average market price of corn in time t-1, Pkt-l is the average market price of the competing crop k in time t-1, YCt_1 is the average yield of corn in time t-1, Wt is the 19 average precipitation in April and May, IPt reflects input prices in time t, DV represents other identifiable shift factors, and Ut is a random, mean-zero disturbance with finite variance, the 81's are the coefficients associated with the explanatory variables. The Wailgs Model A later study by Wailes estimates U.S. production for wheat, soybeans, and feed grains, with feed grains disaggregated into corn, sorghum, barley, and oats.11 The crop acreage supply relationships specified for his model were developed out of previous studies by Nerlove, Houck, and Mc Keon. These empirical estimates of the acres planted equations provide information on a set of variables which are hypothesized in explaining agricultural supply. As noted by Wailes, the approach to analysis of crop supply functions by concentrating on the independent estimation of supply relationships for the factors of production has been developed in the seminal articles by D. G. Johnson and M. Nerlove in the 1950's. The theoretical framework is based on neoclassical economic theory which assumes that firms maximize profits and that the demand for the factors of production are determined by conditions of marginal equilibrium. In the 1960's, Wailes notes, empirical investigations such as the Interstate Managerial Survey by Johnson 11. E. Wailes, "A Simulation Model of United States Agriculture," doctoral dissertation, Michigan State University, 1983. 20 (et. a1.) generally supported the expectations hypothesis but advanced that forward-looking information available to farmers, not reflected in past prices, was important in the formulation of farmer's expectations. The concept of forward prices developed by D. G. Johnson (1947) became embodied in government programs from the fifties to the present with the objective to influence crop acreage. The identification of the impact of forward price levels as reflected in loan rates and target prices is useful both in terms of how it indirectly conditions the response to past market prices and price uncertainty as well as identifies the direct impact on crop acreage (Houck, et. al.). The general model specification for the Wailes model reflects an updating of Mc Keon's equations and the extension of the policy variable concepts to encompass the changing policy framework as legislated in the 1973 and 1977 Food and Agriculture Acts. The general acres planted (in period t) specification used in this study follows: APt = f( Pt_1 / CI, PVl , pvz , Rt , APt_1 ) , where APt = acres planted in period t Pt-l = vector of lagged market prices CI = Index of costs, CPI was used in all deflations PVl = vector of effective support prices, deflated PV2 = vector of effective diversion payments, deflated 21 Rt = < Pt-1 - < 2 Pt-1 / 3 ))2 / ( 2 Pt-1 / 3 ). a vector of market price variances APt_1 = acres planted, lagged one year. Wailes notes, "This supply framework provides a straight forward basis for simulations assuming alternative government policy strategies and objectives." The supply sub-model which follows is directly from the Wailes discourse, and shows acres planted to corn is based upon the relationship between corn plantings and lagged corn, soybean and wheat prices and government feed grain programs APt = 30 + 31 cpt_1 + 52 SPt_1 + 33 WPt_1 + 34 PVICT + 35 PVZCT + 36 TL , where APt is acres planted to corn in thousand acres, CPt_1, SPt_1, and WPt_1 are the deflated corn price, soybean price, and wheat price received by farmers lagged one year, respectively, PVICT is the deflated effective support rate for corn in dollars per bushel, and PVZCT is the deflated effective diversion payment in dollars per bushel, TL is a trend, the 81's are the coefficients associated with the explanatory variables. The Heady Model The econometric simulation model by Earl O. Heady showed an alternative approach.12 Heady designed his model with five commodity submodels at the national level. Each 12. Earl O. Heady, hp Ecohpmetric Simpigtioh Model of the Q,S, Farm Sector and its Eoiicies and Food Exports, Vandenhoeck & Ruprecht, 1978. 22 commodity sub-model is divided into three categories, referred to as the pre-input, input, and output sections, corresponding to the planning, planting and harvesting decisions in the production cycle. The first category of equations is the pre-input section. The initial decisions which the producer will make, and are included in the pre- input section, include the number of acres which will be devoted to production. Heady models the pre-input section acres planted to feed grain as: FG-Act = Bo + 31 FG-PRt_1 + 32 S-PRt_1 + 33 FG-ACDIVt + 34 FG-ACt_1 where: 3i = coefficients associated with the explanatory variables, FG-ACt = feed grain acreage in million acres, FG-PRt_1 = feed grain average price received by farmers deflated by the implicit GNP deflator, S-PRt_1 = soybean average price received by farmers deflated by the implicit GNP deflator, FG-ACDIVt = acreage diverted from production in million acres, FG-ACt_1 = feed grain acreage lagged one period. Following the pre-input section, the variable resource requirements are estimated in the input section. The levels of resource demand established in the input section depend 23 upon the levels of the fixed inputs from the pre-input section as well as the values of endogenous variables from previous years. For example, variable resource demand in the current year depend on acreage estimates from the pre- input section as well as last year's gross income, which serves as a proxy for a capital constraint. The recursive structure of the model is preserved, since the solution of the equations occurs in a sequential manner. The FAPSIM Model The Economic Research Service, National Economics Division developed a report which provides a detailed description of the structural equations and their statistical attributes in the current version of the Food and Agricultural Policy Simulator (FAPSIM).13 As noted by the authors of FAPSIM, a major shortcoming of previous research has been the failure by economists to develop acreage response equations that explicitly predict the level of farmer participation in government commodity programs. For example, Houck and Ryan (et. a1.) developed response equations containing government policy variables such as the effective support price and the effective diversion payment rate. The authors continue, these equations can be used to predict total acreage response, but they cannot predict the level of participation in government programs. Central to this approach is the development of 13. Kenneth E. Gadson, J. Michael Price, and Larry E. Salathe, U.S. Department of Agriculture, Staff Report AGE5820506, May 1982. 24 acreage response equations with the construction of variables that reflect farmer's perceptions of expected yields and prices. The acreage response relationships contained in FAPSIM reflect the relative profitability of either participation or not participating in a government commodity program. 14 The expected net return per acre for a program participant producing crop i is: EPRi where: EPR EPP EY VC SR PY SA DIVi [(EPPi * EYi - vci) (1.0 - (5A1 + DIVi))] [SRi * PYi (1.0 - (SAi + DIVi))] ALLOCi [DRi * PNi * pyi * DIVi] expected program return per acre for crop i, the maximum of the loan rate and the expected market price, expected yield per acre, variable cost per acre, expected deficiency payment rate (announced target price minus the maximum of the expected market price and loan rate) per acre, national program yield, proportion of each acre required to be set-aside, proportion of each acre required to be diverted, 14. The acreage response equations contained in FAPSIM follow from previous research by Robert Bancroft of the University of Vermont, while he was employed by ERS. 25 DRi diversion payment rate per bushel, ALLOCi minimum national program allocation factor, and PNi proportion of acreage eligible for diversion payments. The expected net return per acre for a government program nonparticipant producing crop i is given by the identity: EMRi = EMPi * EYi - VCi where: EMRi expected market net return per acre for crop i, EMPo expected market price, 1 VCi = variable cost per acre, and EYi = expected yield per acre. The expected net return variables are used to estimate acreage response by participants and nonparticipants. Total acreage in the program (planted plus diverted and set-aside acreage) for crop i is expressed as a behavioral relationship of the form: PAi = f ( EPRi/CPI, EMRi/CPI, APPi/CPI, NPi(l.0 - 301)) where: PAi = program acreage for crop i, APPi = the average expected net return of competing crops, NIi = national program acreage for crop i, SDi set-aside plus diversion rate for crop i, 26 CPI = the all item consumer price index lagged one period: and where EPRi and EMRi are defined as above. Total acreage planted to a particular crop by program participants is a function of total program acreage multiplied by program set-aside and diversion rates. Acreage set aside and diverted is calculated endogenously as total program acreage minus acreage planted by participants. The participation rate is endogenously computed as acreage planted by participants divided by the sum of acreage planted by participants and nonparticipants. Acreage planted to crop i by nonparticipants is a function of acreage planted to crop i by program participants, acreage set-aside and diverted, the real expected net return of competing crops, and the real expected market return for planting crop i. Acreage planted in the program, acreage set aside and diverted, and the real, expected, net return of competing crops all represent the desirability of using land for alternative purposes. Thus, acreage planted to crop i by nonparticipants is inversely related to each of these variables. Acreage planted by nonparticipants is positively related to the real, expected, market net return. The Food Security Act of 1985 calls for a freeze of the target price at the 1985 level with subsequent reductions in the future. Along with the freeze, the Secretary of Agriculture was given authority to lower the loan, which he 27 did. Another change was the formula for calculating base acres and base yields. According to the Act, acreage bases will be the planted and considered planted acreage in the five previous years rather than the previous two years. For the 1986 and 1987, program yields are frozen at the average of 1981-85 levels. These efforts to lower prices and make U.S. corn more competitive in world markets will result in increased deficiency payments and encourage more farmers to comply with the program. A major uncertainty of the 1985 policy is the implementation of the Gramm-Rudman-Hollings Act to reduce the federal deficit. The Ferris Model Ferris uses an equation for acres planted to corn formulated in a manner similar to a partial budgeting approach familiar to many farmers.15 The key independent variables are: (1) expected net returns from corn over variable production costs per acre outside the government program, (2) expected net returns from soybeans over variable costs per acre, (3) expected net returns on corn over variable cost per base acre for participants in the Feed Grain Program (including direct payments), and (4) percent of base acres that must be put into conserving uses in order to be in compliance. 15. John N. Ferris, Forecestihg Corp Producers' Response To the 1986 Feed Grain Program, Presented at AAEA 1986. 28 This review shows that there are many alternative structural approaches to estimating acres planted. In keeping with the objectives, a simple equation must be estimated. The common elements of each of the models reviewed were: a variable for expected corn price, a proxy for participation in the government program, and a proxy for revenue received from a competitive crop. This common structure presents a starting point for estimating the acres planted equation. b) Acres Harvested Acres harvested are estimated as a simple function of estimated planted acreage. Corn grown for silage, the ability of producers not to harvest part of the crop or any damage done to the crop results in the acres harvested being less than acres planted. The relationship between acres harvested and acres planted is expected to be positive. The work done by previous researchers has shown that acres harvested can be a function with either an intercept and estimated acres planted, or just estimated acres planted. The function without the intercept generates a fixed percentage relationship between acres planted and acres harvested. When the intercept is included, the value will explicitly handle silage and abandoned acres in the processes of estimating acres harvested for grain. This research will examine both methods for statistical significance. 29 c) Yield Per Acre Yield per acre is based upon experience of past yields. This procedure assumes a base yield on "normal" weather conditions and incorporates changes in technology. The amount of yield received from one acre can be affected by many factors. Producers can use new hybrid seed, use more or better fertilizers, and of course, the weather plays a major role on the total yield. Given the level of technology, expected yields can best be represented by regressing actual yields on time which assumes a "normal weather" production period. The technology proxy is expected to have a positive relationship with yields which reflect the increase that yields have experienced over time. d) Production and Supply Production and total supply are both identities. The quantity produced is generated by multiplying the number of acres harvested by the yield per acre. Total supply is exactly equal to the sum of production in the current period and the carryover from the previous period plus imports. 2.2 ELEMENTS OF DEMAND The economic unit for the purchase of the goods and services of everyday consumption is known as the individual. It may be a sole person meeting his own individual needs or it may be a collection of individuals operating together to gather goods for the sustenance of all. Regardless of the 30 size of the individual, the economic actions pursued are where the analysis begins. 2.2.1 Theoretical Considerations Before beginning the analysis of economic action available to the individual, reference must be made about individual preferences and the concept of utility. This discussion provides the framework for the decision theory analysis. Economists assume that individuals make choices that provide some form of satisfaction. It also follows that those choices are selected by the individual because it provides the maximum satisfaction given a particular situation. It is further assumed that these choices conform to some form of rational behavior, so that a unique ranking of all possible situations from most to least desirable can be made. The political theorist Bentham called this ranking of relative desirabilities utility: more desirable alternatives offer more utility than do less desirable ones.16 Since utility measures satisfaction, it is affected by a variety of factors such as cultural environment and psychological attitudes. Due to the complex variety of factors that determine the individual's satisfaction, there is no interpersonally valid way to measure utility. All that can be determined by utility theory is that one bundle 16. Jeremy Bentham, t uc o to ri ci les 0 horals and Legislation, Hafner, London, 1948, p. 125-31. 31 of goods and services is preferred to another, yet, not by how much. An individual's preferences can be represented by a utility function of the form: U=f( X1, X2, ooo ,Xn) where X1, X2, ... ,Xn are the quantities of each of n goods consumed. Some classical assumptions regarding utility are: 1) More is better, 2) There exist opportunities for trade-offs, and 3) Consumers are utility maximizers subject to a budget constraint. The assumption that more is better stands because individuals are insatiable in their wants for all goods. There is an intuitive feel that when an individual can get more of one good and not sacrifice any of another that improvement is made. A more important aspect of individual taste that must be noted is the rate of substitution of goods, or how individuals feel about getting more of some good when they must give up an amount of some other good given their current situation. Marshall theorized that it is the marginal valuation that an individual places on a good that determines its value.17 In light of the trade-off, the individual has an unlimited amount of choices of goods and services which yield the same utility. 17. Alfred Marshall, Priheiplee of Eeonomies, Macmillan & Co., London, 1920, Book III, Chapter 6. 32 Typically, when an individual has a small quantity of one good relative to another, the individual is willing to give up a large amount of the excess good to get one more unit of the first good. This coincides with the notion that individuals prefer some variety in their mix of goods, i.e. some balance of consumption is desirable. Intuitively, it seems clear that an individual will tire of some good as more of it is consumed which leads to a diminishing marginal rate of substitution (MRS). Of particular concern is how an individual allocates a fixed amount of money in purchasing goods so as to maximize the utility derived from these goods. Nicholson defines the optimizing principle for the individual as those quantities of goods which exhaust his or her total income and for which the psychic rate of trade-off between any two goods (the MRS) is equal to the rate at which the goods can be traded one for the other in the market place.18 Spending all of one's planned consumption expenditure is required for utility maximization, since extra goods provide extra utility, which defines the individual's budget constraint as follows: where P is the market price of the good, Q is the quantity of each good purchased, and I is the level of planned 18. Walter Nicholson, hiereeeonohic Theory: Pasic Principles and Extensions, The Dryden Press, Chicago, 1985, p. 94. 33 consumption expenditure available to spend on the bundle of goods. Since the rate at which one good can be traded for another in the market is given by the ratio of their prices, this optimizing principle can be restated to say that the individual will equate the MRS of the goods to the ratio of the prices of the goods and has the following form: where U is the utility derived from the bundle of goods, MU is the marginal utility and Pi is the market price of the good. This equation says that at the utility maximizing point, each good purchased should yield the same marginal utility per dollar spent on that good. There are many factors which affect the way in which an individual will adjust the utility maximization point, among them a change in income and changes in a goods own or substitutes price are the key elements. As total expenditures rise, it is natural to expect that the quantity of each good purchased will also increase. A normal good (as in most cases) implies as income increases, purchases increase, yet when, the quantity of a good deceases as income rises, the good is referred to as an inferior good. The effect of price change on the quantity of a good demanded is somewhat more complex to analyze than is the 34 effect of a change in income. This is because of two analytical affects which result from a price change: income and substitution effects The income effect arises because a price change necessarily changes an individual's real income. The total real income will increase when there is a price decrease for any good and it will decrease when the price of any good increases. The substitution effect arises from a price change because consumption patterns are allocated so as to equate the MRS to the new price ratio. It has been shown that an individual's demand for a good depends on the shape of the utility surface and on all prices and income. Theoretically, this can be shown as: * Q 1 = D1( P1, P2, 00. ' Pn' I ) where 0* is the quantity of the good purchased, Pi is the price of all goods available and I is the desired level of consumption expenditure, and the subscripts represent the range of possible prices on each good. By choosing alternative prices for the good and, assuming that other determinants of demand are held constant, the quantities of the good in question can be mapped out. The relationship between the price of a good and the quantity of that good purchased is the individual's demand schedule. The demand for each potential individual can be determined in precisely the same manner. Since the prices 35 available to the individual are the same for everyone, and individual demand is dependent upon his or her own income, the total or market demand for the good can be obtained by horizontally summing the demand schedules for each individual at each potential price. One of the most important applications of the elasticity concept is that of price elasticity of demand. Elasticity of demand records how quantities change (in percentage terms) in response to a percentage change in own price holding all other factors constant and is typically negative for demand functions. Given an "elastic" demand schedule, a price increase is met by more than a proportionate quantity decrease. With an inelastic demand schedule, price increases proportionally more than quantity decreases. Another type of elasticity frequently encountered in economics is the income elasticity of demand. This concept records the relationship between income changes and quantity changes. Goods for which income elasticity is greater than 1 might be called luxury goods in the sense that purchases of these goods increase more rapidly than income. On the other hand, a good which is a necessity probably has an in- come elasticity of less than one. The cross elasticity of demand is the responsiveness of the good demanded to a change in the price of some other good. The value of cross elasticity may be positive or negative, depending on the direction in which the demand 36 schedule moves. In general, goods with a positive cross elasticity of demand are regarded as substitutes for one another, while goods with negative cross elasticities are regarded as complements for one another. The next section presents the conceptual considerations needed to derive the demand equations used for model construction. 2.2.2 Conceptual Considerations Conceptually, corn demand can be typed into one of two categories. First, there is the immediate demand for consumption and exports. Second, there is the demand for storage and speculation. The immediate demand or disappearance of corn in the U.S. can be grouped into three classes. First there is the grain demanded for feed by livestock producers. Second, the food, seed, and industrial use must be accounted for. Finally, the amount of utilization in any period is dependent upon the level of exports. Total disappearance of corn (both domestic use and exports) has trended upward during the past two decades. In the past decade, corn exports grew faster than domestic use, resulting in a 15 percent increase in total disappearance. Since corn is a seasonally produced commodity and consumed throughout the year, there is a demand for storage and speculation. Storage acts as a buffer against price fluctuations by absorbing excess in years of low prices and 37 releasing stocks in years of high prices. Speculators hold the commodity in anticipation of a price increase that will provide them a profit. a) Corn Consumed By Livestock In 1982, corn consumed by livestock accounted for 84 percent of the domestic use of corn while also accounting for 82 percent of all grains fed to livestock. Competition among feed ingredients depends on relative prices and relative feed nutrition values. Producers can vary the rate in which they feed corn based upon the current price and availability of corn and substitutes (mainly soybean meal), the revenue generated by their particular enterprise, and any change in technology that structurally improves the efficiency of feed conversion. Feed use of corn, being a derived demand, is positively related to the number of animal units on feed. By disaggregating corn consumed by livestock into separate animal species, and estimating the rate of feeding per head, an estimate of total corn consumed by livestock can be made by multiplying the rate per head by the inventory value and summing across each species. This technique should improve the overall estimate of corn consumed by livestock. b) Food, Seed, And Industrial Use Of Corn Food, seed, and industrial (FSI) use is expected to continue the upward trend established over the past 10 years. However, evidence is mounting that future increases 38 will not be nearly as large as in the past. In the early 1980's, FSI use increased an average of more than 10 percent a year, but for the 1986 crop year, only a 2 percent rise is projected. The FSI use of corn doubled in the 1970's as a result of expanding markets for high fructose corn syrup, other sweetener products, and ethyl alcohol. Each of these factors will be examined to help explain why this quantity of demand cannot easily be estimated. 1) FOOD High fructose corn syrup (HFCS) has held the highest portion of FSI usage in this decade, and currently ranges close to 30 percent. HFCS is used in a variety of products including soft drinks, baking and cereal products, and dairy and canning products. Soft drinks can use HFCS for nearly 100 percent of their sweetener needs, however, it is not technically possible for most other products to do so. Almost all of the products containing HFCS are approaching their theoretical limits of use, therefore, continued growth can not be expected without increased future demand for end products, population growth, or development of new uses for Hch.19 ii) SEED Seed use is primarily related to the number of acres to be planted in the coming season with secondary effects from 19. Feed Situation and Outlook Report, August 1986, p. 11-13. 39 trends and from crop prices. Typically, the higher the market price the higher the seeding rate. Since the seed used by producers is a special hybrid variety, the demand for hybrid seed will need to be estimated. iii) INDUSTRIAL Alcohol production from agricultural commodities is not new. During the Great Depression of the 1930's, there was considerable interest in producing ethanol from grains. Ethanol currently accounts for nearly 25 percent of FSI usage. A great deal of interest in domestically produced oil substitutes was evoked by the Arab oil embargo in 1973, the Iranian crisis of the 1980's, and the decontrol of domestic crude oil prices in 1981. Each of these events caused gasoline and crude oil prices to increase rapidly. Since ethanol can be made from renewable resources such as grain and other agricultural biomass, and serve as a gasoline extender, major government efforts were undertaken to stimulate this domestic industry. There are two types of milling processes for obtaining ethanol from corn grain. Both yield approximately the same amount of ethanol per bushel of grain.20 The dry-milling process is the simpler process, but the wet-milling process yields more valuable by-products one of which is high fructose corn syrup. 20. Donald R. Hertzmark, "Economic Feasibility of Agricultural Alcohol Production Within a Biomass System," AJAE, Vol. 62, No. 5, December 1980, p. 965-71. 40 A number of important issues are raised when considering fuel alcohol production from agricultural commodities. Whereas ethanol production is seen as a means to increase farm commodity prices and income, what impacts will ethanol production have on food prices? What are the impacts of farming land more intensively, and possibly bringing more land into production? What will be the impact on substitute commodity prices such as soybeans and sorghum? Given these policy issues and the current worldwide glut of crude oil, enthusiasm for ethanol and other alternative fuels has diminished. c) U.S. Corn Exports Due to the dominant role of the U.S. corn industry in the world coarse grain market, the domestic supply, demand, and U.S. government policy changes, significantly affect world markets for coarse grain. Since 1970, the level of U.S. coarse grain exports has been closely tied to the level of the deficit outside the U.S. The implication is that, estimates of the deficit outside the U.S., provide a good handle on what U.S. exports would be. To model the U.S. export relationship, the world coarse grain situation must be examined. The assumption made for this project is that there are three regions in the world: the U.S., the residual exporting countries, and the . importing region. 41 Estimates will be made for the net imports on a per capita basis demanded by the importing region. It is necessary to include population in the formulations to account for any changes in demand caused by the annual trend increases in population. By assuming that the each country in the exporting region is working toward internal price stability, exporter net exports per capita can be an identity which specifies that the region will export everything not consumed or held for stocks. This quantity in the international component should also be estimated on a per capita basis. The difference between the quantity demanded by the importing region and the quantity supplied by the exporting region will be the U.S. exports. d) Stocks For Storage Since the 1930's, the U.S. government has used price supports on many storable commodities and thus have held stocks to help maintain both orderly marketing, and prices above equilibrium. The current stock holding programs include grain purchased under government loan and held in the Commodity Credit Corporation (CCC) and that owned in farmer reserve (FOR). Free stocks and those held for speculative purposes also account for a portion the demand for stocks. The effect that increased stocks have on U.S. prices will depend on whether the stocks are stored under policy rules or as free stocks. 42 Although the government holds stocks to maintain price by soaking up excess production, the knowledge of the quantity and the release price for FOR and CCC stocks discounts its effectiveness. The quantities of grain placed in FOR and CCC are not residual ending stocks but are determined by government programs and producer expectations. Ferris notes that an adjustment must be made to account for the knowledge of the quantity stored and release price of grain in FOR and in the CCC.21 Rather than adding all FOR and CCC grain to the ending stock equation, Ferris deletes about half of the grain held in FOR and CCC. The rational is that grain held off the market would tend to raise prices. However, the existence of grain in the government program also has a depressing effect on the market. Thus, the relevant ending stock equation for U.S. policy stocks is actually somewhere between total ending stocks and free stocks.22 It is necessary to develop rules for accumulation and release of FOR and CCC stocks based on producer expectations, the quantity stored and the release price. If the farm price is less than the loan rate plus interest and carrying charges, the producer has no incentive to redeem his loan and the grain held under FOR and CCC will increase. The lower the expected price relative to the loan rate, the 21. J. Ferris, "Feed Grain, Wheat, and Oilseed Supply and Demand," MSU Staff Paper, October 1985. 22. Total Ending Stocks = Free stocks + % CCC + % FOR. 43 more grain will be stored as more producers participate and a greater percentage of acres are committed to the program. When prices are expected to be above the loan rate plus interest and storage there is little incentive to participate in the program and there is little accumulation of government stocks. If prices rise to a policy established trigger, the government would begin to release grain onto the market. The quantity of grain released would depend upon the upward pressure on price. Shagam hypothesizes that a cubic function is the form which could provide a smooth curve with the correct shape to model the turning points in the accumulation and release of government policy stocks.23 Shagam notes that one of the shortcomings of a cubic form for an accumulation and release of policy stocks equation is its potential to be explosive if prices are very high or very low. Although not all inventory positions are not held for speculation, some stocks are held by individuals in the anticipation that price will rise during the marketing year. Assuming free stocks are held for speculative purposes, a relationship can be made between anticipated use, the perceived level of policy stocks and prices (relative to current prices). When all of the demand quantities (both immediate consumption and speculative demands) are summed 23. Shayle Shagam, "Specification and Structure of an International Agricultural Trade Model With Linkage Capabilities," master's thesis, Michigan State University, 1986, p. 51. 44 horizontally, the total demand for the time period can be calculated. 2.3 PRICE DETERMINATION This section will present the theory and conceptualization needed to forecast the annual average U.S. farm price of corn. 2.3.1 Theoretical Considerations To simplify the price determination analysis, economists use the concept of a perfectly competitive market to model agricultural product price behavior. The federal government intervenes in the pricing of grains (as well as other products) in the U.S., but models which assume competitive behavior are still useful in establishing a theoretical norm against which actual behavioral price effects can be measured. In a purely competitive market, it is assumed that every firm seeks to maximize profits by selling at as high a price as possible, and every individual seeks to maximize utility by obtaining goods at as low a price as possible. The collective actions of firms and individuals determine prices. In the analysis of pricing it is important to decide the length of time that is to be allowed for a supply response to changing demand conditions. To further simplify the analysis, the assumption that the production period for the firm is the same as the purchase period of the —_._— 45 individual is made. If the purchase and production plans of the firm are made at the beginning of the period, and once these plans are made, they remain unchanged until the next period, then, a theoretical static analysis can made. When the price and quantity relationships for the firm's short run supply schedule and for the individual's current demand schedule are equated, an equilibrium price and quantity are established. An equilibrium price is one for which the quantity demanded is precisely equal to the quantity supplied and the market is cleared. The equilibrium price serves two important functions. First, this price provides information for firms with which to decide how much should be produced. The second function of this price is to ration demand. There are many reasons why either a supply or demand schedule might shift. Such shifts may be caused by changes in prices in other markets, in tastes and preferences, or in productive technologies. When either a supply or demand schedule does shift, equilibrium price and quantity will change. The relative magnitudes of such changes depends upon the shape of both the supply and demand schedules. The rise in price that follows any given increase in demand will be the greater the less is the price elasticity of supply, and it will be the less the greater is the price elasticity of supply. Conversely, for any given change in supply, the ensuing change in price will be the greater the less is the 46 price elasticity of demand, and it will be the less the greater the price elasticity of demand. In the next section the conceptual considerations needed for price determination are presented. 2.3.2 Conceptual Considerations A common approach to estimating the current period price is through the ratio of ending stocks to total demand. Where current supply is a function of lagged price, current demand is a function of current price, current ending stocks are the identity current supply less current demand and lagged ending stocks. This procedure is commonly referred to as a "disequilibrium" model stemming from the failure of the price equation to necessarily equate supply and demand. The FAPSIM model notes that this failure results from the estimating of the above price equation as a structural, rather than a reduced form, equation.24 The FAPSIM model uses an alternative framework where the market price equation is determined by substituting the supply, demand, and ending stock functions into the supply/demand identity and solving for price. Comparison of the two price equations indicates that the original formulation will not necessarily provide a market clearing price consistent with specified demand and supply schedules. Ferris hypothesizes that in any given year, world prices will affect U.S. crop exports, seeding rates, and 24. FAPSIM, op. cit., p. 14. 47 feeding rates.25 These changes in world price in turn modify total domestic utilization and ending stocks. In essence, the world price is established by determining a margin over the U.S. loan rate. If the farm price of corn drops below the loan rate in this computation, the farm price is set at a level reflecting the influence of the loan, having the effect of putting a floor under the market. The loan rate is set exogenously in response to domestic pressure, and because the U.S. is the dominant world exporter, this same support price will also act as a floor on the world price by soaking up and storing excess supply before it goes into export channels. These price determination schemes can be used as a starting point for market clearing (equilibrium) within the balance sheet. 25. J. Ferris, "Feed Grain, Wheat, and Oilseed Supply and Demand," MSU Staff Paper, October 1985. CHAPTER III SIMULATION MODEL CONSTRUCTION Chapter three examines how economic and statistical theory can be used to guide in the construction of estimable equations capable of forecasting the farm price of corn in the U.S. The data calculations, equations used, and empirical results are presented. 3.1 THE SIMULATION MODEL Construction of a simulation model begins with the specification of a set of individual supply and demand relationships, which explain the behavior of agricultural product prices. Applied econometric techniques are used to estimate specific economic coefficients (parameters) and provide forecasts of prices or the variables affecting prices. These quantitative techniques serve the purpose of making the supply and demand relationships among variables explicit. The simulation model should be consistent with the logic and theory underlying the commodity being analyzed. According to Tomek and Robinson, model building may be 48 49 viewed as having two parts.1 One involves the specification of the economic model, that is, the general economic relationships. Economic theory suggests the general types of functions that may be appropriate for a particular research problem. The second part of model building involves the explicit definition of structural equations which are to be estimated. These structural issues are presented with each equation. Following the development of the conceptual framework, observations which reflect the hypothesized variables in the model must be collected. In practice, the specification of the equations to be estimated is likely to be influenced by the data available. Finally, coefficients which relate the variables to one another are estimated, and evaluated according to statistical procedures. 3.2 GENERAL ECONOMETRIC PROCEDURES Econometrics is the science of abstracting or modeling the real world through the use of (typically) quantitative methods.2 By concentrating on the types of models that can be expressed in functional form, data can be used to estimate the parameters of the equations and theoretical relationships can be tested statistically. 1. W.G. Tomek, and K.L. Robinson, Agriculrurel Product Priees, Cornell University Press, Ithaca, NY, 1972, p. 303. 2. Robert S. Pindyck, and Daniel L. Rubinfeld, Econometric hodels eng Ecpnomie Porecasrs, McGraw-Hill, New York, 1981. 50 Conventional economic theory, regardless of form, postulates exact functional relationships between variables. Any introductory examination of economic data, however, indicates that points do not lie exactly on straight lines or other smooth functions. Thus a stochastic term must be introduced into economic relationships. The stochastic term may take on positive or negative values and helps explain reality by accounting for excluded variables in the explicit function, unpredictable randomness in human responses, and errors in measurement of relevant variables. The important assumptions about the stochastic term concern its probability distribution. The simplest assumption is to assume that the term has an expected value of zero, zero correlation among different observations, and a finite variance. The objective is a hypothesis test that the relationship among certain variables can be predicted or explained to a large extent by other variables. Many rules can be created to define the relationships among variables, however, the least squares criterion is the procedure said to give the line of best fit. The line of best fit is defined by those parameters which minimize the sum of the squared deviations of the observations and the estimated relationship. Least squares estimated parameters have the properties of being linear functions of the actual observations, and being unbiased linear estimates of the actual parameter. 51 The procedure of choosing the line of best fit is often referred to as ordinary least squares (OLS). OLS estimates of parameters have the minimum variance and conform to the Gauss-Markov theorem, which states that given the assumptions about the stochastic term, the parameter estimates are the best (most efficient) linear unbiased estimators of the actual parameters. OLS estimates of the parameters are appropriate due to the recursive nature of the model and the iterative process used to solve the price equation. Using OLS estimating procedures provides information about the distribution of the parameters, and makes possible the construction of confidence intervals and testing of hypotheses concerning those regression parameters. 3.3 STATISTICAL CONCEPTS AND RANDOM VARIABLES The most important objective of a statistical analysis is to draw inferences or generalities about a population from the partial information embodied within sample data.3 The statistical concepts needed to do analysis and make inferences about a particular population are the sample mean and sample standard deviation. The sample mean is a measure of central tendency and represents the center of a data set. The mean is generated as: 3. Gouri K. Bhattacharyya, and Richard A. Johnson, Sterisrieal Qeneepts ehd Methogs, Whiley & Sons, New York, 1977. 52 MEAN = (sum of all observations / number of observations). The sample standard deviation measures the extent of variation around the center and serves as a basic measure of variability. The sample standard deviation gives a measure of variability in the same unit as the data and is calculated as the square root of the sample variance. The sample variance is generated as: VAR = (sum of (each observation less the MEAN)2) /~ (number of observations less one). Using these calculations, some inference can be made about the population of yields and prices from the sample of yields and prices generated within the model. The central limit theorem states that when a sample of observations is large, the distribution of those observations is approximately normal, regardless of the shape of the population distribution. The yield of each of the world regional areas is based on (among other factors) annual weather patterns. If a single annual weather pattern constitutes an observation from the population of all annual weather patterns, it can be assumed that the distribution of annual weather patterns is approximately normal and each of the world's regional yields is approximately normal. Because weather plays such a central role, the actual yield does not always take on the point forecast estimate, and is actually a continuous random variable. Continuous 53 random variables have the characteristics of being able to assume all values in an interval, have a probability distribution, a mean, a variance and a standard deviation. The assumption of a normal distribution for yields allows the use of a standardized random variable for generating random yields. The standardized random variable has a mean of zero and a standard deviation of one. It is customary to denote the standardized random variable by 2. Knowing the point estimate and the standard deviation for the yields will allow the world supply to be randomly shocked. To calculate the random shocks, a computer generated pseudorandom number can be used. The pseudorandom number has the property of being a number between zero and one, inclusive. The pseudorandom number with the prescribed property will have a population mean of 0.5 and a standard deviation of the square root of 1/12. By sampling the pseudorandom number generator a distribution of values (between 0 and 1, inclusive) is obtained, and a sample mean can be calculated from this distribution. To obtain the standard random variable 2, the following equation may be applied: 2 = (sample mean - population mean) / (standard error / square root of the number of observations). Once the 2 value is known, the point estimate and the standard deviation of the estimated equation are used to determine the random shock. The equation follows: 54 Shock = standard deviation * z + point estimate. By assuming yield is a random variable, it holds that supply will also be a random variable and thus, price will be a random variable. Using the random shocks the model will determine a price based on those random supplies and provide a distribution for price. Once the price distribution has been generated, statistical confidence intervals can be placed on the range of prices. These confidence intervals on the price distribution will be the basis of the risk aversion/decision analysis. 3.4 DATA SOURCE CONSIDERATIONS The type of data used in this research is time series. The sources of each data series are listed in Appendix 1. As noted in the general econometric procedures, the consistency of the data is important in the functional form of the equation and in the level of bias of the estimation parameters. An attempt was made to obtain observations for each series from a common and original source. Another aspect of data sources is the particular time series selected for estimation purposes. Parameter estimates generated from different sample periods may be substantially different because the structural relationship between the dependent and explanatory variables is subject to change over time. Given this structure, the sample period for each equation will be chosen independently. 55 The passage of The Food Security Act of 1985 mandates a change in the marketing year for corn from October 1 through September 30 to September 1 through August 31. This change, as mandated, is due to producers harvesting earlier in the year and new crop corn being used before October 1. The change in the feed grain data base has led to changes in the U.S. supply, disappearance and stocks estimates. The challenge involved in adjusting to the new data surveys lay in estimating past years' supply and disappearance balance for the newly defined periods so that a consistent historical data base could be developed. Because the marketing year in 1985 began on October 1, this research will not use data under the new market year surveys and most of the equations will be estimated through 1985. 3.5 APPRAISING THE RESULTS The interpretation of the estimated parameters will determine the usefulness of a particular result within the theoretical and conceptual framework developed. The coefficients of each explanatory variable are estimates of the net relationship between the respective variable and the dependent variable. These estimates are interpreted as the change in the dependent variable given a one unit change in the respective explanatory variable, ceteris paribus. For an estimated relationship to have a high degree of explanatory power, the variance of the regression and the variance of the coefficients should be as 56 small as possible. Small standard errors gives more confidence that the true, but unknown, parameter is within a relatively small range of the estimate. The corrected coefficient of multiple determination is a measure of the degree of the variation in the dependent variable associated with the variation in the explanatory variables. This coefficient, also known as adjusted R- squared can be used to select among alternative model specifications. The estimated parameters must stand the test of logic according to economic theory. If the sign of an estimated coefficient is not consistent with the logic of the economic theory, then the estimated equation is suspected of being misspecified. Further, the estimated parameters must stand the statistical evaluation on the Students t test (henceforth called the t statistic). The t statistic provides measures of the probability of obtaining an parameter coefficient when the true parameter is indeed zero. The t statistic of the estimated parameter is presented in the tables parenthetically below the respective estimate. Given the necessary assumptions about the stochastic term for OLS, we know that the term is to exhibit a constant variance over the range of observations. Serial correlation is the lagged correlation of a series with itself. Such behavior is usually a sign of specification error in the estimated relationship which can be caused by a variety of 57 factors. The Durbin Watson test statistic (DW) is a common test for the existence of first order serial correlation. Any nonrandom behavior of the error term is a sign of misspecification and should be investigated. When one or more lagged endogenous variables are present in an estimated equation, the DW statistic is no longer useful. The test statistic to be used in this case is the Durbin h statistic. The Durbin h statistic is Aapproximately normally distributed with unit variance and the test can be done directly by using the normal distribution table. 3.6 U.S. CORN SUPPLY MODEL Each structural equation used in the model represents an attempt to explain how the endogenous variables change from year to year. The estimation of acres planted contains the behavioral relationships for corn supply and therefore, must contain the relevant economic variables to explain this equation. To facilitate ease of updating and modification, the equation used to forecast this response should be relatively simple. 3.6.1 Results For Acres Planted The structure used to estimate the acres planted in this project used a variation of the Ferris model discussed in Chapter 2. The form of the equation is: 53 APCT = f ( REVCOR(-l), REVWHT(-1), PARTREV(-1), DVCRN ) where: APCT = Acres planted to corn in million acres in the current year, REVCOR(-1) = Real net corn revenue per acre, lagged one year, REVWHT(-1) = Real net wheat revenue per acre, lagged one year, PARTREV(-1) = Real net corn revenue for participating in the government program, lagged one year, DVCRN = Percent of acreage devoted to conserving uses . Revenue received from corn and competing crops provide expectations for producers to base decisions upon. Since policy and expected revenue affect the decision of acreage committed to corn, there must be some variable or proxy of these included in the equation. The signs on the variables for the acres planted equation are expected to be positive on the corn revenue and negative on the substitute's revenue, the participant's revenue and the conserving acres. The revenue per base acre for a participant in the government program is calculated from the gross from the market given the acreage limitations imposed, revenue from diversion payments and revenue from any deficiency payment. With this summation the variable costs are subtracted from the gross revenue to yield net revenue. The non-government program participant revenue and competitor crop revenue received in this estimation is the 59 real farm price multiplied by the yield per acre less the variable costs. These revenues do not include any income from government programs nor is it restricted by acreage limitations and therefore, is strictly a net return per acre. Each revenue is deflated by the consumer price index. Equation 1 of Table 2 shows the estimation of acres planted using net corn revenue for non participants, net wheat revenue, the participant's net revenue and the percentage of conservation acres. Dummy variables were used on two of the observations. The Food and Agriculture Act of 1973 caused an anomaly and the Russian grain embargo of 1979 caused the other. This estimate shows the net revenue for non participants to be negative which immediately dismissed the equation from consideration. The second attempt (equation 2 of Table 2) used net soybean revenue as the competing crop. Again the negative sign on the net corn revenue for non participants dismissed the equation from consideration. Several attempts (not shown in Table 2) were made at estimating acres planted using various combinations of revenues and dummy variables with unsatisfactory results. By assuming that the revenue for the participants is the most important variable and that most producers will be participants in the government program the net corn revenue for non participants was eliminated from the equation. Equation 3 of Table 2 shows this formulation. In this estimation, both dummy variables and net wheat revenue are 6K) nttou conuEOULoa cm .non: OCSSLoncou 0a touo>bt OOOOLOC u tonne doxLo: EOLG SL340: . «acctaoc coan0>mo . natozaoe vuSOmuueoa EQLOOLQ acctcLosoo ecu cu cowaoaauuuLoo SOL» OSSOSOL 00: noon n nuuvbuxobx Loo: 6:6 voooo— .OSSOSOL £00930» ac: use: u nutvnuxomc Loo: 0:0 toooau .QSSOSOL u06£a a0: doom n nucvbmmazc Loon 0:6 poovon .nacoaaumuLoa to: Low OSSOSOL :Lou do: data n nunvauazuc o onuxtocao .msod to» A OWL-0:0 :uQLo cofinnzu 03a L0G denouuo ou OuaomLOS 3:236 c up :6 o cadatoguo unsa— fe. _ out 0Lau~30wLoc us. took nsmu Qty Lou accouuo oa o—AQwLQS 98236 c hp 3: noses: " n n " num.0~lv u n0~.c|v " “ nwm.Nav ” " n-.Nv ” nur.nuu “ aho.omv " n u " LT.N " Nmm.u " 07m. " nnn.om1 " ouoool " cxz " w-.91 “ cxz " '79.? u mmn.w1 " n¢o.om ” mcugmm— " n n u n u u Acm.mulv ” Aan.91v ” nah.ocv “ " Awu.«|u “ Arm.~v n amo.«1v ” nth.wmv ” n u " wo.~ " mum." " «to. " mam.—m1 " unNO.OI " humo.au " C\z " Owwc.01 " cmn.m " m—N.fl " o0¢.~a u mau~¢mu u N u u u u " Amm.m«1v " noo.Dv " " aN~.~Iv " Awo.ov u n—~.Nv u n7v.~1v " num.rnv ” n u " Yr.N " mwo.~ " 07m. ” an.om1 " VOO.D n ¢\z " nO—.OI " mfo.oo " umn.r ” www.ml u mfn.um ” moi—mm“ u u u m m m o 0 1 1 m m m m m o . u 35 u .w .m u a A 28030 n n—uvbwmcbu “ nulubuumma " n—Iuawuzzu " n—Ivzwuzux " wk 30 " n~ :0 " «Clancou " vamLom ” cemaoavw" ” u u N 1 u " otmb ” " no.5omtss «covcoaouc. nOLUQ com—q“: cm 2390 Oh DNCZCJm mwxuc .m.: to» neg-zudnu nOLQDOm anooa SLQCuvLo ”N wane» 61 used. The t statistic on wheat price tested significant at the 5% level. The revenue generated when participating in the government program tested low at the 5% level but due to its importance, was left in the equation. The explanatory power of equation 3 was high with adjusted R-squared's of 0.95 and DW statistic's of 2.47, which show inconclusive results to signs of serial correlation. 3.6.2 Results For Acres Harvested The Agricultural Act of 1961 which called for specific acreage diversion programs for corn growers appears in Figure 1. This legislation can be viewed as a structural change and makes looking at two estimation periods, 1951 to 1986 and 1961 to 1986, interesting. The structure used to estimate acres harvested is: AHCT = f ( APCT, TIME ) where: AHCT Acres harvested to corn in million acres in the current year, APCT = Acres planted to corn in million acres in the current year, TIME = Time trend. Each estimate of acres harvested using the longer time period was lacking in explanatory power because of the structural change. This made the 1961 to 1986 time period more desirable. 62 89 L ..— 75 79 65 68 55 58 . 1951 1955 1969 1965 1979 1975 -1988 '1985 Figure 1: Acres Harvested To Corn In Million Acres The vertical line indicates the year (1961) which called for specific acreage diversion programs. The dashed lines represent the trend forecasts from (A) 1951 to 1985 and (B) 1961 to 1985. These dashed lines show a change in slope and thus a structural change in acres harvested. 63 By using the assumption that only the acres planted is related to the acres that can be harvested, equation 1 of Table 3 shows positive serial correlation. The positive serial correlation indicates a misspecified equation. If the assumption is that technology also contributes to the amount of harvested acres, then time can serve as a proxy. It is assumed that time would have a positive relationship in this equation to represent increases in producers ability to incorporate increased cultural practices. Equation 2 of the same table shows this relationship. An adjusted R-squared of 0.98 and a DW of 1.22 show a greater explanatory power and decreased evidence of positive serial correlation and make this the equation of choice. 3.6.3 Results For Yield Per Acre An estimate was made of the actual yield per acre using one of the simplest approaches in forecasting. By assuming that events from-the past will continue in the future, a trend estimate may be used. Unfortunately, forecasts based on trends miss all turning points for the variable, however since yield estimates are based on random patterns, this need not be a factor. The functional form follows: CORNYT = f ( TIME ) where : CORNYT Corn yield in bushels per acre in the current year TIME Time trend. 64 ~w n me— .pcmta Temp wzuh mem acmLLDO wfia Cw CLOU 0a poacmaa mmLoc hunt umLm£3 " u n " Amm.Nv " an.NNv “ ANm.mIv ” u u " mm.“ " mm~.— " mum. ” NmD—.D “ thm.o " wmv.ml " mmtgmma " N u n u u u " ANN.va " Awm.N1v “ n u " mmm.o " mmN.~ “ gum. " I\z " mmvm.o " www.ml " mmu—mmm " g u u 4 1+ 1111111111 + 1111111111 + 1111111 4 4 I 4 4 u 30 u .m .m u m " wzuh " bout u acmamcou " Dowtma " COMDTDUm" " n u N I u 1111111 “ Temp " u u n n 1 $32th €356.65 " u " mmtom cowfiufie cw pmamm>tmx mmtom .m.: Low mmumeaumm mmLmzom ummmd mmemDLo um MJth 65 Here time serves as a proxy to productivity for the period of 1950 to 1985 (See Table 4). A long time period in a trend estimate helps to reduce the standard error and increase degrees of freedom. The estimate shows that an increase in yield of 2.15 bu/acre per year can be expected. 3.6.4 Production and Supply Production and supply are both identities. Production estimates are generated by using the estimate of acres harvested multiplied by the estimate of the yield per acre. It takes the following form: PRODT = AHCT * CORNYT where: PRODT Corn production of the current year, AHCT Acres harvested in the current year, CORNYT Corn yield in the current year. The supply is the beginning stocks (ending stocks from the previous year) plus the current production plus any imports. For this model, the U.S. imports will be considered predetermined. The supply identity has the following form: TSPLYT = PRODT + EST(-1) + IPORTT where: TSPLYT = Total supply in the current year, PRODT Production in the current year, EST(-1) = Ending stocks lagged one year. IPORTT Domestic imports in the current year. 66 cm u cmmfi .ncmts mess u uzsp "616:3 " u u " A_m.k_o " nom.muo " n u " mo.~ " "66.x " mmm.o " m_.m " mum._nu " mmaomms ” S u 1 2o 1 .w .m u a n was» " acuSmcou “ vowtoa " cowaoaam” ” n n N u u . a med» 1 u u u “ "mLomLLms ucmucmaancs " u u '5|'||l'8'5"|5""5'5'lll5'5'l mtom\m~mm£m3n CL ufiow> .m.: Lou mumewbmw mmtmagm ammo; mmewpto "1 memk 67 3.7 U.S. CORN DEMAND MODEL The equation used for the demand component is the identity: TDMDT = FEEDT + FSIT + XPORTT + STOCKST Total use (TDMDT) is the sum of corn used for livestock consumption (FEEDT), food, seed, and industrial use (FSIT), exports (XPORTT) and ending stocks (STOCKST). In turn each of these demand components are estimated functions or identities composed of other variables. 3.7.1 Results For Corn Consumed By Livestock The livestock feeding rate per head was conceptually developed to be: that amount of corn which a producer will feed in any time period based upon the value of output from feeding, the cost of the feed, the cost of a substitute feed, and any information regarding technological changes. The functional form of the feed use equation is as follows: CONSUMPTION = FEEDING RATE/HEAD * ANIMAL NUMBERS where: FEEDING RATE = f ( OUTPUT VALUE, OWN PRICE, SUBSTITUTE PRICE, TIME ) ANIMAL NUMBERS Inventory values of the animal species. By separating each animal species and estimating individual rates of feeding and multiplying the feeding rate 68 per head by animal inventory numbers, each species can be summed to give the total combined corn use. The corn price is expected to be inversely related to the rate of feeding while the substitute price is expected to be positively related, which follows from the marginal rate of substitution discussed earlier. The sign of the output price is expected to be positive since the short run response of producers to increases in product price is to feed animals out more heavily. The technology variable is expected to have a positive sign, reflecting the increase over time in the ability of an individual animal to utilize more feed. Price series data for this component of demand are collected with different months (other than the corn marketing year) establishing the market year. In order to make meaningful aggregations of prices and quantities, all time t periods cannot be aggregated together. Because of this, it is necessary to "overlap" price and inventory data series where possible. This overlapping means to include the time period of price and inventory which falls within the consumption year. The time map in Table 5 shows the relationships between the marketing year and the various output price and inventories. By referring to the time map, the association between the corn marketing year and relevant price and inventory observations can be made. 69 TABLE 5: TIME RELATIONSHIP MAP Calendar year t t+1 ------ +------+------+------ ------+------+------+------ JAN APR JUL OCT JAN APR JUL OCT ] t-1 corn marketing year t t-1 consumption t ------- +------+----- -------+------+------+----- ------ JAN APR JUL OCT JAN APR JUL OET dairy animal number beef cow number cattle and calves on feed * JAN 1 hen, pullet, and other chicken number hog and pig number * DEC 1 broiler production turkey production ------ +------+------+------] J APR JUL OCT milk price t t+1 milk cow price t t+1 steer & heifer price t t+1 beef cow price t t+1 J """ ipfi""3$£""6c§ """ 3111""Xpfi""30£""6ci '''' 1 egg price t t+1 broiler price t t+1 turkey price t t+1 hog price t t+1 -+ ------ + ------ + ------ + ----- + ------------ + ------ +-- -- JAN APR JUL OCT ][ JAN R JUL OCT ][ 70 For example, in aggregating the hog consumption per head, the corn consumed by hogs in corn marketing year t is divided by the hog and pig number in calendar year t. Dairy animal consumption per head used corn consumed by dairy animals in corn marketing year t divided by the dairy animal number in calendar year t+1. Likewise, the corn to output price ratios used the output price in calendar year t+1 divided by the corn price in marketing year t. This shows an overlapping because the corn marketing year contained between 9 and 11 months of output price year t+1. Without using the values that fall in the corn price marketing year and simply using all time t periods, the aggregated variable would be biased due to insufficient or misinformation. a) Dairy animal consumption per head The dependent variable dairy animal consumption per head used dairy animal numbers for milk cows and heifers that have calved as of January 1. The estimates of dairy animal consumption used time to proxy technological changes, real farm price, the real milk price, and the real wheat price. Several attempts were tried using various combinations of variables and time periods. The most favorable equation used the longer time period which was 1970-84 and had signs that were all correct (see equation 2 in Table 6). The adjusted R-squared is high and shows a good fit for the estimate, the standard error is 71 " mm." " mv.m " 0mm. " mm.“ " hw.m " mmm. “ 1111111111 + 1111111111 + IIIIIII u :o u .m .m u a n u n N 1 h3U\9 .TOLLQ x_fle “do mmmLm>m gmjccm mama " Amm.~v " Amm.N1v “ mVK.D~ ” me.mN1 “ Amh.~v " Ahv.N1u " omm.o~ " mmm.mm1 111+ 1 I 4 1111 hahrza ” 55555555"-l555555555555555'5555555l’ll5555555555555|I|555 :mxw Saar; to mocta eLma Imam u pahxza sax» area to mopta stat Emma u azamma u banks: on u omm_ .ncmt» mew» u was» norms: m ALL._V m Ahm.no m Ams.muo m m m m m_4.m m mmm.~ m m_m.mmu m vmsonm_ m m m m Amo.~o m “om.mo m Amn.muv m m m " wwv.m " ova.” " mwm.nm- " van—mm” " L w M..-m.mmm--w--w...m 5.31.3 3:... “53.39 1111 mmmnmeOD ucmvcmnmtcn m Dem» M m mwamewumw mmLmnvm DmNOJ mmemULo um wAmmh awn zonhaznmzou zmou szuzc >mH¢D Lou 72 the lowest among the attempts and the DW statistic shows no sign of serial correlation. b) Cattle on feed consumption per head The dependent variable cattle on feed consumption per head used cattle and calves on feed as of January 1. The estimates of cattle on feed used time, the real farm price, the real soybean meal price, the real steer and heifer price, and a lagged dependent variable. Again several attempts were tried using these variables. The estimate which showed the most favorable results used the time period from 1971-84 and stood the test of logic (equation 2, Table 7). The sign on the time variable is negative which could indicate that a substitute for corn as a feed has been incorporated into the cattle on feed ration over time. The signs of the other variables are as expected. In equation 2, the standard error was the smallest among all attempts and the adjusted R-squared was the highest at 0.61. The equation used a lagged dependent variable so the DW statistic was not applicable. The Durbin h statistic of 1.31 shows that at the 5 percent level (the critical value of the normal distribution being 1.645), the null hypothesis of no serial correlation cannot be rejected (i.e. not significantly different from zero). '73 L803 6:0 Dammon .DMDL Lou comaaeamcoo CLOO Doug co o~a»ou u DNQQCJ ZDh\u .OOMLQ ~mwe comnmon doom u sza :m\« .CLOO no oomLa ELUG “mom n azacum omuut A:m\«v CLOO mo womta atom ~00L “ Apzoxoo oo_ta Lemma; 6:6 Loosu Loom u ochca _k u Sums .ucmtu aeflh u mzsh "616:3 n n u Amm.muo ” u " Amm.mv " Amv.m1o " Anv.vo " u " mxz " m1.m " now. " vmmm.o1 " mxz " cxz ” mmm._ " m-.~1 " m-.ov~ " 4m1~um~ " m u n u u “ Amo.~v " nqv.~-o ” u " Amm.vv " u " om.~ " mm.__ H mm". " mxz ” mm_.o " omm.m_1 ” mxz ” ex: 1 smv.mm " can—km_ " _ 1 3o 1 .u .m u a “ sumac; “ 62mm " azacua " oshmm ” wash " Lcnpmcou ” 608186 " comumavm“ " u m 1 I 1 " oe_p ” u u n " mm_nmqtn> acmvcoaouc_ " n " cam: mun zo_»az:mzou zaoo omwu zo mshpmu Lot moumecsmm marmaum Swans mtmcmnto "k msmcp 74 c) Other beef cattle consumption per head The dependent variable other beef cattle consumption per head used beef cows and beef cow replacements on January first. The estimates of other beef cattle used the beef cow price, the real farm price, real soybean and wheat prices as. substitutes. The attempt which showed the best results used the 1971-84 time period, a lagged substitute price and also stood the test of logic (equation 2, Table 8). In this estimation, the adjusted R-squared was highest (at 0.83) among all attempts while the standard error was approximately the same for all estimates. The estimate did not have enough observations to show a critical value on the DW statistic table. d) Hen, pullet, and other chicken consumption per head The dependent variable HPC consumption per head used inventories on December 1. The estimates for hen, pullet and other chicken consumption used the real egg price, the real farm price, the real soybean meal price, real wheat price and a lagged dependent variable. The time period of 1971-84 showed the best results with logical signs on all variables (equation 2, Table 9). This equation had a smaller standard error and a higher adjusted R-squared which all indicate a better fit. Again because of the lagged dependent variable, the Durbin h 75 mem TED Dwmmmfi .COH\« .mUflLa Hmme cmmnmom “mum x ZDb\& .muqta "mme cmmnmom uwma n sza OADML A:m\wv CLOU no TOMLQ Etmm MMOL u Ah30\wv quimamfim Lou ufiom 300 ~HDO Dem .bcmemumuamt DLUL d Lmu£mam~m Lou 300 mwom n Omhmm "OLOLB " u u u x ANN.NV " Amw.nv " Amm.mv " u n " om.N " owm.o " mm . " mvoa.o “ m~_.o " mnm.m “ vm1~nm~ " N u u n n “ Amm.ov " Amm.mv “ Aow.o~v " u u " —¢.N " o~m.0 " Nmm. “ vgoo.o “ v-.o “ mNN.m “ vm1~nm~ " H n u 111111 4 11+ 1111111111 + 1111111111 + 1111111 4 4 4 111111 + u 30 u .w .m u a " dzma " enema " acmumcou " pogtmd " cowumavw" “ u u N 1 11111111111111111111 " memh “ . Dim: awn zomhazzmzou zaoo wdhhcu uwwm mtho Low mwumewumm meMDUm JMMOA mmewflLD um mech '76 L003 mco vommw~ .UOOL Lou coduaezmcoo coxoaco LOLA» DEN uO—«DQ .CEI u DMQQtJ :m\4 .Laara mo mo_ta stat _~ma u hapxza zo»\« .oomLa Home cmanmou ~oma u azmm :m\9 .CLOO mo oomLa ELMO “mom n azmcua Nooxmpzwo .Ammmm marrosmr meta—ocso oomta moo -ma u banks: "616;: ” n " Amm._o " Amk.so “ Amm.~o ” Aw~.m-o ” " Anm.mv " u " mxz " 601.0 ” mom. " m_-.o " movm.o ” ~_oo.o 1 mvwk.o- ” cxz " mvmm.o " 4ma_km~ " N u u u " Amm._o " ” Amm.oo n Avm.~-v " “km.ov " Av~.m-v " u " mxz " m~_.o " mac. " mmmm.o ” mxz " mooc.o " mv-.o1 " mvoo.o " mmom.u- ” 4mu_ums “ L n :o n .w .m u a ” sumac; " Lapxza " azmm " caucus " pzahzo " acaamcou " newton " comamaam” “ u m 1 u 1 6cm» 1 ” moannquD OCOUCOQODC— Dam: awn zouhazsmzou zmco szQHIU awa0 02: budgna .zwI LOG moumewumw mmLQDUm DmOOJ mmewDLO "m wqmcb 77 test statistic must be used. The Durbin h showed that the null hypothesis of no serial correlation cannot be rejected. e) Broiler consumption per head The dependent variable broiler consumption per head used the number of birds produced from December 1 to November 30. The variables used in the broiler estimation were time, the real farm price of corn and the real wheat price. The time period chosen was 1971-84 and it showed fair results with a small number of observations. The signs of all independent variables were correct for the test of logic (equation 1, Table 10). The adjusted R-squared showed a good fit of the data to the dependent variable while the Durbin Watson indicated no signs of serial correlation. f) Turkey consumption per head The dependent variable turkey consumption per head used annual production counts from December 1 to November 30. The estimate uses both the real farm price and a lagged dependent variable, and the real wheat price. With an estimation period of 1971 to 1984, each variable showed significant t statistics (equation 1, Table 11). The explanatory power of the equation is only fair in being able to attribute less than 64% of the variability of the turkey consumption to the variability of the independent variables. The DW is not applicable in this case due to the lagged dependent variable and the Durbin h is inclusive. 78 :m\9 .ummfiz m0 TOALQ Eme ~mwa :m\« .CLOU no mofiLa ELM» umwa hahzzm azmcum In H sums .ucmta memh n quS "arms: " u u " Amm.flo " “mm.muo " Am~.mc " “mo.oo u u u “ ~o.m " moo.o " mm“. 1 mmuo.o " smvo.o: " vloo.o " mmoo.o " vm1_nms " _ u 1 2o 1 .m .m n a " Lapzzm " azmmua " mass ” Samamcou “ nofitoa " cowumaaw" " u u N 1 n " wewp " u u n u “ mmsnmmtmz acmucmaoucs " n 1 new: mun zo_»az:mzou zaau amqsomm Lou mumepumm marmacm Emma; mtmcwuto "as uhmcp 79 mem use Dmmmm~ .EMTL Lwa cowaueamcoo CLOU mmeJH DNGQEJ :mxa .mera mo mocta atom Emma hapxza :m\« .CLOU no mUfiLa ELmu damn azacum umLm£3 " u u " Amv.~v " Amm.LV " Amo.m1v u Amm.N~v " u u " ¢\z " “40.0 “ mmw. “ mmod.o " owN~.o “ mmvm.o1 “ wmcn.o " vmlgnmu u L n n 4 4 11111 +1111 4 4 4 4 4 4 1 2o " .m .m u a " gamma; “ Lapxza " azacma " scmfmcou " uoLLma " comamaow" " u n m 1 n " mewp " " mmanmLLmb acmvcmamuc_ 6I'I‘I'l‘ll'l'6556-555255'55ll‘lll'll'l‘S'll'l'I," 5‘256l'II‘I-I-Il‘" .5" I all. emu: awn zospazzmzou zmou waast Lea mfmemsmw morasom snows mtmcwuto "I“ m4mck 80 g) Hog consumption per head The dependent variable hog consumption per head used the hog and pig inventory on December 1. Hog consumption was estimated using time, real hog price, and real farm price from 1970-84. The estimate with the best statistics among those attempted used the 1971-84 time period and had the highest adjusted R-squared and the lowest standard error (equation 3, Table 12) of all estimates. The signs were all logical but the DW statistic showed inclusive results while a pattern existed in the residual plot. h) Other and unallocated consumption To estimate the consumption of each species on a per head basis, the animal inventories must be known. The only data obtainable for other and unallocated was sheep and lambs on feed as of January 1. Since other species of animals consume corn during the year (i.e. horses, mules, etc.), the other and unallocated consumption cannot be estimated on a feeding rate per head basis. Equation 1 in Table 13 shows the estimate of other and unallocated consumption. The independent variables of real corn farm price, real wheat price, and time show good statistics when dummy variables are used for the years 1982 and 1984. The dummy variables were necessary because an unusually large amount of corn was placed in this category during those years. The real farm price was negative while all other variables were positive which is expected from the 8]. h30\0 .MLOELNG ma Dw>mmoaL moo: 40 OUmLQ 0mmLu>m _mwm :mxu .Smora to 60116 stat Iowa u pahzza ZDh\§ .uomLQ nous comnmom mama u szm Dm\u .CLOO mo OOMLQ Eme _mmm szcum PDQHDD on n cums .vcots each n szP "otmra “ u n u n " flak.m1o ” Amo.4o " Am4.mv " A_m.fizo “ n u u 44.” “ m~._ " mum. " mxz " mxz " Nflm.k1 “ 4mm.o " mm4.o " vmm.v~1 ” 4m-_nms ” m u n u n u " Amm.~o ” Amm.o1o ” Amm.oo " “om.vo " Avm.muo n u u " v4.~ " mv.4 " mmm. ” cxz " who.o " Lm~.v- " Lum.o " mom._ " mnn.mm1 u emuonms ” m u u u u " Amm._o " " Amm.~16 “ Aom.ov ” Amm.~v " Amm.~1o “ u n 1 km.“ " _n.4 “ mom. ” omm.o~ " cxz ” _~m.o~1 ” mmm.o " omm.o “ mmk.mm1 ” vauoums " _ u u zo " .m .m u a u pahzzm " azma ” azacua “ packs: " uz_h " acmsmcoo “ 601166 “ comumaum" ” u u m 1 u 1 «amp 1 u u u u " mm_nmhtms Sconcaamvc_ " n 1 saw: awn zoupazzmzou zaoo we: 101 mmsmefluum mmtmaam ummms mtmcflnto "m1 msmc» £32 0 mmwaLmzuo uvmmu Uta Nmm— Lou u mocanwaammwv CLOO Go cofiuanmLummt mom: 0£a cm mum—mecca Lou Dcaooum 0a MO~nmmLm> mEEDD u *mbo pco NmDD :m\0 .&00£3 no oowLa ELOG Home hahzza :m\n .CLOO mo oomLQ ELOG ~80a u azacum _n H “mm" .pcmLS acme u wznp quora “ u n ” Amm.0~v ” Aum.m~v " AmD.~v “ Amm._1v " nvm.mv " A—D.v1v " u u " um.N “ mN.V« “ mmm. ” mmN.mO_ " "Dm.wNm " ~mv.mN “ mwN.mm1 " mmm.m u umv.N_v1 " vm1~hmn “ H n n 30 u .w .m u m “ Vmbo ” NmDD u hnhxza “ azamua " wZ—h " Ecuamcou ” DOMLOQ " comuwaow” " u u N 1 n " wemh ” " mmanmmLmD acmtcmamvc— I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I ZDHhQZDmZDU zasu thmUGAJEZD Dzm QMIPD Lou 0&mewamw meMDUm Dmmmd mmewDLG nm— mech 83 theoretical framework. The t statistic on the price coefficients are suspect of insignificance yet not extremely low. The adjusted R-squared shows good explanatory power. The Durbin Watson showed indeterminate results and was slightly suspect of showing negative serial correlation among the error terms however no pattern was evident in the residual plot of the equation. 3.7.2 Food, Seed, And Industrial Use Of Corn Given the evidence about FSI in Chapter 2, it would be difficult to forecast its future demand. It is known that the quantity consumed by FSI will level off, yet it is not known when or by how much. Therefore, this model will not attempt an estimate of PSI and will provide a predetermined quantity for purposes of total use. 3.7.3 Results For U.S. Corn Exports a) Assumptions Recalling the export formulation from Chapter 2, the assumption is that there are 3 regions. 1) The United States, 2) Residual Exporters, and 3) Importers (see Appendix 2 for a listing of the international regional groupings). Using the three regions, we assume that the U.S. will provide the balance of the world needs after the "dumpers" have exported their product. An equation can be formulated which shows that the U.S. exports (XPORTT) are equal to importer net imports (INIPC) 84 less exporter net exports (ENEPC). The form of this demand component follows: XPORTT = INIPC - ENEPC. b) Aggregations and Limitations There is a trade-off involved when aggregating the consumption and production of the entire world into three regions. The trade-off involved is: the simplicity of the model for the purposes of an easy to use educational tool, versus the precision of a complex system of equations and linkages. A simple model looses much of: the robustness of the more complex model, explanatory power, and estimates are likely to be less reliable, however, the complex system would be more difficult to maintain and use. To maintain some consistency in the numerous international data series, the data for gross domestic product and consumer price index for each region was indexed with 1980 equal to 100. It was necessary to weigh the regional gross domestic product data by feed grain usage and aggregate across regional areas. This procedure is essential to represent the degree of importance feed grain has in each regional area of the region in relation to their level of wealth. An example of the weighting procedure follows: 85 Importer Gross Domestic Product (IGDP)= SUM ((feed grain net imports of the past 5 years / world net imports of the past 5 years) * real gross domestic product). The weight is an average of the past five years net imports into the regional area divided by the total world net imports. This product is multiplied by the real gross domestic product of the regional area. Once the weighted real gross domestic product has been calculated for each regional area, the values are summed across each regional area to obtain the real gross domestic product for the importing region. The same type of aggregation was used for the residual exporter's gross domestic product. Again, a five year average of the net exports from the dumpers is divided by the total net exports and multiplied by the residual exporter's real gross domestic product. Finally, the value for gross domestic product is summed across the three countries to get the real gross domestic product for the exporting region. Importer and Exporter population was aggregated as the sum of the population of each region to obtain an importer and exporter regional population. SUM (pop i) and SUM (pop j) Where: i is the importing regions and j is the exporting regions. 86 The prices used in each U.S. export equation reflect the f.o.b. U.S. Gulf Ports feed grain price perceived by the respective importing and exporting region. To maintain consistency with the prices of the other components of U.S. demand a linkage was needed to relate the U.S farm price of corn to the export price of feed grain. The linkage is provided by calculating a simple average of the difference between the Gulf price and the farm price. The importer and exporter perceived price variable called for multiplying the U.S. real feed grain price by a regional normalized exchange rate. The aggregation is necessary because the varying in the exchange rate of the U.S. dollar to foreign currencies could cause the price that the particular region pays on the world market to vary even if the Gulf Port price stays constant. The price aggregation has the following form: Feed grain and wheat price = the real f.o.b. U.S. Gulf price * normalized exchange rate for feed grain and wheat respectively. The lagged revenue generated by the crop and alternative crops affect the amount of acres planted (and consequently supply) in the current period. This is due to producers having expectations of the profitability of the_ corp and being able to adjust production accordingly. The revenue variable generated summed the revenue of the 87 respective crop for each country in the region and has the following form: Revenue per acre = The lagged real crop price * the lagged yield per acre for the crop * the lagged normalized exchange rate for the crop all divided by the lagged local consumer price index. c) Importers net imports per capita Theoretical components for a demand function state that demand is a function of own price, substitute price and income. The importers net imports per capita equation takes the form: INIPC = f ( IFP, IWP, IGDPPC ) where: INIPC = Importers net imports per capita in thousand metric tons, IFP Importers feed grain price, IWP = Importers wheat price, IGDPPC Importers gross domestic product per capita. The theoretical framework for demand developed in Chapter 2 showed good results. The dependent variable importer net imports per capita used prices perceived by the importing region for corn and wheat, and per capita income. In equation 1 of Table 14, the signs were correct and all the coefficients were significant. The adjusted R-squared shows good explanatory power. The Durbin Watson statistic 88 Dcowowummoo com¢m~0LLoo _mmme LODLo1umeu 0:» n O£m maqamo LOQ CONDODDOLQ LmaLoaeu muwamo Lma uUDDOLO OWJETEOD WMOLm LDDLOQE— uncan— unnam— oomLa uwmga LouLoaeH u Q3~ oowLa cMmLm D004 LouLoae— u an— qumcs ” u u " Amv.mv ” Amv.N1v " Amo.mv " ANm._v " Am_.~1v " nHm.~v " n u H om." " m~DQ.D ” nmm. “ NNNN.D " ~m¢—.OI “ nmmmomm ” mooon.o " voooo.cl " ~D~D.c u vm1Nwm_ " m n u n u u ” Am~.—1v " AmN.vv “ nom.Nv " nwv.N1v " AmN.~v " u u " N~.~ " vuoo.o " ~Nm. " c\z " nvma.o1 “ Nmmmmwm u mDDDD.o " -DOD.D1 " Nnoo.o “ vm1~mm~ “ N u n u n u u " AN_.mv " Am~.mv ” AvN.m1v ” Amm.ov " u u " Dv.~ " m~DD.D " DNm. " c\z " m\z " menumm " mDDDD.D " m~DDO.DI " mNDD.o ” vm1~mm~ " H u u 20 u .w .m n a ” 0£a " UQOQEH ” UQQDQH " Q2~ " nun " Demumcou " UOMLOQ " cofiumacw" " u u N 1 u " memh " u u n u ” mwunmemb acmpcmampcu " u " mcoa oLLume pcmmsoxn cm chudmu awn whaoazu hwz ambaoaz_ Lou wmumewamw mmLmagm ammo; mmepro "vfi wqmch 89 of 1.4 showed indeterminate results. There was however, a pattern in the residual plot and the most recent observation having one of largest residuals which is undesirable. It seems rational to assume that the importers own supply would have an impact on the amount that they import in order to fulfill their demand, therefore an indication of their production can serve as a proxy. The sign of the production variable is expected to be negative because the more corn produced in the region, the less imports would be needed. When importer production is added to the conceptual formulation (equation 2 of Table 14), the standard error is large and the coefficient was suspected of insignificance. The adjusted R-squared of 0.92 showed a slight increase in explanatory power and the Durbin Watson statistic which, still tested indeterminate, was lower. Again there was a pattern to the residual plot and the last observation had the largest residual. The final estimate tried (equation 3 of Table 14) used a correction for first-order serial correlation. This estimate took 7 iterations for rho to converge. the standard error was smaller and the adjusted R-squared was larger than the other estimates which make this the equation of choice. d) Importers yield The importers yield was estimated using a time trend. The estimate took the following form: 90 IYIELD = f ( TIME ) where: IYIELD = Importers yield in metric tons per hectare, TIME = Time trend. This estimate is necessary in order to calculate the importing region's production and to determine the standard deviation around the yield for purposes of randomly shocking the world yield. The estimate (see equation 1 of Table 15) had great explanatory power at 0.97 but the DW statistic showed negative serial correlation. Equation 2 of Table 15 shows the correction for first-order serial correlatiOn and was the equation of choice. e) Exporters net exports per capita Since the exporters will export everything not consumed or held for stocks, the exporters net exports per capita is an identity which takes the following form: ENEPC = ESPLYPC - ECONPC - EESPC where: ENEPC Exporters net exports per capita in thousand metric tons, ESPLYPC = Exporters supply per capita in thousand metric tons, ECONPC = Exporters consumption per capita in thousand metric tons, EESPC = Exporters ending stocks per capita in thousand metric tons. 91 ucmwudummou :OwumfimLLOO wame LmDLO1umLMm mfih u 05a cm H omms .ncmr» 621» u mzsp 1611;; 1 1 1 1 1km.111 1 Amo.mmo 1 1k1.m116 1 1 1 1 mm._ 1 mmvo.a 1 mmm.o 1 ommm.o1 1 mmmo.o 1 44mm.ou 1 4m116m1 1 N 1 1 1 1 1 1 11m.mmo 1 1am.m10 1 1 1 1 mu.m 1 vao.o 1 mmm.o 1 xx: 1 mmmo.¢ 1 mem.oa 1 4m1omm1 1 1 1 1 3o 1 .m .m 1 a 1 era 1 wzHL 1 Lcmsmcou 1 6011.6 1 comamaam1 1 1 1 m I 1 I -1 1 meme 1 1 1 1 1 1 mm1BmLLms Scmucmamncs 1 1 1 mrmfomrxmco» oLLsme c1 DELL» aupaoazs Lou mmumew»mw mmLMDUm memq mmeflpLD "mm wdmmh 92 i) Exporter Supply Per Capita The Exporter supply aggregation was made by summing the beginning stocks (lagged ending stocks) and the production of the current period for each country in the region. The identity follows: ESPLYPC = EPROPC + EESPC(-1) where: ESPLYPC = Exporter supply per capita in thousand metric tons, EPROPC = Exporter production per capita in thousand metric tons, EESPC(-1) = Exporter ending stocks per capita in thousand metric tons, lagged one year. ii) Exporters production per capita By multiplying the estimated yield and acres harvested together then dividing by the population, the estimation of the exporter's production per capita can be obtained. The exporters production per capita has the form: EPROPC = ( EYIELD * EHA ) / EPOP where: EPROPC = Exporter production per head in thousand metric tons, EYIELD Exporter yield in metric tons per hectare, EHA = Exporter harvested area in thousand hectares, EPOP = Exporter population. 93 The exporters yield was a function of time to represent the technology changes made in the production practices. That equation takes the following form: EYIELD = f ( TIME ) where: EYIELD Exporters yield in metric tons per hectare, TIME Time trend. As expected the sign on the technology proxy was positive indicating increased cultural practices (as shown in equation 1 of Table 16). The adjusted R-squared and the Durbin Watson statistic were 0.89 and 2.03 respectively. This indicates a good fitting equation with no presence of serial correlation among the residuals. To complete the production equation the exporters harvested area was estimated with the following form: EHA = f ( EFREV(-l), EWREV(-l), EHA(-l), EES(-l) ) where: EHA = Exporters harvested area in thousand hectares, EFREV(-1) = Exporters feed grain revenue lagged one year, EWREV(-1) = Exporters wheat revenue lagged one year, EHA(-1) = Exporters harvested area lagged one year, EES(-1) = Exporters ending stocks lagged one year. Equation 1 of Table 17 Show the estimate of exporter area harvested. This equation used lagged feed grain revenue, lagged wheat revenue, lagged harvested acres, and lagged ending stocks. The signs of all variables were correct while the standard errors on the feed revenue and 94 16 u Smms .ncmts meLF u mzsc "mtmrs 1 1 1 1 Amn.m1o 1 Am1.mno 1 1 1 1 mo.m 1 mm11.o 1 1mm. 1 cmqo.o 1 omw.1- 1 4m116m1 1 1 1 u 4 + 11111 4 1 4 4 4 4 1 2a 1 .w .m 1 a 1 mzsp 1 Samsmcou 1 uoLLma 1 coLLmauw1 1 1 1 m 1 1 11 mad» 1 1 mmfinmeM) acmucmamvcm I'll-'8'.55575557|55556l'll-nl‘llllllllll'll mLmuumfixmcov oflLuwe cw 04mm} awhaoaxm Low mumewumw mmLNDUm DMMTJ mLmaULD no" memh 95 mem mco pmmmm~ .mxoonm mcwtcm LmuLoaxw mem mco Dmmmmfi .mme Dmumm>LMI LmuLonxw mem 0:0 pmmmmu .m:cm>mL dams: LoaLoaxw mem mco Ummmm~ .m:cw>wL cmmLm Emma LouLoaxm Aulvmwm nu1vczw A~1v>mmxm Afilvbmmum umLOLB 1 1 1 1 ANN.1IV 1 Avw.vv 1 Am1.N1v 1 ANN.HV 1 Amm.mv 1 1 1 1 m\z 1 mLN.~om 1 0mm. 1 mmmN.DI 1 VNmm.D 1 n~.mvm1 1 vm.voN 1 DNm.momm 1 vm1mwm1 1 1 1 1 3D 1 .w .m 1 a 1 ALIVmww 1 511V¢Iw 1A~1v3wa2m 1A11v9waum 1 ucmumcoo 1 pomLma 1 comumacw1 1 1 1 N 1 1 1 mewh 1 1 1 1 1 1 mw1nmfiLm3 acmpcmcmvcm 1 1 1 mmLmuomr pcmmDOLu :« mmam thmmbaml awhaOQXN Lo» mumeflamw mmLmaqm ummmm mmepro "n1 mqmcp 96 ending stock variables were higher than desired, however within a tolerable range. The Durbin Watson statistic cannot be used because of a lagged dependent variable in the equation. The Durbin h test statistic shows that the null hypothesis of no serial correlation cannot be rejected. The adjusted R-squared of 0.68 indicates fair explanatory power. iii) Exporters consumption per capita As indicated in the theoretical considerations, the . consumption function is dependent on income and some proxy for prices. The exporters consumption per capita takes the form: ECONPC = f ( EGDPPC, EFP, EWP, ESPLYPC ) where: ECONPC Exporters consumption per capita in thousand metric tons, EGDPPC Exporters gross domestic product per capita, EFP Exporters feed grain price, EWP = Exporters wheat price, ESPLYPC Exporters supply per capita in thousand metric tons. The estimates of exporter consumption per capita are shown in Table 18. Equation 1 has problems which is evidenced by the signs of the own and substitute prices. Theory says that the own price should have a negative sign while substitute price should be positive. This equation 97 co rnmfi Lo1 1 nmrldmmu Low o mvfiwnzm «our: STOSOLTN oza Low Disouuo cg 4~LOAL0> ozwgcm u zcrnzo oaflacu Lon mfiddan LoaLoaxu n umyamm oqud «00:: LouLoaxm n mzu GUNLQ :woLo U604 LosLoaxu u mum nawaou Lad burpOLd OwunOEOp nnOLm LovLoaxm H umaomw "OLOEJ m m m m Arm.m1c m nnm.wv m nm—.Nu m nr~.N1u m nhQ.Mu m nm~.Nu m m m m mv.N m Twfio.c m wNm. m mmmc.ou m ov~m.o m mmooo.c m D~QQ.O1 m mchNNn m m~mo.c m 7011mm~ m m m m m m m m Awm.mv m n~¢.©1u m ao~.—u m nhN.ou m n~c.Nu m m m m Dm.~ m m~mo.o m «Nu. m Ix: m m—rm.a m mono.91 m mocc.o m m.mmv~r— m mmou.o m rmnummd m N m m m m m m m nmm.11u m nNm.~u m new.mu m noN.Nu m m m _ 1 no N .m .m M a M zcvnzn m umEQmw M 13m M mum M omdnow M usuancou m pamLom M COAuoavum 1 1 1 N - 1 ......... -----..11.111111131111111...1 . 1 .5. 1 1 ncou UwLuor tenanciv cg cpnmmu 1mm zenbmrzmzou umbmomxm Low nocormvnm nOLaovm «wooq 3LOCNpLo «mu MJmc» 98 has the opposite of what theory would predict. When an Equation does not stand the test of logic, it must be dismissed from consideration. It seems rational that the consumption of the exporting region is also based upon the amount of corn which is available for use. This consideration is shown in equation 2 and again the signs of the own and substitute prices are switched. The formulation must be eliminated but important information is gained. This equation shows the exporter supply is significant and helps to reduce the serial correlation among the residuals, the standard error is smaller and the adjusted R-squared is larger. This indicates that the supply variable helps explain the exporters consumption. In 1974 the European sector started to subsidize wheat for feed grain. This policy change marked a structural change in the formulation of exporters consumption. By using a spline variable on the years 1974 on, the conceptual model worked better. The spline variable shows a negative Sign because that policy caused less corn to be consumed at the effectively higher price. Equation 3 of Table 18 shows this formulation and becomes the equation of choice. It had an adjusted R-squared of 0.93 and a Durbin Watson statistic of 2.45 indicating inclusive evidence of serial correlation among the residuals. 99 iv) Exporters ending stocks per captia The exporters ending stocks was estimated using the following form: EESPC = f ( EPROPC, ESUDR(-l) ) where: EESPC Exporter ending stocks per capita in thousand metric tons, EPROPC = Exporter production per capita in thousand metric tons, ESUDR(-1) = Exporter ending stocks per capita to exporter utilization per capita ratio, lagged one year. By using the lagged ending stocks to utilization ratio and the current production to estimate the ending stocks, all signs were correct (see equation 1 Table 19). The adjusted R-squared was relatively low but the t statistics were significant. The DW statistic shows no signs of serial correlation. In equation 1, the 1983 observation is a severe negative outlier. This is because of the U.S. 1983 PIK program which limited acreage planted and consequently supply. Due to the reduced U.S. supply, the exporters "dumped" more grain on the market and hence depleted their stock holdings. When the 1983 observation is dummied out (in equation 2 of Table 19), the explanatory power and the t statistics both improve. Again the DW statistic shows no serial correlation. 100 6016016 uum mom_ or» L863 0:0 $0000— LOOJ 0C0 D0008“ 0» COO iguana L801 0C0 D0008" .c&maoo Lon COSDQNA~ADS LODLOwa .Dvwaoo Lon NXUODN mCmUco LODLOme nulvumDDm nullemmm D oanLOLDO «mmmu Low — .m.3 DOODUOL DIP LOG mCmuCDOUOO OunomLD> 16630 H m0>0 .OmJDL DDLQUO Lon Comvflumumfia LODLOOXO monflOmLD} DEDUCDQOUC~ «Oumaoo Lon nx00»n UCSUCO LOPLOOxm u nulvuobmm Oamaco Lon cam»UDD0LQ LouLonxw u Utomam "ULDLB 1 1 1 1 1 1 1 1 _ _ 1 1 1 1 1 1 Amw.MIv 1 n0.Nu 1 nvm.M1u 1 1 n—m.Vu _ nmN.~u _ 1 1 1 (\Z 1 mnuO.D _ mmv. 1 mmm~.01 1 m~mm.0 1 Nmmo.01 1 ¢\z 1 meD.O 1 mmND.O . leuwma 1 m 1 _ 1 1 1 1 1 _ 1 1 1 1 1 1 1 1 1 1 1 nww.N1v 1 nNm.Nu 1 nmw.mv 1 Ahm.01v 1 1 1 1 mn.u 1 —m~0.0 1 Tum. 1 c\z 1 (NZ 1 N~n0.01 1 mme.O 1 NNm0.0 1 vvm0.01 . vmluwmu 1 N 1 1 1 1 1 1 _ 1 1 1 _ 1 1 1 _ _ 1 _ 1 1 AVO.NV 1 ANN.NO 1 nuw.0v _ 1 1 1 mm." 1 m~ND.O . mm". 1 C\Z 1 ¢\z 1 cxz 1 DmNN.D 1 mwNO.D 1 «ONO.D _ V01~W¢~ 1 a 1 1 1 4 4 4 4 1+1 4 4 4 4 4 11+ 1 30 1 .w .m 1 m 1nnlvuaobw 1n~1vummwm 1 mm50 .nulumonmw 1 unculw 1 Dcogncou 1 anL01 1 comuoDUw_ 1 1 1 N 1 1 1 OEMP . 1 1 _ 1 1 1 1 mic» 011»oe neonaor» c1 chuacu awn muuopm ozsozm mwpuoaxm Lou moanewsmw noLozom ammo; mLacunLo um" meIh 101 In equation 3 the ending stock to utilization ratio is disaggregated. By separating the variable, the equation becomes richer in the information provided yet it looses one degree of freedom, which can be sacrificed in this case. The signs of all the variables were correct and each variable was significant. The adjusted R-squared was 0.52 and the Durbin Watson statistic indicated a rejection of the hypothesis of positive serial correlation among the error terms. An examination of the U.S. feed grain exports shows that approximately 86% of the feed grain exported is corn (see Table 20). Since the international component estimates feed grain demand, this conversion factor must be provided to show the actual amount of corn that the U.S. will export. 3.7.4 Results For Policy And Free Ending Stocks To complete the demand identity, ending stock quantities must be estimated. The government will hold stocks in both the CCC and FOR while speculators will hold free stocks. Since policy stocks are not residual and are established by policy, some rule must be established for the accumulation and release of these stocks. Speculative stock demand is related to prices and use so an estimate of this is also needed. a) Policy Stocks By combining the concepts of both Shagam and Ferris (as developed in Chapter 2), a function with three major turning 102 Dawm.o n szuan mmcambm cxz mxz cxz cxz cxz mmm1 momm.o mm.~mm.vm1.m 1m.¢m¢ 1m.4mm.1n 4m.mmm.mmm 4o.mmo.mmm.1 4mm1 mmvm.o mm.mma.nm1.m mm.1¢m 4n.u1m.mm mo.¢1v.m¢m mm.mmm.omm.1 mmm1 ¢mnm.o 1o.vm1.m11.m mv.omm 4m.mm1.¢¢ nm.mev.41m mn.4mn.mmm.1 mam. 1mvm.o mm.mmv.vom.m mm.mmo.m 1m.mmm.mm 1~.mno.m4m ov.m~m.¢mm.1 1mm1 ommm.o mo.m1m.1mm.w m1.mm~.m1 mm.omm.mn om.mmm.¢om om.mmm.mmm.m omm1 14mm.o mm.mm¢.mmu.~ mm.nmm.m nw.omm.~m mo.1mm.¢mm mm.nom.m1v.w mnm1 mmmm.o mo.mmu.mmm.m 1m.mmm.o1 1~.m4m.4m mm.mnm.mom ov.wm1.mm1.m mum1 ovum.o mm.vmm.v1m.~ mm.moo.o1 mv.nm¢.mm m¢.oom.m1m 1m.mm~.mmm.1 mmm1 ummm.o mo.mvn.1mm.1 mm.¢mm.m 4m.mmm.vm n~.1m1.m4m 1v.mvm.mmm.1 mum1 mmmm.o 4m.mom.mmm.1 mm.mnm.m1 mm.oom.mm mm.mwo.mmm 4m.nm1.mmm.1 mum1 meaoaxm no mpacaxw memo >m4amm zzxmaom zaou amm> szwuama m z1¢am mm zmou ammu m1m£m3m pcmmDOLh :1 memoaxw zucmm wau .m.: "ON m4m¢h 103 points can be developed. The functional form used in estimating policy stocks follows: 2 3 Pt Pt Pt CLRt,CLRt ,CLRt II P” Stockst where: Stockst change in policy ending stocks in time t, Pt world price of corn in time t, CLRt corn loan rate in time t. Since the loan rate establishes a floor under price, combining the price and loan rate, creates the ratio needed to do analysis. The rules used to adjust the cubic function (as discussed in Chapter 2) were as follows: A) CCC stocks in the years before 1976 were viewed as being 10% available. Stocks after 1976 were viewed as being 80% available unless; a) the current stocks accumulated are less than the previous year and/or b) the price over loan rate ratio is greater than 1.55 in which case the stocks were seen as being 10% available and B) FOR stocks before 1976 were viewed and being non existent. Stocks after 1976 were viewed as being 75% available unless; a) the current stocks accumulated are less than the previous year and/or b) the price over loan rate ratio is greater than 1.55 in which case the stocks were seen as being non-existent. Shagam cites a problem with the policy stock equation in that the formula is not a smooth functional rule but rather the choice of one of two percentages. He continues 104 that several attempts were made to derive a smooth function but all attempts failed. Both of the policy stock equations used the price loan rate ratio (linearly, squared, and cubed) as the independent variables. The time period estimated was 1977 to 1997. Each equation estimated the change in stocks from accumulation or release as the dependent variable. The equation for the change in FOR stocks had good results (equation 1 of Table 21). Again each variable was significant and the R-squared was 0.96, the estimate was inconclusive in determining the correlation between residual error terms. The equation for the change in CCC stocks also showed good results (see equation 2 Table 21). Each variable had significant t statistics, the adjusted R-squared was high at 0.91 and the standard error small. The DW statistic showed some signs of negative serial correlation. b) Free Stocks Once the rules had been established on the release and accumulation of policy stocks, the equation used to estimate free stocks could be developed. The functional form needed for this relationship follows: Fst = £( Pt, CLRt, ccct, FORt, Utilt ) Free Stocks in time t, where: FSt Pt = world price of corn in time t, cm. corn load rate in time t, 105 Dmnau o1umL muML cm01 CLOU ”-DMLQ cfimLm flown mQJQu umLMJUm 01AML mamt c001 CLDU "mo1ta cflmLm uwmu u NaJam 01amL WAML CMDA CLDU ”muwta :1MLm 3001 n EJQL qumfis 1 1 1 1 1mm.m4o 1 1mm.m1 1 1mm.mlo 1 Amo.mo 1 1 1 1 mo.1 1 mmm.oom 1 m1m.a 1no.mmmo1l 1mmm.mmmmv 1N1.mm1mmu 1 m~.ommvm 1 “mummm1 1 m 1 1 1 1 1 1mm.1-1 1 1mm.1o 1 11m.muo 1 Amn.mv 1 1 1 1 mm.1 1 4mm.1mm 1 Nam.o 1voo.1m¢m- 1mmq.mmmm 1mm.nmvmmu 14om.mmwmm 1 hmINNm1 1 1 1 1 llllllllll + IIIIIIIIII + IIIIIIIIIII + IIIIIIIIII + llllllllll 4| 4 4 4 4 1 2o 1 .m .m 1 a 1 mm1a1 1 mm1au 1 aJQu 1 gemsmcou 1 601Lma 1 co1amaaw1 1 1 1 m 4 1 ..................... 1 we1h 1 1 1 1 1 1 mm1om1Lm: humucmamnc1 1 1 1 m1mrmam ucmmaors c1 mxuopm su1156 21 umzmzu a ram mmbme11mw marmaam 14mm1 mtmc1nto 11m mummh 106 CCCt = estimated CCC stocks in time t, FORt = estimated FOR stocks in time t, Utilt = utilization in time t. The independent variables in this equation were a summation of the ruled policy stocks to utilization for one variable and the price over the loan rate to utilization as the second (see Table 22). The results show very significant t statistics and the DW statistic indicates that the null hypothesis of zero serial correlation can be accepted. The adjusted R-squared was 0.73 which shows good explanatory power of the equation. 3.8 U.S. CORN PRICE DETERMINATION The basic model framework used in this approach is: St = f ( Pt-l ) at f' ( Pt ) smt = f" ( pt ) Pt=f(Pt_1)+f"(Pt_1)'f'(Pt)’f"(Pt) Total supply in the current year, where: St Dt Total demand in the current year, Pt The average farm price of corn in the current year, STt = Total ending stocks in the current year. By using this system of equations as a recursive model, and the supply being essentially predetermined by the price in the previous period, the price can be determined by the 107 ETLwDLQ @11 mfim1 131 L54 1:35:13 01 11301LE} IEEDD H m1 011m; :211fim11113 O11MTEDD m1ML £001 CLEO gm}: 001La £1010 Emma Irgw: {I H Oflumt iofibfiufl1113 011mmecv ”mxcz1n 30113; Uuufimfimz EIQ4¢ umLmia 1 1 1 1 1m4.m41 1 1R1.ms1 1 1mm.¢11 1 nom.m11 1 1 1 1 m1.m 1 mmm.111 1 mum.: 1 1w1.¢1e$ 1 :Jm1zm1: 1 mw.mnm1t 1 mmv.mm11 1 vmxvmm1 1 1 1 "I ... IIIIIIIII |+.lv..l|.t:..o.!it.+ 31...... (33.: 14:112.}.l:-c.l..--l--cl+li-x.ail!Iiii...llll.lla.li.i.!+ llllllllll it... llllllllll +I-.I||l.!.l.li.+ 1 z: 1 .m .m 1 a 1 was: 1 Ip11: 1 ¢IQ1¢ 1 acoumcou 1 no1Lma 1 co1umaqw1 1 1 1 m... I 1£1...«-ili£...i-.i-.:....--.-.é11-..-.....!!s.!l£!l..:..!...l!!|iil...liu .wEflH " " mT1£mfltm3 utmflcmamficm .l.:l||l lx'lI'll...‘lll||.n.'|,|l|I-II.II‘Ilot".‘l.lv. ‘1.“le Il‘llu...|ln|{llllll.|.01O'v‘..l’¢'.l'.,l|ltlvI. 'ul»“| II :,(l.l ql. Ulllll" '«III' I‘.‘ -‘l‘li‘ OI'III..-.‘IlI-I'Illlt'll‘l'i‘-l‘|‘l'io“l' ..AllvIIIvlv‘b’l.'|-l'lll"lln.l|-III.IIlIIII‘"8I. '1‘!“ ll'lvbu. -.‘zl‘h 'l.l‘n|l.t|l0llllu.“l' ll III:IIIIII.lIllIl'...l.‘lli|’.v"lolll.rllll'llll“l|| Illnll-l-l-clllllll'il'In-‘u‘llltlll'lll’tll“.|ll m1mrwzm wzmmzcrt :1 mxucsfi 1111 1:1 m1ms114m mmtmanm 1mmm1 mtmc1nte 1mm u1m¢1 108 procedure outlined in the FAPSIM model. This price equation structure allows the model to be solved by starting price at an very high level and successively reducing price until the quantity demanded equals the amount available. CHAPTER IV _ THE ECONOMIC SUPPLY/DEMAND BALANCE SHEET WITH APPLICATIONS Chapter four discusses the development of the actual microcomputer balance sheet. Ex post analysis is performed on the forecasts and sample runs with analyses under differing scenarios is provided. 4.1 THE ECONOMIC SUPPLY/DEMAND BALANCE SHEET The first step in designing an economic supply and demand balance sheet was to plan a way to input the relevant variables and to display the relevant information. A commercial screen generator, SCREEN SCULPTURE, was used in screen development.1 This screen generator was used to define the screens, including; the variable names, the variable types (e.g. real, integer, yes vs. no, etc.) the default values, the allowable range for input values, and screen layout. The screen generator then automatically generated the input/output computer code associated with the screens in the Pascal language. 1. Screen Sculpture, Copyright 1985, The Software Bottling, Company of New York. 109 110 The second step was to write an algorithm which would equate the supply and the demand, determine the equilibrium corn price, and tied the screens together.2 The algorithm was written with TURBO PASCAL and utilized the equations discussed in Chapter 3.3 In the U.S. corn industry, the annual supply is set for the year and is known with some certainty which essentially presents an inelastic supply curve. The level of disappearance is an aggregate of the domestic consumption, and the exports. The ending stocks are added to the disappearance to support equilibrium. Through a series of menu options, the user will input all of the relevant predetermined and exogenous variables for the forecast year. The user can then choose to solve the model with these values and view each of the supply and demand factors estimated (as discussed in Chapter 3) and the market clearing farm price. A supply/demand balance sheet in this form allows the user to perform case studies under different scenarios by changing the predetermined and exogenous variables. A review of the literature on decision-making theory and agricultural economics research contrasted with a survey of farm management instructors and Extension specialists indicates the existence of a large "gap" between theory and 2. See Appendix 3 for documentation to the Supply/Demand Balance Sheet and the input/output code of the Pascal program. 3. Turbo Pascal System, Copyright 1985, Borland Inc. 111 practice in risky farm decision-making.4 A major step in closing this gap is to help quantify the probabilities for these farm decision makers. To this end, one objective of this project was to develop probabilities for and a confidence interval of the expected price generated by the model. The probability (i.e. the numerical value) assigned to a particular event reflect the degree of belief that that event will occur. For example, the model forecasts an expected farm price, the probability would be an interval of prices for which there is a 99, 95, 90, 80, 70, ... percent chance of occurring. The decision maker is then allowed to use his level of risk preference to make planning decisions. The accuracy of the probability forecasts could be improved if the approach provides an opportunity to revise initial probability estimates when new information becomes available. Weather is a predominant cause of yield variations from year to year. Since long-range weather forecasting is not yet very dependable we must resort to probability statements about the weather (and hence price forecasts) by reporting 4. Walker, O.L. and A.G. Nelson, Agricultural Research and Education Related to Decision-Making Under Uncertainty: An Interpretive Review of Literature, Oklahoma State University Agricultural Experiment Station Research Report P-747, March 1977; Walker, O.L. "Teaching Decision Making Under Uncertainty in the Farm Management Curriculum." Proceedings of Farm Management Teaching Workshop, Michigan State University, East Lansing, Michigan, April 14-15 1977, New York: Agricultural Development Council, Inc., p. 124- 130. 112 yields in the form of probability distributions.5 When the relevant variables have been inputed, the model will randomly shock the importer, the exporter and the U.S. yields. This procedure assumes a normal distribution for the weather (as it affects yields) since it can be said to conform to the central limit theorem. The process results in prices being displayed as probabilities. A reasonable question at this time would be what does the user do with this information? The use of any marketing alternative essentially reshapes the price probability distribution (by cutting off the tails) that one faces. Although moving into that area is beyond the scope of this project, the subject will be addressed in the recommendations of the next chapter. 4.2 EX POST ANALYSIS The ex post forecast covers the period between the estimation period and the present. A distinction can be made between conditional and unconditional forecasts. In an unconditional forecast, values for all the explanatory variables in the forecasting equation are known with certainty. In a conditional forecast, values for one or more explanatory variables are not known with certainty, so that guesses or forecasts of them must be used to produce the forecast of the dependent variable. 5. John Ferris, "Probability Forecasts on U.S. Corn Prices," Ag Econ Staff Paper No. 82-4, Michigan State University, December 1983. 113 Using explanatory variables which are known with certainty provides a measure of the balance sheet’s ability to forecast accurately. 4.2.1 The 1985-86 Marketing Year Since most of the equations in the balance sheet are estimated through 1984, the 1985-86 marketing year would be the first ex post forecast. For the 1985-86 marketing year, the simple acres planted equation did a reasonable job of forecasting considering the amount of time researchers have committed to an efficient acres planted equation (See run 1 of Table 23). The balance sheet forecasted the acres planted as 80.7 million acres which is 3% less than the actual amount of 83.2 million. Consequently, the acres harvested forecast (which is essentially a percentage of acres planted) was 5.2% less than the actual acres harvested. The yield is based on a time trend and was 5% less than the actual record yield per acre of 118.0 bushels. These errors in domestic production resulted in the U.S. production forecast being 10% less than the actual production and the U.S. supply being 927 million bushels short of the actual supply. Given the short supply, the balance sheet estimated a farm price of $2.65. Based on this price, the feed consumption was forecasted as 4046 million bushels and the exports were forecasted as 1797 million bushels. The CCC, 114 TABLE 23: BALANCE SHEET FOR CORN: THE 1985-86 MARKETING YEAR RUN NUMBER ACRES SET-ASIDE ACRES PLANTED ACRES HARVESTED YIELD PER ACRE BEGINNING STOCKS PRODUCTION IMPORTS TOTAL SUPPLY USE FEED FOOD. SEED & IND. USES TOTAL DOMESTIC EXPORTS TOTAL USE TOTAL ENDING STOCKS TOTAL. X OF USE U.S. FARM PRICE STOCKS IN GOVT. PROG. CCC INVENTORY FARMER-OUNED RES. FREE STOCKS EFFECTIVE LOAN RATE 9609 4046 1160 5206 1797 7004 2604 $2.65 702 I442 459 $2.55 2 3 4 (MILLION ACRES) 5.9 5.9 5.9 83.2 83.2 83.2 75.1 75.1 75.1 118.0 118.0 118.0 (MILLION BUSHELS) 1648 1648 1648 8877 8877 8877 11 ll 11 10536 10536 10536 4187 4095 4115 1160 1160 1160 5347 5255 5275 1825 1241 1811 7173 6496 7087 3362 4040 3448 46.9 62.2 48.6 $2.41 $2.21 $2.53 1102 1580 1172 1945 2434 1999 313 25 276 $2.55 $2.55 $2.69 5 6 5.9 5.9 83.2 83.2 75.1 75.1 118.0 118.0 1648 1648 8877 8877 11 11 10536 10536 4095 4205 1160 1160 5255 5365 1241 1241 6496 6606 4040 3929 62.2 59.5 $2.35 $2.38 1591 1514 2423 2343 24 71 $2.69 $2.69 10536 4095 1160 5255 1241 6496 4040 $2.35 1591 2423 24 $2.69 115 FOR and free stocks were forecasted as 702, 1442 and 459 million bushels respectively. To correct for the discrepancies in the ex post forecasts, add factors can be used. The domestic production is corrected for by adding 2.5 million acres to the acres planted. Acres harvested needed an add factor of 3.9 million acres and yield needed 6.4 bushels per acre to force the time trend forecast up to the record yield. With the domestic supply corrected to equal the actual supply, the price and disappearance can be analyzed. Given the corrected supply the balance sheet forecasted a price of $2.41 (Run 2 of Table 23). As expected, with a lower price, the disappearance forecasts increased. In this case, the ' feed consumption was 2.2% greater than the actual amount while exports were 45% greater. By using the override feature and forcing the feed consumption and exports equal to the actual amounts, the balance sheet gives an interesting policy result (Run 3 of Table 23). Using all the correct supply and demand amounts, the farm price generated was $2.21. This indicates that the corn loan rate of $2.55 is not the effective loan rate. Producers know that there is an amount of corn held off the market by the government "PIK and ROLL" program. The PIK certificate has a face value in cash and the number of bushels a dollar amount will redeem varies with prices. Thus the producer is indifferent as to the actual farm price 116 of corn if he is covered under the "FIR and ROLL" program and the price can fall below the loan rate.6 By increasing the corn loan rate to the effective amount of $2.69 and allowing the disappearance to be determined by market forces a new analysis can be done (Run 4 of Table 23). A farm price of $2.53 was generated under this analysis. The feed consumption was less than 1% greater than the actual amount and exports just over 45% greater than the actual. When the feed consumption and export forecasts are overridden to equal the actual amounts, a farm price of $2.35 was generated (Run 5 of Table 23). This shows that the policy of the government program has an affect on the producer expectation of the effective corn loan rate. The interesting ex post analysis was the way the international component forecasted U.S. exports. This component is a conditional forecast because of the lag in the publication of international data. By using the corrected U.S. supply and the effective corn loan rate of $2.69, the forecasted U.S. exports exceeded the actual amount by 45 percent (See run 5 of Table 23). Examining the components of U.S. exports, the balance sheet forecasted U.S. exports as being exactly equal to the importing 6. For discussion on the "FIR and ROLL" program, see the Agricultural Economics Staff Paper No. 86-90, Michigan State University, by Jim Hilker and Mary Schultz, November 1986. 117 region's net imports (Run 5 of Table 24). Further analysis showed the exporting region had zero exports. The structure of the exporting region's net exports is that all grain not consumed or held in stocks will be exported. The equations for consumption and ending stocks were reasonably consistent with historical data however, the supply forecast was significantly lower (60% lower) than historical exporter supply (Run 5 of Table 25). The exporting region's supply is the sum of the current production and the lagged ending stocks. The equation used to forecast the exporter production is a function of lagged revenues for feed grain and wheat and a lagged price proxy. With the hyper-inflation that Argentina is experiencing, the lagged revenues generated were essentially nullified by the Argentine consumer price index. And thus the overall production was reduced. To correct for this effect, the exporter harvested area add factor needed to be used. Adding 12.8 million hectares to the production of the exporting region moved the exporter supply in line with the historical record. Since the exporting region’s consumption is a function of (among others) the supply, it was necessary to decrease the exporters consumption through the use of an add factor. By subtracting 0.109 thousand metric tons per capita from the exporting region's consumption, the quantity consumed was more historically accurate. Run 6 of Table 25 shows the corrected exporting region’s net exports. 118 TABLE 24: U.S. EXPORT DEMAND: THE 1985-86 MARKETING YEAR RUN NUMBER 5 6 "mm-7§4ELEESIEBEQEEET """"""" IMPORTERS NET IMPORTS 1811 2017 EXPORTERS NET EXPORTS 0 776 U.S. EXPORTS 1811 1241 TABLE 25: EXPORTING REGION’S NET EXPORTS: THE 1985-86 MARKETING YEAR RUN NUMBER 5 6 (MILLION BUSHELS) EXPORTERS SUPPLY 752 1900 EXPORTERS CONS. ‘ 820 911 EXPORTERS STOCKS 129 213 EXPORTERS EXPORTS 0 776 119 With the unconditional knowledge that the U.S. exports were roughly 33% less than the historical average and assuming that the exporting region is continuing the same policy of "dumping" their residual grain, the implication is that the importing region imported much less in the 1985-86 marketing year. The balance sheet forecasted a much lower net import by the importing region and the use of an add factor of 0.0012 thousand metric tons per capita was needed to increase the net imports (Run 6 of Table 24). The final ex post analysis for the 1985-86 marketing year examined the forecast of corn consumed by livestock. By correcting the domestic supply, using the effective corn loan rate, and adjusting the international component as discussed, the balance sheet forecast the price as $2.38 (Run 6 of Table 23). With the price higher actual, theory says that the quantity demanded would be lower, however, the balance sheet over forecast the quantity of corn consumed by livestock by 2% (See run 6 of Table 26). By using a negative add factor of 129.37 million bushels on the other and unallocated (i.e. residual) consumption the forecast for corn consumed by livestock reached the actual level of 4095 million bushels (Run 7 of Table 26). Run 7 of Table 23 shows the actual supply and demand factors for the 1985-86 marketing year using all add factors discussed and a market clearing farm price of $2.35. 120 TABLE 26: LIVESTOCK CONSUMPTION OF CORN IN THE U.S.: THE 1985-86 MARKETING YEAR (MILLION BUSHELS) DAIRY ANIMALS 830 833 CATTLE ON FEED 658 664 OTHER BEEF CATTLE 187 188 HENS, PULLETS, & OTHER CHICKENS 334 337 BROILERS 481 483 TURKEYS 119 119 HOGS 1445 1449 OTHER AND UNALLOCATED 148 19 TOTAL CONSUMPTION 4205 4095 4.2.2 The 1986-87 Marketing Year The 1986-87 marketing year is another unconditional forecast for the balance sheet however, due to the lag in the reporting of international component statistics, some of the disaggregated factors of the balance sheet are conditional upon educated guesses of the exogenous variables. In 1986-87 the acres set-aside for participation in the government program were 13.6 million acres. The acres planted equation forecasted that 75.0 million acres would be planted to corn, which again under estimates the amount Of 121 acreage actually committed to corn by 2.2% percent or 1.7 million acres (See run 1 of Table 27). The acres harvested equation also under estimated the actual quantity by 4.2% due to the low estimate of acres planted. The trend used to forecast yield was 113.8 bushels per acre which is 5.5 bushels per acre less than the actual record yield of 119.3 bushels. With the reduced acres planted forecast, the reduced acres harvested forecast and the low yield forecast, the domestic production was forecasted as 8.5% lower than the actual amount. This forecast caused the U.S. supply to be under estimated by 707 million bushels. Using these figures for domestic supply, the U.S. farm price was forecasted at $1.99. Since this price was higher than the actual, both feed consumption and U.S. exports were under forecast as 4404 million and 1225 million bushels respectively. The estimates of CCC and FOR stocks were 1765 million and 3001 million bushels respectively while, at this price, the free stocks were forecasted at a zero level. When the add factors are imposed on the domestic production forecasts, the actual production amounts can be Obtained. An add factor of 1.7 million acres must be added to the acres planted forecast. The acres harvested needed an add factor of 2.9 million acres and the yield trend needed 5.5 bushels per acre added to the equation to equal the record yield. 122 TABLE 27: BALANCE SHEET FOR CORN: THE 1986-87 MARKETING YEAR RUN NUMBER 1 2 3 4 5 6 7 (MILLION ACRES) ACRES SET-ASIDE 13.6 13.6 13.6 13.6 13.6 13.6 13.6 ACRES PLANTED 75.0 76.7 76.7 76.7 76.7 76.7 76.7 ’ ACRES HARVESTED 66.3 69.2 69.2 69.2 69.2 69.2 69.2 YIELD PER ACRE 113.8 119.3 119.3 119.3 119.3 119.3 119.3 (MILLION BUSHELS) BEGINNING STOCKS 4040 4040 4040 4040 4040 4040 4040 PRODUCTION 7547 8253 8253 8253 8253 8253 8253 IMPORTS 2 2 2 2 2 2 2 TOTAL SUPPLY 11588 12295 12295 12295 12295 12295 12295 USE: FEED 4404 4517 4650 4650 4785 4749 4650 FOOD. SEED & IND. USES 1191 1191 1191 1191 1191 1191 1191 TOTAL DOMESTIC 5595 5708 5841 5841 5976 5940 5840 EXPORTS 1225 1255 1525 1525 1315 1525 1525 TOTAL USE 6821 6963 7366 7366 7292 7465 7366 TOTAL ENDING STOCKS 4766 5331 4929 4929 5002 4829 4928 TOTAL. X OF USE 69.9 76.6 66.9 66.9 68.4 64.7 66.9 U.S. FARM PRICE $1.99 $1.83 $1.94 $1.51 $1.50 $1.54 $1.51 STOCKS IN GOVT. PROG. CCC INVENTORY 1765 1991 1826 1837 1854 1791 1837 FARMER-OUNED RES. 3001 3339 3102 3091 3132 3038 3090 FREE STOCKS 0 D 0 O O O 0 EFFECTIVE LOAN RATE $1.84 $1.84 $1.84 $1.51 $1.51 $1.51 $1.51 123 Once the domestic production is corrected, a new analysis can be conducted (Run 2 of Table 27). Given the corrected production, the supply is now increased to the actual and the balance sheet forecasts a farm price of $1.83. With a farm price higher than actual, the quantities of feed consumption and exports were reduced. In this analysis the feed consumption was 2.9% lower than the actual amount and the exports were 17.7% less. This farm price increased the amount of policy stocks from the original forecasted amount to 1991 million bushels for CCC holdings and 3339 million bushels for FOR stocks. Again the free stocks were forecasted at a zero level. By overridding all supply and demand factors equal to the known amounts, the forecasted farm price should equal the actual farm price Of $1.51. When this scenario is run the farm price is forecasted as $1.94 which again indicates that corn loan rate of $1.84 is not the effective corn loan rate (Run 3 of Table 27). After several runs of trial and error the effective corn loan rate was determined to be $1.51 which is essentially a floor under the amount that the farm price will drop (Run 4 of Table 27). A new analysis can be conducted using the corrected supply quantities, the effective corn loan rate and allowing the demand factors to be determined by market forces (Run 5 of Table 27). In this analysis, the farm price dropped to $1.50. 124 Since the international component is still conditional upon the estimates of the exogenous variables some educated guesses were required for these factors. Examination of the importing region’s net imports shows that it is low by historical comparisons (Run 5 of Table 28). An add factor must be used to increase the importing region’s net imports. Adding 0.00273 thousand metric tons per capita to the importing region's net imports brings it into line with historical values (Run 6 of Table 28). Run 5 Of Table 29 shows that the exporting region’s net exports is too low given the add factor used to increase the importing region’s net imports. Since the exporting region’s consumption is a function of their supply, an add factor was needed to reduce the regional consumption. Subtracting 0.129 thousand metric tons per capita from the exporting regions consumption creates historical comparisons. Finally, the exporting region’s ending stocks needed an add factor of 0.05 thousand metric tons per capita (Run 6 of Table 29) to complete the exporter net exports. Once all the corrections have been made on the domestic supply, the corn loan rate and the international component, the analysis of corn consumed by livestock can be made. The farm price for this scenario is $1.54 and the forecast for feed consumption is 4749 million bushels which is 2.1% greater than the actual amount (Run 6 of Table 27 and Table 30). A negative add factor Of 126.42 applied to the other and unallocated consumption would reduce the 125 TABLE 28: U.S. EXPORT DEMAND: THE 1986-87 MARKETING YEAR RUN NUMBER 5 6 ----------TMILLION-BUSHELS; ---------- IMPORTERS NET IMPORTS 2102 2522 EXPORTERS NET EXPORTS 788 996 U.S. EXPORTS 1314 1525 TABLE 29: EXPORTING REGION’S NET EXPORTS: THE 1986-87 MARKETING YEAR RUN NUMBER 5 6 (MILLION BUSHELS) EXPORTERS SUPPLY 2163 2163 EXPORTERS CONS. 1314 973 EXPORTERS STOCKS 62 194 EXPORTERS EXPORTS 788 996 126 TABLE 30: LIVESTOCK CONSUMPTION OF CORN IN THE U.S.: THE 1986-87 MARKETING YEAR RUN NUMBER 6 7 (MILLION BUSHELS) DAIRY ANIMALS 843 845 CATTLE ON FEED 879 892 OTHER BEEF CATTLE 225 227 HENS, PULLETS, & OTHER CHICKENS 390 392 BROILERS 527 529 TURKEYS 144 145 HOGS 1576 1580 OTHER AND UNALLOCATED 165 40 TOTAL CONSUMPTION 4750 4650 forecast to 4650 million bushels and a market clearing price of $1.51 (Run 7 Of Table 27 and Table 30). 4.2.3 The 1987-88 Marketing Year At the time of this publication, the 1987-88 marketing year supply factors are known with certainty, however the final demand factors are unknown. This makes the supply factors an unconditional forecast while the domestic and international components are conditional upon the estimates of the user. This creates a situation where the farm price is also not known with certainty and the USDA provides a range of prices for the 1987-88 marketing year. 127 In this ex post forecasts the acres planted equation over estimated the quantity of acres committed to corn (See run 1 of Table 31). The 1987-88 forecast of acres planted was 2.6% greater than the actual amount. Due to the quantity forecasted to be planted, the acres harvested forecast was also over estimated. This forecast was less than 1 percent greater than reality. The yield per acre was a new record of 119.9 bushels and thus the trend yield forecast was low by 4 bushels per acre. The 1987-88 forecast for domestic production was under estimated and is 2.5% less than the actual amount. This caused the U.S. supply to be forecast as 175 million bushels less than the actual. Given the short U.S. supply forecast the balance sheet forecast a farm price of $2.18, 36 cents over the policy established corn loan rate of $1.82. The corn consumed by livestock and U.S. exports were forecast as 4252 million and 1414 million bushels respectively. The total ending stocks as a percent of use were 72.9 percent and the government held all the stocks (1802 for CCC and 3212 for FOR). Add factors can be used on the domestic supply with certainty to determine how well the balance sheet forecasts given an accurate supply. By subtracting 1.7 million acres from the acres planted, subtracting 0.5 million acres from the acres harvested and adding 4.0 bushels per acre to the yield gives the correct domestic supply (Run 2 of Table 31). 128 TABLE 31: BALANCE SHEET FOR CORN: THE 1987-88 MARKETING YEAR RUN NUMBER 1 2 3 4 5 6 7 8 9 (MILLION ACRES) ACRES SET-ASIDE 21.5 21.5 21.5 21.5 21.5 21.5 21.5 21.5 21.5 ACRES PLANTED 67.7 66.0 66.0 66.0 66.0 66.0 66.0 66.0 66.0 ACRES HARVESTED 60.1 59.6 59.6 59.6 59.6 59.6 59.6 59.6 59.6 YIELD PER ACRE 115.9 119.9 119.9 119.9 119.9 119.9 119.9 119.9 119.9 (MILLION BUSHELS) BEGINNING STOCKS 4929 4929 4929 4929 4929 4929 4929 4929 4929 PRODUCTION 6966 7141 7141 7141 7141 7141 7141 7141 7141 IMPORTS 2 2 2 2 2 2 2 2 2 TOTAL SUPPLY 11897 12072 12072 12072 12072 12072 12072 12072 12072 USE: FEED 4252 4285 4700 4700 4485 4700 4523 4508 4700 FOOD. SEED & IND. USES 1215 1215 1215 1215 1215 1215 1215 1215 1215 TOTAL DOMESTIC 5467 5500 5915 5915 5640 5915 5738 5723 5915 EXPORTS 1414 1423 1600 1600 1459 1600 1482 1607 1600 TOTAL USE 6882 6924 7515 7515 7099 7515 7221 7330 7515 TOTAL ENDING STOCKS 5015 5147 4557 4557 4972 4557 4850 4741 4556 TOTAL. X OF USE 72.9 74.3 60.6 60.6 70.0 60.9 67.2 64.7 60.6 U.S. FARM PRICE $2.18 $2.13 $2.57 $2.02 $1.93 $1.86 $1.80 $1.82 $1.86 STOCKS IN GOVT. PROG. CCC INVENTORY 1802 1845 1402 1416 1556 1409 1513 1481 1409 FARMER-DHNED RES. 3212 3302 2346 2331 2619 2339 2536 2456 2339 FREE STOCKS 0 O 807 808 797 808 800 803 808 EFFECTIVE LOAN RATE $1.82 $1.82 $1.82 $1.49 $1.49 $1.39 $1.39 $1.39 $1.39 129 With the new results the analysis shows that the farm price falls to $2.13 and the livestock consumption and exports fall. Given the a price Of $2.13, the livestock consumption was 8.9% lower and the exports were 11% lower than the USDA forecast of 4700 million and 1600 million bushels respectively. This lower price also increased policy stock holdings by 1.4 percent. When the demand factors are forced to equal the USDA forecast, the farm price of the balance sheet shows that $2.57 would be needed to clear the market (Run 3 of Table 31). Under this scenario, the CCC, FOR and free stocks were 1402, 2346 and 807 million bushels respectively. The analysis could stop here (due to the conditional nature of the demand factors) except the balance sheet forecast price does not fall within the range of the USDA forecast price. Assuming the effective corn loan rate carries over from the 1986-87 ex post forecast and drops by two cents as directed by U.S. policy, the 1987-88 effective corn loan rate Of $1.49 would be used (Run 4 of Table 31). In this scenario, the domestic supply is corrected with add factors and the demand factors are overridden to equal the USDA forecasts. The balance sheet farm price is forecast as $2.02 and the policy stocks are forecast as 1416 million for CCC and 2331 million bushels for FOR while the free stocks are forecast as 808 million bushels. Again the farm price forecast does not fall within the USDA forecast range. Using the same corn loan rate assumption and allowing the 130 market to determine the demand factors the farm price clears the market at $1.93 while both the corn consumed by livestock and exports are under the USDA forecast by 4.6% and 8.8% respectively (Run 5 Of Table 31). The total ending stocks were 70.0% Of use with the free stocks forecast as 797 million bushels. To establish a farm price within the USDA forecast range, the effective corn loan rate was reduced ten cents more (Run 6 of Table 31). With the effective corn loan rate set at $1.39, using the corrected domestic supply and overridding the demand factors, the balance sheet forecast a market clearing farm price of $1.86 which is within the USDA forecasted range. When the market determines the demand factors, the balance sheet forecast a farm price of $1.80 (Run 7 of Table 31). At this price the corn consumed by livestock and exports were 4523 and 1482 million bushels respectively, still lower than the USDA forecasts. Ending stocks were 67.2% of total use and free stocks were forecast as 800 million bushels. The add factors for the international component are conditional upon the knowledge of the user however, following historical trends for values leads to reasonable results. The initial forecast of the importing region's net imports shows that it is low compared to historical records (Run 7 of Table 32). The importing region needed an add 131 TABLE 32: U.S. EXPORT DEMAND: THE 1987-88 MARKETING YEAR RUN NUMBER 7 8 ----------TMIELTON-BUSHEIST ''''''''' IMPORTERS NET IMPORTS 2324 2587 EXPORTERS NET EXPORTS 841 987 U.S. EXPORTS 1482 1600 TABLE 33: EXPORTING REGION’S NET EXPORTS: THE 1986-87 MARKETING YEAR RUN NUMBER 7 8 (MILLION BUSHELS) EXPORTERS SUPPLY 2195 2195 EXPORTERS CONS. 1330 1025 EXPORTERS STOCKS 24 183 EXPORTERS EXPORTS 841 987 132 factor of 0.00174 thousand metric tons per capita to show growth (Run 8 of Table 32). Given the add factor increase to the importing region's net imports, the exporting region’s net export forecast was tOO low to equal the actual USDA forecast. The exporting region needed 0.1114 thousand metric tons subtracted from their regional consumption and 0.059 added to their regional ending stocks (Run 8 of Table 33) using these corrections tO the international component brought the balance sheet U.S. export forecast in line with the USDA forecast. With the described corrections made to the balance sheet forecast, the corn consumed by livestock could be analyzed. Given these corrections the balance sheet forecast a price Of $1.82 and a livestock consumption quantity of 4508 million bushels (Run 8 of Table 34). Each of the feeding rates per head followed historical trends except the cattle on feed and the other beef cattle figures (Run 8 of Table 35 and Table 36). These feeding rate per head forecasts were lower than what would be expected. By using add factors of 10.0 bushels per head for cattle on feed and 0.3 for other beef cattle, the forecast went from 52.9 to 61.8 bushels per head in run 9 Of Table 35 and 5.3 to 5.6 bushels per head in run 9 of Table 36. An add factor of 84.2 was needed on the other and unallocated forecast to account for the residual quantity of corn unaccounted for by the other equations (Run 9 Of Table 34). 133 TABLE 34: LIVESTOCK CONSUMPTION OF CORN IN THE U.S.: THE 1987-88 MARKETING YEAR RUN NUMBER 8 9 (MILLION BUSHELS) DAIRY ANIMALS 813 801 CATTLE ON FEED 666 778 OTHER BEEF CATTLE 224 234 HENS. PULLETS. & OTHER CHICKENS 390 387 BROILERS ‘ 525 523 TURKEYS 156 154 HOGS 1566 1562 OTHER AND UNALLOCATED 168 251 TOTAL CONSUMPTION 4508 4650 TABLE 35: CATTLE ON FEED CONSUMPTION PER HEAD: THE 1987-88 MARKETING YEAR RUN NUMBER 8 9 EEELIQEQLE'QEJELB """"""""""""""" £27; """" 5.2" CATTLE & CALVES ON FEED (MIL. HEAD) 12.6 12.6 CATTLE 0N FEED CONSUMPTION (MIL. 8U.) 666.2 778.1 TABLE 36: OTHER BEEF CATTLE CONSUMPTION PER HEAD: THE 1987-88 MARKETING YEAR RUN NUMBER 8 9 FEEDING RATE PER HEAD 5.3 5.6 BEEF CONS AND REPLACEMENTS (MIL. HEAD) 42.0 42.0 OTHER BEEF CATTLE CONS. (MIL. BU.) 223.6 234.2 134 After making the corrections to the domestic supply, the international component and the corn consumed by livestock, the balance sheet forecasted a clearing farm price of $1.86 which is within the USDA forecast range. 4.3 SCENARIO ANALYSES AND SAMPLE RUNS The 1988-89 balance sheet forecast will be a cOmpletely conditional forecast, and it will use the partially conditional 1987-88 forecast as the lagged exogenous variable vector. The first step in making the forecast was to estimate the exogenous variables for the 1988-89 marketing year. These exogenous variables are based on historical trends and economic knowledge of the user. Once the values have been entered into the exogenous variable section, the model solves for the supply and demand factors and presents the information in the balance sheet. The initial forecast for the 1988-89 marketing year (See run 1 of Table 37) showed an acres planted forecast of 70.5 million acres. The acres harvested was 62.6 million acres and the yield was forecasted as 118.1 bushels per acre. In order to bring the acres planted forecast plus the acres set-aside equal to a 7 year average of total corn acreage (as estimated by the USDA) an add factor of 4.2 million acres was subtracted form the acres planted. This add factor adjusted forecast will be known as the control (See ’Control' run of Table 37). In the control, the balance sheet forecast a market clearing price of $2.05. 135 TABLE 37: BALANCE SHEET FOR CORN: THE 1988-89 MARKETING YEAR RUN NUMBER 1 CONTROL 2 3 4 5 6 7 8 (MILLION ACRES) ACRES SET-ASIDE 21.0 21.0 21.0 21.0 21.0 21.0 21.0 21.0 21.0 ACRES PLANTED 70.5 66.3 66.3 66.3 66.3 66.3 66.3 66.3 66.3 ACRES HARVESTED 62.6 58.9 58.9 58.9 58.9 58.9 58.9 58.9 58.9 YIELD PER ACRE 118.1 118.1 118.1 118.1 105.0 124.0 118.1 118.1 118.1 (MILLION BUSHELS) BEGINNING STOCKS 4557 4557 4557 4557 4557 4557 4557 4557 4557 PRODUCTION 7389 6956 6965 6965 6185 7304 6956 6956 6956 IMPORTS 2 2 2 2 2 2 2 2 2 TOTAL SUPPLY 11948 11515 11515 11515 10744 11863 11515 11515 11515 USE FEED 4602 4518 4699 4244 4273 4588 4562 4516 4490 FOOD. SEED 8 IND. USES 1235 1235 1235 1235 1235 1235 1235 1235 1363 TOTAL DOMESTIC 5837 5753 5934 5479 5508 5823 5797 5751 5853 EXPORTS 1576 1557 619 2465 1495 1573 1632 1557 1551 TOTAL USE 7414 7311 6554 7945 7004 7396 7429 7309 7404 TOTAL ENDING STOCKS 4534 4204 4961 3570 3739 4467 4086 4205 4114 TOTAL. X OF USE 61.2 57.5 75.7 44.9 53.4 60.4 55.0 57.5 55.5 U.S. FARM PRICE $1.93 $2.05 $1.80 $2.49 $2.44 $1.95 $2.10 $2.05 $2.09 STOCKS IN GOVT. PROG CCC INVENTORY 1593 1464 1777 1041 1103 1568 1419 1464 1428 FARMER-OUNED RES. 2921 2673 3184 1691 1833 2869 2560 2674 2587 FREE STOCKS 20 66 O 838 802 28 106 66 98 EFFECTIVE LOAN RATE $1.80 $1.80 $1.80 $1.80 $1.80 $1.80 $1.80 $1.80 $1.80 136 The corn consumed by livestock was forecast at 4518 million, exports were forecast at 1557 million, CCC stocks were forecast at 1464 million, FOR stocks were forecast at 2673 and free stocks were forecast at 66 million bushels. The probability distribution for this forecast used 100 observations. The Control run of Table 38 shows a price range Of $1.24 to $2.52 with a mean Of $2.03 and standard deviation of 0.178. Because the 1988-89 market year information is unknown, some scenario’s were chosen to determine their effect on farm price. The scenarios to be examined include changes in world income, U.S. yield, competitor crop prices and industrial alcohol use. These scenarios will be discussed and compared to the control forecast which used the add factor on the acres planted equation. 4.3.1 Change In World Income The first scenario is a change in the rest-of-the-world income. This action could come about from a change in exchange rates, a change in the gross domestic product of a region or a change in the consumer price index of a region. For purposes of analysis, the exogenous variable importer and exporter gross domestic product is adjusted by the desired amounts. If the rest-Of-the-world income were to decrease by 20% the analysis shows that the farm price would decrease by 12% to $1.80 (Run 2 Of Table 37). Corn consumed by livestock is 137 TABLE 38: PROBABILITY DISTRIBUTIONS FOR VARYING SCENARIOS RUN NUMBER 1 CONTROL 2 3 4 5 6 7 8 PROBABILITY THAT THE PRICE HILL BE THAT LISTED OR BELOH $/BU. $/BU. $/BU. $/BU. $/BU. $/BU. $/BU. $/BU. $/BU. 1 1.24 1.56 1.91 1.74 1.78 1.76 5 1.61 1.61 1.98 1.82 1.80 1.81 10 1.79 1.66 2.05 1.87 1.83 1.88 20 1.85 1.71 2.13 1.92 1.88 1.95 30 1.90 1.74 2.17 1.96 1.92 2.00 40 1.95 1.77 2.22 2.01 1.95 2.04 50 2.00 1.79 2.27 2.06 1.99 2.09 60 2.06 1.82 2.33 2.11 2.02 2.13 70 2.10 1.86 2.51 2.19 2.07 2.18 80 2.14 1.89 2.55 2.25 2.11 2.24 90 2.20 1.95 2.59 2.48 2.15 2.30 95 2.24 1.99 2.62 2.51 2.23 2.50 99 2.52 2.14 2.72 2.63 2.50 2.62 MEAN 2.03 1.81 2.34 2.11 2.03 2.15 STANDARD DEVIATION 0.178 0.114 0.208 0.213 0.158 0.200 forecast to increase by 4% and ending stocks are forecast to increase by 18.2 percent. If the importing region had 20% less income, one would assume that U.S. exports world decrease. The analysis supports this assumption where U.S. exports drops by over 60 percent. The probability distribution had a range from $1.56 to $2.14 with a mean price of $1.81 and standard deviation of 0.114 (Run 2 of Table 38). If the rest-Of-the-world income were to increase by 20% the analysis shows an increase of 21% in farm price to $2.49 (Run 3 of Table 37). Corn consumed by livestock in this 138 case will decrease by 6% and ending stocks will decrease by 15 percent. The assumption that U.S. exports will increase is supported by the forecast which shows a jump of 58 percent. In this scenario the probability distribution has a mean of $2.34 and a standard deviation of 0.208 (Run 3 Of Table 38). 4.3.2 Change In U.S. Yield The second scenario will examine changes in supply and demand if the U.S. does and does not continue the record setting yields of the recent past. To perform the analysis the override feature of the balance sheet yield per acre is used. If the U.S. experiences a yield of 105 bushels per acre, the analysis shows that the domestic supply would drop by 6% and farm price would climb 19% to $2.44 (Run 4 of Table 37). Corn consumed by livestock would drop 5.4% and U.S. exports would suffer from the inflated price by falling 4 percent. The U.S. government would benefit from this action in that CCC stocks would fall 25% and FOR stocks would fall 31 percent. With the inflated price free stocks climb by 736 million bushels. If the U.S. were to continue the record making yield of the recent past, and yield were to reach 124.0 bushels per acre the analysis shows an increase in domestic supply of 3 percent (Run 5 of Table 37). In this scenario the price drops 10 cents due to the increased supply and the demand 139 factors increase due to the lower price. The analysis shows that corn consumed by livestock will increase 1.5 percent, exports increase 1 percent and ending stocks increase 6.3 percent. 4.3.3 Change In Competitor Crop Prices In the third scenario a change of competitor crop prices is examined. In the first case the wheat gulf and farm price are adjusted in the exogenous variable section. If the wheat gulf price and farm price increased 16% and 31% respectively, until they were somewhat comparable to the 1985-86 marketing year, the analysis shows that corn farm price rises 2.4 percent (Run 6 of Table 37). If one were to just examine the corn farm price change the assumption would be for a decrease in the demand factors. Yet due to the increase in wheat prices,this scenario shows the corn consumed by livestock increased over the control by about 1 percent, the exports increased by almost 5% and ending stocks dropped by 2.8 percent. The probability distribution showed a mean farm price of $2.11 and standard deviation Of 0.213 in 100 Observations (Run 6 of Table 38). In the second case the soybean meal price (a proxy for soybeans) falls by 8 percent and is adjusted in the exogenous variable section. In this analysis, the corn farm price is $2.05, the same as the control run (Run 7 of Table 37). 140 In this scenario the corn consumed by livestock decreases by 2 million bushels, while exports and ending stocks remain the same. This is due to certain livestock corn consumption equations using soybean meal price as an exogenous variable. The probability distribution showed a mean farm price Of $2.03 and standard deviation of 0.158 in 100 observations (Run 7 of Table 38). 4.3.4 Change In Alcohol Use The final scenario examines an increase in industrial alcohol use. This action comes about from the increased interest in using ethyl alcohol as a gasoline extender. The alcohol use is increased in the exogenous variable section. By assuming a 40% increase in alcohol production and all other food, seed, and industrial uses remain the same, the total FSI use will increase 10 percent. If that scenario occurs, the farm price is forecast to increase 2 percent (Run 8 Of Table 37). The demand factors drop slightly with corn consumed by livestock declining 0.6 percent, exports decreasing 0.4% and ending stocks decreasing 2.2 percent. This makes an interesting policy analysis because the farm price increases which will make the producers happy while the government benefits by holding less policy stocks. The probability distribution shows a mean price of $2.15 and a standard deviation of 0.200 which is 2.2 cents above the control standard deviation (Run 8 of Table 38). CHAPTER V SUMMARY, CONCLUSIONS AND RECOMMENDATIONS This chapter will summarize the Economic Supply/Demand Balance Sheet project and includes recommendations for future work. Suggestions include increasing the accuracy of the balance sheet and discussion on decision theory for handling risk. 5.1 SUMMARY AND CONCLUSIONS This project accomplished the goal of developing a micro-computer economic supply/demand balance sheet for forecasting corn prices and use as a group-interaction teaching aide. In so doing, supply and demand factors for corn were estimated. The U.S. supply consisted mainly of estimating the acres that would be planted to corn. Numerous hypotheses were examined to estimate this equation, yet due to the dynamic nature of government policy and farmer expectations an equation to estimate acres planted has never been accurately developed. The equation provided in this project cannot necessarily be considered the best, but it provides ease of use and is good for educational purposes. 141 142 Corn disappearance consists Of the four components discussed below. The corn consumed by livestock is disaggregated into seven animal species and an unallocated (i.e. residual) amount. Each animal species consumption is estimated on a per head basis with the unallocated consumption being estimated based on relative prices and a trend. Estimating on a per head basis and multiplying by animal inventories allows a more accurate explanation of corn as a feed grain disappearance. Food, seed, and industrial use is not econometrically estimated but is based upon knowledge provided by the user as to changing economic conditions for industrial and seed use and theoretical limits and constraints on food use. The international component is included by linking a simple rest-of-the-world supply and demand model with the U.S. and equating U.S. exports to balance world needs. Stock holdings were estimated as what the government holds due to policy and the demand for free stocks held for speculative purposes. The policy stock equations are based upon price over the corn loan rate ratios while the free stock equation is based upon the price over the loan rate ratio and the policy stocks over utilization ratio. Attempts were made to overcome the limitations of the system by allowing the user to adjust the intercept of each equation with an add factor. If the estimate is known to be inaccurate of if more current information becomes available, 143 a positive or negative add factor could be included in each equation to increase the accuracy of the forecast. An override feature is provided which allows the user to input a value for any of the supply and demand estimates using a posteriori information. That override value can then be used when the model solves which allows the user to do "what if" scenario analysis by calculating supply and demand factors using the new value. The original results of each ex post analysis were suspect of being inaccurate, yet when add factors are used, the results became more tolerable. Several scenarios and analyses were performed on the 1988-89 marketing year. The add factor adjusted results of that marketing year became the control from which to compare the rest of the scenarios. 5.2 RECOMMENDATIONS FOR INCREASING BALANCE SHEET PERFORMANCE The estimated equations should be updated on a regular basis using the most current data available. This allows the annual forecasts to be as accurate as possible and will account for any structural changes that may have occurred since the last estimate. The food, seed, and industrial use could be estimated in order to prevent the misinformation of the user affecting the accuracy of the forecasts. The farm price forecast could be more accurate if all feed grains and soybeans were included in the model and the system of equations were solved simultaneously. 144 Sensitivity analysis could be done on the add factors to determine the amount of change from one year to another given an add factor adjustment and if the adjustments used aid in giving information from year to year. The computer algorithm calculates all values as whole numbers whereas the balance sheet presents some information as integer values. This condition creates rounding errors to appear in the balance sheet. If the values which are presented as integers were calculated as such the rounding errors could be eliminated. End user input should be incorporated to the design of the computer balance sheet as it is used by extension workers to make sure that the information provided is helpful as well as desired. On line help windows would be useful to guide the user through the program. Once the program is mastered, the use of the menus to recalculate a market clearing price tends to slow the user down. If a recalculate feature could be included which allows the user to make changes in the balance sheet, recalculate the supply and demand factors and resume in the same spot, the analysis process could be made more user friendly. 5.3 RECOMMENDATIONS FOR HANDLING RISK The literature shows that it is quite difficult to develop a universally agreed-upon set of principles of individual behavior under conditions of uncertainty. However decision theory provides some principles for making 145 decisions under risk and uncertainty. Decision theory can be used to determine Optimal strategies when a decision maker is faced with several decision alternatives and an uncertain or risk-filled pattern of future events. Using this information, approaches to incorporate the data in the balance sheet with decision theory are presented with the intent that at some future time someone can expand upon this rudimentary analysis. 5.3.1 The Traditional Analysis Much of the pioneering works of Frank H. Knight define the traditional approach to decision theory. Knight divided uncertain situations into two subclasses: risk and uncertainty. Knight defines that an event is risky if both, the possible future outcomes that could result and the probability associated with each outcome are known.1 Thus, risk exists when the outcome of the process, say yield per acre, is a random variable with a known probability distribution. Risk requires that outcomes can be identified and a probability can be associated with each outcome. The probabilities needed to define the risk situation are not known with certainty but are subject to all the usual vagaries of empirical estimation. Knight defines uncertainty as that event in which no probabilities can be assigned to the outcomes. In this case the possible outcomes may also be unknown. 1. Frank H. Knight, 8 Unc Houghton-Mifflin, 1921, quoted by Doll, op. cit., p. 238-39. 146 With the theoretical acceptance of subjective knowledge (Anderson et. al.2), Knight's distinction between risk and uncertainty is not relevant, and the terms are used interchangeably. The argument for subjective knowledge assumes that it is impossible for the manager to know the alternative actions, the possible outcomes, and their consequences and yet be entirely ignorant of the probabilities associated with these outcomes. Since typical agricultural decision processes focus on the most probable outcome a more modern analysis is needed. 5.3.2 The Modern Analysis Modern theorists argue that risky decisions must be made in uncertain situations even when the decision maker lacks objective empirical knowledge about outcomes and probability distributions. In these cases the decision maker will formulate subjective estimates of possible outcomes and their probability of occurrence thus making all risky events subsets of uncertain events. These probabilities reflect the decision maker's degree of belief that a particular event will occur. The quality of information is a consideration when assigning probabilities. TO the extent that they are an expression of personal judgment, it is possible, if one decision maker improperly assesses the quality of information, that two 2. J.R. Anderson, J.L. Dillon, and J.B. Hardaker, Agricultural Decision Analysis, Iowa State University Press, 1977. 147 decision makers may assign different probabilities to the same event. However, "When two reasonable men have had roughly the same experience with a certain kind of event, they assign roughly the same probability."3 5.3.3 Decision Problems Modern decision theory has three components applicable to risky decision making. First the decision maker must make a choice, or sequence of choices, among various possible courses of action each with an individual payoff. Second, the consequence of any course Of action depends on an unpredictable event or "state of nature". The unpredictableness of the state of nature is what generates probabilities that are estimated from the given information. Finally, the decision maker will choose a strategy for experimentation and action that is consistent with his level of risk aversion.4 To illustrate a decision problem, let $1,...,sm represent the m possible states of nature with probabilities p(sl),...,p(sm) of occurring. The decision maker's choices are identified as A1,...,An and each choice yields a unique outcome oij (i=1,...,m; j=1,...,n) in the respective state Of nature. These components are shown in Table 39. 3. Schlaifer, Robert, Introduction to Statistics for Business Decisions, MC Graw-Hill Book Co., 1961, p. 17. 4. Raiffa, Howard, pggigign_gnaly§i§, Addison-Wesley Publishing Co., Reading, Mass., 1968, Chapter 1. 148 Table 39: The Decision Table Probability of State And Nature State p(81) ' ' ' ' - P(sm) “353323312535; ....... 5.1.---L---;-_-_' _:___ ;_ _ am A], 011 o . . . . oml ———————— §B___-__------ -81n . T . 0 0 cm Having identified the possible choices, the outcomes, and their likelihoods, the decision maker must compare outcomes. A common denominator must be established in order to make comparisons. One approach is to maximize expected returns. This approach requires the outcomes to be expressed in dollar equivalents and again the problem of decision maker subjectiveness arises. The ordering of choices for the maximum Of expected returns is based on the index expressed as follows: In E(Aj) = 2 . P(Si)Yij 1 1 where: Aj is the jth choice, p(si) is the probability for the state of nature, 149 Yij is the dollar equivalent for the outcome of the ith state of nature and the jth choice in Table 39. 5.3.4 Expected Utility Model Daniel Bernoulli argues that individuals do not care directly about the dollar payoff of a particular decision but that they respond to the utility these dollars provide.5 An individual's utility is ranked by their cultural environment and psychological attitudes. Due to these factors, the terms risk averse, risk neutral, and risk preferring do not necessarily describe concave, linear and convex utility functions. An individual may have diminishing marginal utility and a preference for risk taking which, when combined, may result in either a concave or a convex utility function. The von Neumann-Morgenstern Theorem developed an expected utility model in an axiomatic system. The basic axioms assume "rational" behavior among decision makers and allow an ordinal ranking of utility functions. At minimum the conditions include:6 Ordering Qt onoiges: For any two choice A1 and A2 the decision maker either prefers A1 to A2, prefers A2 to A1, or 5. Daniel Bernoulli, "Exposition of a New Theory on the Measurement of Risk," Econometrica 22, January 1954, p. 23-36. 6. Robison, L.J., and P.J. Barry, The Competitive Eirm's Response to Risk, Macmillian, New York, 1987, Chapter 2. 150 is indifferent. I s'!'v'! E l . preferred to A3, then A1 must be preferred to A3. 5 lsl'! !i E l . some other choice, then a risky choice pAl + (1-p)A3 is If A1 is preferred to A2, and A2 is If A1 is preferred to A2, and A3 is preferred to another risky choice pAz + (1-p)A3, where p is the probability Of occurrence of A1 or A2. Qerteinty egniyaient e: eneieee: If A1 is preferred to A2, and A2 is preferred to A3, then some probability p exists that the decision maker is indifferent to having A2 for certain or receiving A1 with probability p and A3 with probability 1-p. Thus A2 is the certainty equivalent of pAl + (1—p)A3. Suppose a decision maker faces a risky event and the possible outcomes of the event are ranked from least desirable to most desirable. By arbitrarily assigning a utility value to the two extremes (for convenience assign 0 the the least desirable and 1 to the most desirable) and ranking the the values between the extremes based on the individual's certainty equivalents for differing likelihoods of gains and losses allows the utility to be ordinally ranked. This procedure assumes that the utility of the certainty equivalent (yCE) equals the expected utility of the risky alternative: UIYCE) = P(1-0) + (1'P)(0) = P- 151 The index of preference of choices can be constructed as: EU(A1) P(51)U(Y11) + - - - + PIsm)U(Ym1) E1304“) p(sl)U(Y1n) + ° ° ° + p(sm)U(Ymn)° Using this analysis, the optimizing principle is for the individual to choose that option which maximizes the expected value of their utility. 5.3.5 Expected Value-Variance Analysis Expected value—variance (E-V) analysis starts with the assumption that the decision maker seeks to maximize utility where utility if a function of expected income and the variance of expected income. The individual's utility will increase as expected income increases and decreases as the variance of expected income increases. Therefore it can be assumed that a larger expected return is preferred to a smaller return and a smaller variance is preferred to a larger variance. Using this information in graphical form, a boundary which locates the minimum possible variances associated with each possible level of expected income, can be created (see Figure 2). The E-V boundary can be determined conceptually by computing the expected income and the variance of that income for all alternative choices and connecting those points that represent the minimum possible variance for each expected income level. Points above the E-V boundary may be 152 z-u Bowman: / A v -------'-“""‘)B V21>-- "’ "“ ‘- EXPECIED INCOME E E1 Figure 2: The E-V Boundary If expected income E1 is desired, the least variance that must be tolerated is V1. Point A represents the expected income and variance resulting from a particular farm plan, given the available resoureces. Other points above the E-V boundary may be attainable, in the sense that the resources may be available to undertake farm plans with those particular income and variance values, but because less variance is preferred to more, a farm plan above the boundary will never be undertaken. Point B may be attain- able but is irrational because given expected income E1, V1 is preferred to V2. 153 attainable given the resources to undertake the production plan for a particular income and variance value, however since it is assumed that a producer prefers less variance to more variance, said producer will never use a production plan above the boundary. 5.4 CONCEPTUAL ASSISTANCE TO DECISION MAKING With price information in the form Of probabilities, decision makers will be better able to comprehend the degree of uncertainty associated with the states of nature (i.e. future prices). It is these perceptions about future prices that determine what and how much farmers produce and when they sell their production. With more accurate perceptions about the uncertainty associated with future events, decisions can be made more consistent with farmers' individual objectives and risk preferences.7 In the sense that this is an aggregated data model that forecasts the U.S. farm price, the burden of decision alternatives is placed on the user. However, the balance sheet was designed to help in choosing actions or decisions to reduce risk in three areas. The categories are the government program participation decisions, crop mixture decisions and marketing decisions. The payoff matrix in Table 40 combines all of the components of modern decision analysis. 7. Halter, A.N., and R. Mason, loc. cit. 154 Table 40: The Payoff Matrix STATES OF NATURE LOW MEAN HIGH PRICE PRICE PRICE ----‘BESEEE‘B’Iffff; ....... fa ..... f2- ...?2.. -32 -53- - d1:Participate in the Government program + +? ? -? - dzzIncrease the acres committed to corn vs. an alternative - -? ? +? + d3:Increase the acres committed to an alternative vs. corn + +? ? -? - d4:Repay loan & sell - -? ? +? + d5:Default loan + +? ? -? - d :Forward contract the mean price S3 + +? ? -? - d7:Hedge + +? ? +? + (basis narrows) d8:Spot market - -? ? +? + The decision alternatives accompany the categories discussed above. The states of nature (i.e. the price range and associated probabilities) are provided by the balance sheet. The outcomes must be assigned by the individual user but for conceptual assistance, the outcomes should range from favorable (+) to unfavorable (-) levels of utility. APPENDICES Appendix 1 Data Source Considerations The data for corn consumption Of each animal species was obtained from the USDA FEED OUTLOOK AND SITUATION YEARBOOK. The data provided here is in million metric tons and, to be consistent with other data, was converted to bushel equivalents. The animal inventory data was Obtained from AGRICULTURAL STATISTICS. For most of the animal species classes, the inventory values are stock variables which assumes that each animal on inventory day will be carried throughout the year. However, the broiler and turkey values are production flow variables and they measure consumption of all birds produced in the 12 month period. The price data was obtained from AGRICULTURAL PRICES and the USDA OUTLOOK AND SITUATION REPORT. The milk, milk cow, steer & heifer, and beef cow prices are all on a January to December market year using average of the year in standard units for each species. Egg, broiler, turkey, and hog prices are on a December to November market year. 155 156 The data used for the export section was collected from three sources. All of the commodity data (i.e. regional consumption, production, ending stocks, net imports and exports) came from the FOREIGN AGRICULTURE SERVICE and specifically, the FOREIGN PRODUCTION, SUPPLY, AND DISTRIBUTION OF AGRICULTURAL COMMODITIES. All price data comes from the FOREIGN AGRICULTURAL TRADE OF THE UNITED STATES. All macro economic data (i.e. consumer price index, population, and exchange rates) comes from the INTERNATIONAL FINANCIAL STATISTICS. The marketing year of feed grain in this model is October 1 to September 30. It is important to note that future updates of the model will need to reflect the change in the marketing year from September 1 to August 31, (starting in calendar year 1986) however, the change in data collection should not significantly affect this models' forecasting reliability. Appendix 2 International Regional Groupings Resign United States Residual Exporters Canada Australia Argentina Importers Brazil Developed Markets Soviet Bloc China Oil-Exporting LDC's 157 W United States Canada Australia Argentina Brazil United Kingdom, Belgium, Denmark, Netherlands, Finland, Luxembourg, Portugal, Ireland, Greece, Iceland, Austria, France, West Germany, Italy, Switzerland, Sweden, Norway, Malta, Spain, Japan, South Africa Albania, Bulgaria, East Germany, Hungary, Poland, Romania, Yugoslavia, Czechoslovakia, USSR China Algeria, Ecuador, Indonesia, Iran, Iraq, Libya, Oman, Saudia Arabia, Venezuela, Nigeria, United Arab Emirates, Kuwait 158 International Regional Groupings (cont'd) Region Countries Importers Newly Industrialized Hong Kong, Singapore, Malaysia, Taiwan, South Korea LDC's all others Appendix 3 Supply/Demand Balance Sheet Documentation A.1 Getting Started To use the balance sheet, you will need an IBM or compatible microcomputer with at least 256K of RAM memory. At least one disk drive will be needed and an 80-column monitor. The balance sheet is started by placing the floppy disk into the boot up drive and powering on your computer. When you see the DOS prompt, type "corn" and press return. You will see some resident application files loaded into memory and then the title screen. On the bottom Of the title screen are key codes for performing various Operations. TO move forward, press F8. After pressing F8 on the title screen, the main menu appears. To move through the menu, either select the number in front of the option or use the direction keys to highlight an option and press return. Depending on the main menu selection, you will see another menu or the screen selected. The display of the balance sheet is arranged into four columns of data. The fourth column is always the forecasted 159 160 AN ECONOMIC SUPPLY/DMD mac: sun ran :0ch m ammo m m suns CORN nmusm by mom 3. my: .11): Exam: neuron sun mm EAST mam, an 48824 SYSTEM DESIGN AND PROGRAMMING: BETA TEST VERSION 1.0 ANTHONY B. WASHINGTON SEPTEMBER, 1987 ROB LELAND n-Holp n-Prcv. Screen Its-Edit Flu-Print Fa-Next Scrun Figure 3: Title Screen MAIN MENU LOAD CASE STUDY SAVE CASE STUDY INITIALIZE EXOGENOUS VARIABLES INITIALIZE ADD FACTORS EXAMINE BALANCE SHEET EXAMINE COMPONENTS OF FEED DEMAND EXAMINE COMPONENTS OF U.S. EXPORTS SOLVE UOQOU.UNH EXIT Figure 4: Main Menu 161 vector while column three holds the lagged vector which the forecast is based. On some screens there are fields for yes/no responses to the override feature. If you choose to override an estimated value, the override value column is highlighted and the new value can be inputted. Each main menu option will be discussed below. A.2 Loading and Saving Data A.2.1 Load Case Study When the Load screen appears, you are asked to input the default drive. The historical data is saved on the balance sheet disk and therefore the return key is entered. The data files appear on the screen and you are asked if any of these files will be used. You are then prompted to enter which column the data should go. You may enter a file name and by striking return, the vector is loaded. The file extension is not needed. A message appears at the bottom Of the screen to confirm the transfer of the file. You are required to load a lagged vector of historical data to prevent any errors while running the calculations. Columns one and two can be used to load historical data or can be used to hold a particular scenario for on screen comparisons. In order to update or edit a vector with new information, it must be loaded into the fourth column. 162 LOAD SUPPLY/DEMAND BALANCE SHEET DATA The default drive is:° A: 1982-83.BIN 1983-84.BIN 1984-SS.BIN 198$9SG.BIN 1986-S7.BIN 1987-SS.BIN SS-DATA.BIN EEROS.BIN Do you wish to use data from one of these files (Y/N)? Y Which column do you want the data (1-4)? 4 Enter the file name. SS-DATA .SIN Fl-Help Fz-Prev. Screen F3-Edit F7-Print Fa-Next Screen Figure 5: Load Screen SAVE SUPPLY/DEMAND BALANCE SHEET DATA Do you wish to save the data you entered or modified (Y/N)? Y The default disk drive is: A: Name the year you wish to save (1 thru 4): 4 1982-83.BIN 1983-S4.BIN 1984-85.3IN 1985-86.BIN 1986-87.BIN 1987-BS.BIN SS-DATA.BIN ZEROS.BIN Enter the file name. SS-DNTA .SIN Fi-Help rz-Prev. Screen FS-Sdit F7-Print Fa-Next Screen Figure 6: Save Screen 163 A.2.2 Save Case Study The Save screen is much like the Load screen. You are asked if any of the data vectors should be saved. You are then prompted to input which column should be saved and then a file name. Again, the file extension is not needed. Since editions are made to the fourth column, it is generally the one to save. A message at the bottom of the screen confirms the transfer of the file. A.3 Initialize Exogenous Variables In order to forecast the next time period, you must input the relevant exogenous and predetermined variables. The Summary Of Exogenous Variables displays all the variables used and sets the year of the forecast vector. You begin by entering the marketing year you wish to forecast and then one-by-one entering the exogenous variables. When you get to the bottom of the screen, press F8 to continue. The other menu options available for initializing the exogenous variables are essentially work-sheets which carry the generated value to the exogenous summary. If you wish, the work-sheets can be bypassed and all relevant inputs done in the exogenous variable summary. The U.S. Composites menu option allows you to determine the gross revenue from participating in the government program and the food, seed, and industrial use. The U.S.. acres planted to corn is a function of (among others) net 164 S RETURN TO MENU EMOGENOUS VARIABLES 1 U.S. COMPOSITES 2 IMFOMTERS GROSS DOMESTIC PRODUCT 4 SUMMARY OF EMDGIMOUS VARIABLES Figure 7: Exogenous Variable Menu EMOGENOUS VARIABLES l r 3:03. 1122 1343-44 1334-37 1347-34 1344-3 0.3. coax 1:30:33 (MILL. In) 11.0 2.0 2.0 2.0 cousunzn 33103 130:: 3.222 3.300 3.403 3.300 73211313 c0333 30a IIIAT (3:: 4:33) 37.33 34.33 33.00 ' 34.30 7331431: 00433 run 00:: (PER 302:) 144.04 144.22 143.00 130.00 GOVT. raconan ranrzczranr°3 asvzluz 270.41 173.41 141.23 144.33 orvrnsxow ruruzxrs 0.00 2.14 33.32 23.30 nerrxczrucx PAYMENTS 30.34 101.17 33.31 102.33 3230231 or 20:23 In 3:: 0.100 0.173 0.200 0.200 3430231 or 3410 1330 orvrnsxou 0.000 0.023 0.130 0.100 coax 1043 313: (403. 30a 31: 4 3011) 2.43 1.31 1.33 1.40 ti-Selp Fa-Srev. Screen FS-Sdit F7-Print FS-Iert Screen Figure 8: Exogenous Variable Screen 1 330033003 vaaxnanzs YEAR 1333-44 1344-47 1337-33 135233 soananzxzo lacunae: 34:23 you: 1:300:23: 32:0 034:: 1.4437 1.7000 1.7000 1.3000 rumoursas warn: 1.4113 1.7000 1.7000 1.3000 333033133 7130 02113 1.4037 1.4000 1.4000 1.4000 2230:1133 IIEAT 1.3203 1.3000 1.3000 1.3000 warn: 3310: (0013 taxes 4/nr) 133.00 117.00 113.43 120.00 33223 PRICE (4/30.) 3.14 2.40 2.43 2.43 IIEAT 32:10 (IU./AC) 37.3 34.4 33.2 40.0 Fl-Help Fz-Prev. Screen FS-Sdit F7-Print rS-Hext Screen Figure 9: Exogenous Variable Screen 2 165 330033003 733143133 3300. 1143 1343-44 1344-47 1347-44 1344-43 3111103 3330 31::10:::'4=:&:=:3133 11.177 10.334 10.300 10.000 041113 430 041333 03 3330 11.412 10.303 12.400 12.300 3333 0033 430 3333 003 3331403343314 34.742 33.044 42.000 41.230 3334. 3011313. 430 01033 031033333 334.331 330.000 333.000 340.000 3301133 3300001103 4433.43 4300.00 4330.00 4400.00 103331 3300001103 143.242 203.224 223.343 233.300 300 430 310 303333 32.313 30.340 41.000 31.000 314410 fl-Prev. Screen Mt fl-Print m Screen Figure 10: Exogenous Variable Screen 3 330033003 733133133 1343 1343-44 1344-47 1347-44 1:5:i4 3013343 3341 33103 (4/103) 133.00 140.00 140.00 143.00 300 33103 (41031) 44.00 31.13 31.00 43.00 3333 31333 33103 (4/031) 37.70 37.73 37.00 37.00 3113 33103 (SIM) 12.73 12.31 12.00 12.23 3333 003 33103 (3/031) 34.30 33.31 33.00 33.30 40333 331-43103 430 01733110 3.3 13.4 21.3 21.0 0.3. 3131303 330130 310033 0.0 0.0 0.0 0.0 3000. 3330 4 1300313141 1140.0 1131.0 1213.0 1233.0 0033 43 4 3330331 03 3330313 0.43333 0.43333 0.43333 0.43333 III-Help PSI-Prev. Screen ”-203 flu-Print PS-lext Screen Figure 11: Exogenous Variable Screen 4 330033003 333143133 1333 1343-34 1344-47 1347-44 1332343 133031333 3030141103 4333123.0 4330000.0 4400000.0 4433000.0 133031333 03033 00333110 3300001 0.011744 0.012242 0.013324 0.014033 133031333 333v33110 4333 233300.0 230000.0 233000.0 240000.0 333031333 3330 03313 3333303 1.2404 1.2333 0.4444 130030 333031333 33341 3373303 1.1733 1.1233 0.3073 5353‘s 333031333 3030131103 73000.0 74000.0 40000.0 43000.0 333031333 03033 00333110 3300001 0.010777 0.011144 0.011334 0.012331 n-Ielp n-Prev. Screen n-Sdit fit-Print FS-lest Screen Figure 12: Exogenous Variable Screen 5 166 10mmnunu3wuunmmfi43mnnm '2mnnun33mmnu3 3nunnnc13mmuu3 43am.4um.um13unnnnnm3 Figure 13: U.S. Composites Sub Menu 330033003333133133 l I 'm. 1333 1505-00 1505-07 1507-00. 1000-03 0033033313 03: GOVT. 3300333 33331013333'3 3303303 3330331 0! m II 333 0.100 0.175 0.200 0.200 W 0! PAID 1330 mun: 0.000 0.035 0.150 0.100 3333 33103 03 will OS 1033 3.55 1.04 1.02 1.75 (lbich ever 13 higher) 3 ( 1000 - SIP - DIVERS!“ ) 0.500 0.000 0.350 0.700 3 3300333 11310 110.0 115.1 110.4 110.5 — — — — - .058 3303 333331 270.01 115.51 141.25 100.19 n-Selp 32-31-40. Screen 33-3010 fl-Prtnt 33-3430 Screen Figure 14: Govt. Program Participant's Revenue Screen - 3300. 1333 1005-00 1000-07 1007-00 1000-0 mun-3 0?: DWI” 3313331 PAW II!" 0.00 0.73 2.00 2.00 X 3330331 0? PAID 1330 010333103 0.000 0.025 0.150 0.100 X 3300333 11310 110.0 110.3 110.0 119.5 _ — — — 44 M 333 M82 3033 0.00 2.10 30.02 23.00 r1-l1e1p n-Prev. Screen 33-3010 ”-3310: "Inner: Screen Figure 15: Diversion Payments Screen 1€Y7 Immansmusr PROJ. YEAR 1905-00 1900-07 1907-00 1900-09 COMPONEflTS or: DEEICIENCY RAxNENI PERCENT or AcREs IN ARR '0.100 0.175 0.200 0.200 PERCENT or RAID LAND DIVERSION 0.000 0.025 0.150 0.100 CORN IARGEI PRICE 3.03 2.90 3.03 2.90 - EARN PRICE or CORN on m 2.55 1.04 1.02 1.75 (Which ever 10 higher) - DEEICIENC! RAYNENI RAIE 0.40 1.00 1.21 1.23 x ( 1000 - ARR - DIVERSIoN ) 0.900 0.000 0.050 0.700 x PROGRAM YIELD 110.0 119.3 119.4 119.5 — — — _ - 63088 PRE EAsE ACRE 50.90 101.17 93.91 102.09 Fl-Belp rz-Prev. Screen Pa-ldit r7-Print Pa-Next Screen Figure 16: DefiCIency Payments Screen 000D, SEED, AND INDusIRIAL 00E P8030 YEAR 1905-00 1900-07 1907-00 1900-09 (811.1110! 30.) EDOD HIGH RDCIRDSE CORN SYRUP 330.0 340.0 350.0 355.0 RESIDUAL 501.0 537.0 530.0 541.0 SEED 19.0 19.0 19.0 19.0 INDUSTRIAL 00E AncoaoD/EUEL 200.0 295.0 310.0 320.0 — — — — IDEAL 1100.0 1191.0 1215.0 1235.0 01-0019 ra-Prev. Screen 03-0010 r7-Print rl-Next Screen Figure 17: Food, Seed, And Industrial Use Screen 168 corn revenue form government payments. The work-sheets help you calculate revenues from the market, diversion payments and any deficiency payment. The food, seed, and industrial work-sheet disaggregates FSI use into high fructose corn syrup, seed, industrial use and a residual. This disaggregation will allow you to more accurately determine the total FSI use given the conceptual constraints. The Importers Gross Domestic Product menu option is a work-sheet that requires the percentage (or weights) that each area in the region imports. These weights must be changed to represent a change in an area's importance to the total regional imports. Each area CPI and gross domestic product is needed to calculate the regional gross domestic product. The Exporters Composites menu option shows work-sheets which help you to calculate the exporters crop revenue and exporters gross domestic product. The balance sheet uses lagged values for exporters crop revenue, however this menu option requires user input in order to have values when the vector being edited is used in the lagged vector column. The Exporter Gross Domestic Product menu option is a work-sheet much like the Importers Gross Domestic Product. It requires the use of weights for area importance as well as CPI's and gross domestic product. Once these variables are entered, they can be saved in a vector for future use or scenario analysis. W 0?: 169 Lam WI— IIIOITIII 0:005 00:25:10 PRODUCT IEIGIIS: (Percent imported to world inverte) m CI 0 . 030 . 00V!” 0100 0.307 WPHG m0 0 . 330 0030 316100 0 . 110 mu! m 0. 113 130023 mm 0. 110 “II. 0 . 003 030.7 . m 1003-00 1000-07 1007-00 1000-0 m ma 1.01020 ”A 110.0 110.0 100.0 110.0 0071!? "DC 130.00 130.00 131.00 131.00 mm m 103.00 130.00 133.00 133.00 one In!“ 133 . 00 133 . 00 130 . 00 133 . 00 PI-Ielp fa-Prev. lcreen Pa-ldit 07-0210: rt-lext Screen Figure 18: Importers Gross Domestic Product Screen 1 m mun L I 0000 . 3m 1003-00 1000-07 1007-00 1000-0 m ma 110133 m mm 133.00 133.00 133.00 133.00 nun mm 000.0 010.0 000.0 000.0 M11. 3300.0 3300.0 3300.0 3330.0 03003 me moon-r Gm 1.3000 1.7000 1.0000 1.0000 00V!!! 0106 1.0000 1.3000 1.3000 1.0000 mm m 1. 0000 3 . 0000 3 . 3000 3 . 3000 OPEC ”010' 1 . 0000 3 . 1000 3 . 3000 3 . 3000 rl-lelp rz-Prev. screen ra-ldit r7-Pr1nt Pt-lext screen Figure 19: Importers Gross Domestic Product Screen 2 0000. m2 1003-00 1000-07 1007-00 1000-0 03000 me mm m W220 1.0000 3.1000 3.3000 3.3000 1.3003! mm 0.000 0.700 0.000 0.300 “11. 33.000 37.000 00.000 03.000 W 03000 me manor 8 (M0331 0 (6001/0011), 0.011700 0.013303 0.013330 0.010033 PI-lelp r2-Rrev. Screen PJ-ldit r7-Print Pt-lext screen Figure 20: Importers Gross Domestic Product Screen 3 170 EXOGENOUS VARIABLES EXPORTERS CONROSITES 1 EXPORTERS CROP REVENUE 3 EXPORTERS GROSS DOIESTIC PRODUCT 3 RETURN TO NENU Figure 21: Exporters Composites Sub Menu lEXOGENOUS VARIABLEsigi PROJ. YEAR 1005-00 1000-07 1007-00 -1080-09 CORPONENTB OF: EXPORTERS FEED AND WHEAT REVENUE EXCHANGE RATE FOR ARGENTINA 0.0010 0.0030 1.3000 1.0000 EXCHANGE RATE FOR AUSTRALIA 0.7000 0.0700 0.3000 0.0000 EXCHANGE RATE FOR CANADA 1.3033 1.3003 1.0000 1.3000 FEEDGRAIN YIELD FOR ARGENTINA 3.3000 3.0000 3.7300 3.0000 FEEDGRAIN YIELD FOR AUSTRALIA 1.3000 1.0000 1.7000 1.0500 FEEDGRAIN YIELD FOR CANADA 3.0000 3.1000 3.3000 3.0500 "HEAT YIELD FOR ARGENTINA 3.3000 3.0000 3.7300 3.0000 WHEAT YIELD FOR AUSTRALIA 1.0000 1.7000 1.7300 1.7500 WHEAT YIELD FOR CANADA 1.7700 1.0000 1.0300 1.0500 FI-nelp rz-Prev. Screen FJ-Edit F7-Print rs-Next Screen Figure 22: Exporter Crop Revenue Screen 1371 :IEXOGENOUS VARIABLEEI COMPONENTS OF: EXPORTERS GROSS DOMESTIC PRODUCT WEIGSTS: (Percent exported to reet-of-world exporte) ARGENTINA 0.503 AUSTRALIA 0.104 CANADA 0.233 _ PROS. YEAR 1905-00 1900-07 1907-00 1900-09 CONSUMER PRICE INDICEs ARGENTINA 20000.0 20500.0 21000.0 20959.0 AUSTRALIA 145.00 140.00 150.00 149.00 CANADA 140.00 143.00 145.00 144.00 FI-aelp Fz-Prev. Screen FS-Edit P7-Print PS-Next Screen Figure 23: Exporter'Gross Domestic Product Screen 1 lExocENOUS VARIABLES";- . PROJ. YEAR 1905-00 1900-07 1907-07 1900-09 GROSS DOMESTIC PRODUCT ARGENTINA 200.00 210.00 220.00 230.00 AUSTRALIA - 1.0000 1.9000 2.0000 2.2000 CANADA 1.0000 1.7500 1.0500 2.0000 EXPORTERS GROSS DOMESTIC PRODUCT E (NEIcNTj 0 (ODPj/CPIj)) 0.010777 0.011100 0.011534 0.012351 P1-001p Fz-Prev. Screen 03-001: P7-Print F0-Next Screen Figure 24: Exporter Gross Domestic Product Screen 2 172 A.4 Initialize Add Factors Each of the estimated equations has a mechanism which can be used the adjust the intercept of the equation. By using a positive add factor the function will return a higher value and vice versa for a negative add factor. This feature is added so you can adjust each equation with a posteriori information. A.5 Examine Balance Sheet You can choose to examine screens which show a balance sheet similar to that shown in Table 1 (page 4). This menu option displays three screens which show U.S. supply and utilization factors. The first screen shows strictly the U.S. production situation. The second screen shows the U.S. supply as well as the estimated and predetermined uses of corn. This screen also shows the estimated price which is calculated when supply and usage are equated. The final screen shows information that relates to the level of ending stocks. On each of these screens there are places to override the estimated values presented. If the override is used, the model will sélve using these new values. This feature allows you to do "what if” scenarios. A.6 Examine Components of Feed Demand This menu option allows you to view screens that show the livestock cOrn consumption both in aggregate form and on a per head basis for each livestock species. If you view 173 ‘1ADDIQCNWSPOnimEIMmummmyl 1000-00 1000-00 SUPPLY ----' CONSUMPTION PER'HEAD ---- ACRES PLANTED -0.300 TURKEYS 0.000 ACRES HARVESTED. 0.000 HUGS .0.000 YIELD 0.000 OTHER 0 UNALIDCATED 0.00 CONSUMPTION PER HEAD INTERNATIONAL COMPONENT DAIRY ANINAL 0.000 INPORTERS NET IMPORTS 0.00000 CNTTLE ON FEED 0.000 INPORTERS YIELD 0.00 OTHER REEF CATTLE 0.000 EXPORTERS WHEAT YIELD 0.00 HENS, PULLETS, 0 was 0.000 EXPORTERS HARVESTED AREA 0.0 BROILERS 0.000 EXPORTERS CONSUMPTION 0.00000 PI-Help rz-Prev. Screen Fa-Edit r7-Print Ps-Next Screen Figure 25: Add Factor Screen 1 1 ADD FACTORS FOR THE EQUATIONS l 1000-00 INTERNATIONAL CONPONENT ———- EXPORTERS ENDING STOCKS 0.00000 POLICY STOCKS GANGE IN CCC STOCKS 0.00 GANGE IN FOR STOCKS 0.00 FREE STOCRS 0.00 Fl-nelp Fz-Prcv. Screen Pa-Sdit r7-Print PSnNext Screen Figure 26: Add Factor Screen 2 170 SUPPLY/DEMAND BALANCE SHEET FOR CORN IN THE U.S. m e 0m- YEAR 1003-00 1000-07 1307-00 1000-0 RIDE ? VALUE (NILLION ACRES) ACRES SET-ASIDE 3.0 13.0 31.3 31.0 ACRES PLANTED 03.3 70.7 00.0 00.3 N ACRES HARVESTED 73.1 00.3 30.0 30.0 N YIELD PER ACRE 110.0 110.3 110.0 110.1 N FI-Selp r2-Prev. Screen FS-ldit r7-Print rI-Next Screen Figure 27: Balance Sheet Screen 1 SUPPLY/DEMAND BALANCE SREET FOR CORN IN THE 0.5. OVER- YEAR ' 1905-06 1900-07 1907-00 1900-09 RIDE ? VALUE (NILLION IUSBELS) SEGINING STOCKS 1000 0000 0929 0557 PRODUCTION 0977 S253 7101 0950 N IMPORTS 11 2 2 2 ———— TOTAn SUPPL! 10530 12290 12070 11515 N USE: FEED 0095 0050 0700 0510 N FOOD, SEED, 0 INDUSTRY 1100 1191 1215 1235 TOTAL DONESTIC 5255 5001 5915 5753 EXPORTS 1201 1525 1000 1557 N ———— TOTAL USE S090 7300 7515 7311 TOTAL ENDING STOCKS 0040 0929 4557 4204 TOTAL 0 OF USE 02.2 06.9 00.0 57.5 U.S. AVERAGE FAR! PRICE $2.35 01.51 51.00 52.05 r1-uelp r2-Prev. Screen 03-001: r7-Pr1nt FS-Next Screen Figure 28: Balance Sheet Screen 2 SUPPLT/DENAND HALANCE SHEET FOR CORN IN THE U.S. PROJ. OVER- YEAR 1003-00 1000-07 1007-00 1000-00 RIDE ? VALUE (NILLION HUSHELS) STOCRS IN GOVERNNENT PROGRAN CCC INVENTORY 1301 1037 1000 1000 N FARNER O'NED RESERVE 3033 3000 3330 3073 N FREE STOCRS 30 0 000 00 N Enter current WIDE! GOVT. IOAN 2730 2070 2002 1eve1 here —~ 0 EFFECTIVE CORN ICON RATE 03.00 01.31 01.30 31.00 FI-Selp F2-Prev. Scrcen Fa-ldit F7-Print PS-Next Screen Figure 29: Balance Sheet Screen 3 175 HOG CORN CONSUMPTION RETURN TO MENU LIVESTOCK CORN CONSUMPTION 1 CORN CONSUMPTION SUMMARY 3 DAIRY ANIMAL CORN CONSUMPTION 3 CATTLE ON FEED CORN CONSUMPTION 0*OTHER REEF CATTLE CORN CONSUMPTION 3 HEN, PULLET AND OTHER CHICEEN CORN CONSUMPTION 0 EROILER CORN CONSUMPTION 7 TUREEY CORN CONSUMPTION 0 0 0 OTHER UNALLOCATED CORN CONSUMPTION Figure 30: Livestock Corn Consumption Menu LIVESTOCK CONSUMPTION OF CORN IN THE U.S. PROJ. YEAR 1003-00 1000-07 1007-00 1000-00 DAIRY ANIMALS 033.37 003.10 010.01 701.70 CATTLE ON FEED 000.03 003.01 770.00 733.00 OTHER BEEF CATTLE 100.30 337.11 330.13 310.17 HENS. PULLETS, 0 CHICKENS 337.03 303.07 307.13 377.30 BROILERS 003.03 330.71 333.17 330.17 TURKEYS 110.00 100.31 130.03 137.20 HOGS 1000.31 1300.00 1301.30 1333.11 OTHER AND UNALLOCATED 10.30 30.03 331.11 170.00 — — — _ TOTAL CONSUMPTION (MILL. EU) 0003.00 0030.00 0700.00 0310.35 F1-Be1p F2-Prev. Screen FS-Edit r7-Print FS-Next Screen Figure 31: Corn Consumption Summary Screen 176 DAIRY ANIMAL CONSUMPTION PER HEAD OVER PROS. RIDE YEAR 1003-00 1000-07 1007-00 1000-00 VALUE FEEDING RATE PER HEAD 70.370 00.000 70.003 70.170 0.000 MILE CONS AND HEIFERS THAT HAVE CALVED, JAN. 1. 11.177 10.330 10.300 10.000 DAIRY ANIMAL CONSUMPTION 033.37 003.10 010.01 701.70 0.00 (MILLION EU) Fl-Nelp F2-Prev. Screen FS-Edit r7-Pr1nt FS-Next Screen Figure 32: Dairy Animal Consumption Per Head Screen OTHER AND'UNALLOCATED CONSUMPTION PER HEAD mam , an»: tun: 2213 1905-00 1935-97 1997-39 1993-99 VALUE OTHER AND unarmocarro 19.30 30.03 251.11 170.9 o.o cnwnmmrum (HUHJNIBU) Other end unelloceted ccneunpticn includes hcreee, lulee, oxen, cheep, deer, pets, etc. Fl-Belp F2-Prev. Screen FS-Edit F7-Rrint FS-Next Screen Figure 33: Other and Unallocated Consumption Screen 177 the per head information, there are places to override the per head estimates for "what if" scenarios. A.7 Examine Components of U.S. Exports This menu option allows you to examine the international import/export component. One sub menu option shows a screen which disaggregates the exporting regions supply, consumption, ending stocks and exports. The other sub menu option shows a screen with the aggregate net world imports, exports and the U.S. exports. A.8 Solve There are two choices for solving the model depending upon your goals. One solve menu option allows you to solve for a single price. The second menu option determines a price probability given a chosen number of iterations. In the single price option, you have either input the relevant exogenous and predetermined variables or overridden an estimated value. You input the initial "high" price and the price by which to decline on each iteration. When these inputs have been made, the algorithm will start with the "high" price and compare the estimated supply to the estimated demand. If the demand is less than the supply, the price will drop by the reduction price and recheck the supply and demand. When the demand is equal to the supply the algorithm will stop and you can return to the display portion of the program. 178 3 Innuimunm 1 EXPORTERS NET EXPORTS 3 U.S. EXPORTS SUMMARY Figure 34: U.S. Export Sub Menu EXPORTING RESIDN'S NET EXPORTS PROS. OVER YEAR 1003-00 1000-07 1007-00 1000-00 RIDE VALUE MILLION EU EXPORTERS SUPPLY 1000.30 3103.30 3103.03 3333.70 N - EXPORTERS CONSUMPTION 011.30 073.30 1033.01 1370.33 N - EXPORTERS ENDING STOCES 313.01 103.00 103.00 10.77 N _——— - EXPORTERS EXPORTS 770.37 000.33 000.30 037.07 N Fl-nelp F2-Prev. Screen FS-Edit F7-Pr1nt PS-Next Screen Figure 35: Exporters Net Exports Screen U.S. EXPORT DENAND PROS. OVER YEAR 1003-00 1000-07 1007-00 1000-00 RIDE VALUE MILLION 0U IMPORTERS NET IMPORTS 3017.01 3333.03 3300.00 3013.11 N EXPORTERS NET EXPORTS 770.37 000.33 000.30 037.07 U.S. EXPORTS 1301.0 1333.0 1000.3 1337.0 r1-Se1p ra-Prev. Screen PS-Edit r7-Pr1nt FS-Next Screen Figure 36: 0.8. Exports Summary Screen 179 SOLVE OPTIONS 1 SOLVE FOR A PRICE 3 PROBABILITY DISTRIBUTION FOR PRICE 3 RETURN TO MENU Figure 37: Solve Options Sub Menu At what price would you like to etert the solve proceee? $2.05 By wnet enount do you went price to drop? $0.03 SOLVINC Fl-Nelp Fz-Prev. Screen Fa-Edit F7-Print FS-Next Screen Figure 38: Single Price Solve Screen 180 This procedure-will procuce e probehility distribution of the U.S. corn tern price using rendon yields for the U.S. end the rest-ot-the-world. now many times would you like the process to drew tendon yields? 100 SOLVING PLEASE NAIT Fi-Selp rz-Prev. Screen ra-Edit F7-Print Fa-Next Screen Figure 39: Probability Iteration Screen PROBABILITY THAT THE PRICE NILL BE THAT LISTED OR BELOW PRICE $/BU.- 1 1.00 3 1.71 10 1.00 30 1.03 30 ‘ 1.00 00 3.00 30 3.08 00 3.13 70 3.17 00 3.31 00 3.37 03 3.03 00 3.30 MEAN ' 3.10 STD. DEV. I 0.1000 Fl-Eelp F2-Prev. Screen FS-Edit r7-Print Fa-Next Screen Figure 40: Price Probability Distribution Display Screen 181 A trade-off is involved when choosing the amount by which to reduce on each iteration. If you choose a low reduction price, the model will solve slowly. If you are unsure how your overrides will affect the model, you can set a high price and a large reduction price. This will allow the model to solve quickly but the accuracy of the forecast suffers. By choosing the later alternative, you can wait until the balance sheet has reached an equilibrium price and the key codes appear at the bottom of the screen. Choosing the F3 key code, you will be returned to this solve screen and the current equilibrium price will be displayed. This time you can choose a price higher than the previous reduction price and a new reduction price. The second solve option allows you to select a number of iterations for the purpose of calculating and displaying a range of prices and probabilities based upon random production shocks. The model will accept 300 or less iterations. By increasing the number of iterations, the standard error of the price distribution decreases and the confidence interval becomes smaller. However depending upon the number of iterations chosen, the model will take some time to solve. When the model solves using this menu option the random shocks, affect the world production. Each iteration will have a different equilibrium price a price range is created. You can move to the price probability display by pressing F8 when the key codes appear at the bottom of the screen. The 182 range of prices have a related probability distribution which indicates the probability of the price shown being at or below that percentage. This information provides subjective probabilities which can be used in the users decision analysis. A.9 Exit This option displays a screen that makes sure you are ready to exit the program. If not, you inputs the response for no and the main menu will return. 183 ARE YOU SURE YOU NISH TO EXIT ? (Y/N) N Fl-Eelp F2-Prev. Screen FS-Edit F7-Print FS-Next Screen Figure 41: Exit Screen Appendix 4 Computer Input/Output Code PROGRAM FIRST(INPUT,OUTPUT); (*************************************t*tttttt********fi***********tt*t**tit * R * AN ECONOMIC SUPPLY/DEMAND BALANCE SHEET * t t * FOR FORECASTING AND SINULATING THE * * fl * UNITED STATES CORN INDUSTRY * * t t by R t * * ANTHONY B. HASHINGTON * t * * Submitted to Michigan State University * * in partial fulfillment of the requirements * * for the degree of * t R * MASTER OF SCIENCE * * i * t * Department of Agricultural Economics * * * * 1988 * t * ******************t*********t*ttt****************t*******************Ritt*) {Procedures Generated By Screen Sculptor.Version 1.2 4/2/1987 - 23:33z0 } CONST CopyrightSS='(C)Copyright 80.85 The Software Bottling Company Of New York'; { DO NOT REMOVE The Above Copyright Notice This Program may not be used without the above Copyright Notice } { SCREEN SCULPTOR(C) Version 1.2 (C) COPYRIGHT, THE SOFTWARE BOTTLING COMPANY OF NEH YORK. 1980, 1985 WARNING: Do not attempt to make any changes to this procedure unless you have made a backup. The Software Bottling Company Of New York can not and will not support such changes made to this program. Turbo(tm) Pascal Version. Trade Mark 0f Borland International} { Global Required Definition of variables and constants } TYPE STRZ = STRING[2]; STRBO = STRING[80]; STR79 = STRING[79]; resSS = (staySS. prevSS. exitSS. nextSS); 1134» CONST 11355 ARA . ARRAY[1..4] OF REAL; { Esc. Up Arrow Key. Left Arrow Key . Page Up Key } escSS=i27; uSSs'H'; lSS-‘K'; puSSs'I'; { Blank. Down Arrow Key. Right Arrow Key. Page Down Key } blankSSs' '; dSS-‘P'; rSS-‘N'; pdSS-‘O'; { Function keys Fl-FlO } flSSs';'; f2$S-'<'; f3$S='-'; f4SS='>'; fSSS='?'; f6$S-'D'; f7SS='A': f8$S-'B': f9$S='C'; flOSS-‘D': retSS : STR2="; ES - 1: ***** Beginning of Include file LISTING.INC ***** {SI LISTING.INC} VAR actionSS. last_field_actionSS : resSS; hiSS, loSS : REAL; vtypeSS. screenSS. use_screenSS. screen-fieldSS. varSS : INTEGER; file_existSS. last_fieldSS. retrieveSS : BOOLEAN; rangeSS : STRBD; BeepOnSS: BOOLEAN; { ENDOGENOUS AND EXOGENOUS VARIABLES } PCNT_OF_XPORTS, APCT:AR4; AHCTzAR4; PYIELD. CORNYT:AR4: UHTYT. GROSS. ARP. DIVERSION. BAL. DVPCN. DVRCN. DIVPAY. DPAY, DEFPAY. BEGINSTOCKS. MIN_FREE_STOCKS. END_STOCKS. PRODUCT:AR4: IMPORTS. TSUPPLY. ONE:AR4; DNEPH. TUD:AR4; TUOPH. THREEzAR4; THREEPH. FOUR:AR4; FOURPH. FIVEzAR4; FIVEPH. SIX:AR4; 186 SIXPH. SEVEN:AR4; SEVENPH. EIGHTzAR4; DANUMzAR4; COFNUMzAR4; DBCNUMzARd; HPCNUMzAR4: DRONUMzAR4; TURNUM:AR4; HOGNUM:AR4; DAIRYCONS. CATONFED. OTHERBEEFCAT, CHICKENCONS. BROILERCONS. TURKEYCONS. HOGCONS. OTHERCONS. FEEDT:AR4; HFCS. SEED_USE. RESIDUAL. FUEL_USE. FSI_USE. DOMESTIC_USE. SETASIDE_ACRES:AR4; DV73:REAL; DV82:REAL; DV83:REAL: DV84:REAL; DV740NzREAL: VCCNzAR4; VCHU:AR4; C_TARGETP:AR4; CDRN_LDAN_RATE:AR4; PARREV:AR4; REVCOR:AR4; REVHHTzAR4; YEAR:AR4; YEAR18.YEARZB.YEAR38.YEARAB:REAL: YEARB. CORNPTzARd; RFARMP. MILKPzAR4: UHTPTzAR4; BEFSTRPzAR4: BCOUPzAR4; SMPTzAR4; HOGPzAR4; IPOPzAR4; IGDPzAR4; IHA. IYIELD. 187 IPRO:AR4; IFP. 1UP. IGDPPC. IPROPC. INIPC:AR4; INI_IN_BU. NXXRF:AR4; NXXRUzARA; NMXRF:AR4; NMXRH:AR4; CHHT.SBUT.DMUT.LOUT.NIUT.LDHT.BRHT.ARUT.AUUT.CAHT:REAL; CPISBzAR4: CPIDMzAR4; CPILO:AR4: CPIleARd; CPILDzARd; CPIBR:AR4; CPIAR:AR4; CPIAU:AR4; CPICAzAR4; CPICH:AR4; CPITzAR4; GDPCH. GDPSB. GDPDM. GDPLO. GDPNI. GDPLD. GDPBR. GDPAR, GDPAU. GDPCA. FP. HP. EYIELDzAR4; EFREV. EUREV:AR4: UYAR. UYAU. UYCA. FYAR. FYAU. FYCA. XRAR. XRAU. XRCA. E_END_STK, E_NET_EXPORT. EHAzAR4; ECON. ECON_IN_BU. ECONPC:AR4: EES. 188 EES_IN_BU. EESPC:AR4; ESPLY_IN_BU. ESPLYPC. EPRO. EPROPC. EUDPC. ENE:AR4; ENE_IN_BU. EXPORTS:AR4; EGDP:AR4; EPOPzAR4; EHYIELDzAR4: TOTAL_USE:AR4: PERCENT_USE:AR4: FPLR. FPLRZ. FPLR3:REAL: CCCSTOCKS. DCCCSTOCKS. FORSTOCKS. DFORSTOCKS:AR4; FREESTOCKS:AR4; GOVTSTOCKS:AR4; POLICY_STOCKS:AR4; TRIGGERP:REAL; { ADD FACTOR VARIABLES } APCT_AF. AHCT_AF. CORNYT_AF. ONEPH_AF. TUOPH_AF, THREEPH_AF, FOURPH_AF, FIVEPH_AF. SIXPH_AF. SEVENPH_AF. EIGHT_AF. IYIELD_AF. INIPC_AF, EYIELD_AF. EUYIELD_AF, EHA_AF. ECONPC_AF. EESPC_AF. DCCCSTOCKS_AF. DFORSTOCKS_AF:AR4; FREESTOCKS_AF:AR4; { OVERRIDE VARIABLES } CORNYT_0R. APCT_OR. AHCT_OR. BEGINSTOCKS_OR. PRODUCT_OR. 189 TSUPPLY_OR. INPORTS_DR. ONEPN_OR. DAIRYCONS_DR. TUOPH_OR. CATONFED_OR. THREEPH_DR. OTHERBEEFCALOR. FOURPN_OR. CNICKENCONS_OR. FIVEPN_OR. BROILERCONS_OR. SIXPH_OR. TURKEYCONS_OR. SEVENPH_OR. HOGCONS_OR. OTHER_UNALLOC_OR. FEEDT_OR. DONESTIC_USE_OR. INI_IN_BU_OR. ESPLY_IN_BU_OR. ECON_IN_BU_OR. EES_IN_BU_OR. ENE_IN_BU_OR. EXPORTS_OR. TOTAL_USE_DR. CCCSTOCKS_OR. FORSTOCKS_OR. FREESTOCKS_OR. ENDSTOCKS_OR:AR4; { VARIABLES FOR THE RANDOM SECTION } ALPHA.ALPHA1.ALPHA22ARRAY[1..30] OF REAL; BETA.BETAI.BETA2. GANHA.GAMNA1.GAMMA2. YIELD.YIELDI.YIELDZ. 2.21.22:REAL; REDUCE_PRICE:REAL: INFO:STRING[7]; PAUSE:STRING[11]; RANDON_PULLS:REAL; { FLAG VARIABLES FOR OVERRIDE VALUES } CORNYT.FLAG. APCT_FLAG:STRING[1]: AHCT_FLAG. BEGINSTOCKS_FLAG. PRODUCT_FLAG. TSUPPLY_FLAG. INPORTS_FLAG. FEEDT_FLAG. DOMESTIC_USE_FLAG:STRING[1]: INI_IN_BU_FLAG. ESPLY_IN_BU_FLAG. IEBCI ECON_IN_BU_FLAG. EES_IN_BU_FLAG. ENE_IN_BU_FLAG. EXPORTS_FLAG. TOTAL_USE_FLAG. CCCSTOCKS_FLAG. FORSTOCKS_FLAG. . FREESTOCKS_FLA6:STRING[I]; ENDSTOCKS_FLA6:STRING[I]; { MISCELLANEOUS VARIABLES } F6. 86. FLAG. UA.I.S.F:INTEGER; P.J:REAL: NYzINTEGER; USCORNPT:ARRAY[I..BOO] OF REAL: EQUILIBRIUMzREAL: PERCENTILE_ANSHER:REAL: ***** End of Include file LISTING.INC *ittt {SV-.C-.R-} { Pascal Directives. See Compiler Manual } {SI TURPROCS.TUR Include Procedures In This File. See Manual } (it PROCEDIRE BEEP(BeepOn: BOOLEAN) ; PROCEDURE CLEAR_KBD: PROCEDURE COLOR(foregr.backgrzBYTE); PROCEDLRE WITECUtext: STRBO); FUNCTION SET_MONITOR_TYPE: INTEGER; { Display A Screen Sculptor Screen } This is a sumary of the procedures in TLRPROCSJUR { Sound Beep if BeepOnsTRUE } { Clear Keyboard Buffer } { Set Color } { Hrite Chars Using Color } { Determine Monitor Type } { 2=Color. 3-Mono } PROCEDURE DISPLAY_SCREEN(screen_name: STRBD; VAR file_existSS: BOOLEAN); { Display And Get An Item From Screen. See Detailed Desription In Manual } PROCEDURE GETITEM( COL.LIN,LEN : BYTE; ITVPE : CHAR; VAR HITEM : STRBD; PICT : STRBO; ITEM_LOU.ITEM_HIGH : STRBD; VAR RET : STRZ; RETRIEVE : BOOLEAN: FGR_COLOR.BGR_COLOR : BYTE ): EXTERN; *) PROCEDURE RET_STATUS: { Column. Line. Length } { Type- C. N. D. Y. M } { Variable Name } { Picture x. U. L. 9. B l } { Range - Numerics/Date Only} { Returned Code } { False-Disp Only. TruecGet } { Colors Foregr. Backgr } { Check Status Of Variable retSS and return a code in 'actionSS' & set 'varSS' This procedure is called imnediately following GETITEM } { Input to this procedure: when retSS is length 1 the values are any of the ASCII chars 1591. when retSS is length 2 the values are uSS. lSS. puSS. pdSS. function keys dSS. rSS ( See CONST Section For Meanings ) } { Output: The following codes are returned in actionSS : nextSS. prevSS. exitSS. staySS } { Based upon 'actionSS' this procedure will then set 'varSS' to an integer. which represents the next item (variable ) to get. } BEGIN last_field_actionSS:=exitSS; actionSS:=nextSS; { Initialize Action Code } if retrieveSS then { Is retrieveSS TRUE? } begin if ord(retSS[D])=2 then { Is retSS length 2 ? } begin CASE retSS[2] of { Action to be taken depending on the last key pressed } uSS. lSS: actionSS:=prevSS; { Up Key. Left Key } dSS. rSS: actionSS:=nextSS; {Down Key. Right Key} puSS: actionSS:s { Page Up }exitSS; pdSS: actionSS:= { Page Down }exitSS; f1$S.f2$S.f3$S.f4SS.fSSS. f6$S.f7SS.fBSS.f9$S.fIOSS: actionSS:=staySS; { Function Key } END { Case ret }; end else { retSS is length I } begin if retSSsescSS { Escape Key } then actionSS:=exitSS end; { Any other key not in the above list will keep actionSS=nextSS } end; {retrieveSS} CASE actionSS of staySS: ; nextSS: begin varSS:=varSS+l; if varSS>screen_fieldSS then varSS:=l; if last_fieldSS and retrieveSS then actionSS:-last_field_actionSS end; prevSS: begin varSS:=varSS-I; if varSS 0 then begin {if drive in filespec then...) ch :3 copy( filespec. colon-l. I ); drivenum :- ord( ch ) - 64; end { if }; with regs do begin ax :8 $3600; dx :- drivenum; msdos( regs ); if ax - SFFFF then begin {got an invalid drive} freediskspace ;. -99999.0; IlSl4 end { then } else begin availclusters :- bx; totalclusters :- dx; bytespersect :- cx; sectpercluster :- ax; freediskspace :- bytespersect * sectpercluster * availclusters; end; { if I: end { with }; end; { FreeDiskSpace } {tfitfitttttttttttfifitttfittfitfit*tfifttttt*fiiittfifiOttiittfttifitflfttttttifit ‘ PROCEDURE LineZS writes the string-parameter passed to it on the * * 25th line of the screen. * itfifittfififiifitiit.ttttfitt......ttfittfitit.tittttitfitffititttttttfifiittfittl procedure Line25(bottom : strBD); BEGIN gotoxy(l.25); clreol; gotoxy(((BO-length(bottom)) div 2).25); write(bottam); END; {tittttifii*tttttttttt*9.it...itit...*ttfit*ttfitttttttitttfitttttttttit! * PROCUDURE Presskey loops until the user presses any key. ' * fi *it.*t*ttit*****tttfifiittitttti...!!!tiff...ttfifi*fittitttttfittfitttittt} procedure Presskey; VAR cmd : char; test : boolean; BEGIN repeat if keypressed then testz-true; until test; read(kbd.cmd); END; {tfififitttifitttttt*tit!tit*tttititt*ttttittttititttttiiitfittittttittfitt ‘ PROCEDURE Continue writes a message on line 25 by calling the ’ * procedure Line25. It then waits for a response by calling the * * procedure Presskey. * tifittfi*§§.**ittittii*titttttttfitttttfitififititttitttt*fiii*itifiiifttfiit} procedure Continue; BEGIN Line25('Press any key to continue...'); Presskey; gotoxy(l.25); clreol; END: {fiftittfittfiitttttttfit*ttttttttfitttfitttttti*I'ttti'tttttttt'itifittttt 11955 * PROCEDURE Function_Key_Pressed awaits the user input and then * * emulates the pressing of . * fittfitttttttttitit.t*******t*ititt9**fiittittitfitt****t*i*******i****} procedure Function_Key_Pressed(VAR retSS:Str2); VAR answerSS:string[1]; BEGIN answerSS:sblankSS; . GetItem(78.25.1.'C'.answerSS.'U'.".".retSS.TRUE.7.0); if ord(retSS[O])=2 then retSS:-retSS[2] else retSS:-blankSS; END; {**********************ttit*ti*ttitttitt*tt*******t***********i****** * PROCEDURE IOcheck checks for a number of input/output errors as listed below. In order for this procedure to be valuable the Operating systems input/output error checking system must be temporarily turned off. This is done by placing $I- in parenth * before IOcheck is called. To turn the system back on use $I+. * The procedure writes an error message on line 25 of the screen and awaits user input to continue. * ****t*tfi*****************itRitttR**ttt*****t****************t*******t} * t i I i * d i I * procedure IOcheck(pass: integer); VAR IOcode:Integer; BEGIN IOcodez-IOresult; IOerr:=(IOcode<>O); If IOerr then begin Case IOcode of $01 :Line25('File does not exist-Press any key to continue'); $02 :LineZS('File not open for input-Press any key to continue'); $03 :Line25('File not open for output-Press any key to continue'); $04 :Line25('File not open-Press any key to continue'); $10 :Line25('Error in numeric format-Press any key to continue'); $20 :line25('Operation not allowed on logical device-Press any key to continue'); $21 :Line25('Not allowed in direct mode-Press any key to continue'); $22 :Line25('Assign to standard files not allowed-Press any key to continue'); $9O :Line25('Record length mismatch-Press any key to continue'); $91 :Line25('Seek beyond end-of-file -Press any key to continue'); $99 :LineZSI'Unexpected end-of-file -Press any key to continue'); SFO :Line25('Disk write error-Press any key to continue'); $FI :Line25('Directory is full-Press any key to continue'); $F2 :Line25('File size overflow-Press any key to continue'); $FF :Line25('File disapeared-Press any key to continue') else Line25('Unknown I/O error-Press any key to continue'); 15965 end; {case} Presskey;{pressing of any key to continue} end {then begin} else begin if (pass - 2) then begin Line25('File transfer successful-Press any key to continue'); Presskey;{pressing of any key to continue} end; end; {else if} Line25(' 'I; end;{of proc IOcheck} {fit.tififiititttffiitt*ititfiiififittit!ifQt!ififiiiftfltttitfitifiitttfiitflitit ‘ Procedure Nelpscreen prints the the screen file HELP1.SCR * * and NELP2.SCR to the monitor. if they exist. * tfl.***i*t*t***it*fiiti*fitit.tittt*ttt*9t.***it*i**t**i*t***fi***ttttiff} PROCEDURE Helpscreen; BEGIN DISPLAY_SCREEN('HELP1.SCR'.file_existSS); {display screen} if not file_existSS then BEGIN gotoxy(I.I); write('Missing screen Helpscreen'); end; Continue; DISPLAY_SCREEN('HELP2.SCR'.file_existSS); {display screen} if not file_existSS then BEGIN gotoxy(I.I); write('Missing screen Helpscreen'); end; Continue: screenSS:-IOO; end; {Helpscreen} { *Qfiiitifftiitttfittt*tittttiitttfitii*tttfflifi.*tt*t*fi*ii*****fifltittit * Print: This routine is to be used to emulate the pressing of ‘ * the and keys. It works by using the system * * interupt number five (5) in memory location hex COOS. * tiff...****i**i**tt**t**tt**ttfit*ttifl*fitttfittfit*tttfitttttttitittt*ti} overlay procedure Print; TYPE regpack u record ax.bx.cx.dx.bp.si.di.ds.es.flags: integer; END; VAR recpack : regpack; {assign record} BEGIN intr($cdDS.recpack); {call interrupt} END; 1597' {t***t**it*********t****************t*******************i*****t*******it**** * PROCEDURE EXITSCREEN DETERMINES IF USER ACTUALLY INTENDED ON EXITING THE * * PROGRAM-IF NOT ALLOHS USER TO RETURN TO PREVIOUS SCREEN. * ***t****************t*tttttit***i*t*********ittttt***t*********t**********t} overlay procedure ExitScreen; Begin exit_response:-'N'; flashup('S-exit'); gotoxy(1.25); clreol; GETITEM(63.9.1.'Y'.EXIT_RESPONSE. 'U'.".".retSS.TRUE.O.7); if (Exit_Response = 'Y') then begin exitzs true; { Exits the program } textcolor(15); textbackground(0); clrscr; end; END; { PROCEDURE ExitScreen } {****************tttt**********titt********************************** * PROCEDURE HhatMenu functions to allow smooth passage from one * * screen to another. It also allows editing of input values. calls * * the procedure Print to print the screen bieng viewed to a print- * * er. allows exiting from the program and calls the Help Screens. * ************it*ttfi**********t****************t**************tt******} PROCEDURE UhatMenu(VAR screenzinteger; var bactive: boolean; var ub: integer); VAR retSS: StrZ; BEGIN Line25(' F1=Help F2=Prev. Screen F3=Edit F7=Print F8=Next Screen ‘); if (not bactive) then ubz-l; repeat Function_Key_Pressed(retSS); CASE retSS[I] of flss: Helpscreen; f2ss: if (screen > 1) then screen:=screen-l { previous screen } else begin bactive:- false; screen:=l; end; f3ss: edit:- true; f7ss: Print; sts: if (screen < Ub) then screenz-screen+l {next screen} else begin 119E! bactive:-false; screenzsl; end; else Beep(true); END; until retSS[1] in [flss.fZSs.f3$s.sts]; if retSS[1]<>f3ss then editzsfalse; gotoxy(1.25); clreol; END; {******************t****fi****t******tttt*****fi***********fi***t***t*** * Procedure Directory checks the specified defaultdrive for the ‘ files with the given file extension. The procedure uses MsDos to * search and find the specified files. The procedure then prints the* file names on the screen. This procedure was taken from the Turbo * Tutor manual section 20-4 * *******t***tttiitt*tttttt*iititttttiiititttttt****t******t***t******} fiifii procedure Directory(DefaultDrive:StrZ; fileextzstr3; ymin.ymax:integer); TYPE CharIZarr = array [ I..12 ] of Char; StringZO = string[ 20 ]; RegRec = record AX. BX. CX. DX. BP. SI. DI. 05, ES. Flags : Integer; END; VAR Regs : RegRec; DTA : array [ I..43 ] of Byte; Mask : CharlZarr; NamR : StringZO; Error. 1. X. Y : Integer; originaldirectory : StrBO; ext : char3; BEGIN { main body of PROCEDURE Directory } for i:- 1 to 3 do ext[i]:= fileext[i]; FillChar(DTA.SizeOf(DTA).O); { Initialize the DTA buffer } FillChar(Mask.SizeOf(Mask).O); { Initialize the mask } FillChar(NamR.SizeOf(NamR).O); { Initialize the file name } getdir(O.originaldirectory); { Get the original directory} Chdir(DefaultDrive); Regs.AX :- SIAOO; { Function used to set the DTA } 119$! Regs.DS :- Seg(DTA); { store the parameter segment in OS } Regs.Dx :- Ofs(DTA); { ” ” ” offset in DX } MSDos(Regs); { Set DTA location } Error ;. D; Mask :- '7???????.???'; { Use global search } mask[10] :- ext[1]; mask[ll] :- ext[2]; mask[12] :- ext[3]: Regs.AX :- $4EOO: { Get first directory entry } Regs.DS :- Seg(Mask); { Point to the file Mask } Regs.DX :- Ofs(Mask); Regs.CX :- 22; { Store the Option } MSDos(Regs); { Execute MSDos call } {IOcheck;} Error :- Regs.AX and SEE; { Get Error return } I :- I; { initialize 'I' to the first element } xz-S; yt'ymin; if (Error e D) then repeat NamR[I] ;- Chr(Mem[Seg(OTA):Ofs{DTA)+29*I]); I :- I + 1: until not (NamR[I-I] in [' '..'~']) or (I>ZO); NamR[O] :- Chr(I-I); { set string length because assigning } { by element does not set length } gotoxy(x.y): write(namr); x:-x+15; while (Error - 0) do BEGIN Error ;. O; Regs.AX ;. $4FOO; _ { Function used to get the next } { directory entry } Regs.CX :- 22; { Set the file Option } MSDos( Regs ); { Call MSDos } Error :- Regs.AX and SFF; { get the Error return } I :- I; repeat NamR[I] ;. Chr(Mem[Seg(DTA):Ofs(DTA)+29+I]); I :- I + 1; until not (NamR[I-1] in [' '..'~'] ) or (I > 20); NamR[D] :- Chr(I-I); if (Error - D) then BEGIN if x>65 then BEGIN x:-5; y==y+1: ZADCI END: if y>ymax then BEGIN Line25('Press any key to continue ..'); presskey; window(2.ymin.79.ymax): clrscr: window(I.I.BO.25): xz-S; y:=ymin; END: gotoxy(x.y): write(namr); x:-x+15: END; END: chdir(originaldirectory); END; { of PROCEDURE Directory } {**********fi***i*****t****t******t****************fit*****t**********ti * Procedure LoadBEV gets the specified file on the specified de- * * fault drive and puts it into a record or variables. Conmands to * * turn off the systems input/output error checking routine are found * * in this procedure in order to keep fatal program terminating errors* * from occuring. Procedure IOcheck replaces the systems I/O check. * ***t**********t****itttttti*********i*ttt*****t**********************} overlay procedure LoadBEV(FileName:strBO;DefaultDrive:Str1); {$I-} {turns off system I/D error check procedure} VAR BevFile: text; Drive: StrZ; OriginalDirectory: StrBO; izinteger; BEGIN GetDir(O.originaldirectory); Drive:-DefaultDrive+':'; ChDir(Drive); FileName:-FileName+'.'+fileext; assign(BevFile.FileName); reset(BevFile); IOcheck(I); If not IOerr then begin { REQUIRES READLN STATEMENTS OF UHAT I HILL LOAD } { ENDOGENOUS AND EXOGENOUS VARIABLES } readln(BevFile.PCNT_OF_XPORTS[S]); readln(BevFile.APCT[S].AHCT[S].PYIELD[S].CORNYT[S].UHTYT[S].GROSS[S]); readln(BevFile.BAL[S].ARP[S].DIVERSION[S]); readln(BevFile.DVPCN[S].DVRCN[S].DIVPAY[S].DPAY[S].DEFPAY[S].BEGINSTDCKS[S]): readln(BevFile.MIN_FREE_STOCKS[S].ENO_STOCKS[S].PRODUCT[S].IMPORTS[S]); readln(BevFile.TSUPPLY[S].ONEPH[S].TUOPH[S].THREEPH[S]); 12(11 readln(BevFile.FDURPH[S].FIVEPH[S].SIXPH[S]); reedln(BevFile.SEVENPH[S].DANUM[S].COFNUM[S].OBCNUM[S].HPCNUM[S]); reedln(BevFile.BRONUM[S].TURNUM[S].HDGNUM[S].DAIRYCDNS[S].CATDNFED[S]); reedln(BevFile.DTHERBEEFCAT[S].CHICKENCDNS[S].BROILERCDNS[S].TURKEYCONS[S]): reedln(BevFile.HDGCONS[S].OTHERCONS[S].FEEDT[S].HFCS[S].SEED’USE[S].FSI_USE[S]); reedln(BevFile.DDMESTIC_USE[S].SETASIDE_ACRES[S].VCCN[S].VCHU[S].C_TARGETP[S]); reedln(BevFiTe.CDRN_LOAN_RATE[S].PARREV[S].REVCDR[S].REVHHT[S].YEAR[S]); readln(BevFile.YEARB[S]I; readln(BevFile.CDRNPT[S].RFARMP[S].MILKP[S].HHTPT[S].BEFSTRP[S].BCDUP[S]); reedln(BevFile.SMPT[S].NDGP[S].IPOP[S].IGDP[S].IPRO[S].IFP[S]); readln(BevFile.IHA[S]); reedln(BevFile.IUP[S].IGDPPC[S].IPROPC[S].INIPC[S].NXXRF[S]); readln(BevFile.NXXRH[S]); reedlnIBevFile.NMXRF[S].NMXRU[S].CPISB[S].CPIDM[S].CPILD[S].CPINI[5]); readln(BevFile.CPILD[S]); readln(BevFile.CPIBR[S].CPIAR[S].CPIAU[S].CPICA[S]); reedln(BevFile.CPICH[S].CPIT[S].GDPCH[S]); reedln(BevFile.GDPSB[S].GDPDM[S].GDPLO[S].GDPNI[S].GDPLD[S].GDPBR[S]); readln(BevFile.GDPAR[S]); ' readln(BevFile.GDPAU[S].GDPCA[S].FP[S].HP[S].EYIELD[S].EFREV[S]); readln(BevFile.EUREV[S]); readln(BevFile.UYAR[S].UYAU[S].HYCA[S].FYAR[S].FYAU[S].FYCA[S]); readln(BevFile.XRAR[S].XRAU[S]); readln(BevFile.XRCA[S].E_END_STK[S].E_NET_EXPORT[S].EMA[S].ECON[S].ECONPC[S]); readln(BevFile.EES[S].EESPC[S].ESPLYPC[S].EPRO[S].EPROPC[S]); readln(BevFile.EUDPC[S]); readln(BevFile.ENE[S].EXPORTS[S].EGDP[S].EPDP[S]); readln(BevFile.EUYIELD[S]); reedln(BevFile.TOTAL_USE[S].PERCENT_USE[S].CCCSTOCKS[S].DCCCSTDCKS[S]); readln(BevFile.FORSTOCKS[S].DFORSTOCKS[S].FREESTOCKS[S].GDVTSTOCKS[S]): readln(BevFile.POLICY_STOCKS[S]); readln(BevFile.DNE[S].TUD[S].THREE[S]); readln(BevFile.FOUR[S].FIVE[S].SIX[S]); readln(BevFile.SEVEN[S].EIGHT[S].RESIDUAL[S].FUEL_USE[S]); readln(BevFile.INI_IN_BU[S].ECON_IN_BU[S].EES.IN_BU[S]); readln(BevFile.ESPLY_IN_BU[S].ENE_IN_BU[S]); readln(BevFile.DV73.DV82.DV83.DV84.DV740N); readln(BevFile.YEARIB.YEARZB.YEAR38.YEAR4B); readln(BevFile.CHHT.SBUT.DMUT.LOUT.NIUT); readln(BevFile.LDUT.BRUT.ARHT.AUUT.CAUT); readln(BevFile.FPLR.FPLR2.FPLR3); readln(BevFile.TRIGGERP); { ADD FACTOR VARIABLES } readln(BevFile.APCT_AF[S].AMCT_AF[S].CORNYT_AF[S].ONEPM_AF[S].TUOPN_AF[S)); readln(BevFile.THREEPH_AF[S]); readln(BevFile.FOURPH_AF[S]); readln(BevFile.FIVEPH_AF[S].SIXPH_AF[S].SEVENPH_AF[S].EIGMT_AF[S].INIPC_AF[S]); readln(BevFile.EYIELD_AF[S]); readln(BevFile.EUYIELD_AF[S].EHA_AF[S].ECONPC_AF[S].EESPC_AF[S].DCCCSTOCKS_AF[S]); readln(BevFile.DFORSTOCKS.AF[S].FREESTOCKS_AF[S]); { OVERRIDE VARIABLES } 12(12 readln(BevFile.CDRNYT_DR[S].APCT_DR[S].AHCT_DR[S].BEGINSTDCKS_DR[S].PRDDUCT_DR[S]); readln(BevFile.TSUPPLY_OR[S]); readln(BevFile.IMPDRTS_OR[S].ONEPM_OR[S].DAIRYCONS_OR[S].TUOPM_DR[S].CATONFED_OR[S]); readln(BevFile.TNREEPH_OR[S]); readln(BevFiIe.DTHERBEEFCAT_DR[S].FDURPH_DR[S].CHICKENCDNS_DR[S].FIVEPH_DR[S]); readln(BevFile.BROILERCONS_OR[S]); readln(BevFile.SIXPN_OR[S].TURKEYCONS_OR[S].SEVENPM_DR[S].MOGCONS_OR[S]); readln(BevFile.OTHER_UNALLOC_OR[S]); readln(BevFile.FEEDT_OR[S].DOMESTIC_USE_OR[S]); readln(BevFile.INI_IN_BU_OR[S].ESPLY IN Bu OR[S].ECON_IN_BU_OR[S]); readln(BevFile.EES_IN_BU_OR[S].ENE_IN_BU_OR[S]); readln(BevFile.EXPORTS_OR[S].TOTAL_USE_OR[S].CCCSTOCKS_OR[S].FORSTOCKS_DR[S]); readln(BevFile.FREESTOCKS_OR[S]); readln(BevFile.ENDSTOCKS_OR[S]); ‘ { FLAG VARIABLES FOR OVERRIDE VALUES } readln(BevFile.CORNYT_FLAG); readln(BevFile.APCT_FLAG); readln(BevFile.AHCT_FLAG); readln(BevFile.BEGINSTDCKS_FLAG); readln(BevFile.PRODUCT_FLAG); readln(BevFile.TSUPPLY_FLAG); readln(BevFile.IMPORTS_FLAG); readln(BevFile.FEEDT_FLAG); readln(BevFile.DOMESTIC_USE_FLAG); readln(BevFile.INI_IN_BU_FLAG); readln(BevFile.ESPLY_IN_BU_FLAG); readln(BevFile.ECON_IN_BU_FLAG); readln(BevFile.EES_IN_BU_FLAG); readln(BevFile.ENE_IN_BU_FLAG); readln(BevFi le. EXPORTS_FLAG) ; readln(BevFile.TOTAL_USE_FLAG); readln(BevFile.CCCSTOCKS_FLAG); readln(BevFile.FORSTOCKS_FLAG): readln(BevFile.FREESTDCKS_FLAG); readln(BevFile.ENDSTOCKS_FLAG); IOcheck(Z); end; close(BevFile); {81+} {turns system I/O error check back on} ChDir(originaldirectory); END; {eneeeeeeeeeteeeeeeeeeeeneeeeeeeeeeeeeeeeeeemeeneeeeeeenemeeee ‘ Procedure SaveBEV functions the same as Load exept that SaveBEV * * creates and writes to a specified file. * "it‘tfltttfitflfifififliifltt.*tttfiti*ttitif“itimtftflittflfittttttttttt} overlay procedure SaveBEV(FileName:str80;DefaultDrive:StrI): VAR BevFile: text; Drive: StrZ; .2()3 originaldirectory: StrBO; fileexists :boolean; overwriteyn :strI; izinteger; BEGIN fileexists:-false; _ GetDir(O.originaldirectory); Drive:-DefaultDrive+':'; ChDir(drive); FileName:-FileName+'.'+fileext; {$I-} {turns system I/O error trapping procedure off} assign(BevFile.FileName); reset(bevfile); if IOresult-O then begin {file exists} Line25('The file exists. Do you wish to OVERHRITE it? (Y/N)'); GETITEM (75.25.I.'Y'.overwriteyn. 'U'.".".retSS.true.O.7); if overwriteyn-‘N' then begin fileexistsz-true: close (BEVFILE); end; end; if (not fileexists) then begin rewrite(BevFile); IOcheck(I): if not IOerr then begin { REQUIRES URITELN STATEMENTS FOR UHAT HILL BE SAVED } { ENDOGENOUS AND EXOGENOUS VARIABLES } writeln(BevFiIe.PCNT_OF_XPORTS[S]:9:S); writeln(BevFiTe.APCT[S]:9:2.AHCT[S]:9:2.PYIELD[S]:9:2.CDRNYT[S]:9:2.HHTYT[S]:9:2.GRDSS[S]:9:2): writeln(BevFile.BAL[S]:9:3.ARP[S]:9:3.DIVERSIDN[S]:9:3); writeTn(BevFiIe.DVPCN[S]:9:2.DVRCN[S]:9:3.DIVPAY[S]:9:3.DPAY[S]:9:2.DEFPAY[S]:9:3.BEGINSTDCKS[S]:9:2 ): writeln(BevFiIe.MIN_FREE_STDCKS[S]:9:2.END_STDCKS[S]:9:2.PRDDUCT[S]:9:2.IMPDRTS[S]:9:2); writeln(BevFile.TSUPPLY[S]:9:2.0NEPH[S]:9:3.TUOPH[S]:9:3.THREEPH[S]:9:3); writeln(BevFile.FOURPN[S]:9:3.FIVEPH[S]:9:3.SIXPH[S]:9:3); writeln(BevFile.SEVENPH[S]:9:3.DANUM[S]:9:3.COFNUM[S]:9:3.0BCNUM[S]:9:3.HPCNUM[S]:9:3); writeln(BevFiTe.BRDNUM[S]:9:3.TURNUM[S]:9:3.HDGNUM[S]:9:3.DAIRYCDNS[S]:9:2.CATDNFED[S]:9:2); writeln(BevFile.DTHERBEEFCAT[S]:9:2.CHICKENCONS[S]:9:2.BRDILERCDNS[S]:9:2.TURKEYCDNS[S]:9:2); writeln(BevFiTe.HDGCDNS[S]:9:2.0THERCONS[S]:9:2.FEEDT[S]:9:2.HFCS[S]:9:2.SEED_USE[S]:9:2.FSI_USE[S]: 9:2); writeln(BevFile.DDMESTIC_USE[S]:9:2.SETASIDE_ACRES[S]:9:2.VCCN[S]:9:2.VCHH[S]:9:2.C_TARGETP[S]:9:2); writeln(BevFile.CORN_LOAN_RATE[S]:9:2.PARREV[S]:9:2.REVCOR[S]:9:2.REVUHT[S]:9:2.YEAR[S]:3:O); writeln(BevFile.YEARB[S]:3:O); writeln(BevFile.CORNPT[S]:9:2.RFARMP[S]:9:2.MILKP[S]:9:2.UHTPT[S]:9:2.BEFSTRP[S]:9:2.BCOUP[S]:9:2); writeln(BevFiTe.SMPT[S]:9:2.HDGP[S]:9:Z.IPOP[S]:ll:2.ISDP[S]:11:B.IPRD[S]:II:2.IFP[S]:9:3); writeln(BevFile.IHA[S]:II:2); writeln(BevFiIe.IHP[S]:9:3.IGDPPC[S]:II:6.IPROPC[S]:11:6.INIPC[S]:11:3.NXXRF[S]:9:6); 12(14 writeln(BevFile.NXXRU[S]:9:6); writeln(BevFile.NMXRF[S]:9:G.NMXRU[S]:9:6.CPISB[S]:9:3.CPIDM[S]:9:3.CPILO[S]:9:3.CPINI[S]:9:3); writeln(BevFile.CPILD[S]:9:3); writeln(BevFile.CPIBR[S]:9:3.CPIAR[S]:Il:2.CPIAU[S]:11:2.CPICA[S]:Il:2); writeln(BevFile.CPICH[S]:9:3.CPIT[S]:9:3.GDPCH[S]:9:6); writeln(BevFile.BDPSB[S]:9:6.GDPDM[S]:9:5.GDPLO[S]:9:6.GDPNI[S]:9:B.GDPLD[S]:9:6.GDPBR[S]:9:3); writeln(BevFile.GDPAR[S]:9z3); writeln(BevFile.BDPAU[S]:9:6.GDPCA[S]:9:5.FP[S]:9:3.HP[S]:9:3.EYIELD[S]:9:6.EFREV[S-I]:9:6); writeln(BevFile.EUREV[S-I]:9:G); writeln(BevFile.UYAR[S]:II:5.UYAU[S]:11:5.UYCA[S]:11:5.FYAR[S]:II:5.FYAU[S]:II:5.FYCA[S]:II:5); writeln(BevFile.XRAR[S]:II:5.XRAU[S]:11:5); writeln(BevFile.XRCA[S]:7:5.E_END_STK[S]:9:2.E_NET_EXPDRT[S]:9:2.EHA[S]:11:2.ECDN[S]:Il:2.ECONPC[S]: 11:3); writeln(BevFile.EES[S]:II:2.EESPC[S]:II:6.ESPLYPC[S]:11:6.EPRO[S]:II:2.EPROPC[S]:9:6); writeln(BevFile.EUDPC[S]:Ilz6); writeln(BevFile.ENE[S]:II:Z.EXPDRTS[S]:9:2.E6DP[S]:II:5.EPDP[S]:II:2); writeln(BevFile.EUYIELD[S]:9:6); writeln(BevFiTe.TOTAL_USE[S]:9:2.PERCENT_USE[S]:9:2.CCCSTDCKS[S]:9:2.DCCCSTDCKS[S]:9:2); writeIn(BevFiIe.FDRSTDCKS[S]:9:2.DFDRSTDCKS[S]:9:2.FREESTDCKS[S]:9:2.GOVTSTOCKS[S]:9:2); writeln(BevFile.POLICY_STOCKS[S]:9:2); writeln(BevFile.ONE[S]:9:3.TUO[S]:9:3.THREE[S]:9:3); writeln(BevFile.FOUR[S]:9:3.FIVE[S]:9:3.SIX[S]:9:3); writeln(BevFile.SEVEN[S]:9:3.EIGHT[S]:9:3.RESIDUAL[S]:9:2.FUEL_USE[S]:9:2); writeln(BevFile.INI_IN_BU[S]:9:2.ECON_IN_BU[S]:9:2.EES_IN_BU[S]:9:2); writeln(BevFile.ESPLY_IN_BU[S]:9:2.ENE_IN_BU[S]:9:2); writeln(BevFile.DV73:9:2.DV82:9:2.0V83:9:2.0V84:9:2.0V740N:9:2); writeln(BevFile.YEARIB:9:2.YEARZB:9:2.YEAR3B:9:2.YEARAB:9:2); writeln(BevFile.CMHT:9:4.SBHT29:4.DMUT:9:4.LOUT:9:4.NIUT:9z4); writeln(BevFile.LDHT:9z4.BRUT:9:4.ARHT:9:4.AUHT:9:4.CAUT:9:4); writeln(BevFile.FPLR:9:2.FPLR2:9:2.FPLR3:9:2); writeln(BevFile.TRIGGERP:9:2); { ADD FACTOR VARIABLES } writeln(BevFile.APCT_AF[S]:9:3.AHCT_AF[S]:9:3.CORNYT_AF[S]:9:3.0NEPH_AF[S]:9:3.TVOPH_AF[S]:9:3); writeln(BevFile.THREEPM_AF[S]:9:3); writeln(BevFile.FOURPH_AF[S]:9:3); writeln(BevFile.FIVEPH_AF[S]:9:3.SIXPH_AF[S]:9:3.SEVENPH_AF[S]:9:3.EIGHT_AF[S]:9:3.INIPC_AF[S]:9:5); writeln(BevFile.EYIELD_AF[S]:9:3); writeln(BevFiIe.EUYIELD_AF[S]:9:3.EHA_AF[S]:Il:3.ECDNPC_AF[S]:9:5.EESPC_AF[S]:9:5.DCCCSTDCKS_AF[S]:9 :3): writeln(BevFile.DFDRSTOCKS_AF[S]:9:3.FREESTDCKS_AF[S]:9:3); { OVERRIDE VARIABLES } writeln(BevFiTe.CORNYT_OR[S]:9:2.APCT_DR[S]:9:2.AHCT_DR[S]:9:2.BEGINSTDCKS_DR[S]:9:2.PRODUCT_OR[S]:9 :2): writeln(BevFile.TSUPPLY_OR[S]:9:2); writeln(BevFile.IMPORTS_OR[S]:9:2.0NEPH_OR[S]:9:3.DAIRYCONS_OR[S]:9:2.TUOPH_OR[S]:9:3.CATONFED_OR[S] :9:2); writeln(BevFile.THREEPH_OR[S]:9z3); writeln(BevFile.DTHERBEEFCAT_DR[S]:9:2.FDURPH_DR[S]:9:3.CHICKENCDNS_DR[S]:9:Z.FIVEPH_OR[S]:9z3); writeln(BevFile.BROILERCONS_OR[S]:9:2); writeln(BevFiTe.SIXPH_DR[S]:9:3.TURKEYCDNS_DR[S]:9:2.SEVENPH_DR[S]:9:3.HDGCDNS_OR[S]:9:2); writeln(BevFile.OTHER_UNALLOC_0R[S]:9:2); 21355 writeln(BevFiTe.FEEDT_DR[S]:9:2.DOMESTIC_USE_DR[S]:9:2); writeln(BevFile.INI_IN_BU_OR[S]:9:2.ESPLY_IN_BU_OR[S]:9:2.ECON_IN_BU_OR[S]:9:2); writeln(BevFile.EES_IN_BU.OR[S]:9:2.ENE_IN_BU_OR[S]:9:2); writeln(BevFiIe.EXPORTS_DR[S]:9:2.TDTAL-USE_DR[S]:9:2.CCCSTDCKS_DR[S]:9:2.FDRSTDCKS_DR[S]:9:2); writeln(BevFile.FREESTOCKS_OR[S]:9:2); writeln(BevFile.ENDSTOCKS_OR[S]:9:2); { FLAG VARIABLES FDR OVERRIDE VALUES } writeln(BevFile.CORNYT_FLAG); writeln(BevFile.APCT_FLAG); writeln(BevFile.AHCT_FLAG); writeln(BevFile.BEGINSTOCKS_FLAG); writeln(BevFile.PRODUCT_FLAG): writeln(BevFile.TSUPPLY_FLAG); writeln(BevFile.IMPORTS_FLAG); writeln(BevFile.FEEDT_FLAG); writeln(BevFile.DOMESTIC_USE_FLAG); writeln(BevFile.INI_IN_BU.FLAG); writeln(BevFile.ESPLY_IN_BU_FLAG); writeln(BevFile.ECON_IN_BU_FLAG); writeln(BevFile.EES_IN_BU_FLAG); writeln(BevFile.ENE_IN_BU_FLAG); writeln(BevFile.EXPORTS_FLAG); writeln(BevFile.TOTAL_USE_FLAG); writeln(BevFile.CCCSTOCKS_FLAG); writeln(BevFile.FORSTOCKS_FLAG); writeln(BevFile.FREESTOCKS_FLAG); writeln(BevFile.ENDSTOCKS_FLAG); IOcheck(Z): end; close(BevFile); end; {51+} {turns system error trapping back on} ChDir(originaldirectory); Line25(' '); END; {******fi*tfi*****i************t*****ttitttittiittifi*ti**************** * PROCEDURE CheckDisk checks if the specified defaultdrive is a * * legal drive. If it is it will call the Procedure Directory and * * continue normally. Else the procedure will write an error mes- * t ’ age. it**********i****************************tt***t************t*******t} overlay procedure CheckDisk(defaultdrive:strl); Var drive: Str2; result:real; temp: Strl; Begin {checkdisk} drive:-defaultdrive+':'; result:-freediskspace(drive); GetDir(O.temp): 12(M6 if((result<-O)or(defaultdrive>'E'))and((result<-O)or(defaultdrive<>temp)) then begin Line25('Disk Full/Invalid Drive-press any key to contiue'); Presskey; gotoxy(l.25); clreol; if (retrieveSS) then varSS:-screen_fieldSS; end else if (retrieveSS) then Directory (drive.fileext.B.16); end;{checkdisk} {overlay Procedure end_on_line_help;} { begin} { flashup('C-ALL');} { flashup('K-CLEAR');} { if retrieveSS then Line25('Press for Comand Line');} { end:} {overlay Procedure on_line_help(window_name: strB);} (*i begin} { if retrieveSS} { then begin} { flashup('K-{FIO}.'+window_name);} { Line25('On line help available. Press ');} { end:} { end:}*) ***** End of Include file MENU.UTL ***** *'**‘ Beginning of Include file INITIAL.INC ***** {$1 initial.inc} overlay procedure initial; { A PROCEDURE TO INITIALIZE ALL VARIABLES TO ZERO } begin for izsl to 4 do begin PCNT_OF_XPORTS[i]:=0.0; APCT[i]:=O.D: AHCT[i]:¢0.0; PYIELO[i]:-0.0; CORNYT[i]:=0.0; UHTYT[i]:8O.D; GROSS[i]:-0.0; ARP[i]:-D.O; DIVERSION[i]:=0.0; BAL{i]:-0.0: DVPCN[i]:=0.0; DVRCN[i]:-O.D; DIVPAY[i]:-D.O; DPAY[i]:-D.O; DEFPAY[i]:=O.D; BEGINSTOCKS[i]:-0.0; MIN_FREE_STOCKS[i]:-O.D; END_STOCKS[i]:=0.0; PRODUCT[i]:=0.0; 2(17 IMPORTS[i]:-0.0: TSUPPLY[i]:-D.D; ONE[i]:=0.0: DNEPH[i]:=O.D; THO[i]:=0.0; THOPH[i]:=0.0; THREE[1]:=D.D: THREEPH[i]:-O.D; FDUR[i]:80.D; FOURPH[i]:-0.0; FIVE[i]:=0.0: FIVEPH[1]:-O.D; SIX[i]:s0.0: SIXPH[I]:'D.D: $EVEN[i]:RD.D: SEVENPH[i]:=0.0; EIGHT[i]:=0.0; DANUM[i]:-0.0: CDFNUM[1]:'D.D; DBCNUM[i]:=0.0; HPCNUM[i]:-0.0; BRDNUM[1]:=D.D; TURNUM[i]:=O.D; HDGNUM[i]:=D.D; DAIRYCONS[i]:=D.D; CATDNFED[1]:=D.D; DTHERBEEFCAT[T]:=D.D; CHICKENCONS[i]:=O.D; BROILERCONS[i]:=D.D; TURKEYCDNS[i]:=D.D; HOGCONS[i]:=0.0: DTHERCDNS[1]:=O.D; FEEOT[i]:=0.0; HFCS[i]:=O.D; SEED_USE [i] :=0.0: RESIDUAL[i]:-D.O; FUEL_USE [1] :sD.O; FSI_USE[i] :-0.0: DOMESTIC_USE [i] :-0.0; SETASIDE_ACRES[i]:=0.0; VCCN[i]:*D.D: VCHU[i]:=D.D; C_TARGETP[i]:=0.0: CORN_LOAN_RATE [i] ;=0 . o: PARREV[i]:=O.D: REVCOR[i]:=0.0: REVUHT[i]:-D.D; YEAR[i]:-0.0; YEARB[1]:=D.D; CDRNPT[I]:=D.D; RFARMP[i]:=D.D; MILKP[i]:=O.D: HHTPT[i]:=0.0: BEFSTRP[i]:-0.0; BCDHP[i]:'D.O; SMPT[i]:=0.0; HOGP[i]:-0.0: IPOP[i]:-0.0: IGDP[1]:8D.D; IHA[i]:8O.O; IYIELD[1]:-D.D; IPRD[1]:BD.D; IFP[i]:-0.0: IHP[i]:=0.0; IGDPPC[i]:8O.O; IPRDPC[i]:=O.D; INIPC[i]:-0.0; INI_IN_BU[i]:=0.0; NXXRF[i]:-O.D: NXXRH[i]:-D. NMXRF[i]:-O. NMXRH[1]:'D. CPISB[i]: O. CPIDM[1]:IO. CPILO[i]: O. CPINI[i]: O. CPILO[i]: D. CPIBR[1]:=O. CPIAR[i]:=O. CPIAU[i]: O. CPICA[i]: O. CPICH[i]:=O.D: CPIT[1]:=O.D: GDPCH[i]:'D.D: GDPSB[i]:=D.D: GDPDM[i]:-0.0; GDPLD[i]:-O.D; GDPNI[i]:-0.0; GDPLD[i]:-D.D; GDPBR[i]:-0.0; GDPAR[i]:-0.0: GDPAU[1]:'O.D; GDPCA[i]:-O.D; FP[i]:-0.0: UP[i]:-0.0: EYIELD[i]:-D.O: EFREV[l]:-D.D: EHREV[i]:IO.O; NYAR[i]:-0.0: UYAU[i]:=D.D; HYCA[i]:-D.O; FYAR[i]:-D.O; FYAU[i]:t0.0; FYCA[i]:-0.0; XRAR[i]:-0.0: XRAU[i]:=0.0; XRCA[i]:-0.0; I Ce .0 .e OOOOOOOOOOOO E_END_STK[i]:-0.0; .2(18 2(39i E_NET_EXPORT [i] ;-O.O; EHA[i]:=D.Di ECDN[i]:-D.D; ECON_IN_BD[ i] ;-o . o; ECONPC[i]:-0.0; EES[i]:-0.0; EES_IN_BU[i]:-0.0; EESPC[i]:-0.0; ESPLY_IN_BU[i] :-0.0; ESPLYPC[i]:IO.O; EPRO[i]:-0.0; EPROPC[i]:.D.D; EUDPC[i]:-0.0; ENE[i]:-0.0: ENE_IN_BU[i] :-O.D: EXPORTS[i]:-D.D; EGDP[i]:-D.O: EPOP[i]:-O.D: ENYIELO[i]:=0.0: TOTAL_USE[i]:=D.O; PERCENT_USE[i]:-D.O; CCCSTDCKS[i]:'D.0; DCCCSTOCKS[i]:'D.D; FORSTOCKS[i]:-0.0; DFORSTDCKS[1]:=D.D; FREESTDCKS[I]:=D.O; GOVTSTOCKS[i]:=0.0; PDLICY_STDCKS[i]:-O.D; { ADD FACTORS } APCT_AF[i] ;-D.O; AHCT_AF[i] :-0.0; CORNYT_AF [i] :-D. o; ONEPH_AF[i]:=0.0; THOPH_AF[i] ;-o.o; THREEPH_AF[i] ;=D.o; FOURPH_AF [i] :-O.D; FIVEPH_AF[i]:-D.D; SIXPH_AF[i] :-o.o; SEVENPH_AF[i]:-0.0; EIGHT_AF[i] :-o.o; INIPC_AF[i] :s0.0; IYIELD_AF[i]:-0.0: EYIELD_AF[i]:=0.0: EHYIELD_AF[i]:-0.0; EHA_AF[i] :-0.0; ECONPC_AF[i]:-0.0; EESPC_AF[i] ;-0.0; DCCCSTOCKS_AF [i] :=0. 0; DFDRSTDCKS_AF[i]:8D.D; FREESTOCKS_AF[i] ;-O.o; { OVERRIDE VARIABLES } CORNYT_OR[i] :-D.0: APCT_OR[i] ;-0.0: AHCT_OR[i] ;-O.o; 210 BEGINSTOCKS_OR[i]:=0.0; PRODUCT_OR[i]:-0.0: TSUPPLY_OR[i]:-D.O; IMPORTS_OR[i]:-0.0; ONEPH_OR[i]:-O.D: DAIRYCONS_OR[i]:8O.O; TUOPM_OR[i] :=O.D: CATONFED_OR[i]:=0.0; THREEPM_OR[i]:-O.D; OTHERBEEFCAT_OR[i]:=0.0; FOLRPH_OR[i] z-0.0: CMICKENCONS_OR[i]:=0.0: FIVEPH_OR[i]:-0.0; BROILERCONS_OR[i]:=O.D; SIXPH_OR[i]:-0.0: TURKEYCONS_OR[i]:=O.D; SEVENPH_OR[i]:-0.0; HOGCONS_OR[i]:-O.D: DTHER_UNALLDC_OR[i]:=D.D; FEEDT_OR[i]:=0.0: DDMESTIC_USE_OR[i]:=0.0; INI_IN_BU_OR[i]:=D.O: ESPLY_IN_BU_OR[i]:=0.0; ECON_IN_BU_OR[i]:=0.0; EES_IN_BU_OR[i]:=0.0; ENE_IN_BU_OR[i]:=0.0; EXPORTS_OR[i]:=O.D; TOTAL_USE_OR[i]:=0.0; CCCSTOCKS_OR[i]:=0.0; FORSTOCKS_OR[i]:=0.0; FREESTOCKS_OR[i]:-0.0: ENDSTOCKS_OR[i]:=D.O; end; { VARIABLES FOR THE RANDOM SECTION } FOR I:-I TO 30 DO BEGIN ALPHA[I] :-O. 0: ALPHA1[I]:-0.0: ALPHA2[I]:-0.0: END; BETA:-0.0; BETAI:-0.0: BETA2:-O.D: GAMMA:-0.0; GAMMAI:'D.O; GAMMA2:-0.0; YIELD:-0.0; YIELDl:-0.0: YIELDZ:-0.0: Z:=0.0; 21:-0.0; 22:-0.0; DV73:-0.0; OV82z-0.0; 211 DV83:=0.0: DV84z-D.D: DV740N:-D.O: YEARIB:-0.0: YEARZB:-0.0: YEAR3B:-0.0: YEAR4B:-0.0; CHHT:=0.0; SBUT:8O.O; DMHT:=0.0; LOHT:-0.0; NIUT:=0.0; LDUT:=0.0; BRVT:=0.0; ARUT:=0.0; AUVT:=0.0; CAVT:-0.0; FPLR:-0.0: FPLR2:-0.0: FPLR3:-0.0: TRIGGERP:-O.D: { MISCELLANEOUS VARIABLES } FG:-15; BG:=D; flag:=O; NYz-A; CORNPT[4]:-3.DO: REDUCE_PRICE:-0.03: INFO:8'SOLVING': end; ’**** End of Include file INITIAL.INC ***** ***** Beginning of Include file RECALC.INC ***** {$1 RECALC.INC} overlay procedure RE_CALCULATE; { THE FORECAST CALCULATIONS } var conserved_acres: real; { A LOCAL VARIABLE FOR CONSERVING ACRES (ARP + DIVERSION) } procedure FREESTOCK_PROC; { A PROCEDURE TO CALCULATE THE FREE STOCKS BASED ON HEIGHTS USED FOR POLICY } VAR CCCUT. FORHT: REAL: BEGIN { RULE ccc HEIGHT FOR HEIGHT } { -------------------- } { 1) YEAR <- 75 0.10 0.0 } { 2) YEAR >- 77 0.80 0.75 } { 3) YEAR >- 77. CCCt <= CCCt-I. } { TRIGGER PRICE > 31.55 0.10 0.75 } { 4) YEAR >- 77. FORt <= FORt-I. } 22112 { TRIGGER PRICE > $1.55 0.80 0.0 } IF ( year[NY] <- 76 ) THEN CCCUT:- 0.1 ELSE CCCHT:- 0.8: IF ( year[NY] >- 77 ) AND ( CCCstocks[NY] <- CCCstocks[NY-I] ) AND ( fplr > 1.55 ) THEN CCCUTzl 0.1; IF ( year[NY] <- 76 ) THEN FORUTzs 0.0 ELSE FORUTz- 0.75: IF ( FORstocks[NY] <2 FORstocks[NY-I] ) AND ( fplr > 1.55 ) THEN FORUT:- 0.0; FREESTOCKS[NY]:-IIZ7.423I — 1873.6898 * (( CCCVT * CCCSTOCKS[NY] + FORUT * FORSTOCKS[NY] ) / TOTAL_USE[NY] ) - 1301390 2 * ( FPLR / TOTAL_USE[NY] ) + FREESTOCKS_AF[NY]; IF FREESTOCKS[NY] < MIN_FREE_STOCKS[NY] THEN FREESTOCKS[NY]:-MIN-FREE_STOCKS[NY]; END; { AREA UHICH CALCULATES FUNCTION Fx FOR GIVEN HEIGHTS } BEGIN { DOMESTIC SUPPLY } { APCT = f ( DV83. LAGGED CORN REVENUE(NON-PARTICIPANTS). HHEAT REVENUE. LAGGED CORN REVENUE(PARTICIPANTS) } CONSERVED_ACRES;=ARP[NY]+DIVERSION[NY]; IF APCT_FLAG-'N' THEN APCT[NY]:- 90.993360 {-6.539 * dv73 + 4.04 * dv79} - 0.1262719 * (((VHTPT[NY—1] * HHTYT[NY-1]) - VCHH[NY-1]) / CPIT[NY-I]) - 0.0281170 * (((PARREV[NY-I] + DIVPAY[NY-I] + DEFPAY[NY-l]) - VCCN[NY—1]) / CPIT[NY—I]) - 60.333270 * CONSERVED_ACRES + APCT_AF[NY] ELSE APCT[NY]:- APCT_OR[NY]; IF AHCT_FLAG='N' THEN AHCT[NY];- -B.412272 + 0.8729 * APCT[NY] + 0.1078 * YEAR[NY] + AHCT_AF[NY] ELSE AHCT[NY]:- AHCT_OR{NY]; IF CORNYT_FLAG-'N' THEN CORNYT[NY]:= -7I.3758 + 2.153 * YEAR[NY] + CORNYT_AF[NY] ELSE CORNYT[NY]:- CORNYT_OR[NY]; if year[ny]-85 then beginstocks[NY]:-164B.O else BEGINSTOCKS[NY]:-END_STOCKS[NY-I]: IF PRODUCT_FLAG-'N' THEN PRODUCT[NY]:= AHCT[NY] * CORNYT[NY] ELSE PRODUCT[NY]:IPRODUCT_OR[NY]; IF IMPORTSuFLAGs'Y' THEN INPDRTSINY]:= IMPORTS_0R[NY]: 211£3 IF TSUPPLY_FLAG='N' THEN TSUPPLY[NY]:- BEGINSTOCKS[NY] + PROOUCT[NY] + IMPORTS[NY] ELSE TSUPPLY[NY]:8TSUPPLY_OR[NY]; { FEED USE } { OACON/HEAD ' f ( TIME. REAL MILK PRICE. REAL CORN FARM PRICE. REAL UHEAT PRICE ) } if oneph_or[ny]=0.0 then begin ONEPH[NY]:- -86.515 + 1.832 * YEAR[NY] + 3.415 * (MILKP[NY] / CPIT[NY]) - 25.61 * (CORNPT[NY] / CPIT[NY]) + 10.746 * {UHTPT[NY] I CPIT[NY]) + ONEPH_AF[NY]; dairycons[NY]:=oneph[NY]*danum[NY]; end else dairycons[ny]:-oneph_or[ny]*danum[ny]; { COFCON/HEAO I f ( TIME. BEEF-STEER/CORN RATIO. LAGGED DEPENDENT ) } if twoph_or[ny]=0.0 then begin THOPH[NY]:= 240.119 - 2.126 * YEAR[NY] + 1.665 ’ (BEFSTRP[NY] / CORNPT[NY]) - 0.659 * TVDPH[NY-1] + THDPH_AF[NY]; catonfed[NY]:-twoph[NY]*cofnum[NY];{ end else catonfed[ny]:stwoph_or[ny]*cofnum[ny]; { OBCCON/HEAD 8 f ( BEEF CON/CORN RATIO. LAGGED REAL SOYBEAN MEAL PRICE ) } if threeph_or[ny]=0.0 then begin THREEPH[NY]:= 2.875 + 0.115 * (BCOHP[NY] I CORNPT[NY]) + 0.00487 * (SMPT[NY-1] / CPIT[NY-1]) + THREEPH_AF[NY]; otherbeefcat[NY]:-threeph[NY]*obcnum[NY]; end else otherbeefcat[ny]:-threeph_or[ny]*obcnum[ny]; { HPCCON/HEAO I f ( REAL CORN FARM PRICE. REAL SOYBEAN MEAL PRICE. REAL UHEAT PRICE. LAGGED DEPENDENT } if fourph_or[ny]=0.0 then begin FOURPH[NY]:= 0.9349 - 0.724 * (CORNPT[NY] / CPIT[NY]) + 0.00121 * (SMPT[NY] / CPIT[NY]) + 0.3409 * (HHTPT[NY] / CPIT[NY]) + 0.222 * FOURPH[NY-I] + FOURPH_AF[NY]; chickencons[NY]:sfourph[NY]*hpcnum[NY]; end else chickencons[ny]:-fourph_or[ny]*hpcnum[ny]; {BROCON/HEAD 8 f ( TIME. REAL CORN FARM PRICE. REAL UHEAT PRICE ) } if fiveph_or[ny]s0.0 then begin FIVEPH[NY]:- 0.00245 + 0.00143 * YEAR[NY] - 0.0431 * (CORNPT[NY] / CPIT[NY]) + 0.0162 ' (UHTPT[NY] / CPIT[NY]) + FIVEPH_AF[NY]; :IJuC broilercons[NY]:Ifiveph[NY]*bronum[NY]; end else broilercons[ny]:Ifiveph_or[ny]'bronum[ny]; { TURCON/HEAD I f ( REAL CORN FARM PRICE. REAL HHEAT PRICE. LAGGED DEPENDENT ) } if sixph_or[ny]I0.0 then begin SIXPH[NY]:I 0.709 - 0.3428 ‘ (CORNPT[NY] / CPIT[NY]) + 0.126 * (UHTPT[NY] / CPIT[NY]) + 0.104 * SIXPH[NY-I] + SIXPH_AF[NY]; turkeycons[NY]:Isixph[NY]*turnum[NY]; end else turkeycons[ny]:Isixph_or[ny]*turnum[ny]; { HOGCON/HEAD I f ( TIME. REAL HOG PRICE. REAL CORN FARM PRICE. ) } if sevenph_or[ny]I0.0 then begin SEVENPH[NY]:I -14.624 + 0.5 * YEAR[NY] + 0.394 ‘ (HOGP[NY] / CPIT[NY]) - 7.612 ' (CORNPT[NY] / CPIT[NY]) + SEVENPH_AF[NY]; hogcons[NY]:Isevenph[NY]'hognum[NY]; end else hogcons[ny]:Isevenph_or[ny]'hognum[ny]; { DUNCON I f ( TIME. REAL CORN FARM PRICE. REAL HHEAT PRICE. DVBZ. DV84 ) } if other_unalloc_or[ny]-0.0 then othercons[NY]:I -412.497 + 6.84 ' YEAR[NY] - 63.265 ' (CORNPT[NY] / CPIT[NY]) + 26.481 ' (HHTPT[NY] / CPIT[NY]) + 326.601 * OV82 + 189.265 * DV84 + EIGHT_AF[NY] else othercons[ny]:Iother_unalloc_or[ny]; IF FEEDT-FLAGI'N' THEN FEEDT[NY]:I dairycons[NY] + catonfed[NY] + otherbeefcat[NY] + chickencons[NY] + broilercons[NY] + turkeycons[NY] + hogcons[NY] + othercons[NY] ELSE FEEDT[NY]:I FEEDT_0R[NY]; 1F DOMESTIC_USE_FLAGI'N' THEN DDMESTIC_USE[NY]:IFEEDT[NY] + FSI_USE[NY] ELSE DOMESTIC_USE[NY]:IDOMESTIC_USE_0R[NY]; { EXPORT COMPONENT } { INIPC uses generalized differencing and is adjusted below. } { THE SIMPLE LINKAGE BETWEEN FEEDGRAIN PRICE (S/BU.) AND FARM PRICE IS AN ADDITIONAL $0.42 } FOR I:- 1 TO MY DD BEGIN FP[I]:I CORNPT[I] + 0.42: END: IFP[NY]:I {( (FP[NY]/0.0254) / CPIT[NY] ) ' NMXRF[NY] ); 12115 { THIS TRANSFORMATION PUTS FP 1N S/MT } IUP[NY]:I (( HP[NY] / CPIT[NY] ) * NMXRU[NY] ); IYIELD[NY]:I-0.8943774 + 0.0328114 * YEAR[NY] + IYIELD_AF[NY]; { Hhere: IYIELD[NY]* I IYIELD[4] - 0.3820334 * IYIELD[3]. YEAR[4]* I YEAR[4] - 0.3820334 ’ YEAR[3]. In this case. Rho is equal to 0.3820334. } IPRO[NY]:I(1Y1ELO[NY] * IHA[NY]); INIPC[NY]:I 0.0028 - 0.0000425 * IFP[NY] + 0.0000478 ‘ IHP[NY] + 9209967.0 * (IGDP[NY]/1POP[NY]) - 0.143 * (IPRO[NY]/IPOP[NY]) + INIPC_AF[NY]; { Hhere: INIPC[NY]* I INIPC[4] - 0.7277196 ' INIPC[3]. IFP[4]* I IFP[4] - 0.7277196 * IFP[3]. IHP[4]* I IHP[4] - 0.7277196 * IHP[3]. IGDPPC[4]* I IGDPPC[4] - 0.7277196 * IGDPPC[3]. and IPRDPC[4]* I IPRDPC[4] - 0.7277196 ' IPRDPC[3]. In this case. Rho is equal to 0.7277196. } IF INI_IN_BU_FLAGI'N' THEN INI_in_bu[NY]:I ((((INIPC[NY] * IPOP[NY])*39.368)/1000.0)*PCNT_0F_XPORTS[NY]) ELSE INI_IN_BU[NY]:IINI_IN_BU_0R[NY]; EYIELD[NY]:I -I.26 + 0.0460 * YEAR[NY] + EYIELD_AF[NY]; { EXPORTERS FEEDGRAIN YIELD } EVYIELD[NY];- 0.2247 + 0.0175 * YEAR[NY] + EUYIELD_AF[NY]; { EXPORTERS UHEAT YIELD } { EXPORTERS HARVESTED ACRES - f ( LAGGED EXPORTERS FEEDGRAIN REVENUE. LAGGED EXPORTERS vHEAT REVENUE. LAGGED HARVESTED ACRES. LAGGED ENDING STOCKS I EFREV[NY-1]:- ((( {FP[NY-1]/0.0254) / CPIT[NY-l] ) * XRAR[NY-I] * FYAR[NY-l])/CPIAR[NY-I] + (( (FP[NY-1]/0.0254) / CPIT[NY—I] I * XRAU[NY-1] * FYAU[NY-I])/CPIAU[NY-I] + (( (FP[NY-I]/0.0254) / CPIT[NY-I] ) * XRCA[NY-I] * FYCA[NY-1])/CPICA[NY-I]); EVREV[NY-1]:- ((( VP[NY-1] / CPIT[NY-I] ) * XRAR[NY-1] * VYAR[NY-1])/CPIAR[NY-I] + (( UP[NY-1] / CPIT[NY-I] ) * XRAU[NY-1] * UYAU[NY-1])/CPIAU[NY-1] + (( UP[NY-I] / CPIT[NY—I] ) * XRCA[NY-I] * vYCA[NY-1])/CPICA[NY-1]I; EHA[NY]:I 8508.919 + 204.545 * EFREV[NY-1] - 343.169 * EUREV[NY-1] + 0.698 * EHA[NY-I] - 0.300 * EES[NY-1] + EHA_AF[NY]; { EXPORTER PRODUCTION PER HEAD } EPROPC[NY]:I ( (EHA[NY] * EYIELD[NY]) / EPOP[NY] ); EPRO[NY]:I ( EYIELO[NY] * EHA[NY] ); ESPLYPCINY]:-EPR0Pc[NY]+EESPc[NY-1]; { EXPORTERS CONSUMPTION/HEAD I f ( EXPORTERS GROSS DOMESTIC PRODUCT. EXPORTERS leti FEEDGRAIN PRICE. EXPORTERS HHEAT PRICE. EXPORTERS SUPPLY PER CAP.. SPLINE FROM 1974 ON ) } ECONPC[NY]:I 0.0578 + 1222063.5 ’ (EGDP[NY]/EPOP[NY]) - 0.001 * (( (FP[NY]/0.0254) / CPIT[NY] ) * NXXRF[NY]) + 0.00083 * (( UP[NY] / CPIT[NY] ) * MXXRU[NY]) + 0.314 ‘ ESPLYPC[NY] - 0.0793 * DV74ON + ECONPC_AF[NY]; { EXPORTER ENDING STOCKS PER HEAD } EESPC[NY]:I 0.02932 + 0.0728 * EPROPC[NY] + 0.3516 * (EES[NY-1]/EPOP[NY-I]) - 0.1338 ‘ EUDPC[NY-I] - 0.0932 * DV83 + EESPC_AF[NY]; EES[NY]:IEESPC[NY] * EPOP[NY]; EUDPC[NY]:I ESPLYPC[NY] - EESPC[NY]; IF ECON_IN_BU_FLAG='N' THEN ECON_IN_BU[NY]:I((((ECONPC[NY] * EPOP[NY])*39.368)/1000.0)*PCNT_DF_XPORTS[NY]) ELSE ECON_IN_BU[NY];=ECON_IN_BU_0R[NY]; IF EES_IN_BU_ELAG='N' THEN EES_IN_BU[NY]:={(((EESPC[NY] ' EPOP[NY])‘39.36B)/IOOD.O)*PCNT_OF_XPDRTS[NY]) ELSE EES_IN_BU[NY]:IEES_IN_BU_0R[NY]; IF ESPLY_IN_BU_FLAGI'N' THEN esply_in_bu[NY]:I((((esplypc[NY]*EP0P[NY])*39.368)/1000.0)*PCNT_OF_XPORTS[NY]) ELSE ESPLY_IN_BU[NY] -ESPLY_IN_BU_0R[NY]; 1F (ENE_IN_BU_FLAG='N') THEN ENE_IN_BU[NY]:I ESPLY_IN_8U[NY] - ECON_IN_BU[NY] - EES_IN_BU[NY] ELSE ENE_IN_BU[NY]:IENE_IN_BU_0R[NY]; if ene_in_bu[ny] < 0.0 then ene_in_bu[ny]:I0.0; IF EXPORTS_FLAG='N' THEN EXPORTS[NY]:I ( INI_IN_BU[NY] - ENE_IN_BU[NY] ) ELSE EXPORTS[NY]:I EXPORTS_DR[NY]; T0TAL_USE[NY]:I DOMESTIC_USE[NY] + EXPORTS[NY]; { STOCKS IN GOVERNMENT PROGRAM } FPLRzI FP[NY] / CORN_LOAN_RATE[NY]; FPLR2:I FPLR * FPLR; FPLR3:I FPLR2 * FPLR: { CCC INVENTORY (t) I CCC INVENTORY (t-I) + CHANGE IN CCC INVENTORY } DCCCSTOCKS[NY]:I 34330.230 - 68153.126 ' FPLR + 45967.279 * FPLR2 - 10569.075 * FPLR3: CCCSTOCKS[NY]:= CCCSTOCKS[NY-I] + OCCCSTOCKS[NY]; 221$? IF CCCSTOCKS[NY] < 0.0 THEN CCCSTOCKS[NY]:I 0.0; IF CCCSTOCKS_FLAGI'Y' THEN CCCSTOCKS[NY]:I CCCSTOCKS_OR[NY]; { { FOR INVENTORY (t) I FOR INVENTORY (t-I) + CHANGE IN FOR INVENTORY } OFORSTOCKS[NY]:I 28637.804 - 53497.38 ' FPLR + 35532.478 ' FPLR2 - 8431.0044 * FPLR3: F0RSTOCKS[NY]:I FORSTOCKS[NY-I] + DFORSTOCKS[NY]; IF FORSTOCKS[NY] >- ( ( TSUPPLY[NY] - TOTAL_USE[NY] ) - ( MIN_FREE_STOCKS[NY] . CCCSTOCKS[NY] ) ) THEN FORSTOCKS[NY]:- ( ( TSUPPLY[NY] - TOTAL_USE[NY] ) - ( MIN_FREE_STOCKS[NY] . CCCSTOCKS[NY] ) ); IF FORSTOCKS[NY] < 0.0 THEN F0RST0CKS[NY]:I 0.0; IF FORSTOCKS_FLAGI'Y' THEN F0RST0CKS[NY]:I FORSTOCKS_OR[NY]; FREESTOCK_PROC; IF FREESTOCKS_FLAGI'Y' THEN FREESTOCKS[NY]:I FREESTOCKS_0R[NY]; IF ((TOTAL_USE[NY]+CCCSTOCKS[NY]+FORSTOCKS[NY]+FREESTOCKS[NY])>TSUPPLY[NY]) THEN FORSTOCKS[NY]:I(TSUPPLY[NY]-(CCCSTOCKS[NY]+FREEST0CKS[NY]+TOTAL_USE[NY])); { TOTAL ENDING STOCKS EQUATION } END_ST0CKS[NY]:I ( CCCSTOCKS[NY] + FORSTOCKS[NY] + FREESTOCKS[NY] ); { TOTAL. PERCENT OF USE } PERCENT_USE[NY]:I (END_STOCKS[NY] / TOTAL_USE[NY]) * 100; END; { PROCEDURE RE CALCULATE } "“’ End of Include file RECALC.INC '*‘** "**' Beginning of Include file CACULATE.INC ’*'** {SI CACULATE.INC} , overlay procedure CALCULATIONS(corn_price_in_year_t: real); { THE FORECAST CALCULATIONS USING RANDOM SHOCKS } var conserved_acres:real; { A LOCAL VARIABLE USED FOR PERCENT OF CONSERVATION ACRES ( ARP + DIVERSION) } procedure FREESTOCK_PROC; { A PROCEDURE T0 CALCULATE THE FREE STOCKS BASED ON HEIGHTS USED FOR POLICY } VAR CCCHT. FORHT: REAL: BEGIN { RULE CCC HEIGHT FOR HEIGHT } { -------------------- i { 1) YEAR I 77 0.80 0.75 3) YEAR >I 77. CCCt $1.55 0.10 0.75 4) YEAR >I 77. FORt 51.55 0.80 0.0 VVVVV IF { year[NY] I 77 ) AND ( CCCstocks[NY] 1.55 ) THEN CCCHT:I 0.1; IF ( year[NY] 1.55 ) THEN FORHT:I 0.0; FREESTOCKS[NY]:I1127.4231 — 1873.6898 * (( CCCUT * CCCSTOCKS[NY] 4 FORHT ' FORSTOCKS[NY] ) I TOTAL_USE[NY] ) - 1301390.2 * ( FPLR / TOTAL_USE[NY] ) + FREESTOCKS_AF[NY]; IF FREESTOCKS[NY] < MIN_FREFNSTOCKS[NY] THEN FREESTOCKS[NY]:IMIN_FREE_STOCKS[NY]; END; { AREA HHICH CALCULATES FUNCTION Fx FOR GIVEN HEIGHTS } BEGIN { DOMESTIC SUPPLY } { APCT I f ( DV83. LAGGED CORN REVENUE(NON-PARTICIPANTS). HHEAT REVENUE. LAGGED CORN REVENUE(PARTICIPANTS) } CDNSERVED_ACRES:IARP[NY]+DIVERSIDM[NY]; IF APCT_FLAGI'N' THEN APCT[NY]:I 90.993360 {+4.044 ’ dv79 - 6.54 * dv73} - 0.1262719 ' {((HHTPT[NY-I] * HHTYT[NY-I]) - VCHH[NY-I]) / CPIT[NY'IJI ' 0.0281170 * (({PARREV[NY'1] + DIVFAY[MY-I] + DEFFAY[NY-I]} ' VCCN[NY-I]} / CPIT[NY'IJI - 60.333270 ' CONSERVED_ACRES + APCT_AF[NY] ELSE APCT[NY]:IAPCT_OR[NY]; IF AHCT_FLAGI'N' THEN AHCT[MY]:I '8.412272 + 0.8729 ' APCT[NY] + 0.1078 * YEAR[NY] + AHCT_AF[NY] ELSE AHCT[NY]:IAHCT_OR[NY]; IF CORNYT_FLAGI'N' THEN CDRNYT[NY]:I -71.3758 + 2.153 ' YEAR[NY] + CORNYT_AF[NY] ELSE CORNYT[NY]:ICORNYT_0R[NY]; if year[nyJIBS then beginstocks[NY]:IIG48.0 else BEGINSTOCKS[NY]:IEND_STOCKS[NY-1]; YIELD:I7.661092 ‘ Z + CORNYT[NY]; 21151 IF PRODUCT_FLAGI'N' THEN PRODUCT[NY]:I AHCT[NY] * YIELD ELSE PROOUCT[NY]:IPROOUCT_OR[NY]; IF IMPORTS_FLAGI'Y' THEN IMPORTS[NY]:IIMPORTS_OR[NY]; IF TSUPPLY_FLAGI'N' THEN TSUPPLY[NY]:I BEGINSTOCKS[NY] + PROOUCT[NY] + IMPORTS[NY] ELSE TSUPPLY[NY]:ITSUPPLY_OR[NY]; { FEED USE } { DACON/HEAD I f ( TIME. REAL MILK PRICE. REAL CORN FARM PRICE. REAL HHEAT PRICE ) } if oneph_or[ny]I0.0 then begin ONEPH[NY]:I -86.515 + 1.832 ' YEAR[NY] + 3.415 ‘ (MILKP[NY] / CPIT[NY]) - 25.61 ‘ (CORNPT[NY] / CPIT[NY]) + 10.746 * (HHTPT[NY] / CPIT[NY]) + ONEPH_AF[NY]; dairycons[NY]:Ioneph[NY]‘danum[NY]; end else dairycons[ny]:Ioneph_or[ny]'danum[ny]; { COFCON/HEAD I f ( TIME. BEEF-STEER/CORN RATIO. LAGGED DEPENDENT ) } if twoph_or[ny]I0.0 then begin THOPH[NY]:I 240.119 - 2.126 ' YEAR[NY] + 1.665 * (BEFSTRP[NY] / CORNPT[NY]) - 0.659 * THOPH[NY-I] + THOPH_AF[NY]; catonfed[NY]:Itwoph[NY]*cofnum[NY]; end else catonfed[ny]:Itwoph_or[ny]‘cofnum[ny]; { OBCCON/HEAO I f ( BEEF COH/CORN RATIO. LAGGEO REAL SOYBEAN MEAL PRICE ) } if threeph_or[ny]I0.0 then begin . THREEPH[NY]:I 2.875 + 0.115 * (BCOHP[NY] / CORNPT[NY]) + 0.00487 * (SMPT[NY-I] / CPIT[NY-I]) + THREEPH_AF[NY]; otherbeefcat[NY]:Ithreeph[NY]*obcnum[NY]; end else otherbeefcat[ny]:Ithreeph_pr[ny]'obcnum[ny]; { HPCCON/HEAD I f ( REAL CORN FARM PRICE. REAL SOYBEAN MEAL PRICE. REAL HHEAT PRICE. LAGGED DEPENDENT } if fourph_or[ny]I0.0 then begin F0URPH[NY]:I 0.9349 - 0.724 * (CORNPT[NY] / CPIT[NY]) + 0.00121 * (SMPT[NY] / CPIT[NY]) + 0.3409 * (HHTPT[NY] / CPIT[NY]) + 0.222 * FOURPH[NY-I] + FOURPH_AF[NY]; chickencons[NY]:Ifourph[NY]*hpcnum[NY]; end else chickencons[ny]:Ifourph_or[ny]‘hpcnum[ny]; 212(1 {BROCON/HEAD I f ( TIME. REAL CORN FARM PRICE. REAL HHEAT PRICE ) } if fiveph_or[ny]I0.0 then begin FIVEPH[NY]:I 0.00245 + 0.00143 * YEAR[NY] - 0.0431 * (CORNPT[NY] / CPIT[NY]) + 0.0162 * {HHTPT[NY] / CPIT[NY]) + FIVEPH_AF[NY]; broi lercons [NY] : If iveph [NY] 'bronun [NY] ; ' end else broilercons[ny]:Ifiveph_or[ny]*bronum[ny]; { TURCON/HEAD I f ( REAL CORN FARM PRICE. REAL HHEAT PRICE. LAGGEO DEPENDENT ) } if sixph_or[ny]I0.0 then begin SIXPH[NY]:I 0.709 - 0.3428 * (CORNPT[NY] / CPIT[NY]) + 0.126 ‘ (HHTPT[NY] / CPIT[NY]) + 0.104 * SIXPH[NY-1] + SIXPH_AF[NY]; turkeycons[NY]:Isixph[NY]*turnum[NY]; end else turkeycons[ny]:Isixph_or[ny]*turnum[ny]; { HOGCON/HEAD I f ( TIME. REAL HOG PRICE. REAL CORN FARM PRICE. 1 I if sevenph_or[ny]=0.0 then begin SEVENPH[NY]:I -14.624 + 0.5 * YEAR[NY] + 0.394 * (HOGP[NY] / CPIT[NY]) - 7.612 * (CORNPT[NY] / CPIT[NY]) + SEVENPH_AF[NY]; hogcons[NY]:Isevenph[NY]*hognum[NY]; end else hogcons[ny]:Isevenph_or[ny]*hognum[ny]; { DUNCON I f ( TIME. REAL CORN FARM PRICE. REAL HHEAT PRICE. DV82. OV84 ) } if other_unalloc_or[ny]I0.O then othercons[NY]:I -412.497 + 6.84 * YEAR[NY] - 63.265 * (CORNPT[NY] / CPIT[NY]) + 26.481 * {HHTPT[NY] / CPIT[NY]) + 326.601 ' DV82 + 189.265 ' DV84 + EIGHT_AF[NY] else othercons[ny]:Iother_unalloc_or[ny]; IF FEEDT_FLAGI'N' THEN FEEDT[NY]:I dairycons[NY] + catonfed[NY] + otherbeefcat[NY] + chickencons[NY] + broilercons[NY] + turkeycons[NY] + hogcons[NY] + othercons[NY] ELSE FEEDT[NY]:IFEEDT_OR[NY]; 1F DOMEST1C_USE_FLAG='N' THEN DOMESTIC_USE[NY]:IFEEDT[NY] + FSI_USE[NY] ELSE DOMESTIC_USE[NY] IDOMESTIC_USE_0R[NY]; { ExPORT COMPONENT } { INIPC uses generalized differencing and is adjusted below. } { THE SIMPLE LINKAGE BETHEEN FEEDGRAIN PRICE ($/BU.) AND FARM PRICE IS AN ADDITIONAL $0.42 } 12221 FOR I:I 1 TO NY D0 BEGIN FP[I]:I CORN_PRICE_IN_YEAR_T + 0.42: END; IFP[NY]:I (( (FP[NY]/0.0254) / CPIT[NY] ) ' NMXRF[NY] ); { THIS TRANSFORMATION PUTS FP IN $/MT } IHP[NY]:I (( HP[NY] / CPIT[NY] ) * NMXRH[NY] ); IYIELD[NY]:I-0.8943774 + 0.0328114 ‘ YEAR[NY] + 1Y1ELO_AF[NY]; { Hhere: IYIELD[NY]‘ I IYIELD[4] - 0.3820334 ‘ IYIELO[3]. YEAR[4]* I YEAR[4] - 0.3820334 ‘ YEAR[3]. In this case. Rho is equal to 0.3820334. } YIEL02:I 0.045231 ' 22 + IYIELD[NY]; IPRO[NY]:I( YIEL02 * IHA[NY] ); INIPC[NY]:I 0.0026 - 0.0000425 * IFP[NY] + 0.0000476 * IHP[NY] . 9209967 0 * (IGDP[NY]/IPOP[NY]) - 0.143 * (IPRO[NY]/IPOP[NY]) + INIPC_AF[NY]; { Hhere: INIPC[NY]* I INIPC[NY] - 0.7277196 ' INIPC[NY-l]. IFP[NY]* I IFP[NY] - 0.7277196 * IFP[NY-I]. IHP[NY]* I IHP[NY] - 0.7277196 * IHP[NY-l]. IGDPPC[NY]* I IGDPPC[NY] - 0.7277196 * IGDPPC[NY-1]. and IPROPC[NY]* I IPROPC[NY] - 0.7277196 * IPROPC[NY-I]. In this case. Rho is equal to 0.7277196. } IF INI_IN_BU_FLAGI'N' THEN { corn is about 0.86 X of exports } INI_IN_BU[NY]:- ((((INIPC[NY]*IPOP[NY]I* 39.368)/1000.0)*PCNT_0F_XPORTS[NY]) ELSE INI_IN_BU[NY]:IINI_IN_BU_OR[NY]; EYIELD[NY]:I -1.26 + 0.0460 ' YEAR[NY] + EYIELD_AF[NY]; { EXPORTERS FEEDGRAIN YIELD } YIEL01:I 0.113202 ' 21 + EYIELD[NY]; EHYIELD[NY]:I 0.2247 + 0.0175 * YEAR[NY] + EHYIELO_AF[NY]; { EXPORTERS HHEAT YIELD } { EXPORTERS HARVESTED ACRES I f ( LAGGED EXPORTERS FEEDGRAIN REVENUE. LAGGED EXPORTERS HHEAT REVENUE. LAGGED HARVESTED ACRES. LAGGED ENDING STOCKS } EFREV[NY-I]:I ((( (FP[NY-I]/0.0254) / CPIT[NY-I] I * XRAR[NY-I] . FYAR[NY-I])/CPIAR[NY-I] + (( (FP[NY-I]/0.0254) / CPIT[NY-I] I * XRAU[NY-I] * FYAU[NY-1]1/CPIAU[NY-1] . (( (FP[NY-1]/0.0254) / CPIT[NY-I] I * XRCA[NY-I] * FYCA[NY-I])/CPICA[NY-I]); EvREV[NY-1]:- ((( vP[NY-1] / CPIT[NY-I] I * XRAR[NY-I] * HYAR[NY-l])/CPIAR[NY-I] + (( UP[NY-I] / CPIT[NY-I] I . XRAU[NY-1] * HYAU[NY-I])/CPIAU[NY-I] + (( HP[NY-I] / CPIT[NY-I] I * XRCA[NY-1] * HYCAENY-I])/CPICA[NY-I]I; EHA[NY]:I 8508.919 + 204.545 * EFREV[NY-I] - 343.169 ' EHREV[NY-1] + 0.698 ’ EHA[NY-l] - 0.300 * EES[NY-l] + EHA_AF[NY]; 2:32 { EXPORTER PRODUCTION PER HEAD } EPROPC[NY]:I ( (EHA[NY] * YIELDI) / EPOP[NY] ); EPRO[NY]:I ( YIELDI * EHA[NY] ); ESPLYPC[NY]:I EPROPC[NY]+EESPC[NY-I]: { EXPORTERS CONSUMPTION/HEAD I f ( EXPORTERS GROSS DOMESTIC PRODUCT. EXPORTERS FEEDGRAIN PRICE. EXPORTERS HHEAT PRICE. EXPORTERS SUPPLY PER CAP.. SPLINE FROM 1974 ON ) } ECONPC[NY]:I 0.0576 + 1222063.5 * (EGDP[NY]/EPOP[NY]) - 0.001 * (( (FP[NY]/0.0254) / CPIT[NY] I * NXXRF[NY]) + 0.00063 * (( HP{NY] / CPIT[NY] I * NXXRH[NY]) + 0.314 * esplypc[NY] - 0.0793 * DV740N + ECONPC_AF[NY]; { EXPORTER ENDING STOCKS PER HEAD } EESPC[NY]:I 0.02932 + 0.0728 ’ EPROPC[NY] + 0.3516 ‘ (EES[NY-l]/EPOP[NY-1]) - 0.1338 * EUDPC[NY-1] - 0.0932 * OV83 + EESPC_AF[NY]; EES[NY]:I EESPC[NY] ' EPOP[NY]; EUDPC[NY]:IESPLYPC[NY] - EESPC[NY]; IF ECON_IN_BU_FLAGI'N' THEN ECON_IN_BU[NY]:I ((((ECONPC[NY] * EPOP[NY])*39.3681/1000.0)'PCNT_OF_XPORTS[NY]) ELSE ECON_IN_BU[NY]:IECON_IN_BU_0R[NY]; IF EES_IN_BU_FLAGI'N' THEN EES_IN_BU[NY]:- ((((EESPC[NY] * EPOP[NY]I*39.366I/1000.0I*PCNT_OP_XP0RTS[NY]I ELSE EES_IN_BU[NY]:IEES_IN_BU_0R[NY]; IF ESPLY_IN_BU_FLAGI'N' THEN ESPLY_IN_BU[NY];-((((espiypc[NY]*EP0P[NY]I*39.366I/1000.0)*PCNT_0F_XP0RTS[NY]I ELSE ESPLY_IN_BU[NY]:IESPLY_IN_BU_OR[NY]; IF ENE_IN_BU_FLAGI'N' THEN ENE_IN_BU[NY]:I ESPLY_IN_Bu[NY] - ECON_IN_BU[NY] - EES_IN_BU[NY] ELSE ENE_1N_BU[NY]:IENE_1N_BU_0R[NY]; if ene_in_bu[ny] < 0.0 then ene_in_bu[ny] :I0.0; IF EXPORTS_FLAGI'N' THEN EXPORTS[NY]:I ( INI_IN_BU[NY] - ENE_IN_BU[NY] I ELSE EXPORTS[NY] -EXPORTS_0R[NY]; TOTAL-USE[NY]:I DOMESTIC_USE[NY] + EXPORTS[NY]; { STOCKS IN GOVERNMENT PROGRAM I FPLR . FP[NY] / CORN_L0AN_RATE[NY]: FPLR2:I FPLR * FPLR: FPLR3:I FPLR2 * FPLR: 12213 { CCC INVENTORY (t) I CCC INVENTORY (t-I) + CHANGE IN CCC INVENTORY } DCCCSTOCKS[NY]:I 34330.230 - 68153.126 * FPLR + 45967.279 * FPLR2 - 10569.075 * FPLR3: CCCSTOCKS[NY]:I CCCSTOCKS[NY-l] + DCCCSTOCKS[NY]; 1F CCCSTOCKS[NY] < 0.0 THEN CCCSTOCKS[NY]:I 0.0; IF CCCSTOCKS_FLAG='Y' THEN CCCSTOCKS[NY]:ICCCSTOCKS_OR[NY]; { FOR INVENTORY (t) I FOR INVENTORY (t-l) + CHANGE IN FOR INVENTORY } DFORSTOCKS[NY]:I 28637.804 - 53497.38 * FPLR + 35532.478 * FPLR2 - 8431.0044 * FPLR3: FORSTOCKS[NY]:I FORSTOCKS[NY-I] + DFORSTOCKS[NY]; IF FORSTOCKS[NY] < 0.0 THEN FORSTOCKS[NY]:I 0.0; IF FORSTOCKS_FLAGI'Y' THEN FORSTOCKS[NY]:IFORSTOCKS_OR[NY]; FREESTOCK_PROC; IF FREESTOCKS_FLAG='Y' THEN FREESTOCKS[NY]:IFREESTOCKS_0R[NY]; { TOTAL ENDING STOCKS EQUATION } END_STOCKS[NY]:I ( CCCSTOCKS[NY] + FORSTOCKS[NY] + FREESTOCKS[NY] ); { EQUILIBRIUM CONDITION } EQUILIBRIUM:I(TOTAL_USE[NY] + END_STOCKS[NY]) - TSUPPLY[NY]; END; { PROCEDURE CALCULATIONS } ***** End of Include file CACULATE.INC ***** ***** Beginning of Include file SOLUTION.INC ***** {$1 SOLUTION.INC} OVERLAY PROCEDURE SOLUTION_SCREEN: { A PROCEDURE TO RUN 'RE_CALCULATE' } BEGIN screenSS:II; screen_fieldSS:I3; varSS:II; retrieveSS:-FALSE; last_fieldSS:-FALSE; DISPLAY_SCREEN('SOLVESCR.SCR'.file_existSS); { Display Screen } if not file_existSS then begin gotoxy(I.I); write(‘Missing Screen SOLVESCR') end; retSS:I"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of GETNUM(68.5.4.'N'.CORNPT[NY]. 'l.ll'.0.00.9.99.retSS.retrieveSS.15.0); GETNUM(59.7.4.'N'.REDUCE_PRICE. 2224 'I.Il'.0.00.0.99.retSS.retrieveSS.15.0); 3: BEGIN IF RETRIEVESSIFALSE THEN FG:IO ELSE FGzIIS: GETITEM(36.I4.7.'C'.INFO. 'XXXXXXX'.".".retSS.FALSE.FG.O); END; END; { CASE } if varSSIscreen_fieldSS then last_fieldSS:-TRUE; RET_STATUS; { Check the code in ”retSS". Set "varSS" and ”actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_field$S:-FALSE; actionSS:=staySS; varSS:=I; end else last_fieldSS:-FALSE; UNTIL actionSS-exitSS END; { PROCEDURE SCREEN_I } ***** End of Include file SOLUTION.INC *'*** ***'* Beginning of Include file REMAIN.INC ***'* {$1 remain.INC} procedure remain; { A PROCEDURE TO DETERMINE MARKET CLEARING PRICE FOR THE 'RE_CALCULATE' PROCEDURE } begin SOLUTION_SCREEN: repeat re_calculate; cornpt[NY]:Icornpt[NY]-REDUCE_PRICE; until((total_use[NY] + end_stocks[NY]) >I tsupply[NY]) or (cornpt[ny] <= 0.10); cornpt[NY]:Icornpt[NY]+REDUCE_PR1CE: beep(true); beeponss:Ifalse; end; { procedure remain } *"" End of Include file REMAIN.INC ***** “**' Beginning of Include file HOTT.INC ’*"* {$1 HOTT.INC} { add factors } OVERLAY PROCEDURE ADD_FACTOR_SCREEN_1: I B:AFACTOR1 } BEGIN screenSS:I2; screen_fieldSS:-20; varSS:-I; retrieveSS:-FALSE; last_fieldSS:-FALSE: DISPLAY_SCREEN('AFACTORI.SCR'.file_existSS); { Display Screen } if not file_existSS then begin gotoxy(I.I); write(‘Missing Screen AFACTORI') end; retSS:I": { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } 21255 CASE varSS of I: GETNUM(34.3.2.'N'.YEAR[NY]. 'Il'.0.0.99.0.retSS.FALSE.15.0); 2: BEGIN YEARB[NY]:IYEAR[NY]+1; GETNUM(37.3.2.'N'.YEARB[NY]. 'll'.0.0.99.0.retSS.FALSE.15.0); END; 3: GETNUM(73.3.2.'N‘.YEAR[NY]. 'II'.0.0.99.0.retSS.FALSE.15.0); 4: GETNUM(76.3.2.'N'.YEARB[NY]. 'll'.0.0.99.0.retSS.FALSE.15.0); 5: GETNUM(32.6.7.'N'.APCT_AF[NY]. '#II.#ll'.-99.000.999.000.retSS.retrieveSS.15.0); 6: GETNUM(32.8.7.'N'.AHCT_AF[NY]. 'lil.ll!'.-99.999.999.999.retSS.retrieveSS.15.0); 7: GETNUM(32.10.7.'N'.CORNYT_AF[NY]. 'Ill.lll'.-99.999.999.999.retSS.retrieveSS.15.0); 8: GETNUM(32.15.7.'N'.ONEPH_AF[NY]. 'lll.lil'.-99.999.999.999.retSS.retrieveSS.15.0); 9: GETNUM(32.17.7.'N'.THOPH_AF[NY]. 'III.III'.-99.999.999.999.retSS.retrieveSS.15.0); 10: GETNUM(32.19.7.'N'.THREEPH_AF[NY]. 'Ill.lll'.-99.999.999.999.retSS.retrieveSS.15.0); ll: GETNUM(32.21.7.'N'.FOURPH_AF[NY]. ’li#.lll'.-99.999.999.999.retSS.retrieveSS.15.0); 12: GETNUM(32.23.7.'N'.FIVEPH_AF[NY]. 'III.II#'.-99.999.999.999.retSS.retrieveSS.15.0); 13: GETNUM(71.6.7.'N'.SIXPH_AF[NY]. ’Ill.l#l'.-99.999.999.999.retSS.retrieveSS.15.0); I4: GETNUM(71.8.7.'N'.SEVENPH_AF[NY]. 'll!.#ll’.-99.999.999.999.retSS.retrieveSS.15.0); 15: GETNUM(71.10.7.'N'.EIGHT_AF[NY]. 'llil.l#'.-999.99.9999.99.retSS.retrieveSS.15.0); 16: GETNUM(70.15.8.'N'.INIPC_AF[NY]. '51.!!lll'.-9.99999.99.99999.retSS.retrieveSS.15.0); I7: GETNUM(73.17.5.'N'.IY1ELD_AF[NY]. 'll.ll'.-9.99.99.99.retSS.retrieveSS.15.0); 18: GETNUM(73.19.5.'N'.EY1ELD_AF[NY]. 'l#.li'.-9.99.99.99.retSS.retrieveSS.15.0); 19: GETNUM(71.21.7.'N'.EHA_AF[NY]. 'l!!!l.l'.-9999.9.99999.9.retSS.retrieveSS.15.0); 20: GETNUM(70.23.8.'N'.ECONPC_AF[NY]. 'll.lli!!'.-9.99999.99.99999.retSS.retrieveSS.15.0); END; { CASE } if varSS-screen_fieldSS then last_fieldSS:-TRUE: RET_STATUS; { Check the code in "retSS". Set "varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:-TRUE; last_fieldSS:IFALSE; actionSS:=staySS; varSS:=1; end else 212GB last_fieldSS:IFALSE; UNTIL actionSSIexitSS END; { PROCEDURE ADD_FACTOR_SCREEN_I } OVERLAY PROCEDURE ADO_FACTOR_SCREEN_2: { B:AFACTOR2 } BEGIN screenSS:I3; screen_fieldSS:I6; varSS:II; retrieveSS:-FALSE; last_fieldSS:IFALSE; DISPLAY_SCREEN('AFACTOR2.SCR'.file_existSS); { Display Screen } if not file_existSS then begin gotoxy(I.I); write(‘Missing Screen AFACTORZ') end; retSS:-"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of I: GETNUM(57.6.2.'N'.YEAR[NY]. 'II'.0.0.99.0.retSS.FALSE.15.0); 2: GETNUM(60.6.2.'N'.YEARB[NY]. 'll'.0.0.99.0.retSS.FALSE.15.0); 3: GETNUM(55.10.7.'N'.EESPC_AF[NY]. 'Il.lll!l'.-0.99999.9.99999.retSS.retrieveSS.15.0); 4: GETNUM(55.18.B.'N'.DCCCSTOCKS_AF[NY]. 'Il!!!.il'.-9999.99.99999.99.retSS.retrieveSS.15.0); 5: GETNUM(55.20.8.'N'.DFORSTOCKS_AF[NY]. 'lllll.ll'.-9999.99.99999.99.retSS.retrieveSS.15.0); 6: GETNUM(55.22.8.'N'.FREESTOCKS_AF[NY]. 'IIIII.II'.-9999.99.99999.99.retSS.retrieveSS.15.0); END; { CASE } if varSS-screen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in "retSS". Set ”varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:-TRUE; last_fieldSS:IFALSE; actionSS:IstaySS; varSS:II; end else last_fieldSS:IFALSE; UNTIL actionSS-exitSS END; { PROCEDURE ADD_FACTOR_SCREEN_2 } *‘*** End of Include file HOTT.INC ***** ***** Beginning of Include file INTRO.1NC ***** {$1 intro.inc} { ALLOHS THE LOAD AND SAVE PROCESS } overlay procedure LOAD; BEGIN I:Il: screen_fieldSS:-5; varSS:I1; retrieveSS:IFALSE; last_fieldSS:IFALSE; .2137 DISPLAY_SCREEN('LOAD.SCR'.file_existSS); { Display Screen } if not file_existSS then BEGIN gotoxy(I.I); write('Missing Screen LOAD') END; retSS:I"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of 1: BEGIN GetItem(27.4.47.'C'.Default0rive. 'U:UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU'.".".retSS.retrieveSS.0.7); if (length(defaultdrive) I3) then delete(defaultdrive. 3. I); Checkdisk(defaultdrive); END; 2: BEGIN LoadYn:-'Y'; GetItem(60.20.1.'Y'.LoadYn. 'U'.".".retSS.retrieveSS.0.7); If (retrieveSS) and (upcase(LoadYn)I'N') then varSS:Iscreen_fieldSS: END; 3: begin GETNUM(46.21.I.'N'.J. 'l'.1.4.retSS.retrieveSS.0.7); S:ITRUNC(J); end; 4: BEGIN GetItem(26.23.8.'C'.FileName. 'UUUUUUUU'.".".retSS.retrieveSS.0.7); If (retrievess) then Loadbev(FileName.DefaultDrive); END; 5: begin GetItem(35.23.3.'C'.FileExt. 'UUU'.".".retSS.FALSE.15.0); if (retrieveSS-true) and (S<>3) then varSS:-1; end; END; { CASE } if varSS-screen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in ”retSS". Set ”varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE; actionSS:IstaySS; varSS:II; end else last_fieldSS:IFALSE: UNTIL actionSS-exitSS END; { PROCEDURE LOAD } 2:28 overlay procedure SAVE; BEGIN th4: screen_fieldSS:-5: varSS:I1; retrieveSS:IFALSE; last_fieldSS:IFALSE; DISPLAY_SCREEN('SAVE.SCR'.file_existSS); { Display Screen } if not file_existSS then BEGIN gotoxy(I.I); write('Missing Screen SAVE') END; retSS:I"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of 1: BEGIN GetItem(65.4.l.'Y'.SAVEYN. 'U'.".".retSS.retrieveSS.O.7); If (retrieveSS) AND (upcase(Saveyn)-'N') Then varSS :I screen_fieldSS; END; 2: BEGIN GetItem(32.5.47.'C'.DefaultDrive. 'U:XUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU'.".".retSS.retrieveSS.O.7); if (length(defaultdrive) I3) then delete(defaultdrive. 3. I); Checkdisk(defaultdrive); END; 3: BEGIN GETNUM(4B.6.I.'N'.J. 'I'.1.4.retSS.retrieveSS.0.7); S:ITRUNC(J): END; 4: begin { on_line_help( 'SAVEFILE'): } GetItem(26.23.8.'C'.FileName. ‘UUUUUUUU'.".".retSS.retrieveSS.0.7); end; 5: BEGIN GetItem(35.23.3.'C'.FileExt. 'UUU'.".".retSS.FALSE.15.0); If retrieveSS Then Savebev(FileName.Default0rive); END; END; { CASE } if varSS-screen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in ”retSS”. Set ”varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true } 229I if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE; actionSS:IstaySS; varSS:II; end else last_fieldSS:IFALSE: UNTIL actionSS-exitSS END; { PROCEDURE LOAD } "**' End of Include file INTRO.INC *“** ""‘ Beginning of Include file BALSHEET.INC '**** {$1 BALSHEET.INC} overlay PROCEDURE SCREEN_12: { B:SDBSCUS } BEGIN screenSS:-4; screen_field$S:-30; varSS:I1: retrieveSS:IFALSE; last_fieldSS:IFALSE; DISPLAY_SCREEN('SDBSCUS.SCR'.file_existSS): { Display Screen I if not file_existSS then begin gotoxy(I.I); write('Missing Screen SDBSCUS') end; retSS:I"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of 1: GETNUM(25.7.2.'N'.YEAR[NY-3]. 'll'.0.0.99.0.retSS.FALSE.15.0); 2: begin yearb[NY-3]:Iyear[NY-3]+I; GETNUM(28.7.2.'N'.YEARB[NY-3]. 'II'.0.0.99.0.retSS.FALSE.15.0); end; 3: GETNUM(36.7.2.'N'.YEAR[NY-2]. 'I!’.0.0.99.0.retSS.FALSE.15.0): 4: begin yearb[NY-2]:Iyear[NY-2]+I; GETNUM(39.7.2.'N'.YEARB[NY-2]. 'll'.0.0.99.0.retSS.FALSE.15.0); end: 5: GETNUM(46.7.2.'N'.YEAR[NY-I]. 'II'.0.0.99.0.retSS.FALSE.15.0); 6: begin yearb[NY-I]:Iyear[NY-I]+I: GETNUM(49.7.2.'N'.YEARB[NY-I]. 'II'.0.0.99.0.retSS.FALSE.15.0); end; 7: GETNUM(56.7.2.'N'.YEAR[NY]. 'li'.0.0.99.0.retSS.FALSE.15.0); B: begin yearb[NY]:-year[NY]+I; GETNUM(59.7.2.'N'.YEARB[NY]. 'll'.0.0.99.0.retSS.FALSE.15.0)1 end: 9: GETNUM(26.II.4.'N'.SETASIDE_ACRES[NY-3]. 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 213(1 'II.I'.0.0.99.9.retSS.FALSE.15.0); GETNUM(26.14.4.'N'.APCT[NY-3]. 'l#.l'.0.0.99.0.retSS.FALSE.15.0); GETNUM(26.17.4.'N'.AHCT[NY-3]. 'II.!'.0.0.99.9.retSS.FALSE.15.0); GETNUM(25.20.5.'N'.CORNYT[NY-3]. 'Ili.l'.0.0.999.9.retSS.FALSE.15.0); GETNUM(37.11.4.'N'.SETASIDE_ACRES[NY-2]. 'Il.l’.0.0.99.9.retSS.FALSE.15.0); GETNUM(37.14.4.'N'.APCT[NY-2]. 'l#.l'.0.0.99.9.retSS.FALSE.15.0); GETNUM(37.17.4.'N'.AHCT[NY-2]. 'll.l'.0.0.99.9.retSS.FALSE.15.0); GETNUM(36.20.5.'N'.CORNYT[NY-2]. 'lll.l'.0.0.999.9.retSS.FALSE.15.0); GETNUM(47.11.4.'N'.SETASIDE_ACRES[NY-1]. 'li.l'.0.0.99.9.retSS.FALSE.15.0); GETNUM(47.I4.4.'N'.APCT[NY-1]. 'Il.i'.0.0.99.9.retSS.FALSE.15.0); GETNUM(47.17.4.'N'.AHCT[NY-I]. 'll.l'.0.0.99.9.retSS.FALSE.15.0); GETNUM(46.20.5.'N'.CORNYT[NY-1]. 'lll.l'.0.0.999.9.retSS.FALSE.15.0); GETNUM(57.II.4.'N'.SETASIDE_ACRES[NY]. 'Il.l'.0.0.99.9.retSS.FALSE.15.0); GETNUM(57.14.4.'N'.APCT[NY]. 'II.I'.0.0.99.9.retSS.FALSE.15.0); GETNUM(57.17.4.'N'.AHCT[NY]. 'Il.l'.0.0.99.9.retSS.FALSE.15.0); GETNUM(56.20.5.'N'.CORNYT[NY]. '#ll.!'.0.0.999.9.retSS.FALSE.15.0); GETITEM(66.I4.1.'Y'.APCT_FLAG. 'U'.".".retSS.retrieveSS.IS.0); BEGIN if (retrieveSS-true) and (apct_flag='Y') then begin fgzIIS; bg:IO; GETNUM(72.14.6.'N’.APCT_OR[NY]. 'Il.##l'.0.000.99.999.retSS.retrieveSS.fg.bg); end else begin fgzIO; bg:I0; 6ETNUM(72.14.6.'N'.APCT_OR[NY]. '##.l#i'.0.000.99.999.retSS.false.fg.bg); end; END; GETITEM(66.17.1.'Y'.AHCT_FLAG. 'U'.".".retSS.retrieveSS.15.0); BEGIN if (retrieveSSItrue) and (ahct_flag='Y') then begin 22331 fgzIIS: bg:I0; GETNUM(72.I7.6.'N'.AHCT_0R[NY]. 'l#.lil'.0.000.99.999.retSS.retrieveSS.fg.bg); end else begin fgzIO: bgzIO: GETNUM(72.I7.6.'N'.AHCT_0R[NY]. 'll.lll'.0.000.99.999.retSS.false.fg.bg); end; END: 29: GETITEM(66.20.I.'Y'.CORNYT_FLAG. 'U'.".".retSS.retrieveSS.IS.0); 30: BEGIN if (retrieveSS-true) and (cornyt_flag='Y') then begin fg:I15: bgzIO; GETNUM(73.20.5.'N'.CORNYT_OR[NY]. 'l!!.l'.0.0.999.9.retSS.retrieveSS.fg.bg); end else begin fgzIO; bgzIO; GETNUM(73.20.5.'N'.CORNYT_OR[NY]. 'lll.l'.0.0.999.9.retSS.false.fg.bg); end; END; END; { CASE } color(white.black); if varSS-screen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in "retSS”. Set ”varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE; actionSS:IstaySS; varSS:=l; end else last_fieldSS:IFALSE: UNTIL actionSS-exitSS END; { PROCEDURE SCREEN_12 } overlay PROCEDURE SCREEN_I3: { B:SDBSCUSA I BEGIN screenSS:I5; screen_field$S:-64; varSS:II; retrieveSS:IFALSE: last_fieldSS:IFALSE; DISPLAY_SCREEN('SDBSCUSA.SCR'.file_existSS); { Display Screen } if not file_existSS then begin gotoxy(I.I); write('Missing Screen SDBSCUSA') end; .2132 retSS:="; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of 1: GETNUM(30.4.2.'N'.YEAR[NY-3]. 'il'.0.0.99.0.retSS.FALSE.15.0); 2: GETNUM(33.4.2.'N'.YEARB[MY-3]. 'Ii'.0.0.99.0.retSS.FALSE.15.0); 3: GETNUM(40.4.2.'N'.YEAR[NY-2]. 'll'.0.0.99.0.retSS.FALSE.15.0); 4: GETNUM(43.4.2.'N'.YEARB[NY-2]. 'l".0.0.99.0.retSS.FALSE.15.0); 5: GETNUM(50.4.2.'N'.YEAR[NY-1]. 'II'.0.0.99.0.retSS.FALSE.15.0); 6: GETNUM(53.4.2.'N'.YEARB[NY-1]. 'EI'.D.O.99.0.retSS.FALSE.15.0); 7: GETNUM{GO.4.2.'N'.YEAR[NY]. 'II'.0.0.99.0.retSS.FALSE.15.0); B: GETNUM(63.4.2.'N'.YEARB[NY]. 'II'.0.0.99.0.retSS.FALSE.15.0): 9: GETNUM(3I.7.4.'N'.8EGINSTOCKS[NY-3]. 'R'EI'.0.0.9999.0.retSS.FALSE.15.0}; IO: GETNUM(3I.8.4.'N'.PRODUCT[NY-3]. 'RIII'.0.0.9999.0.retSS.FALSE.15.0): 11: GETNUM(33.9.2.'N'.IMPORTS[NY-3]. 'Rl'.0.0.99.0.retSS.FALSE.15.0); 12: GETNUM(30.11.5.'N'.TSUPPLY[NY-3]. 'IIIII'.0.0.99999.0.retSS.FALSE.15.0); 13: GETNUM(31.I3.4.'N'.FEEDT[NY-3]. 'llii'.0.0.9999.0.retSS.FALSE.15.0); l4: GETNUM(3I.14.4.'N'.FSI_USE[NY-3]. 'IIIP'.0.0.9999.0.retSS.FALSE.15.0); 15: GETNUM(31.I6.4.'N'.DOMESTIC_USE[NY-3]. 'IPII'.0.0.9999.0.retSS.FALSE.15.0); 16: GETNUM(31.I7.4.'N'.EXPDRTS[NY-3]. 'IIII'.0.0.9999.0.ret$S.FALSE.15.0); I7: GETNUM(31.19.4.'N'.TOTAL_USE[NY-3]. 'IIIE'.0.0.9999.0.retSS.FALSE.15.0); 18: GETNUM(31.20.4.'N'.END_STOCKS[NY-3]. 'iiil'.0.0.9999.0.retSS.FALSE.15.0); 19: GETNUM(30.21.5.'N'.PERCENT_USE[NY-3]. 'Ill.l'.0.0.IO0.0.retSS.FALSE.15.0); 20: GETNUM(31.23.4.'N'.CORNPT[NY-3]. 'I."'.0.00.9.99.ret$S.FALSE.15.0); 21: GETNUM(41.7.4.'N'.BEGINSTDCKS[NY-2]. 'II'I'.0.0.9999.0.retSS.FALSE.15.0); 22: GETNUM(41.B.4.'N'.PRODUCT[NY-2]. 'IIII'.0.0.9999.0.retSS.FALSE.15.0); 23: GETNUM(43.9.2.'N'.IMPORTS[NY-2]. 'li'.0.0.99.0.retSS.FALSE.15.0); 24: GETNUM(40.11.5.'N'.TSUPPLY[NY-2]. 'IIIIE'.0.0.99999.0.retSS.FALSE.15.0); 25: GETNUM(4I.I3.4.'N'.FEEDT[NY-2]. 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 49: 50: SI: 52: 233 'lill'.0.0.9999.0.retSS.FALSE.15.0); GETNUM(4I.14.4.'N'.FSI_USE[NY-2]. 'IIII'.0.0.9999.0.retSS.FALSE.15.0); GETNUM(41.16.4.'N'.DOMEST1C_USE[NY-2]. 'IPII'.0.0.9999.0.retSS.FALSE.15.0); GETNUM(41.17.4.'N'.EXPORTS[NY-2]. 'IIIF'.0.0.9999.0.retSS.FALSE.15.01: GETNUM(4I.19.4.'N'.TOTAL_USE[NY-2]. 'llll'.0.0.9999.0.retSS.FALSE.15.0): GETNUM(41.20.4.'N'.END_STOCKS[NY-2]. 'illl'.0.0.9999.0.retSS.FALSE.15.0); GETNUM(40.21.5.'N'.PERCENT_USE[NY-2]. 'lll.l'.0.0.100.0.retSS.FALSE.15.0): GETNUM(4I.23.4.'N'.CORNPT[NY-2]. 'l.ll'.0.00.9.99.retSS.FALSE.15.0); GETNUM(51.7.4.'N'.BEGINSTOCKS[NY-1]. 'llll'.0.0.9999.0.retSS.FALSE.15.0); GETNUM(51.B.4.'N'.PRODUCT[NY-I]. 'llll'.0.0.9999.0.retSS.FALSE.15.0): GETNUM(S3.9.2.'N'.IMPORTS[NY-1]. 'II'.0.0.99.0.retSS.FALSE.15.0); GETNUM(50.II.5.'N'.TSUPPLY[NY-I]. 'lllll'.0.0.99999.0.retSS.FALSE.15.0); GETNUM(51.13.4.'N'.FEEDT[NY-1]. 'llll'.0.0.9999.0.retSS.FALSE.15.0); GETNUM(SI.14.4.'N'.FSI_USE[NY-I]. 'lll!’.0.0.9999.0.retSS.FALSE.15.0); GETNUM(51.16.4.'N'.DOMESTIC_USE[NY-l]. 'l!!!’.0.0.9999.0.retSS.FALSE.15.0); GETNUM(51.I7.4.'N'.EXPORTS[NY-1]. 'IIII'.0.0.9999.0.retSS.FALSE.15.0): GETNUM(51.I9.4.'N'.TOTAL_USE[NY-1]. 'llll'.0.0.9999.0.retSS.FALSE.15.0): GETNUM(51.20.4.'N'.ENO_STOCKS[NY-I]. 'IIPI'.0.0.9999.0.retSS.FALSE.15.0); GETNUM(SO.21.5.'N'.PERCENT_USE[NY-l]. 'Ill.l'.0.0.100.0.retSS.FALSE.15.0): GETNUM(51.23.4.'N'.CORNPT[NY-I]. 'I.II'.0.00.9.99.retSS.FALSE.15.0); GETNUM(61.7.4.'N'.BEGINSTOCKS[NY]. 'Illl'.0.0.9999.0.retSS.FALSE.15.0); GETNUM(60.8.5.'N'.PRODUCT[NY]. 'lllll'.0.0.99999.0.retSS.FALSE.15.0); GETNUM(63.9.2.'N'.IMPORTS[NY]. 'll'.0.0.99.0.retSS.FALSE.15.0); GETNUM(60.II.5.'N'.TSUPPLY[NY]. 'lllll'.0.0.99999.0.retSS.FALSE.15.0); GETNUM(61.13.4.'N’.FEEDT[NY]. 'llll'.0.0.9999.0.retSS.FALSE.15.0); GETNUM(61.14.4.'N'.FSI_USE[NY]. 'Illl'.0.0.9999.0.retSS.FALSE.15.0); GETNUM(61.16.4.'N'.DOMESTIC_USE[NY]. 'llll'.0.0.9999.0.retSS.FALSE.15.0): GETNUM(61.17.4.'N'.EXPORTS[NY]. 53: S4: 55: 56: 57: 58: 59: 60: 61: 62: 234 'Illi'.0.0.9999.0.retSS.FALSE.15.0); GETNUM(61.19.4.'N'.TOTAL_USE[NY]. 'lill'.0.0.9999.0.retSS.FALSE.15.0); GETNUM(61.20.4.'N'.END_STOCKS[NY]. 'llli'.0.0.9999.0.retSS.FALSE.15.0); GETNUM(60.21.5.'N'.PERCENT_USE[NY]. 'lll.l'.0.0.100.0.retSS.FALSE.15.0); GETNUM(61.23.4.'N'.CORNPT[NY]. 'l.ll'.0.00.9.99.retSS.FALSE.15.0); GETITEM(69.8.I.'Y',PRODUCT_FLAG. 'U'.".".retSS.retrieveSS.15.0); BEGIN IF (retrieveSS-true) AND (product-flagI'Y') then begin fgzI15: bg:I0; GETNUM(73.8.5.'N'.PRODUCT_OR[NY]. 'Ilill'.0.0.99999.9.retSS.retrieveSS.fg.bg); end else begin fgzIO; bg:I0; GETNUM(73.8.5.'N'.PRODUCT_OR[NY]. 'lilli'.0.0.99999.9.retSS.false.fg.bg); end; END; GETITEM(69.II.I.'Y'.TSUPPLY_FLAG. 'U'.".".retSS.retrieveSS.IS.0); BEGIN if (retrieveSS-true) and (TSUPPLY_flag='Y‘) then begin fg:I15: bg:I0; GETNUM(73.II.5.'N'.TSUPPLY_0R[NY]. 'lilil'.0.0.99999.0.retSS.retrieveSS.fg.bg); end else begin fg:I0; bg:I0; GETNUM(73.II.S.'N'.TSUPPLY_OR[NY]. 'lllll'.0.0.99999.0.retSS.false.fg.bg); end; END: GETITEM(69.13.I.'Y'.FEEDT_FLAG. ’U'.".".retSS.retrieveSS.15.0); BEGIN if (retrieveSS-true) and (FEEDT_flagI'Y') then begin fg:I15: bg:I0; GETNUM(74.13.4.’N'.FEEDT_OR[NY]. 'llll'.0.0.9999.0.retSS.retrieveSS.fg.bg); 21355 end else begin fg:I0: bg:I0; GETNUM(74.I3.4.'N'.FEEDT_OR[NY]. 'lfil'.0.0.9999.0.retSS.false.fg.bg); end; END; 63: GETITEM(69.17.1.'Y'.EXPORTS_FLAG. 'U'.".".retSS.retrieveSS.15.0); 64: BEGIN if (retrieveSSItrue) and (EXPORTS_flag='Y') then begin fgzIIS: bg:I0; GETNUM(74.17.4.'N'.EXPORTS_0R[NY]. 'IIII'.0.0.9999.0.retSS.retrieveSS.fg.bg); end else begin fg:I0: bg:I0; GETNUM(74.I7.4.'N'.EXPORTS.OR[NY]. 'Ilil'.0.0.9999.0.retSS.false.fg.bg); end; END; END; { CASE } color(white.black); if varSS-screen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in ”retSS". Set "varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true ) if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE: actionSS:IstaySS; varSS:-1; end else last_fieldSS:IFALSE: UNTIL actionSS-exitSS END; { PROCEDURE SCREEN_13 } overlay PROCEDURE SCREEN_I4; { B:SDBSCUSB } BEGIN screenSS:I6; screen_fieldSS:I34; varSS:Il; retrieveSS:IFALSE; last_fieldSS:IFALSE; DISPLAY_SCREEN('SDBSCUSB.SCR'.file_existSS); { Display Screen } if not file_existSS then begin gotoxy(I.I); write('Missing Screen SDBSCUSB') end; retSS:I"; { Display Items. Change retrieveSS to TRUE and INPUT items} 23345 REPEAT { until actionSS I exitSS } CASE varSS of I: GETNUM(30.5.2.'N'.YEAR[NY-3]. 'll'.0.0.99.0.retSS.FALSE.15.0); 2: GETNUM(33.5.2.'N'.YEARB[NY-3]. 'II'.0.0.99.0.retSS.FALSE.15.0); 3: GETNUM(40.5.2.'N'.YEAR[NY-2]. 'll'.0.0.99.0.retSS.FALSE.15.0); 4: GETNUM(43.S.2.'N'.YEARB{NY-2]. 'li'.0.0.99.0.retSS.FALSE.15.0); 5: GETNUM(50.5.2.'N'.YEAR[NY-1]. 'II’.0.0.99.0.retSS.FALSE.15.0); 6: GETNUM(S3.5.2.'N'.YEARB[NY-l]. 'll'.0.0.99.0.retSS.FALSE.IS.0); 7: GETNUM(60.5.2.'N'.YEAR[NY]. 'II'.0.0.99.0.retSS.FALSE.15.0); 8: GETNUM(63.5.2.'N'.YEARB[NY]. 'II'.0.0.99.0.retSS.FALSE.15.0); 9: GETNUM(31.11.4.'N'.CCCSTOCKS[NY-3]. 'lill'.0.0.9999.0.retSS.FALSE.15.0); 10: GETNUM(31.13.4.'N'.FORSTOCKS[NY-3]. 'ltll'.0.0.9999.0.retSS.FALSE.15.0); 11: GETNUM(31.15.4.'N'.FREESTOCKS[NY-3]. 'll1l'.0.0.9999.0.retSS.FALSE.15.0); 12: GETNUM(31.20.4.'N'.GOVTSTOCKS[NY-3]. 'Illi'.0.0.9999.0.retSS.FALSE.15.0); 13: GETNUM(3I.22.4.'N'.CORN_LOAN_RATE[NY-3]. 'I.Il'.0.00.9.99.retSS.FALSE.15.0); 14: GETNUM(4I.11.4.'N'.CCCSTOCKS[NY-2]. 'Illl'.0.0.9999.0.retSS.FALSE.15.0); 15: GETNUM(41.13.4.'N'.FORSTOCKS[NY-2]. 'Plil'.0.0.9999.0.retSS.FALSE.15.0); 16: GETNUM(41.15.4.'N'.FREESTOCKS[NY-2]. 'lill'.0.0.9999.0.retSS.FALSE.15.0); I7: GETNUM(4I.20.4.'N'.GOVTSTOCKS[NY-2]. 'IIII'.0.0.9999.0.retSS.FALSE.15.0); 18: GETNUM(41.22.4.'N'.CORN_LOAN_RATE[NY-2]. 'l.ll'.0.00.9.99.retSS.FALSE.15.0); 19: GETNUM(SI.II.4.'N'.CCCSTOCKS[NY-1]. 'llii'.0.0.9999.0.retSS.FALSE.15.0); 20: GETNUM(51.13.4.'N'.FORSTOCKS[NY-l]. 'IIII'.0.0.9999.0.retSS.FALSE.15.0); 21: GETNUM(51.15.4.'N'.FREESTOCKS[NY-I]. 'III!’.0.0.9999.0.retSS.FALSE.15.0); 22: GETNUM(SI.20.4.'N'.GOVTSTOCKS[NY-I]. 'Illl'.0.0.9999.0.retSS.FALSE.15.0); 23: GETNUM(51.22.4.'N'.CORN_LOAN_RATE[NY-I]. 'l.l#'.0.00.9.99.retSS.FALSE.15.0); 24: GETNUM(60.11.4.'N'.CCCSTOCKS[NY]. 'lll!‘.0.0.9999.0.retSS.FALSE.15.0); 25: GETNUM(60.13.4.'N'.FORSTOCKS[NY]. 'llll'.0.0.9999.0.retSS.FALSE.15.0); 26: GETNUM(60.15.4.'N'.FREESTOCKS[NY]. 'llfll'.0.0.9999.0.retSS.FALSE.15.0); I F. em..___ 1T 1'7 , 27: 28: 29: 30: 31: 32: 33: 2237 GETNUM(60.22.4.'N'.CORN_LOAN_RATE[NY]. 'l.ll'.0.00.9.99.retSS.FALSE.15.0); GETITEM(70.II.I.'Y'.CCCSTOCKS_FLAG. 'U'.".".retSS.retrieveSS.15.0); BEGIN if (retrieveSS-true) and (CCCSTOCKS_flag-'Y') then begin fgzIIS: bg:I0; GETNUM(74.11.4.'N'.CCCSTOCKS_0R[NY]. 'llll'.0.0.9999.0.retSS.retrieveSS.fg.bg); end else begin fg:I0: bg:I0; GETNUM(74.II.4.'N'.CCCSTOCKS_0R[NY]. 'Illl'.0.0.9999.0.retSS.false.fg.bg); end; END; GETITEM(70.I3.I.'Y'.FORSTOCKS_FLAG. 'U'.".".retSS.retrieveSS.15.0); BEGIN if (retrieveSS-true) and (F0RSTOCKS_flagI'Y’) then begin fg:I15: bg:I0; GETNUM(74.13.4.'N'.FORSTOCKS_OR[NY], 'llll'.0.0.9999.0.retSS.retrieveSS.fg.bg); end else begin fgzIO: bg:I0; GETNUM(74.13.4.'N'.FORSTOCKS_0R[NY]. 'lili'.0.0.9999.0.retSS.false.fg.bg); end; END; GETITEM(70.IS.1.'Y'.FREESTOCKS_FLAG. 'U'.".".retSS.retrieveSS.15.0); BEGIN if (retrieveSSItrue) and (FREESTOCKS_flagI'Y') then begin fgzIIS: bg:IO: GETNUM(74.15.4.'N'.FREESTOCKS_OR[NY]. 'IIOI'.0.0.9999.0.retSS.retrieveSS.fg.bg); end else begin fg:I0: bg:I0; GETNUM(74.15.4.'N‘.FREESTOCKS_0R[NY]. 'lill'.0.0.9999.0.retSS.false.fg.bg); 2238 end; END; 34: GETNUM(74.20.4.'N'.GOVTSTOCKS[NY]. 'IIII'.0.0.9999.0.retSS.retrieveSS.15.0); END; { CASE } if varSS-screen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in ”retSS". Set “varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE; actionSS:IstaySS; varSS:Il: end else last_fieldSS:IFALSE: UNTIL actionSS-exitSS END; { PROCEDURE SCREEN_14 I ***** End of Include file BALSHEET.INC '**** "*" Beginning of Include file ZEBRAC.INC '**** {$1 ZEBRAC.INC} PROCEDURE zebrac; { A PROCEDURE HHICH USES THE EQUATION BI-SECTION METHOD TO DETERMINE MARKET CLEARING PRICE FOR THE 'CALCULATE' PROCEDURE } var y0.x.xl.xu.es.xr.xn.aa.ea. temp1.temp2.temp3: real; ni.im: integer; begin XL:I0.5; XU:I5.OO: ES:I0.1: im:I20; xr:-(xl+xu)/2.0; nizIO: repeat ni:-ni+1: calculations(xl); templzquuilibrium; calculations(xr); temp2:quuilibrium: aa:-temp1 * tempz; if aa < 0.0 then xuzIxr; if aa > 0.0 then xlzIxr; xn:I(xl+xu)/2.0; if (xn <> 0.0) then ea:Iabs((xn-xr)/xn)*100.0 else ea:I999.99; xerxn; uscornpt[f]:-(xr+xn)/2; until ((ea < es) or (ni > im)); end; "*** End of Include file ZEBRAC.INC ***** ****‘ Beginning of Include file RANDOMIZE.INC ****’ 22359 {$1 RANDOMIZE.INC} overlay PROCEDURE RANDOMIZE_YIELD_SCREEN_I: { RAND } VAR { Variables Section For RAND } jump.m.n : integer; temp : real; alldone : boolean: a: real; l.kount: integer; BEGIN RANDOM_PULLS:I25.0: INFOzI'SOLVING': PAUSEzI'PLEASE HAIT'; screenSS:-7; screen_fieldSS:I3; varSS:II: retrieveSS:IFALSE; last_fieldSS:IFALSE; DISPLAY_SCREEN('RAND.SCR'.file_existSS); { Display Screen } if not file_existSS then begin gotoxy(I.I); write('Missing Screen RAND') end; retSS:I"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of 1: BEGIN GETNUM(70.8.3.'N'.RANDOM_PULL5. 'lll'.I.O.999.0.retSS.retrieveSS.15.0); wa:-TRUNC(RANDOM_PULLS): END; 2: BEGIN IF RETRIEVESSIFALSE THEN FG:I0 ELSE FG:IIS: GETITEM(36.12.7.'C'.INFO. 'XXXXXXX'.".".retSS.FALSE.FG.O): END; 3: BEGIN IF RETRIEVESSIFALSE THEN FG:I0 ELSE FG:IIS: GETITEM(34.15.11.'C'.PAUSE. 'XXXXXXXXXXX'.".".retSS.FALSE.FG.0); END; END; { CASE } if varSS-screen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in ”retSS". Set "varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE; actionSS:IstaySS; varSS:=I; end else last_fieldSS:IFALSE: UNTIL actionSS-exitSS; 240 BEGIN FOR fzI 1 TO we DO BEGIN { CORNPT[NY]:I2.SO;} BETA:IO.0; { THE NAME IS THE US YIELD } BETA1:I0.0; { THE NAMEI IS THE EXPORTERS FEEDGRAIN YIELD } BETA2:IO.0; { THE NAMEZ IS THE IMPORTERS FEEDGRAIN YIELD } RANDOMIZE: FOR I:Il T0 30 DO BEGIN ALPHA[I]:IRANOOM: ALPHA1[I]:IRANDOM: ALPHA2[I]:IRANDOM: BETA:IBETA+ALPHA[I]; BETA1:IBETA1+ALPHA1[I]; BETA2:IBETA2+ALPHA2[I]: END; GAMMAzIBETA/30: GAMMAlzIBETAI/3O: GAMMA2:IBETA2/3O: Z:I((GAMMA-0.5)l0.052705); { ZI(rnd-mu)/(sigma/sqrt(n)) by the central limit therom } ZI:I((GAMMA1-0.5)/0.052705); ZZ:I((GAMMA2-0.5)/0.052705): ZEBRAC: END; END; { PROCEDURE RANDOMIZE_YIELD_SCREEN_1 } {itiitttitttitttttt'fliitittttttttt*ttttttttttttttttttttti‘ttttttttttttttt * PROCEDURE SORT ' * This procedure sorts an array. T. of length L using the diminishing * * increment sorting procedure developed by Shell. This code is a * * modification of that presented on pp. 158-63 of the revised edition ‘ * "Programming in PASCAL" by Peter Grogono. * **itfittiifitiiiti***tttitiiit*tf‘tittittifittttfittittitttttttititit...titt} begin {procedure Sort} l:Iwa; JUMD1II: while (Jump>1) do begin jump:Ijump div 2: repeat alldonezItrue; for m:Il to l-jump do begin nzIm+jump: if (uscornpt [m] >uscornpt [n] ) then begin tenp : Iuscornpt [m] ; uscornpt [m] :Iuscornpt [n] ; uscornpt[n]:Itemp; alldonezIfalse; end; 2411. end; until alldone: end; end: {Procedure Sort} for i:I1 to 3 do begin beep(true); end; beeponss:-false; END; {PROCEDURE RANDOMIZE_YIELO_SCREEN_1} overlay procedure DISPLAY-RANDOMIZE_SCREEN; VAR { Variables Section For BzPROBDISP } USCPRICEI: REAL; USCPRICEZ: REAL; USCPRICE3: REAL; USCPRICE4: REAL: USCPRICES: REAL: USCPRICEG: REAL: USCPRICE7: REAL; USCPRICEB: REAL: USCPRICEQ: REAL; USCPRICEIO: REAL: USCPRICEII: REAL: USCPRICEIZ: REAL: temp. holdl. mean. std_dev: real; {ttfiiitttttitifittttitfit*tfittittttfiifitfitfitititttttfittttttttittttitttt3*it ‘ PROCEDURE FINO_PERCENTILES * ‘ A PROCEDURE HHICH USES LINEAR INTERPOLATION TO CONSTRUCT THE * ‘ FREQUENCY DISTRIBUTION. IT USES THE METHOD SIMULAR T0 THAT ‘ * DESCRIBED IN "STATISTICAL CONCEPTS AND METHODS” PAGES 14-24 * * BY BHATTACHARYYA AND JOHNSON. ’ ittfififiifiififiitifitiiitfitttfitttttiit'tI.*ttfitifittttfifiitttitttfiiiitittttiii} PROCEDURE FIND_PERCENTILES: VAR cum_freq. frequency.interval:array[1..10] of real; lowprice. highprice. spread. classlength:real; counter.obs.fractionzreal; q.i.l.J:integer; begin lowprice:Iuscornpt[I]-0.005; highpricequscornpt[wa]+0.005: spread:Ihighprice-lowprice; classlength:Ispread/IO; percentile_answer:I0.0; for i:I1 to 10 do begin interval[i]:Ilowprice+classlength; counter:-0.0; for j:I1 to we do if (uscornpt[j] > lowprice) and (uscornpt[j] < interval[i]) then begin counter:Icounter+l; end; frequency[i]:Icounter; if jII then cum_freq[i]:Ifrequency[i]+0.0 else cum_freq[i]:Ifrequency[i]+cum_freq[i-I]; lowprice:Iinterval[i]; end: obszIwa'(p/100); 41mm ... . 2412 i:I I; while i<11 do begin if cum_freq[i]>Iobs then begin qui; i:IIO; end; 1:- i+1; end; fraction:I((obs-cum_freq[q-I])/frequency[q]); percentile_answer:I(interval[q]-classlength)+(fraction'classlength); end; BEGIN temp:IO.0; for f:II to wa do begin temszuscornpt[f]+temp; end; meanzItemp/wa; temsz0.0; for f:I1 to we do begin temp:I(uscornpt[f]-mean)‘(uscornpt[f]-mean) + temp; end; std_dev:Isqrt(temp/(wa-I)): screenSS:I8; screen_fieldSS:IIS; varSS:II; retrieveSS:IFALSE; last_fieldSS:IFALSE; DISPLAY_SCREEN('PROBDISP.SCR'.file.existSS): { Display Screen I if not file_existSS then begin gotoxy(I.I); write('Missing Screen PROBDISP') end; retSS:I"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of 1: BEGIN P:I1; F1ND_PERCENTILES: USCPRICEI:IPERCENTILE_ANSHER: GETNUM(60.7.4.'N'.USCPRICE1. 'l.ll'.0.00.9.99.retSS.FALSE.15.0); END; 2: BEGIN P:I5; FIND_PERCENTILES; USCPRICEZ:IPERCENTILE_ANSHER: GETNUM(60.8.4.'N'.USCPRICE2. 'l.il'.0.00.9.99.retSS.FALSE.15.0); END: 10: BEGIN P:I10: FIND_PERCENTILES: USCPRICE3:IPERCENTILE_ANSHER: GETNUM(60.9.4.'N'.USCPRICE3. 'I.Il'.0.00.9.99.retSS.FALSE.15.0); END; BEGIN P:I20: FIND_PERCENTILES: USCPRICE4:IPERCENTILE_ANSHER: GETNUM(60.10.4.'N'.USCPRICE4. 'I.II'.0.00.9.99.retSS.FALSE.15.0); END; BEGIN P:I30: FIND_PERCENTILES: USCPRICES:IPERCENTILE_ANSHER; GETNUM(60.11.4.'N'.USCPRICE5. 'I.Il'.0.00.9.99.retSS.FALSE.15.0); END; BEGIN P:I4O: FIND_PERCENTILES: USCPRICEG:IPERCENTILE_ANSHER: GETNUM(60.12.4.'N'.USCPRICE6. 'I.II'.0.00.9.99.retSS.FALSE.15.0); END; BEGIN P:I50: FIND_PERCENTILES: USCPRICE7:IPERCENTILE_ANSHER; GETNUM(60.13.4.'N'.USCPRICE7. 'l.li'.0.00.9.99.retSS.FALSE.15.0); END: BEGIN P:I60: FIND_PERCENTILES: USCPRICEB:IPERCENTILE_ANSHER: GETNUM(60.14.4.'N'.USCPRICE8. '!.li'.0.00.9.99.retSS.FALSE.15.0); END; BEGIN P:I70; FIND.PERCENTILES: USCPRICE9:IPERCENTILE_ANSHER; GETNUM(60.15.4.'N'.USCPRICE9. 'l.!l'.0.00.9.99.retSS.FALSE.15.0); END; BEGIN P:I80; FIND_PERCENTILES: USCPRICEIO:IPERCENTILE_ANSHER: GETNUM(60.16.4.'N'.USCPRICE10. 2413 2414: 'l.ll'.0.00.9.99.retSS.FALSE.15.0); END; 11: BEGIN P:I90; FIND_PERCENTILES: USCPRICEII:IPERCENTILE_ANSHER: GETNUM(60.17.4.'N'.USCPRICE11. 'i.ll'.0.00.9.99.retSS.FALSE.15.0); END; 12: BEGIN P:I95; FIND_PERCENTILES: USCPRICEIZ:IPERCENTILE_ANSHER: GETNUM(60.IB.4.'N'.USCPR1CE12. 'I.Il'.0.00.9.99.retSS.FALSE.15.0); END 13: GETNUM(60.19.4.'N'.uscornpt[wa]. 'l.ll'.0.00.9.99.retSS.FALSE.15.0): 14: GETNUM(4S.20.4.'N'.MEAN, 'I.II'.0.00.9.99.retSS.FALSE.15.0); 15: GETNUM(45.21.6.'N'.STD_DEV. 'l.llll'.0.0000.9.9999.retSS.FALSE.15.0); END; { CASE } if varSS-screen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in "retSS". Set "varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE; actionSS:IstaySS; varSS:II; end else last_fieldSS:IFALSE; UNTIL actionSS-exitSS END; { PROCEDURE SCREEN_I } *‘**‘ End of Include file RANDOMIZE.INC ***** overlay procedure EXOGENOUS_VARIABLE-SUB_MENU: { A SUB MENU UNDER THE MAIN MENU } "*“ Beginning of Include file MAGICI.INC "*’* {$1 MAGIC1.INC} { EXOGENOUS VARIABLE SUMMARY } OVERLAY PROCEDURE FSI_USE_SCREEN: { BzFSIUSE } BEGIN screenSS:I9; screen_fieldSS:IZB; varSS:Il; retrieveSS:IFALSE; last_fieldSS:IFALSE: DISPLAY_SCREEN('FSIUSE.SCR'.file_existSS); { Display Screen } if not file_existSS then begin gotoxy(I.I); write('Missing Screen FSIUSE') end; retSS:I"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of 10: II: 12: I3: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 24155 GETNUM(41.6.2.'N'.YEAR[NY-3]. 'll'.0.0.99.0.retSS.FALSE.15.0); GETNUM(44.6.2.'N'.YEARB[NY-3]. 'll'.0.0.99.0.retSS.FALSE.15.0); GETNUM(51.6.2.'N’.YEAR[NY-2]. 'Il'.0.0.99.0.retSS.FALSE.15.0): GETNUM(54.6.2.'N'.YEARB[NY-2]. 'll'.0.0.99.0.retSS.FALSE.15.0); GETNUM(61.6.2.'N'.YEAR[NY-I]. 'II'.0.0.99.0.retSS.FALSE.15.0); GETNUM(64.6.2.'N’.YEARB[NY-1]. 'il'.0.0.99.0.retSS.FALSE.15.0); GETNUM(7I.6.2.'N'.YEAR[NY]. 'Il'.0.0.99.0.retSS.FALSE.IS.0): GETNUM(74.6.2.'N'.YEARB[NY]. 'll'.0.0.99.0.retSS.FALSE.15.0); GETNUM(41.11.5.'N'.HFCS[NY-3]. 'lII.I'.0.0.999.9.retSS.FALSE.15.0); GETNUM(4I.I3.5.'N'.RESIDUAL[NY-3]. 'Ill.l'.0.0.999.9.retSS.FALSE.15.0); GETNUM(42.IS.4.'N'.SEED_USE[NY-3]. 'll.l'.0.0.99.9.retSS.FALSE.15.0); GETNUM(4I . 19.5. 'N' .FUEL_USE [NY-3]. 'Ill.l'.0.0.999.9.retSS.FALSE.15.0); GETNUM(40.21.6.'N'.FSI_USE[NY-3]. 'Illl.i'.0.0.9999.9.retSS.FALSE.15.0); GETNUM(SI.II.S.'N'.HFCS[NY-2]. 'lll.l'.0.0.999.9.retSS.FALSE.15.0); GETNUM(51.13.5.'N'.RESIOUAL[NY-2]. 'Ill.l'.0.0.999.9.retSS.FALSE.15.0); GETNUM(52.15.4.'N'.SEED_USE[NY-Z]. 'll.l'.0.0.99.9.retSS.FALSE.15.0): GETNUM(51.I9.S.'N'.FUEL_USE[NY-2]. 'l!#.l'.0.0.999.9.retSS.FALSE.15.0); GETNUM(50.21.6.'N'.FSI_USE[NY-2]. 'Illl.l'.0.0.9999.9.retSS.FALSE.15.0); GETNUM(GI.II.5.'N'.HFCS[NY-I]. 'ill.l'.0.0.999.9.retSS.FALSE.15.0); GETNUM(61.I3.5.'N'.RESIDUAL[NY-1]. 'Ill.l'.0.0.999.9.retSS.FALSE.15.0); GETNUM(62.15.4.'N'.SEED_USE[NY-1]. 'll.l'.0.0.99.9.retSS.FALSE.15.0): GETNUM(61.19.5.'N'.FUEL_USE[NY-I]. 'III.I'.0.0.999.9.retSS.FALSE.15.0); GETNUM(60.21.6.'N'.FSI_USE[NY—1]. 'llll.l'.0.0.9999.9.retSS.FALSE.15.0); GETNUM(7I.11.5.'N'.HFCS[NY]. ’lll.l'.0.0.999.9.retSS.retrieveSS.15.0); GETNUM(71.13.5.'N'.RESIDUAL[NY]. 'Ill.l’.0.0.999.9.retSS.retrieveSS.15.0); GETNUM(72.15.4.'N'.SEED_USE[NY]. 'll.l'.0.0.99.9.retSS.retrieveSS.15.0); GETNUM(71.19.5.'N'.FUEL-USE[NY]. 'lfil.l'.0.0.999.9.retSS.retrieveSS.I5.0); 22445 28: BEGIN FSI_USE[NY]:IHFCS[NY]+RESIDUAL[NY]+SEED_USE[NY]+FUEL_USE[NY]; GETNUM(70.21.6.'N'.FSI_USE[NY]. 'Illl.!'.0.0.9999.9.retSS.retrieveSS.15.0); END: END; { CASE } if varSS-screen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in ”retSS”. Set ”varSS" and ”actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE: actionSS:IstaySS; varSS:Il: end else last_fieldSS:IFALSE: UNTIL actionSSIexitSS END; { OVERLAY PROCEDURE FSI USE SCREEN_I } OVERLAY PROCEDURE SCREEN_I: { EXOGENOUS VARIABLE SUMMARY SCREEN 1 } BEGIN screenSS:-IO; screen_fieldSS:I48; varSS:I1; retrieveSS:IFALSE; last_fieldSS:IFALSE: DISPLAY_SCREEN('EXOGVARI.SCR'.file_existSS): { Display Screen I if not file_existSS then begin gotoxy(I.I); write('Missing Screen EXOGVARI') end; retSS:I"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of I: GETNUM(43.3.2.'N'.YEAR[NY-3]. 'll'.0.0.99.0.retSS.FALSE.15.0); 2: BEGIN YEARB[NY-3]:IYEAR[NY-3]+1: GETNUM(46.3.2.'N'.YEARB[NY-3]. 'Il'.0.0.99.0.retSS.FALSE.15.0); END; 3: GETNUM(54.3.2.'N'.YEAR[NY-2]. 'li'.0.0.99.0.retSS.FAL$E.15.0)i 4: BEGIN YEARB[NY-Z]:IYEAR[NY-2]+I: GETNUM(57.3.2.'N'.YEARB[NY-2]. 'Il'.0.0.99.0.retSS.FALSE.15.0): END; 5: GETNUM(64.3.2.'N'.YEAR[NY-I]. 'll'.0.0.99.0.retSS.FALSE.15.0); 6: BEGIN YEARB[NY-I]:IYEAR[NY-I]*I: GETNUM(67.3.2.'N'.YEARB[NY-1]. 'II'.0.0.99.0.retSS.FALSE.15.0): END; 7: 9: 10: 11: 12: 13: 14: 15: 16: I7: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 247 GETNUM(74.3.2.'N'.YEAR[NY]. 'll'.0.0.99.0.retSS.retrieveSS.15.0); BEGIN YEARB[NY]:IYEAR[NY]+1; GETNUM(77.3.2.'N'.YEARB[NY]. ’Il'.0.0.99.0.ret$S.FALSE.15.0); END; GETNUM(44.5.4.'N'.IMPORTS[NY-3]. 'II.I'.0.0.99.9.retSS.FALSE.15.0); GETNUM(43.7.5.'N'.CPIT[NY-3]. 'l.#ll'.0.000.9.999.retSS.FALSE.15.0); GETNUM(43.9.5.'N'.VCHH[NY-3]. 'II.II'.0.00.99.99.retSS.FALSE.15.0); GETNUM(42.II.6.'N'.VCCN[NY-3]. 'lll.#l'.0.00.999.99.retSS.FALSE.15.0); GETNUM(42.13.6.'N'.PARREV[NY-3]. 'll!.#l'.0.00.999.99.retSS.FALSE.15.0); GETNUM(42.IS.6.'N'.DIVPAY[NY-3]. 'lll.ll’.0.00.999.99.retSS.FALSE.15.0); GETNUM(42.17.6.'N'.DEFPAY[NY-3]. 'lli.ll'.0.00.999.99.retSS.FALSE.15.0); GETNUM(43.19.5.'N'.ARP[NY-3]. 'l.lll'.0.0.I.0.retSS.FALSE.15.0); GETNUM(43.21.S.'N'.DIVERSION[NY-3]. 'l.lll'.0.0.1.0.retSS.FALSE.IS.0); GETNUM(44.23.4.'N'.CORN_LOAN_RATE[NY-3]. '!.!l',0.00.9.99.retSS.FALSE.15.0); GETNUM(55.5.4.'N'.IMPORTS[NY-2]. 'll.l'.0.0.99.9.retSS.FALSE.15.0); GETNUM(54.7.5.'N'.CPIT[NY-2]. 'l.lll'.0.000.9.999.retSS.FALSE.15.0); GETNUM(S4.9.5.'N'.VCHH[NY-2]. 'l!.ll'.0.00.99.99.retSS.FALSE.15.0); GETNUM(53.11.6.'N'.VCCN[NY-2]. 'III.II'.0.00.999.99.retSS.FALSE.15.0); GETNUM(53.13.6.'N'.PARREV[NY-2]. 'll#.!l'.0.00.999.99.retSS.FALSE.15.0); GETNUM(53.15.6.'N'.DIVPAY[NY-2]. 'lll.il'.0.00.999.99.retSS.FALSE.15.0); GETNUM(53.17.6.'N'.DEFPAY[NY-2]. 'lll.ll'.0.00.999.99.retSS.FALSE.15.0); GETNUM(54.19.5.'N'.ARP[NY-2]. 'l.lii'.0.0.1.0.retSS.FALSE.15.0); GETNUM(54.21.5.'N'.DIVERSION[NY-2]. 'l.!ll'.0.0.1.0.retSS.FALSE.15.0); GETNUM(55.23.4.'N'.CORN_LOAN_RATE[NY-2]. 'l.ll'.0.00.9.99.retSS.FALSE.15.0); GETNUM(65.5.4.'N'.IMPORTS[NY-I]. 'll.I'.0.0.99.9.retSS.FALSE.15.0); GETNUM(64.7.5.'N'.CPIT[NY-1]. 'I.lll'.0.000.9.999.retSS.FALSE.15.0): GETNUM(64.9.5.'N'.VCHH[NY-1]. 'll.ll'.0.00.99.99.retSS.FALSE.15.0); GETNUM(63.11.6.'N'.VCCN[NY-1]. 24153 'III.II'.0.00.999.99.retSS.FALSE.15.0); 33: GETNUM(63.13.6.'N'.PARREV[NY-I]. 'll!.ll'.0.00.999.99.retSS.FALSE.15.0): 34: GETNUM(63.15.6.'N'.DIVPAY[NY-I]. 'III.II'.0.00.999.99.retSS.FALSE.15.0); 35: GETNUM(63.17.6.'N'.OEFPAY[NY-1]. 'lll.!l'.0.00.999.99.retSS.FALSE.15.0): 36: GETNUM(64.19.5.'N'.ARP[NY-1]. 'l.ll!'.0.0.1.0.retSS.FALSE.15.0); 37: GETNUM(64.21.5.'N'.DIVERSION[NY-l]. 'l.#ll'.0.0.l.0.retSS.FALSE.IS.0); 38: GETNUM(65.23.4.'N'.CORN_LOAN_RATE[NY-1]. 'l.l#'.0.00.9.99.retSS.FALSE.15.0); 39: GETNUM(75.S.4.'N'.IMPORTS[NY]. ’ll.l'.0.0.99.9.retSS.retrieveSS.15.0); 40: GETNUM(74.7.5.'N'.CPIT[NY]. 'l.lll'.0.000.9.999.retSS.retrieveSS.15.0); 41: GETNUM(74.9.5.'N'.VCHH[NY]. 'Il.ll'.0.00.99.99.retSS.retrieveSS.15.0); 42: GETNUM(73.II.6.'N'.VCCN[NY]. 'III.II'.0.00.999.99.retSS.retrieveSS.15.0); 43: GETNUM(73.13.6.'N'.PARREV[NY]. 'lll.ll'.0.00.999.99.retSS.retrieveSS.15.0); 44: GETNUM(73.15.6.'N'.OIVPAY[NY]. 'Ili.ll'.0.00.999.99.retSS.retrieveSS.15.0); 45: GETNUM(73.17.6.'N'.DEFPAY[NY]. 'III.II'.0.00.999.99.retSS.retrieveSS.15.0); 46: GETNUM(74.19.5.'N'.ARP[NY]. 'l.lll'.0.0.I.0.retSS.retrieveSS.15.0); 47: GETNUM(74.21.5.'N'.DIVERSION[NY]. 'l.lil'.0.0.I.0.retSS.retrieveSS.15.0); 48: GETNUM(75.23.4.'N'.CORN_LOAN_RATE[NY]. 'l.ll°.0.00.9.99.retSS.retrieveSS.15.0); END; { CASE } if varSS-screen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the Code in ”retSS". Set "varSS” and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE; actionSS:IstaySS; varSS =1; end else last_fieldSS:IFALSE; UNTIL actionSS-exitSS END; { OVERLAY PROCEDURE SCREEN_I } OVERLAY PROCEDURE SCREEN_Z: { EXOGENOUS VARIABLE SUMMARY SCREEN 2 } BEGIN screenSS:IIl; screen_fieldSS:I36; varSS II; retrieveSS:IFALSE: last_fieldSS:IFALSE; DISPLAY_SCREEN('EXOGVAR2.SCR'.file_existSS); { Display Screen } 21459 if not file_existSS then begin gotoxy(I.I); write(’Missing Screen EXOGVARZ') end; retSS:I"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of 1: GETNUM(43.5.2.'N'.YEAR[NY-3]. 'Il'.0.0.99.0.retSS.FALSE.15.0); 2: GETNUM(46.5.2.'N'.YEARB[NY-3]. 'Il'.0.0.99.0.retSS.FALSE.15.0); 3: GETNUM(S4.5.2.'N'.YEAR[NY-2]. 'll'.0.0.99.0.retSS.FALSE.15.0); 4: GETNUM(57.5.2.'N'.YEARB[NY-2]. 'll'.0.0.99.0.retSS.FALSE.15.0); 5: GETNUM(64.5.2.'N'.YEAR[NY*1]. 'Il'.0.0.99.0.retSS.FALSE.15.0); 6: GETNUM(67.5.2.'N'.YEARB[NY-I]. 'li'.0.0.99.0.retSS.FALSE.15.0); 7: GETNUM(74.5.2.'N'.YEAR[NY]. 'll'.0.0.99.0.retSS.FALSE.15.0); 8: GETNUM(77.5.2.'N'.YEARB[NY]. 'il'.0.0.99.0.retSS.FALSE.15.0); 9: GETNUM(42.10.6.'N'.NMXRF[NY-3]. 'l.llll'.0.0000.9.9999.retSS.FALSE.15.0); 10: GETNUM(42.12.6.'N'.NMXRH[NY-3]. 'l.llll'.0.0000.9.9999.retSS.FALSE.15.0); 11: GETNUM(42.I4.6.'N'.NXXRF[NY—3]. 'I.l#ll'.0.0000.9.9999.retSS.FALSE.15.0); 12: GETNUM(42.16.6.'N'.NXXRH[NY-3]. 'l.llll'.0.0000.9.9999.retSS.FALSE.15.0); 13: GETNUM(4I.18.7.'N'.HP[NY-3]. 'IIII.II'.0000.00.9999.99.retSS.FALSE.15.0); I4: GETNUM(44.20.4.'N'.HHTPT[NY-3]. 'l.ll'.0.00.9.99.retSS.FALSE.15.0); 15: GETNUM(44.22.4.'N'.HHTYT[NY-3]. 'Il.l'.0.0.99.9.retSS.EALSE.15.0); 16: GETNUM(53.10.6.'N'.NMXRF[NY-2]. 'l.#lll'.0.0000.9.9999.retSS.FALSE.15.0); I7: GETNUM(53.12.6.'N'.NMXRH[NY-2]. 'l.llil'.0.0000.9.9999.retSS.FALSE.15.0); 18: GETNUM(53.I4.6.'N'.NXXRF[NY-2]. 'l.llll'.0.0000.9.9999.retSS.FALSE.15.0); 19: GETNUM(S3.16.6.'N'.NXXRH[NY-2]. 'I.III!'.0.0000.9.9999.retSS.FALSE.15.0); 20: GETNUM(52.IB.7.'N'.HP[NY-2]. 'Illl.ll'.0000.00.9999.99.retSS.FALSE.15.0); 21: GETNUM(55.20.4.'N'.HHTPT[NY-2]. 'l.li'.0.00.9.99.retSS.FALSE.15.0); 22: GETNUM(55.22.4.'N'.HHTYT[NY-2]. 'iI.I'.0.0.99.9.retSS.FALSE.15.0); 23: GETNUM(63.10.6.'N'.NMXRF[NY-I]. 'l.illl'.0.0000.9.9999.retSS.FALSE.15.0); 24: GETNUM(63.12.6.'N'.NMXRH[NY-I]. 225C) 'l.llli'.0.0000.9.9999.retSS.FALSE.15.0); 25: GETNUM(63.14.6.'N'.NXXRF[NY-1]. 'l.llll'.0.0000.9.9999.retSS.FALSE.15.0); 26: GETNUM(63.16.G.'N'.NXXRH[NY-I]. ‘I.llll'.0.0000.9.9999.retSS.FALSE.15.0); 27: GETNUM(62.18.7.'N'.HP[NY-I]. 'llll.’i'.0000.00.9999.99.retSS.FALSE.15.0): 28: GETNUM(65.20.4.'N'.HHTPT[NY-1]. 'l.ll'.0.00.9.99.retSS.FALSE.15.0); 29: GETNUM(65.22.4.'N'.HHTYT[NY-1]. 'I!.l'.0.0.99.9.retSS.FALSE.15.0): 30: GETNUM(73.10.6.'N'.NMXRF[NY]. , 'l.llll'.0.0000.9.9999.retSS.retrieveSS.15.0); 31: GETNUM(73.IZ.G.'N'.NMXRH[NY]. 'l.llll'.0.0000.9.9999.retSS.retrieveSS.15.0); 32: GETNUM(73.I4.6.'N'.NXXRF[NY]. 'l.!lll'.0.0000.9.9999.retSS.retrieveSS.15.0); 33: GETNUM(73.16.6.'N'.NXXRH[NY]. 'I.Illl'.0.0000.9.9999.retSS.retrieveSS.15.0); 34: GETNUM(72.18.7.'N'.HP[NY]. 'llll.li'.0000.00.9999.99.retSS.retrieveSS.15.0); 35: GETNUM(75.20.4.'N'.HHTPT[NY]. 'l.ll'.0.00.9.99.retSS.retrieveSS.15.0); 36: GETNUM(75.22.4.'N'.HHTYT[NY]. 'll.l'.0.0.99.9.retSS.retrieveSS.15.0); END; { CASE } if varSS-screen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in "retSS". Set "varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE; actionSS IstaySS; varSS:=I: end else last_fieldSS:IFALSE: UNTIL actionSSIexitSS END; { OVERLAY PROCEDURE SCREEN_Z } OVERLAY PROCEDURE SCREEN_B; { EXOGENOUS VARIABLE SUMMARY SCREEN 3 } BEGIN screenSS:-12: screen_fieldSS:I36; varSS:I1; retrieveSS:IFALSE; last_fieldSS:IFALSE; DISPLAY_SCREEN('EXOGVAR3.SCR'.file_existSS): { Display Screen } if not file_existSS then begin gotoxy(I.I); write('Missing Screen EXOGVARS') end; retSS:I"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of 1: GETNUM(43.5.2.'N'.YEAR[NY-3]. 251 'Il'.0.0.99.0.retSS.FALSE.15.0); GETNUM(46.5.2.'N'.YEARB[NY-3]. 'll'.0.0.99.0.retSS.FALSE.15.0): GETNUM(54.5.2.'N’.YEAR[NY-2]. 'II'.0.0.99.0.retSS.FALSE.15.0): GETNUM(57.5.2.'N'.YEARB[NY-2]. 'il'.0.0.99.0.retSS.FALSE.15.0); GETNUM(64.5.2.'N'.YEAR[NY-1]. 'll'.0.0.99.0.retSS.FALSE.15.0): GETNUM(67.5.2.'N'.YEARB[NY-1]. 'II'.0.0.99.0.retSS.FALSE.15.0): GETNUM(74.5.2.'N'.YEAR[NY]. 'll'.0.0.99.0.retSS.FALSE.15.0): GETNUM(77.5.2.'N'.YEARB[NY]. 'il'.0.0.99.0.retSS.FALSE.15.0); 9: GETNUM(42.10.6.'N'.DANUM[NY-3]. 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 'Il.#!l'.0.000.99.999.retSS.FALSE.15.0); GETNUM(42.12.6.'N'.COFNUM[NY-3]. 'Ii.l#l'.0.000.99.999.retSS.FALSE.15.0); GETNUM(42.14.6.'N'.OBCNUM[NY-3]. 'Ii.l#l'.0.000.99.999.retSS.FALSE.15.0); GETNUM(41.16.7.'N'.HPCNUM[NY-3]. 'lll.lll'.0.000.999.999.retSS.FALSE.15.0); GETNUM(41.IB.7.'N'.BRONUM[NY-3]. 'lll#.#l'.0.00.9999.99.retSS.FALSE.15.0); GETNUM(4I.20.7.'N'.TURNUM[NY-3]. 'III.!#I'.0.000.999.999.retSS.FALSE.15.0); GETNUM(42.22.6.'N'.HOGNUM[NY-3]. 'II.IIF'.0.000.99.999.retSS.FALSE.15.0): GETNUM(53.IO.6.'N'.DANUM[NY-2]. 'Il.lll'.0.000.99.999.retSS.FALSE.15.0); GETNUM(53.12.6.'N'.COFNUM[NY-2]. 'll.lil'.0.000.99.999.retSS.FALSE.15.0); GETNUM(53.I4.6.'N'.OBCNUM[NY-2]. 'Il.l#l'.0.000.99.999.retSS.FALSE.15.0); GETNUM(52.16.7.'N'.HPCNUM[NY-2]. 'iii.lll'.0.000.999.999.retSS.FALSE.15.0); GETNUM(52.18.7.'N'.BRONUM[NY-2]. 'llll.li'.0.00.9999.99.retSS.FALSE.15.0); GETNUM(52.20.7.'N'.TURNUM[NY-2]. 'lll.#fl'.0.000.999.999.retSS.FALSE.15.0); GETNUM(53.22.6.'N'.HOGNUM[NY-2]. 'fil.lll'.0.000.99.999.retSS.FALSE.15.0); GETNUM(63.10.6.'N'.DANUM[NY-l]. 'II.#II'.0.000.99.999.retSS.FALSE.15.0); GETNUM(63.12.6.'N'.COFNUM[NY-1]. 'll.l#l'.0.000.99.999.retSS.FALSE.15.0); GETNUM(63.14.6.'N'.OBCNUM[NY-I]. 'II.III'.0.000.99.999.retSS.FALSE.15.0); GETNUM(62.16.7.'N'.HPCNUM[NY-1]. 'Iil.lll'.0.000.999.999.ret$S.FALSE.15.0); GETNUM(62.18.7.'N'.BRONUM[NY-l]. 'Illl.l#'.0.00.9999.99.retSS.FALSE.15.0); GETNUM(62.20.7.'N'.TURNUM[NY-1]. 2552 'lll.lll'.0.000.999.999.retSS.FALSE.15.0): 29: GETNUM(63.22.6.'N'.HOGNUM[NY-1]. 'l!.ll!'.0.000.99.999.retSS.FALSE.15.0); 30: GETNUM(73.10.6.'N'.DANUM[NY]. 'll.lll'.0.000.99.999.retSS.retrieveSS.15.0); 31: GETNUM(73.12.6.'N'.COFNUM[NY]. 'l!.lll'.0.000.99.999.retSS.retrieveSS.15.0); 32: GETNUM(73.14.6.'N'.OBCNUM[NY]. 'll.ll0'.0.000.99.999.retSS.retrieveSS.15.0); 33: GETNUM(72.16.7.'N'.HPCNUM[NY]. 'lll.lll'.0.000.999.999.retSS.retrieveSS.15.0); 34: GETNUM(72.18.7.'N'.BRONUM[NY]. 'Illl.ll'.0.00.9999.99.retSS.retrieveSS.15.0); 35: GETNUM(72.20.7.’N'.TURNUM[NY]. 'lll.lll'.0.000.999.999.retSS.retrieveSS.15.0); 36: GETNUM(73.22.6.'N'.HOGNUM[NY]. '01.!!l'.0.000.99.999.retSS.retrieveSS.15.0); END; { CASE } if varSS-screen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in "retSS”. Set "varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE; actionSS:IstaySS; varSS:=l; end else last_fieldSS:IFALSE; UNTIL actionSSIexitSS END; { OVERLAY PROCEDURE SCREEN_3 } OVERLAY PROCEDURE SCREEN_3A: {B:EXOGVAR 3A I BEGIN screenSS:-13; screen_fieldSS:I44; varSS:Il: retrieveSS:IFALSE; last_fieldSS:IFALSE; DISPLAY_SCREEN('EXOVAR3A.SCR'.file_existSS); { Display Screen } if not file_existSS then begin gotoxy(I.I); write('Missing Screen EXOVAR3A') end; retSS:I"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of 1: GETNUM(43.5.2.'N'.YEAR[NY-3]. 'll'.0.0.99.0.retSS.FALSE.15.0); 2: GETNUM(46.5.2.'N'.YEARB[NY-3]. 'Il'.0.0.99.0.retSS.FALSE.15.0); 3: GETNUM(54.5.2.'N'.YEAR[NY-2]. 'Il'.0.0.99.0.retSS.FALSE.15.0); 4: GETNUM(57.5.2.'N'.YEARB[NY-2]. 'll'.0.0.99.0.retSS.FALSE.15.0); 5: GETNUM(64.5.2.'N'.YEAR[NY-1]. IO: 11: 12: I3: 14: 15: 16: I7: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: .2553 'll'.0.0.99.0.retSS.FALSE.15.0); GETNUH(67.5.2.'N'.YEARB[NY-1]. 'll'.0.0.99.0.retSS.FALSE.15.0); : GETNUM(74.5.2.'N'.YEAR[NY], 'll'.0.0.99.0.retSS.FALSE.15.0): GETNUM(77.5.2.'N'.YEARB[NY]. 'Il'.0.0.99.0.retSS.FALSE.15.0); GETNUM(42.7.G.'N'.SMPT[NY-3]. 'lll.ll'.0.00.999.99.retSS.FALSE.15.0): GETNUM(43.9.5.'N'.HOGP[NY-3]. 'OI.II'.0.00.99.99.retSS.FALSE.15.0); GETNUM(43.11.5.'N'.BEFSTRP[NY-3]. 'll.!l'.0.00.99.99.retSS.FALSE.15.0): GETNUM(43.13.5.'N'.MILKP[NY-3]. 'll.ll'.0.00.99.99.retSS.FALSE.15.0): GETNUN(43.IS.5.'N'.BC0vP[NY-3]. 'll.ll'.0.00.99.99.retSS.FALSE.15.0); GETNUM(44.17.4.'N'.SETASIDE_ACRES[NY-3]. 'II.I'.0.0.99.9.retSS.FALSE.15.0); GETNUM(43.19.5.'N'.MIN_FREE_STOCKS[NY—3]. 'Ill.l'.0.0.999.9.retSS.FALSE.15.0): GETNUM(42.ZI.6.'N'.FSI_USE[NY-3]. 'lll#.l'.0.0.9999.9.retSS.FALSE.15.0); GETNUM(41.23.7.'N'.PCNT_OF_XPORTS[NY-3]. 'l.lllil'.0.0.I.0.retSS.FALSE.15.0): GETNUM(53.7.6.'N'.SMPT[NY-2]. ’lll.ll'.0.00.999.99.retSS.FALSE.15.0); GETNUM(54.9.5.'N'.HOGP[NY-2]. 'll.ll’.0.00.99.99.retSS.FALSE.IS.0); GETNUM(54.11.S.'N'.BEFSTRP[NY-2]. 'll.ll'.0.00.99.99.retSS.FALSE.15.0); GETNUM(S4.13.5.'N'.MILKP[NY-2]. 'Il.ll'.0.00.99.99.retSS.FALSE.15.0); GETNUM(54.15.S.'N'.BCOHP[NY-2]. 'll.ll'.0.00.99.99.retSS.FALSE.15.0): GETNUN(55.17.4.'N'.SETASIDE_ACRES[NY-2]. 'll.l'.0.0.99.9.retSS.FALSE.15.0); GETNUM(54.I9.5.'N'.MIN_FREE_STOCKS[NY-2]. 'Iil.l'.0.0.999.9.retSS.FALSE.15.0); GETNUM(53.21.6.'N'.FSI_USE[NY-2]. 'IIII.I'.0.0.9999.9.retss.FALSE.15.0); GETNUH(52.23.7.'N'.PCNT_0F_XP0RTS[NY-2]. 'l.lllll'.0.0.I.0.retSS.FALSE.15.0); GETNUM(G3.7.6.'N'.SMPT[NY-I]. 'Ill.l!'.0.00.999.99.retSS.FALSE.15.0); GETNUM(G4.9.5.'N'.HOGP[NY-I]. 'tt.tl'.0.00.99.99.retSS.FALSE.15.0); GETNUM(64.II.5.'N'.BEFSTRP[NY-I]. 'll.ll'.0.00.99.99.retSS.FALSE.15.0); GETNUM(64.13.5.'N'.MILKP[NY-I]. 'to.rt'.0.00.99.99.retSS.FALSE.15.0); GETNUM(64.15.5.'N'.BCOHP[NY-I]. 'll.ll'.0.00.99.99.retSS.FALSE.15.0); GETNUM(65.I7.4.'N'.SETASIDE_ACRES[NY-I]. .2554 'Il.l'.0.0.99.9.retSS.FALSE.15.0); 33: GETNUM(64.19.5.'N'.MIN_FREE_STOCKS[NY-l]. 'III.I'.0.0.999.9.retSS.FALSE.15.0); 34: GETNUM(63.21.6.'N'.FSI_USE[NY-1]. 'Iiil.l'.0.0.9999.9.retSS.FALSE.15.0); 35: GETNUM(62.23.7.'N'.PCNT_OF_XPORTS[NY-l]. 'I.illll'.0.0.I.0.retSS.FALSE.15.0); 36: GETNUM(73.7.6.'N'.SMPT[NY]. 'lll.ll'.0.00.999.99.retSS.retrieveSS.15.0); 37: GETNUM(74.9.5.'N'.HOGP[NY]. 'll.ll'.0.00.99.99.retSS.retrieveSS.15.0); 38: GETNUM(74.11.5.'N'.BEFSTRP[NY]. 'll.ll'.0.00.99.99.retSS.retrieveSS.15.0); 39: GETNUM(74.13.5.'N'.MILKP[NY]. 'li.ll'.0.00.99.99.retSS.retrieveSS.15.0); 40: GETNUM(74.IS.5.'N'.BCOHP[NY]. 'II.II'.0.00.99.99.retSS.retrieveSS.15.0); 41: GETNUM(75.I7.4.'N'.SETASIOE_ACRES[MY]. 'l!.l'.0.0.99.9.retSS.retrieveSS.15.0); 42: GETNUM(74.19.5.'N'.MIN_FREE_STOCKS[NY]. 'Ill.l'.0.0.999.9.ret$$.retrieveSS.15.0); 43: GETNUM(73.21.6.'N'.FSI_USE[NY]. 'IlII.I'.0.0.9999.9.retSS.retrieveSS.15.0); 44: GETNUM(72.23.7.'N'.PCNT_OF_XPORTS[NY]. 'I.!llii'.0.0.1.0.retSS.retrieveSS.15.0); END; { CASE } if varSS-screen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in ”retSS”. Set "varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE; actionSS:IstaySS; varSS:=1; end else last_fieldSS:IFALSE; UNTIL actionSS-exitSS END; { OVERLAY PROCEDURE SCREEN_3A } OVERLAY PROCEDURE SCREEN_4; { EXOGENOUS VARIABLE SUMMARY SCREEN 4 } BEGIN screenSS:I14; screen_fieldSS:I34; varSS:II; retrieveSS:IFALSE; last_fieldSS:IFALSE; DISPLAY_SCREEN('EXOGVAR4.SCR'.file_existSS); { Display Screen } if not file_existSS then begin gotoxy(I.I); write('Missing Screen EXOGVAR4') end; ’retSS:I"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of I: GETNUM(44.5.2.'N'.YEAR[NY-3]. 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 255 'II'.0.0.99.0.retSS.FALSE.15.0); GETNUM(47.5.2.'N'.YEARB[NY-3]. 'll'.0.0.99.0.retSS.FALSE.15.0); GETNUM(54.5.2.'N'.YEAR[NY-2]. 'll'.0.0.99.0.retSS.FALSE.15.0); GETNUM(57.5.2.'N'.YEARB[NY-2]. 'II'.0.0.99.0.retSS.FALSE.15.0); GETNUM(64.5.2.'N'.YEAR[NY-1]. 'Il'.0.0.99.0.retSS.FALSE.15.0); GETNUM(67.5.2.'N'.YEARB[NY-1]. 'Il'.0.0.99.0.retSS.FALSE.15.0); GETNUM(74.5.2.'N'.YEAR[NY]. 'll'.0.0.99.0.retSS.FALSE.15.0); GETNUM(77.5.2.'N'.YEARB[NY]. 'll'.0.0.99.0.retSS.FALSE.15.0); GETNUM(40.7.9.'N’.IPOP[NY-3]. 'lllilll.l'.0.0.9999999.9.retSS.FALSE.15.0); GETNUM(41.9.8.'N'.IGOP[NY-3]. 'I.IIIIII'.0.000000.9.999999.retSS.FALSE.15.0); GETNUM(41.11.8.'N'.IHA[NY-3]. 'ICIIII.I'.0.0.999999.9.retSS.FALSE.15.0); GETNUM(43.14.6.'N'.EFREV[NY-3]. 'l.lil#'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(43.16.6.'N'.EHREV[NY-3]. 'I.I#li'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(42.18.7.'N'.EPOP[NY-3]. 'lllll.l'.0.0.99999.9.retSS.FALSE.15.0); GETNUM(41.20.8.'N'.EGOP[NY-3]. ’I.llllll'.0.000000.9.999999.retSS.FALSE.15.0); GETNUM(50.7.9.'N'.IPOP[NY-2]. 'IIIIIII.I'.0.0.9999999.9.retSS.FALSE.15.0); GETNUM(51.9.8.'N'.IGDP[NY-2]. 'l.lillll'.0.000000.9.999999.retSS.FALSE.15.0); GETNUM(51.11.B.'N'.IHA[NY-2]. 'lllill.l'.0.0.999999.9.retSS.FALSE.15.0); GETNUM(53.14.6.'N'.EFREV[NY-2]. 'IIPIII'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(53.16.6.'N'.EHREV[NY-2]. 'l.llll'.0.9999.9.9999.retSS.FALSE.15.0); GETNUM(52.18.7.’N'.EPOP[NY-2]. 'lllll.l'.0.0.99999.9.retSS.FALSE.15.0); GETNUM(51.20.8.'N'.EGDP[NY-2]. 'I.I#Illl'.0.000000.9.999999.retSS.FALSE.15.0); GETNUM(60.7.9.'N'.IPOP[NY-1]. 'Illilll.l'.0.0.9999999.9.retSS.FALSE.15.0); GETNUM(61.9.8.'N'.IGDP[NY-1]. '#.Illlll'.0.000000.9.999999.retSS.FALSE.15.0); GETNUM(61.11.8.'N'.IHA[NY-1]. 'IIIIII.I'.0.0.999999.9.retSS.FALSE.15.0); GETNUM(63.14.6.'N'.EFREV[NY-I]. 'l.llll'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(63.16.6.'N'.EHREV[NY-1]. 'l.llll'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(62.18.7.'N'.EPOP[NY-I]. 22565 'llill.l'.0.0.99999.9.retSS.FALSE.15.0); 29: GETNUM(61.20.B.'N'.EGDP[NY-I]. 'l.llllll'.0.000000.9.999999.retSS.FALSE.15.0); 30: GETNUM(70.7.9.'N'.IPOP[NY]. 'iliilll.l'.0.0.9999999.9.retSS.retrieveSS.15.0); 31: GETNUM(71.9.8.'N'.IGOP[NY]. 'l.llllll’.0.000000.9.999999.retSS.retrieveSS.15.0); 32: GETNUM(71.11.8.'N'.IHA[NY]. 'Iillll.l'.0.0.999999.9.retSS.retrieveSS.15.0); 33: GETNUM(72.18.7.'N'.EPOP[NY]. 'Illll.l'.0.0.99999.9.retSS.retrieveSS.15.0); 34: GETNUM(71.20.8.'N'.EGDP[NY]. 'I.IIIIII'.0.000000.9.999999.retSS.retrieveSS.15.0); END; { CASE } if varSSIscreen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in "retSS". Set "varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE; actionSS:IstaySS; varSS:Il; end else last_fieldSS:IFALSE; UNTIL actionSSIexitSS END; { OVERLAY PROCEDURE SCREEN_4 } ***** End of Include file MAGICI.INC ***** OVERLAY procedure US_COMPOSITE_VARIABLES; { A SUB MENU UNDER EXOGENOUS VARIABLE SUB MENU } ***** Beginning of Include file MAGICZ.INC ***** {$1 MAGIC2.INC} { US COMPOSITES } OVERLAY PROCEDURE US_COMPOSITES_SCREEN_1: { B:EXOGVARS } BEGIN screenSS:I15; screen_fieldSS:I32; varSS:II; retrieveSS:IFALSE; last_fieldSS:IFALSE; DISPLAY_SCREEN('EXOGVAR5.SCR'.file_existSS): { Display Screen } if not file_existSS then begin gotoxy(I.I); write('Missing Screen EXOGVARS') end; retSS:I"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of 1: GETNUM(41.4.2.'N'.YEAR[NY-3]. 'li'.0.0.99.0.retSS.FALSE.15.0); 2: BEGIN YEARB[NY-3]:IYEAR[NY-3]+1; GETNUM(44,4.2.'N'.YEARB[NY-3]. 'li'.0.0.99.0.retSS.FALSE.15.0); END; 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 2557 GETNUM(52.4.2.'N'.YEAR[NY-2]. 'II'.0.0.99.0.retSS.FALSE.15.0); BEGIN YEARB[NY-2]:IYEAR[NY-2]+1; GETNUM(55.4.2.'N'.YEARB[NY-2]. 'II'.0.0.99.0.retSS.FALSE.15.0); END; GETNUM(63.4.2.'N'.YEAR[NY-I]. 'li'.0.0.99.0.retSS.FALSE.15.0); BEGIN YEARB[NY-1]:IYEAR[NY-1]+1; GETNUM(66.4.2.'N'.YEARB[NY-l]. 'Il'.0.0.99.0.retSS.FALSE.15.0); END; GETNUM(74.4.2.'N'.YEAR[NY]. 'll'.0.0.99.0.retSS.FALSE.15.0); BEGIN YEARB[NY]:IYEAR[NY]+I; GETNUM(77.4.2.'N'.YEARB[NY]. 'li'.0.0.99.0.retSS.FALSE.15.0); END; GETNUM(4I.II.5.'N'.ARP[NY-3]. 'l.l#l'.0.000.9.999.retSS.FALSE.15.0); GETNUM(41.13.5.'N'.DIVERSION[NY-3]. 'I.lli'.0.000.9.999.retSS.FALSE.15.0); GETNUM(42.15.4.'N'.GROSS[NY-3]. 'I.I#'.0.00.9.99.retSS.FALSE.15.0); BEGIN BAL[NY-3]:I(I.O - (ARP[NY-3] + DIVERSION[NY-3])); GETNUM(41.IB.S.'N'.BAL[NY-3]. '!.Il#'.0.000.9.999.retSS.FALSE.15.0); END; GETNUM(4I.20.5.'N'.PYIELD[NY-3]. 'ill.l'.0.0.999.9.retSS.FALSE.15.0); BEGIN PARREV[NY-3]:IGROSS[NY-3]*BAL[NY-3]*PYIELD[NY-3]; GETNUM(40.22.6.'N'.PARREV[NY-3]. 'Il#.##'.000.00.999.99.retSS.FALSE.15.0); END; GETNUM(52.11.5.'N'.ARP[NY-2]. '!.I#l'.0.000.9.999.retSS.FALSE.15.0); GETNUM(52.13.5.'N'.DIVERSION[NY-2]. 'l.l#l'.0.000.9.999.retSS.FALSE.15.0); GETNUM(53.15.4.'N'.GROSS[NY-2]. 'I.II'.0.00.9.99.retSS.FALSE.15.0); BEGIN BAL[NY-2]:I(I.0 - (ARP[NY—Z] + DIVERSION[NY-2])); GETNUM(52.18.5.'N'.BAL[NY-2]. 'I.lll'.0.000.9.999.retSS.FALSE.15.0); END; GETNUM(52.20.5.'N'.PYIELD[NY-2]. '##f.l'.0.0.999.9.retSS.FALSE.15.0); BEGIN PARREV[NY-2]:IGROSS[NY-2]*BAL[NY-2]*PYIELD[NY-2]; 2558 GETNUM(51.22.6.'N'.PARREV[NY-2]. 'lll.ll'.0.00.999.99.retSS.FALSE.15.0); END; 21: GETNUM(63.11.5.'N'.ARP[NY-1]. 'I.Ill'.0.000.9.999.retSS.FALSE.15.0); 22: GETNUM(63.13.5.'N'.DIVERSION[NY-l]. 'l.#ll'.0.000.9.999.retSS.FALSE.15.0); 23: GETNUM(64.15.4.'N'.GROSS[NY-1]. 'l.l#'.0.00.9.99.retSS.FALSE.15.0); 24: BEGIN BAL[NY-I]:I(1.0 - (ARP[NY-I] + DIVERSION[NY-1])); GETNUM(63.18.5.'N'.BAL[NY-1]. 'l.lll'.0.000.9.999.retSS.FALSE.IS.0); END; 25: GETNUM(63.20.5.'N'.PYIELD[NY-1]. 'Ill.l'.0.0.999.9.retSS.FALSE.15.0); 26: BEGIN PARREV[NY-1]:IGROSS[NY-I]*BAL[NY-1]*PYIELD[NY-1]; GETNUM(62.22.6.'N'.PARREV[NY-I]. 'lll.#l'.0.00.999.99.retSS.FALSE.15.0); END; 27: GETNUM(74.11.5.'N'.ARP[NY], 'I.lll'.0.000.9.999.retSS.retrieveSS.15.0); 28: GETNUM(74.13.5.'N'.DIVERSION[NY]. 'I.Il#'.0.000.9.999.retSS.retrieveSS.15.0); 29: GETNUM(75.15.4.'N'.GROSS[NY]. 'I.II'.0.00.9.99.retSS.retrieveSS.15.0); 30: BEGIN BAL[NY]:I{1.O - (ARP[NY] + DIVERSION[NY])); GETNUM(74.IB.5.'N'.BAL[NY]. 'I.ill'.0.000.9.999.retSS.FALSE.15.0); END; 31: GETNUM(74.20.5.'N'.PYIELD[NY]. 'lil.l'.0.0,999.9.retSS.retrieveSS.15.0); 32: BEGIN PARREV[NY]:IGROSS[NY]*BAL[NY]*PYIELD[NY]; GETNUM(73.22.6.'N'.PARREV[NY]. 'IFI.##'.0.00.999.99.retSS.FALSE.15.0); END: END; { CASE } if varSS-screen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in "retSS”. Set ”varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE; actionSS:IstaySS; varSS:I1; end else last_fieldSS:IFALSE; UNTIL actionSSIexitSS END; { OVERLAY PROCEDURE US_COMPOSITES_SCREEN_I } 2559I OVERLAY PROCEDURE US_COMPOSITES_SCREEN_2; { BzEXOVARSA } BEGIN screenSS:I16; screen_fieldSS:I24; varSS:-I; retrieveSS:IFALSE: last_fieldSS:IFALSE; DISPLAY_SCREEN('EXOVARSA.SCR'.file_existSS): { Display Screen I if not file_existSS then begin gotoxy(I.I); write('Missing Screen EXOVARSA') end; retSS:I"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of I: GETNUM(41.5.2.'N'.YEAR[NY-3]. 'Il'.0.0.99.0.retSS.FALSE.15.0); 2: GETNUM(44.5.2.'N'.YEARB[NY-3]. 'II'.0.0.99.0.retSS.FALSE.15.0): 3: GETNUM(52.5.2.'N'.YEAR[NY-2]. 'll'.0.0.99.0.retSS.FALSE.15.0); 4: GETNUM(55.5.2.'N'.YEARB[NY-2]. 'II'.0.0.99.0.retSS.FALSE.15.0); 5: GETNUM(63.5.2.'N'.YEAR[NY-I]. 'II'.0.0.99.0.retSS.FALSE.15.0); 6: GETNUM(66.5.2.'N'.YEARB[NY-I]. 'II'.0.0.99.0.retSS.FALSE.15.0); 7: GETNUM(74.5.2.'N'.YEAR[NY]. 'II'.0.0.99.0.retSS.FALSE.15.0); B: GETNUM(77.5.2.'N'.YEARB[NY]. 'Il'.0.0.99.0.retSS.FALSE.15.0); 9: GETNUM(42.13.4.'N'.DVPCN[NY-3]. 'l.ll'.0.00.9.99.retSS.FALSE.15.0}; IO: GETNUM(41.16.5.'N'.DIVERSION[NY-3]. ".!l".0.000.9.999.retSS.FALSE.15.013 11: GETNUM(41.19.5.'N'.PYIELD[NY-3]. 'III.".0.0.999.9.retSS.FALSE.15.0); 12: BEGIN DIVPAY[NY-3]:IDVPCN[NY-3]*DIVERSION[NY-3]*PYIELD[NY-3]: GETNUM(40.21.6.'N'.DIVPAY[NY-3]. 'I'I.ll'.O.DO.999.99.retSS.FALSE.15.0); END; 13: GETNUM(53.13.4.'M'.DVPCN[NY-2]. ".'I'.0.00.9.99.retSS.FALSE.15.0); I4: GETNUM(52.16.5.'N'.DIVERSION[NY-2]. 'l.lll'.0.000.9.999.retSS.FALSE.15.0); 15: GETNUM(52.19.5.'N'.PYIELD[NY-2]. 'II!.I'.0.0.999.9.retSS.FALSE.15.0); 16: BEGIN DIVPAY[NY-2]:IDVPCN[NY-2]*DIVERSION[NY-2]*PYIELD[NY-2]; GETNUM(51.21.6.'N'.DIVPAY[NY-2]. 'lll.ll'.0.00.999.99.retSS.FALSE.15.0): END: 17: GETNUM(64.I3.4.'N'.DVPCN[NY-1]. 215C) 'l.ll'.0.00.9.99.retSS.FALSE.15.0): 18: GETNUM(63.16.5.'N'.DIVERSION[NY-I]. 'I.III'.0.000.9.999.retSS.FALSE.15.0); 19: GETNUM(63.19.5.‘N'.PYIELD[NY-I]. ’lll.l'.0.0.999.9.retSS.FALSE.15.0): 20: BEGIN DIVPAY[NY-1]:IDVPCN[NY-I]*DIVERSION[NY-1]'PYIELD[NY-1]; GETNUM(62.21.6.'N'.DIVPAY[NY-I]. 'Ill.ll'.0.00.999.99.retSS.FALSE.15.0); END; 21: GETNUM(75.13.4.'N'.OVPCN[NY]. 'l.ll'.0.00.9.99.retSS.retrieveSS.15.0); 22: GETNUM(74.16.5.'N'.OIVERSION[NY]. 'I.III'.0.000.9.999.retSS.retrieveSS.15.0); 23: GETNUM(74.I9.5.'N'.PY1ELO[NY]. 'lll.l'.0.0,999.9.retSS.retrieveSS.15.0); 24: BEGIN DIVPAY[NY]:IDVPCN[NY]'DIVERSION[NY]*PY1ELD[NY]; GETNUM(73.21.6.'N'.DIVPAY[NY]. ’Ill.ll'.0.00.999.99.retSS.FALSE.15.0); END; END; { CASE } if varSS-screen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in ”retSS”. Set ”varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE; actionSS:IstaySS; varSS I1; end else last_fieldSS:IFALSE; UNTIL actionSS-exitSS END; { OVERLAY PROCEDURE US_COMPOSITES_SCREEN_2 } OVERLAY PROCEDURE US_COMPOSITES_SCREEN_3: { B:EXOVARSB } BEGIN screenSS:II7; screen_fieldSS:I40; varSS:I1; retrieveSS:IFALSE; last_fieldSS:IFALSE; DISPLAY_SCREEN('EXOVARSB.SCR'.file_existSS); { Display Screen } if not file_existSS then begin gotoxy(I.I); write('Missing Screen EXOVARSB') end; retSS:I"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of I: GETNUM(4I.4.2.'N'.YEAR[NY-3]. 'Il'.0.0.99.0.retSS.FALSE.15.0); Z: GETNUM(44.4.2.'N'.YEARB[NY-3]. IO: 11: 12: 13: 14: IS: 16: 17: 18: 19: 20: 21: 22: 261 'll'.0.0.99.0.retSS.FALSE.15.0); GETNUM(52.4.2.'N'.YEAR[NY-2]. 'll'.0.0.99.0.retSS.FALSE.15.0); GETNUM(55.4.2.'N'.YEARB[NY-2]. 'll'.0.D.99.0.ret$S.FALSE.15.0); GETNUM(63.4.2.'N'.YEAR[NY-I]. 'll'.0.0.99.0.retSS.FALSE.15.0); GETNUM(66.4.2.'N'.YEARB[NY-1]. 'II'.0.0.99.0.retSS.FALSE.15.0); GETNUM(74.4.2.'N'.YEAR[NY]. 'll'.0.0.99.0.retSS.FALSE.15.0); GETNUM(77.4.2.'N'.YEARB[NY]. 'll'.0.0.99.0.retSS.FALSE.15.0); GETNUM(41.B.5.'N'.ARP[NY-3]. 'l.ll!'.0.000.9.999.retSS.FALSE.15.0): GETNUM(41.10.5.'N'.DIVERSION[NY-3]. 'I.lll'.0.000.9.999.retSS.FALSE.15.0); GETNUM(42.12.4.'N'.C_TARGETP[NY-3]. 'l.l#'.0.00.9.99.retSS.FALSE.15.0); GETNUM(42.I4.4.'N'.GROSS[NY-3]. 'l.ll'.0.00.9.99.retSS.FALSE.15.0); BEGIN DPAY[NY-3]:IC_TARGETP[NY-3]-GROSS[NY-3]; IF DPAY[NY-3] < 0.0 THEN DPAY[NY-3]:IO.0; GETNUM(42.I7.4.'N'.DPAY[NY-3]. 'l.ll'.0.00.9.99.retSS.FALSE.15.0); END; BEGIN . BAL[NY-3]:I(I.0 - (ARP[NY-3] + DIVERSION[NY-3])); GETNUM(41.19.5.'N'.BAL[NY-3]. 'l.lll'.0.000.9.999.retSS.FALSE.15.0); END; GETNUM(4I.21.5.'N'.PYIELO[NY-3]. 'III.I'.0.0.999.9.retSS.FALSE.15.0); BEGIN DEFPAY[NY-3]:IDPAY[NY-3]'BAL[NY-3]*PYIELD[NY-3]; GETNUM(40.23.6.'N'.DEFPAY[NY-3]. 'lll.ll'.0.00.999.99.retSS.FALSE.15.0): END; GETNUM(52.B.S.'N'.ARP[NY-2]. 'l.lll'.0.000.9.999.retSS.FALSE.15.0); GETNUM(52.10.5.'N'.DIVERSION[NY-2]. 'I.#ll'.0.000.9.999.retSS.FALSE.15.0); GETNUM(53.12.4.'N'.C_TARGETP[NY-2]. 'l.ll'.0.00.9.99.retSS.FALSE.15.0); GETNUM(53.14.4.'N'.GROSS[NY-2]. 'I.Il'.0.00.9.99.retSS.FALSE.15.0); BEGIN DPAY[NY-2]:IC_TARGETP[NY-2]-GROSS[NY-2]; 1F DPAY[NY-2] < 0.0 THEN DPAY[NY-2]:I0.O; GETNUM(53.17.4.'N'.0PAY[NY-2]. 'I.#l'.0.00.9.99.retSS.FALSE.15.0); END: BEGIN 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 262 BAL[NY-2]:I(I.0 - (ARP[NY-Z] + DIVERSION[NY-2])); GETNUM(52.19.5.'N'.BAL[NY-2]. 'l.lll'.0.000.9.999.retSS.FALSE.15.0); END; GETNUM(52.21.5.'N'.PYIELD[NY-2]. 'lfl.l'.0.0.999.9.retSS.FALSE.15.0); BEGIN DEFPAY[NY-2]:IDPAY[NY-2]*BAL[NY-2]*PYIELD[NY-2]; GETNUM(51.23.6.'N'.DEFPAY[NY-2]. 'lli.l#'.0.00.999.99.retSS.FALSE.15.0); END; GETNUM(63.B.5.'N'.ARP[NY-1]. 'l.lll'.0.000.9.999.retSS.FALSE.15.0); GETNUM(63.10.5.'N'.DIVERSION[NY-1]. ’I.III'.0.000.9.999.retSS.FALSE.15.0); GETNUM(64.12.4.'N'.C_TARGETP[NY-I]. 'l.li'.0.00.9.99.retSS.FALSE.15.0); GETNUM(64.14.4.'N'.GROSS[NY-I]. 'l.ll'.0.00.9.99.retSS.FALSE.15.0); BEGIN DPAY[NY—I]:=C_TARGETP[NY-I]-GROSS[NY-l]: 1F DPAY[NY-1] < 0.0 THEN DPAY[NY-l]:I0.0; GETNUM(64.I7.4.'N'.DPAY[NY-1]. 'l.l#'.0.00.9.99.retSS.FALSE.15.0); END; BEGIN BAL[NY-1]:I(1.0 - (ARP[NY-I] + DIVERSION[NY-l])); GETNUM(63.19.5.'N'.BAL[NY-I]. 'l.li#'.0.000.9.999.retSS.FALSE.15.0); END; GETNUM(63.21.5.'N'.PYIELD[NY-I]. '#ll.#'.0.0.999.9.retSS.FALSE.15.0); BEGIN DEFPAY[NY-1]:IOPAY[NY-1]*BAL[NY-I]*PYIELD[NY-I]; GETNUM(62.23.6.'N'.DEFPAY[NY-1]. 'lli.ii'.0.00.999.99.retSS.FALSE.15.0); END; GETNUM(74.B.S.'N'.ARP[NY]. 'I.Il#'.0.000.9.999.retSS.retrieveSS.15.0); GETNUM(74.10.5.'N'.DIVERSION[NY]. 'l.ll#'.0.000.9.999.retSS.retrieveSS.15.0); GETNUM(7S.12.4.'N'.C_TARGETP[NY]. 'l.##'.0.00.9.99.retSS.retrieveSS.15.0); GETNUM(75.14.4.'N'.GROSS[NY]. 'I.ll'.0.00.9.99.retSS.retrieveSS.15.0); BEGIN DPAY[NY]:IC_TARGETP[NY]-GROSS[NY]; IF DPAY[NY] < 0.0 THEN DPAY[NY]:I0.0: GETNUM(75.17.4.'N'.DPAY[NY]. 'I.Il'.0.00.9.99.retSS.FALSE.15.0); END; BEGIN BAL[NY]:I(1.O - (ARP[NY] + DIVERSION[NY])); GETNUM(74.19.S.'N’.BAL[NY]. ivk E 39: G 2453 'I.II!'.0.000.9.999.retSS.FALSE.15.0); ND: ETNUM(74.21.5.'N'.PY1ELD[NY]. 'l#l.l'.0.0.999.9.retSS.retrieveSS.15.0); 40: B E END; if v EGIN DEFPAY[NY]:IDPAY[NY]*BAL[NY]*PYIELD[NY]; GETNUM(73.23.6.'N'.DEFPAY[NY]. 'III.II'.0.00.999.99.retSS.FALSE.15.0); ND; { CASE } arSSIscreen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in ”retSS". Set ”varSS" and ”actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE; actionSS:IstaySS; varSS:=1; end else last_fieldSS:=FALSE; UNTIL actionSS=exitSS END; { OVERLAY PROCEDURE US COMPOSITES SCREEN 3 } ***** End of Include file MAGIC2.INC ***** BEGIN REPEAT IF (EDIT=FALSE) AND (BACTIVE=FALSE) THEN BEGIN COLOR(HHITE.BLACK); CLRSCR; FLASHUP('H=USCOMPOS.NOESC.NOMOVE'); GOTOXY(I.25); REAO(RESPONSE); CLREOL: FLASHUP('CIALL'); END: CASE (RESPONSE) OF '1': US_COMPOSITES_SCREEN_I: { GOVT PARTICIPANTS REV. } '2': US_COMPOSITES_SCREEN_2; { DIVERSION PAYMENTS } '3': US_COMPOSITES_SCREEN_3: { DEFFICIENCY PAYMENTS } '4': FSI_USE_SCREEN; '5':: END; {CASE} 1F (RESPONSE <> '5') THEN HHATMENU(BSCREEN.BACTIVE.UB); UNTIL (RESPONSE I '5'); END; { PROCEDURE US COMPOSITES } ***** Beginning of Include file MAGIC3.INC ***** {$1 MAGIC3.INC} { IMPORTERS GDP } OVERLAY PROCEDURE IMPORTERS_GDP_SCREEN_I; { B:EXOGVAR6 } BEGIN 2554 screenSS:I18: screen_fieldSS:I31: varSS:I1; retrieveSS:IFALSE; last_fieldSS:IFALSE; DISPLAY_SCREEN('EXOGVAR6.SCR'.file_existSS): { Display Screen I if not file_existSS then begin gotoxy(I.I); write('Missing Screen EXOGVARG') end; retSS:I"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of I: GETNUM(3I.6.S.'N'.CHHT. 'l.lli'.0.000.I.000.retSS.retrieveSS.15.0); 2: GETNUM(31.7.5.'N'.SBHT. 'l.ll#'.0.000.I.000.retSS.retrieveSS.15.0); 3: GETNUM(31.8.5.'N'.DMHT. 'l.lll'.0.000.1.000.retSS.retrieveSS.15.0); 4: GETNUM(31.9.5.'N'.LOHT. 'I.lll'.0.000.1.000.retSS.retrieveSS.15.0); 5: GETNUM(3I.IO.S.'N’.NIHT. 'l.!ll'.0.000.1.000.retSS.retrieveSS.15.0); 6: GETNUM(31.II.S.'N'.LDHT. 'I.III'.0.000.1.000.retSS.retrieveSS.15.0): 7: GETNUM(31.12.5.'N'.BRHT. 'l.lil'.0.000.I.000.retSS.retrieveSS.15.0); 8: GETNUM(41.13.2.'N'.YEAR[NY-3]. 'il'.0.0.99.0.retSS.FALSE.15.0); 9: GETNUM(44.I3.2.'N'.YEARB[NY-3]. 'li'.0.0.99.0.retSS.FALSE.15.0); 10: GETNUM(52.13.2.'N'.YEAR[NY-2]. 'll'.0.0.99.0.retSS.FALSE.15.0); II: GETNUM(55.13.2.'N'.YEARB[NY-2]. 'll'.0.0.99.0.retSS.FALSE.15.0); 12: GETNUM(63.13.2.'N'.YEAR[NY-I]. 'Il'.0.0.99.0.retSS.FALSE.15.0); 13: GETNUM(66.I3.2.'N'.YEARB[NY-I]. 'll'.0.0.99.0.retSS.FALSE.15.0); I4: GETNUM(74.I3.2.'N'.YEAR[NY]. 'll'.0.0.99.0.retSS.FALSE.15.0); 15: GETNUM(77.13.2.'N'.YEARB[NY]. 'll'.0.0.99.0.retSS.FALSE.15.0); 16: GETNUM(41.17.5.'N'.CPICH[NY-3]. 'lll.l'.0.0.999.9.retSS.FALSE.15.0); 17: GETNUM(40.19.6.'N'.CPISB[NY-3]. 'lll.ll'.0.00.999.99.retSS.FALSE.15.0): 18: GETNUM(40.21.6.'N'.CPIDM[NY-3]. '1II.I!'.0.00.999.99.retSS.FALSE.15.0); 19: GETNUM(40.23.6.'N'.CPILO[NY-3]. 'III.II’.0.00.999.99.retSS.FALSE.15.0); 20: GETNUM(52.I7.S.'N'.CPICH[NY-2]. 'III.!'.0.0.999.9.retSS.FALSE.15.0): 21: GETNUM(SI.I9.6.'N'.CPISB[NY-2]. 'lil.ll'.0.00.999.99.retSS.FALSE.15.0); 22: GETNUM(51.21.6.'N'.CPIDM[NY-2]. 'III.II'.0.00.999.99.retSS.FALSE.15.0); 2555i 23: GETNUM(51.23.6.'N'.CPILO[NY-2]. 'III.II'.0.00.999.99.retSS.FALSE.15.0); 24: GETNUM(63.I7.5.'N'.CPICH[NY-1]. 'lll.l'.0.0.999.9.retSS.FALSE.15.0); 25: GETNUM(62.19.6.'N'.CPISB[NY-1]. 'lll.ll'.0.00.999.99.retSS.FALSE.15.0); 26: GETNUM(62.21.G.'N'.CPIDM[NY-1]. 'll!.li'.0.00.999.99.retSS.FALSE.15.0); 27: GETNUM(62.23.6.'N'.CP1LO[NY-I]. ’lll.ll'.0.00.999.99.retSS.FALSE.15.0); 28: GETNUM(74.17.5.'N'.CPICH[NY]. 'Ill.l'.0.0.999.9.retSS.retrieveSS.15.0); 29: GETNUM(73.19.6.'N'.CPISB[NY]. '#l#.ll'.0.00.999.99.retSS.retrieveSS.15.0); 30: GETNUM(73.21.6.'N'.CPIDM[NY]. 'Ill.ll’.0.00,999.99.retSS.retrieveSS.15.0); 31: GETNUM(73.23.6.'N'.CPILO[NY]. '#l#.ll'.0.00.999.99.retSS.retrieveSS.15.0); END; { CASE } if varSS-screen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in "retSS". Set ”varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE; actionSS:IstaySS; varSS:=1; end else last_fieldSS:=FALSE; UNTIL actionSS=exitSS END; { OVERLAY PROCEDURE SCREEN_G } OVERLAY PROCEDURE IMPORTERS_GOP_SCREEN_2; { B:EXOGVAR7 } BEGIN screenSS:I19; screen_fieldSS:IBG; varSS:I1; retrieveSS:IFALSE; last_fieldSS:IFALSE; DISPLAY_SCREEN('EXOGVAR7.SCR'.file_existSS); { Display Screen } if not file_existSS then begin gotoxy(I.I); write('Missing Screen EXOGVAR7') end; retSS:I"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of 1: GETNUM(41.4.2.'N'.YEAR[NY-3]. 'Il'.0.0.99.0.retSS.FALSE.15.0); 2: GETNUM(44.4.2.'N'.YEARB[NY-3]. 'Il'.0.0.99.0.retSS.FALSE.15.0); 3: GETNUM(52.4.2.'N'.YEAR[NY-2]. 'll'.0.0.99.0.retSS.FALSE.15.0); IO: 11: 12: 13: 14: 15: 16: 17: 18: I9: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 266 GETNUM(55.4.2.'N'.YEARB[NY-2]. 'll'.0.0.99.0.retSS.FALSE.15.0); GETNUM(63.4.2.'N'.YEAR[NY-1]. 'II'.0.0.99.0.retSS.FALSE.15.0); GETNUM(66.4.2.'N'.YEARB[NY-1]. 'Il'.0.0.99.0.retSS.FALSE.15.0); GETNUM(74.4.2.'N'.YEAR[NY]. 'Il'.0.0.99.0.retSS.FALSE.15.0); GETNUM(77.4.2.'N'.YEARB[NY]. 'Ii'.0.0.99.0.retSS.FALSE.15.0); GETNUM(40.8.6.'N'.CPINI[NY-3]. 'II!.II'.0.00.999.99.retSS.FALSE.15.0); GETNUM(40.10.6.'N'.CPILO[NY-3]. 'IIII.I'.0.0.9999.9.retSS.FALSE.15.0); GETNUM(40.12.6.'N'.CPIBR[NY-3]. 'llll.l'.0.0.9999.9.retSS.FALSE.15.0); GETNUM(40.17.6.'N'.GDPCH[NY-3]. 'I.IIII'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(40.19.6.'N'.GDPSB[NY-3]. 'I.IIIF'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(40.21.6.'N'.GDPOM[NY-3]. 'I.IIII'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(40.23.6.'N'.GDPLO[NY-3]. 'l.l#Il'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(51.8.6.'N'.CPINI[NY-2]. 'lll.l!'.0.00.999.99.retSS.FALSE.15.0); GETNUM(51.IO.6.'N'.CP1LO[NY-2]. 'l2ll.l'.0.0.9999.9.retSS.FALSE.15.0); GETNUM(51.12.6.'N'.CPIBR[NY-2]. 'Ill#.l'.0.0.9999.9.retSS.FALSE.15.0); GETNUM(51.17.6.'N'.GDPCH[NY-2]. 'l.llli'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(51.19.6.'N'.GDPSB[NY-2]. 'l.lill'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(51.21.6.'N'.GDPOM[NY-2]. 'l.ll#I'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(51.23.6.'N'.GDPLO[NY-2]. 'I.IIII'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(62.B.6.'N'.CPINI[NY-1]. 'III.II'.0.00.999.99.retSS.FALSE.15.0); GETNUM(62.10.6.'N'.CPILD[NY-1]. 'llll.#'.0.0.9999.9.retSS.FALSE.15.0): GETNUM(62.12.6.'N'.CPIBR[NY-1]. 'llll.l'.0.0.9999.9.retSS.FALSE.15.0); GETNUM(62.17.6.'N'.GDPCH[NY-1]. 'l.lI#l'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(62.19.6.'N'.GDPSB[NY-1]. 'l.#lll'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(62.21.6.'N'.GDPDM[NY-1]. 'l.lii#'.0.0000.9.9999.retSS.FALSE.15.0): GETNUM(62.23.6.'N'.GOPLO[NY-1]. '#.IIII'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(73.8.6.'N'.CPINI[NY]. 'Ill.ll'.0.00.999.99.retSS.retrieveSS.15.0); .2(57 31: GETNUM(73.IO.6.'N'.CP1LD[NY]. 'Illl.l'.0.0.9999.9.retSS.retrieveSS.15.0); 32: GETNUM(73.12.6.'N'.CPIBR[NY]. 'IIII.I'.0.0.9999.9.retSS.retrieveSS.15.0); 33: GETNUM(73.17.6.'N'.GDPCH[NY]. 'l.llll'.0.0000.9.9999.retSS.retrieveSS.15.0); 34: GETNUM(73.19.6.'N'.GOPSB[NY]. 'l.ll#l'.0.0000.9.9999.retSS.retrieveSS.15.0); 35: GETNUM(73.21.6.'N'.GDPDM[NY]. 'l.l#i#'.0.0000.9.9999.retSS.retrieveSS.15.0); 36: GETNUM(73.23.6.'N'.GDPLO[NY]. 'i.llll'.0.0000.9.9999.retSS.retrieveSS.15.0); END; { CASE } if varSS-screen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in ”retSS”. Set ”varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE; actionSS:IstaySS; varSS:=I; end else last_fieldSS:IFALSE; UNTIL actionSSIexitSS END; { OVERLAY PROCEDURE SCREEN_7 } OVERLAY PROCEDURE IMPORTERS_GOP_SCREEN_3; { B:EXOGVAR8 } BEGIN screenSS:I20; screen_fieldSS:I24; varSS:I1; retrieveSS:IFALSE; last_fieldSS:IFALSE; DISPLAY_SCREEN('EXOGVAR8.SCR'.file_existSS); { Display Screen } if not file_existSS then begin gotoxy(I.I); write('Missing Screen EXOGVARB') end; retSS:I"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of 1: GETNUM(41.5.2.'N'.YEAR[NY-3]. 'll'.0.0.99.0.retSS.FALSE.15.0); 2: GETNUM(44.5.2.'N'.YEARB[NY-3]. 'Il'.0.0.99.0.retSS.FALSE.15.0); 3: GETNUM(52.5.2.'N'.YEAR[NY-2]. 'll'.0.0.99.0.retSS.FALSE.15.0); 4: GETNUM(55.5.2.'N'.YEARB[NY-2]. 'il'.0.0.99.0.retSS.FALSE.15.0); 5: GETNUM(63.5.2.'N'.YEAR[NY-1]. 'll'.0.0.99.0.retSS.FALSE.15.0); 6: GETNUM(66.5.2.'N'.YEARB[NY-I]. 'II'.0.0.99.0.retSS.FALSE.15.0); .2i58 7: GETNUM(74.5.2.'N'.YEAR[NY]. 'II'.0.0.99.0.retSS.FALSE.15.0); B: GETNUM(77.S.2.'N'.YEARB[NY]. 'II'.0.0.99.0.retSS.FALSE.15.0); 9: GETNUM(40.9.6.'N'.GDPNI[NY-3]. 'I.Illl'.0.000D.9.9999.retSS.FALSE.15.0); 10: GETNUM(40.11.6.'N'.GDPLD[NY-3]. '!#.##l'.0.000.99.999.retSS.FALSE.15.0); 11: GETNUM(40.13.6.'N'.GDPBR[NY-3]. 'Il.lll'.0.000.99.999.retSS.FALSE.15.0); 12; GETNUM(38.21.8.'N'.IGDP[NY-3]. 'l.llll#l'.0.000000.9.999999.retSS.FALSE.15.0); 13: GETNUH(51.9.6.'N'.GDPNI[NY-2]. 't.tt:t'.0.0000.9.9999.retSS.FALSE.15.0); 14; GETNUM(51.11.6.'N'.GDPLD[NY-2]. 'II.III'.0.000.99.999.retSS.FALSE.15.0); 15: GETNUM(51.13.6.'N'.GDPBR[NY-2]. 'li.lll'.0.000.99.999.retSS.FALSE.15.0); 16: GETNUM(49.21.B.’N'.IGDP[NY-2]. 'l.lillii'.0.000000.9.999999.retSS.FALSE.15.0); 17: GETNUM(62.9.6.’N'.GDPNI[NY-I]. 'l.llll'.0.0000.9.9999.retSS.FALSE.15.0); 18: GETNUM(62.II.6.'N'.GDPLD[NY-1]. 'll.lll'.0.000.99.999.retSS.FALSE.15.0); 19; GETNUM(62.13.6.'N'.GDPBR[NY-I]. 'Il.ll#'.0.000.99.999.retSS.FALSE.15.0); 20: GETNUM(60.21.8.'N'.IGDP[NY-I]. 'l.lillll'.0.000000.9.999999.retSS.FALSE.15.0); 21; GETNUM(73.9.6.'N'.GDPNI[NY]. 'I.IIII'.0.0000.9.9999.retSS.retrieveSS.15.0); 22: GETNUM(73.11.6.'N'.GDPLD[NY]. 'II.III'.0.000.99.999.retSS.retrieveSS.15.0); 23; GETNUM(73.13.6.'N'.GDPBR[NY]. 'Il.lll'.0.000.99.999.retSS.retrieveSS.15.0); 24: BEGIN if retrieveSS=true then begin IGDP[NY]:I((CHHT*GDPCH[NY])/CPICH[NY]) + ((SBVT*GDPSB[NY])/CPISB[NY]I + ((DMHT*GDPDM[NY])/CPIDM[NY]) + ((LOHT*GDPLO[NY])ICPILO[NY]) + ((NIHT*GDPN1[NY])/CPINI[NY]) + ((LDHT*GDPLD[NY])/CPILD[NY]) + ((6RVT*GDPBR[NY])/CPIBR[NY]I; GETNUM(7I.21.8.'N'.IGDP[NY]. 'l.llfill'.0.000000.9.999999.retSS.retrieveSS.15.0); end; END; END; { CASE I if varSS-screen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in "retSS”. Set "varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:=FALSE; actionSS:IstaySS; varSS:=1; end else 2(59 last_fieldSS:IFALSE; UNTIL actionSS-exitSS END; { OVERLAY PROCEDURE SCREEN_B } ***** End of Include file MAGIC3.INC ***** OVERLAY procedure EXPORTERS_COMPOSITES; { A SUB MENU UNDER EXOGENOUS VARIABLE SUB MENU } *‘*** Beginning of Include file MAGIC4.INC ***** {$1 MAGIC4.INC} { EXPORTERS GDP } OVERLAY PROCEDURE EXPORTERS_GDP_SCREEN_1: { B:EXOGVAR9 } BEGIN screenSS:I21; screen_fieldSS:I23; varSS:II; retrieveSS:IFALSE; last_fieldSS:IFALSE; DISPLAY_SCREEN('EXOGVAR9.SCR'.file_existSS); { Display Screen } if not file_existSS then begin gotoxy(I.I); write('Missing Screen EXOGVAR9') end; retSS:I"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of 1: GETNUM(31.7.5.'N'.ARHT. 'I.III'.0.000.1.000.retSS.retrieveSS.15.0); 2: GETNUM(3I.9.S.'N'.AUHT. 'I.lll'.0.000.I.000.retSS.retrieveSS.15.0); 3: GETNUM(31.11.5.'N'.CAHT. 'l.#ll'.0.000.I.OOO.retSS.retrieveSS.15.0); 4: GETNUM(41.14.2.'N'.YEAR[NY-3]. 'II'.0.0.99.0.retSS.FALSE.15.0); 5: GETNUM(44.14.2.'N'.YEARB[NY-3]. 'Il'.0.0.99.0.retSS.FALSE.15.0); 6: GETNUM(52.14.2.'N'.YEAR[NY-2]. 'II'.0.0.99.0.retSS.FALSE.15.0); 7: GETNUM(55.14.2.'N'.YEARB[NY-2]. 'l!’.0.0.99.0.retSS.FALSE.15.0); 8: GETNUM(63.14.2.'N'.YEAR[NY-I]. 'II'.0.0.99.0.retSS.FALSE.15.0); 9: GETNUM(66.14.2.'N'.YEARB[NY-1]. 'Il'.0.0.99.0.retSS.FALSE.15.0); 10: GETNUM(74.14.2.'N'.YEAR[NY]. 'll'.0.0.99.0.retSS.FALSE.15.0); 11: GETNUM(77.I4.2.'N'.YEARB[NY]. 'll'.0.0.99.0.retSS.FALSE.15.0); 12: GETNUM(39.18.7.'N'.CPIAR[NY-3]. 'llili.l'.0.0.99999.9.retSS.FALSE.15.0); 13: GETNUM(40.20.6.'N'.CPIAU[NY-3]. 'IRI.II'.0.00.999.99.retSS.FALSE.15.0); 14: GETNUM(40.22.6.'N'.CPICA[NY-3]. 'Pll.ll'.0.00.999.99.retSS.FALSE.15.0); 15: GETNUM(50.18.7.'N'.CPIAR[NY-2]. 'IIIII.I'.0.0.99999.9.retSS.FALSE.15.0); 2F7i) 16: GETNUM(51.20.6.'N'.CPIAU[NY-2]. 'Ill.ll'.0.00.999.99.retSS.FALSE.15.0); I7: GETNUM(51.22.6.'N'.CPICA[NY-2]. 'III.II'.0.00.999.99.retSS.FALSE.15.0); 18: GETNUM(61.18.7.'N'.CPIAR[NY-I]. 'IIIFI.I'.0.0.99999.9.retSS.FALSE.15.0); 19: GETNUM(62.20.6.'N'.CP1AU[NY-1]. 'Il#.ll'.0.00.999.99.retSS.FALSE.15.0); 20: GETNUM(62.22.6.'N'.CPICA[NY-l]. 'Iii.li'.0.00.999.99.retSS.FALSE.15.0); 21: GETNUM(72.18.7.'N’.CPIAR[NY]. 'li#l#.l'.0.0.99999.9.retSS.retrieveSS.15.0); 22: GETNUM(73.20.6.'N'.CPIAU[NY]. 'III.#I'.0.00.999.99.retSS.retrieveSS.15.0); 23: GETNUM(73.22.6.'N'.CPICA[NY]. 'III.II'.0.00.999.99.retSS.retrieveSS.15.0); ENO; { CASE } if varSSsscreen_fieldSS then last_fieldSS:=TRUE; RET_STATUS; { Check the code in ”retSS". Set "varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:=FALSE; actionSS:=staySS; varSS:=1; end else last_fieldSS:=FALSE; UNTIL actionSS=exitSS END; { OVERLAY PROCEDURE SCREEN_9 } OVERLAY PROCEDURE EXPORTERS_GDP_SCREEN_2; { B:EXOVARIO } BEGIN screenSS:I22; screen_fieldSS:I24; varSS:I1; retrieveSS:IFALSE; last_fieldSS:IFALSE; DISPLAY_SCREEN('EXOVAR10.SCR’.file_existSS); { Display Screen } if not file_existSS then begin gotoxy(I.I); write('Missing Screen EXOVARIO') end; retSS:I"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of I: GETNUM(41.5.2.'N'.YEAR[NY-3]. 'I".0.0.99.0.retSS.FALSE.15.0); 2: GETNUM(44.5.2.'N'.YEARB[NY-3]. 'Il'.0.0.99.0.retSS.FALSE.15.0); 3: GETNUM(52.5.2.'N'.YEAR[NY-2]. 'll'.0.0.99.0.retSS.FALSE.15.0); 4: GETNUM(55.5.2.'N'.YEARB[NY-2]. 'II'.0.0.99.0.retSS.FALSE.15.0); 5: GETNUM(63.5.2.'N'.YEAR[NY-1]. Ir 2Y7IL 'l!’.0.0.99.0.retSS.FALSE.15.0); 6: GETNUM(66.5.2.'N'.YEAR[NY-I]. 'll'.0.0.99.0.retSS.FALSE.15.0); 7: GETNUM(74.5.2.'N'.YEAR[NY]. 'II'.D.0.99.0.retSS.FALSE.15.0); 8: GETNUM(77.5.2.'N'.YEARB[NY]. 'll'.0.0.99.0.retSS.FALSE.15.0); 9: GETNUM(40.9.6.'N'.GDPAR[NY-3]. 'ill.ll'.0.00.999.99.retSS.FALSE.15.0); 10: GETNUM(40.11.6.'N'.GDPAU[NY—3]. 'I.l#ll’.0.0000.9.9999.retSS.FALSE.15.0); II: GETNUM(40.13.6.'N'.GDPCA[NY-3]. 'l.l!ll'.0.0000.9.9999.retSS.FALSE.15.0); 12: GETNUM(38.21.8.'N'.EGDP[NY-3]. 'I.llilll'.0.000000.9.999999.retSS.FALSE.15.0); 13: GETNUM(51.9.6.'N'.GDPAR[NY-2]. 'lll.ll'.0.00.999.99.retSS.FALSE.15.0); I4: GETNUM(51.11.6.'N'.GDPAU[NY-2]. 'I.IIII'.0.0000.9.9999.retSS.FALSE.15.0); 15: GETNUM(51.13.6.'N'.GDPCA[NY-2]. 'I.Ill!'.0.0000.9.9999.retSS.FALSE.15.0); 16: GETNUM(49.21.8.’N'.EGDP[NY-2]. 'l.l!ll#l'.0.000000.9.999999.retSS.FALSE.15.0); l7: GETNUM(62.9.6.'N'.GDPAR[NY-I]. 'lll.l#'.0.00.999.99.retSS.FALSE.15.0); 18: GETNUM(62.11.6.'N'.GDPAU[NY-l]. '#.IIII'.0.0000.9.9999.retSS.FALSE.15.0); 19: GETNUM(62.13.6.'N’.GDPCA[NY-1]. 'I.Illl'.0.0000.9.9999.retSS.FALSE.15.0); 20: GETNUM(60.21.8.'N'.EGDP[NY-I]. 'l.llllll'.0.000000.9.999999.retSS.FALSE.15.0); 21: GETNUM(73.9.6.'N'.GDPAR[NY]. 'lll.il'.0.00.999.99.retSS.retrieveSS.15.0); 22: GETNUM(73.II.6.'N'.GDPAU[NY]. 'I.llll'.0.0000.9.9999.retSS.retrieveSS.15.0); 23: GETNUM(73.I3.6.'N'.GDPCA[NY]. 'I.IIII'.0.0000.9.9999.retSS.retrieveSS.15.0); 24: BEGIN if retrieveSS-true then begin EGDP[NY]:I((ARHT*GDPAR[NY])/CPIAR[NY]) + ((AUHT*GDPAU[NY])/CPIAU[NY]) + ((CAHT'GDPCA[NY])/CPICA[NY]); GETNUM(7I.21.8.'N'.EGDP[NY]. 'l.#l!lil'.0.000000.9.999999.retSS.retrieveSS.15.0); end; END; END; { CASE } if varSS-screen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in "retSS". Set "varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE; actionSS:IstaySS; varSS:=1; .2172 end else last_fieldSS:=FALSE; UNTIL actionSSIexitSS END; { OVERLAY PROCEDURE SCREEN_IO } ***** End of Include file MAGIC4.INC ***** ***** Beginning of Include file MAGIC5.INC ***** {$1 MAGIC5.INC} { EXPORTERS REVENUE } OVERLAY PROCEDURE EXPORTER_CROP_REVENUE; { B:EXOVARII } BEGIN screenSS:I23; screen_fieldSS:I44; varSS:II; retrieveSS:IFALSE; last_fieldSS:IFALSE; DISPLAY_SCREEN('EXOVAR11.SCR'.file_existSS); { Display Screen } if not file_existSS then begin gotoxy(I.I); write('Missing Screen EXOVARII') end; retSS:I"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of I: GETNUM(41.3.2.'N'.YEAR[NY-3]. 'II'.0.0.99.0.retSS.FALSE.15.0); 2: GETNUM(44.3.2.'N'.YEARB[NY-3]. 'II'.0.0.99.0.retSS.FALSE.15.0); 3: GETNUM(52.3.2.'N'.YEAR[NY-2]. 'll'.0.0.99.0.retSS.FALSE.15.0); 4: GETNUM(55.3.2.'N'.YEARB[NY-2]. 'I!’.0.0.99.0.retSS.FALSE.15.0); 5: GETNUM(63.3.2.'N'.YEAR[NY-1]. 'll'.0.0.99.0.retSS.FALSE.15.0); 6: GETNUM(66.3.2.'N'.YEARB[NY-1]. 'Il'.0.0.99.0.retSS.FALSE.15.0); 7: GETNUM(74.3.2.'N'.YEAR[NY]. 'll'.0.0.99.0.retSS.FALSE.15.0); 8: GETNUM(77.3.2.'N'.YEARB[NY]. 'll'.0.0.99.0.retSS.FALSE.15.0); 9: GETNUM(40.7.6.'N'.XRAR[NY-3]. 'l.lili'.0.0000.9.9999.retSS.FALSE.15.0); 10: GETNUM(40.9.6.'N'.XRAU[NY-3]. 'I.#III'.0.0000.9.9999.retSS.FALSE.15.0); 11: GETNUM(40.11.6.'N'.XRCA[NY-3]. 'f.l'll'.0.0000.9.9999.retSS.FALSE.15.0); 12: GETNUM(40.I3.6.'N'.FYAR[NY-3]. 'l.llli'.0.0000.9.9999.retSS.FALSE.15.0); 13: GETNUM(40.15.6.'N'.FYAU[NY-3]. 'I.IPIP'.0.0000.9.9999.retSS.FALSE.15.0); I4: GETNUM(40.17.6.'N'.FYCA[NY-3]. 'I.IIII'.0.0000.9.9999.retSS.FALSE.15.0); 15: GETNUM(40.19.6.'N'.HYAR[NY-3]. '#.lfll'.0.0000.9.9999.retSS.FALSE.15.0); 16: GETNUM(40.21.6.'N'.HYAU[NY-3]. 'I.IIII'.0.0000.9.9999.retSS.FALSE.15.0); 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: GETNUM(40.23.6.'N'.HYCA[NY-3]. 273 'l.l!ll'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(51.7.6.'N'.XRAR[NY-2]. 'l.llll'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(SI.9.6.'N'.XRAU[NY-2]. 'I.Il#l'.0.0000.9.9999.retSS.FALSE.15.0): GETNUM(51.11.6.'N'.XRCA[NY-2]. 'l.llll'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(51.13.6.'N'.FYAR[NY-2]. 'I.IIII'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(51.15.6.'N'.FYAU[NY-2]. 'l.llll'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(51.17.6.'N’.FYCA[NY-2]. 'I.Illl'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(51.19.6.'N'.HYAR[NY-2]. 'i.llll'.0.0000.9.9999.retSS.FALSE.15.0): GETNUM(SI.21.6.'N'.HYAU[NY-2]. 'I.ll!l'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(51.23.6.'N'.HYCA[NY-2]. 'i.llll'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(62.7.6.'N'.XRAR[NY-I]. 'l.llIl'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(62.9.6.'N'.XRAU[NY-I]. 'I.llll'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(62.11.6.'N'.XRCA[NY-1]. 'l.llll'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(62.13.6.'N'.FYAR[NY-I]. 'l.llll'.0.0000.9.9999.retSS.FALSE.15.0): GETNUM(62.15.6.'N'.FYAU[NY-1]. 'I.llll'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(62.17.6.'N'.FYCA[NY-1]. 'I.IIII'.0.0000.9.9999.retS$.FALSE.15.0); GETNUM(62.19.6.'N'.HYAR[NY-1]. 'l.llll'.0.0000.9.9999.retSS.FALSE.15.0): GETNUM(62.21.6.'N'.HYAU[NY-1]. 'l.llil'.0.0000.9.9999.retSS.FALSE.15.0): GETNUM(62.23.6.'N'.HYCA[NY-l]. 'l.llll'.0.0000.9.9999.retSS.FALSE.15.0); GETNUM(73.7.6.'N'.XRAR[NY]. 'I.llll'.0.0000.9.9999.retSS.retrieveSS.15.0); GETNUM(73.9.6.'N'.XRAU[NY]. 'I.Illl'.0.0000.9.9999.retSS.retrieveSS.15.0); GETNUM(73.II.6.'N'.XRCA[NY]. 'l.llil'.0.0000.9.9999.retSS.retrieveSS.15.0); GETNUM(73.13.6.'N'.FYAR[NY]. 'O.lill'.0.0000.9.9999.retSS.retrieveSS.15.0); GETNUM(73.15.6.'N'.FYAU[NY]. 'I.IIII'.0.0000.9.9999.retSS.retrieveSS.15.0); GETNUM(73.17.6.'N'.FYCA[NY]. 'I.l'll'.0.0000.9.9999.retSS.retrieveSS.15.0); GETNUM(73.I9.6.'N'.HYAR[NY]. 'I.III#'.0.0000.9.9999.retSS.retrieveSS.15.0); GETNUM(73.21.6.'N'.HYAU[NY]. ’l.l!ll'.0.0000.9.9999.retSS.retrieveSS.15.0); 2774. 44; GETNUM(73.23.6.'N'.vYCA[NY]. 'l.llll'.0.0000.9.9999.retSS.retrieveSS.15.0); END; { CASE I if varSS-screen_fieldSS then last_fieldSS:=TRUE; RET_STATUS; { Check the code in "retSS". Set "varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE; actionSS:IstaySS; varSS:Il; end else last_fieldSS:IFALSE; UNTIL actionSS-exitSS END; { OVERLAY PROCEDURE SCREEN_II } "*** End of Include file MAGIC5.INC ***** BEGIN REPEAT IF (EDIT-FALSE) AND (BACTIVEIFALSE) THEN BEGIN COLOR(HHITE.BLACK); CLRSCR; FLASHUP('HIEXPORTER.NOESC.NOMOVE'); GOTOXY(1.25I; READ(RESPONSE); CLREOL: FLASHUP('CIALL'); END: CASE (RESPONSE) OF '1':EXPORTER_CROP_REVENUE: '2':BEGIN { EXPORTERS_GDP } UB:I2: BACTIVE:ITRUE: CASE (BSCREEN) OF 1: EXPORTERS_GDP_SCREEN_1: 2: EXPORTERS_GDP_SCREEN_2: END; {CASE BSCREEN 0F} END; '3':; END; {CASE} IF (RESPONSE <> '3') THEN vHATMENu(BSCREEN.BACTIVE.UB); UNTIL (RESPONSE - '3'): END: { PROCEDURE EXPORTERS COMPOSITES } BEGIN REPEAT IF (EDIT-FALSE) AND (BACTIVEIFALSE) THEN BEGIN 2'755 COLOR(HHITE.BLACK); CLRSCR; FLASHUP( 'HIEXOGSUMM. NOESC . NOMOVE ' ) ; GOTOXY(1.25); READ(RESPONSE); CLREOL: FLASHUP(‘C-ALL'); END: CASE (RESPONSE) OF 'I':US_COMPOSITE_VARIABLES: '2':BEGIN { IMPORTERS_GDP } UB:I3; BACTIVEzITRUE: CASE (BSCREEN) OF I: IMPORTERS_GDP_SCREEN_1: 2: 1HPORTERS_GDP_SCREEN_2: 3: IHPORTERS_GDP_SCREEN_3: END; { CASE BSCREEN OF } END; '3':EXPORTERS_COMPOSITES: '4':BEGIN { EXOGENOUS_VARIABLE_SUMMARY } UBzIS; BACTIVEzITRUE: CASE (BSCREEN) OF ' SCREEN_I: SCREEN_3A: SCREEN_Z: SCREEN_3: . SCREEN_4; END; { CASE BSCREEN OF } END; '5':; END; {CASE} IF (RESPONSE <> '5') THEN HHATMENU(BSCREEN.BACTIVE.UB); UIwaO-I UNTIL (RESPONSE I '5'); END; { PROCEDURE EXOGENOUS VARIABLE SUB MENU } overlay procedure EXPORT_VARIABLE_SUB_MENU; ‘***' Beginning of Include file HETT.INC ***’* {$1 HETT.INC} { exporters net exports and us exports } (. mtti'tiit’itfiiiiiititflflfiiittiitittiiitttfltttfittiiitfittittittt * i i t { Initialize Variables To Default Values } BEGIN { formula (((x’39.368)/1000)*0.85995 } { corn I 0.85995 as a ' X ' of exports } esply_in_bu[1]:I1890.21; { actual values } econ_in_bu[l]:-9I4.68: { ECON[1]:I27017.96; I ees_in_bu[l]:I294.47; { EES[I]:I8698.DI; I ene_in_bu[l]:I681.06; { ENE[1]:I19112.01; I eha[1]:I19038.0: esply_in_bu[2]:I1824.19; 257E; econ_in_bu[2]:8986.76; { ECON[2]:-29146.99; } ees_in_bu[2]:-168.59; { EES[2]:=4979.98; } ene_in_bu[Z]:=668.84; { ENE[2]:8ZI37D.DD; } eha[2]:-19065.D; esply_in_bu[3]:-1840.ID; econ_in_bu[3]:-961.l3; ( ECON[3]:t28390.02; } ees_in_bu[3]:-l71.34; { EES[3]:-5060.98; } ene_in_bu[3]:-7D7.63; { ENE[3]:-20425.0D; } eha[3]:-19424.0; INI_IN_BU[l]:-2552.D3; INI_IN_BU[Z]:-2532.85; INI_IN_BU[B]:-254S.63: i***t*********fi****t**i*ttt*******ttttt******ii*************tttttttt *) procedure EXPORTERS_NET_EXPORTS_SCREEN; { B:ENEXPORT } BEGIN screenSS:-24; screen_fieldSS:=32; varSS:=l; retrieveSS:8FALSE; last_fieldSS:=FALSE; DISPLAY_SCREEN('ENEXPORT.SCR'.file_exist$$); { Display Screen } if not file_existSS then begin gotoxy(I.I); write('Missing Screen ENEXPDRT') end; retSS:-"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS - exitSS } CASE varSS of I: GETNUM(31.6.2.'N'.YEAR[NY-3]. 'II'.D.O.99.0.retSS.FALSE.15.0); 2: begin yearb[NY-3]:syear[NY-3]+l; GETNUM(34.6.2.'N'.YEAR8[NY-3]. 'II'.0.0.99.0.retSS.FALSE.15.0); end; 3: GETNUM(41.6.2.'N'.YEAR[NY-Z]. 'll'.D.0.99.0.retSS.FALSE,15.0); 4: begin yearb[NY-2]:-year[NY-2]+l; GETNUM(44.6.2.'N'.YEARB[NY-2], 'Il'.0.0.99.D,retSS.FALSE,15.0); end; 5: GETNUM(51.6.2.'N'.YEAR[NY-1]. 'll'.O.D.99.D.retSS,FALSE.15,0); 6: begin yearb[NY-l]:Iyear[NY-1]+1; 6ETNUH(54.6.2.'N'.YEARB[NY-l]. 'II'.D.D.99.D.retSS.FALSE.15.0)z end; 7: GETNUM(61.6.2.'N'.YEAR[NY]. 'll'.0.D.99.D.retSS.FALSE.15.0); 8: begin yearb[NY]:-year[NY]+1; 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 127“? GETNUM(64,6.2.'N'.YEARB[NY]. 'Il'.0.0.99.0,retSS.FALSE.15.0); end; GETNUM(28.11.B.'N'.ESPLY_IN_BU[NY-3]. ’Illll.ll'.OOOD.OO.99999.99.retSS.FALSE.15,0); GETNUM(28.15.8.'N'.ECON_IN_BU[NY-3]. 'illll.ll'.DDOO.DO.99999.99.retSS.FALSE.15.0); GETNUM(29.19.7.'N'.EES_IN_BU[NY-3]. 'llll.!l'.OO0.00.9999.99.retSS,FALSE.15.0); GETNUM(29.22.7.'N'.ENE_IN_BU[NY-3]. 'l#ll.il'.0.00.9999.99.retSS.FALSE.15.0); GETNUM(38.11.B.'N'.ESPLY_IN_BU[NY-2]. 'IIIII.II'.OOO0.00.99999.99.retSS.FALSE.15.0); GETNUM(38.15.8,'N'.ECON_IN_BU[NY-2]. 'lllil.’i'.OOOD.OD.99999.99.retSS.FALSE.15.0); GETNUM(39.19.7.'N'.EES_IN_BU[NY~2]. 'llll.ll'.OOO.DO.9999.99.retSS.FALSE.15.0); GETNUM(39.22.7.'N'.ENE_IN_BU[NY-2], 'Illl.ll'.0.0D.9999.99.retSS.FALSE.15.0): GETNUM(48.11.8.'N'.ESPLY_IN_BU[NY-1]. 'lllll.ll'.ODDD.OD.99999.99.retSS.FALSE.15.0); GETNUM(48.15.8.'N'.ECDN_IN_BU[NY-l]. 'lll!#.!l'.OOO0.00.99999.99.retSS.FALSE.15.0); GETNUM(49.19.7.'N'.EES_IN_BU[NY—l]. 'llll.ll'.ODD.DD.9999.99.retSS.FALSE.15.0); GETNUM(49.22.7.'N'.ENE_IN_BU[NY-l], 'llll.#l'.0.00.9999.99.retSS,FALSE.15.0); GETNUM(58.11.8.'N'.ESPLY_IN_BU[NY], 'llill.ll'.ODO0.00.99999.99.retSS.FALSE.15.0); GETNUM(58.1S.8.'N'.ECON_IN_BU[NY]. 'llil#.ll'.ODOO.DO.99999.99.retSS.FALSE.15.0); GETNUM(59.19.7.'N'.EES_IN_BU[NY], 'illl.li'.OO0.0D.9999.99.retSS.FALSE.15.0): GETNUM(59.22.7.'N'.ENE_IN_BU[NY]. ’lll!.ll'.0.00.9999.99.retSS.FALSE.15.0); GETITEN(7D.11.1.'Y'.ESPLY_IN_BU_FLAG. 'U'.’ '.' '.retSS.retrieveSS.IS.D); BEGIN 1F (RETRIEVESS=TRUE) AND (ESPLY_IN_BU_FLAG='Y') THEN BEGIN FGz-IS; 86:80; GETNUM(74.11.5.'N'.ESPLY_IN_BU_DR[NY]. 'illll'.D.O;99999.9.retSS.RETRIEVESS.FG.BG); END ELSE BEGIN FG:=O; BstO; GETNUM(74.11.5.'N'.ESPLY_IN_BU_OR[NY], 'lllll‘.0.0.99999.9.retSS.FALSE.FG.BG); END; END; GETITEH(70.15.1.'Y'.ECON_IN_BU_FLAG. 278 'U'.’ '.’ '.retSS.retrieveSS.15.0); 28: BEGIN IF (RETRIEVESSsTRUE) AND (ECON_IN_BU_FLAG='Y') THEN BEGIN FG:-15: BG:-O; GETNUM(74.IS.5.'N'.ECON_IN_BU_OR[NY]. 'IIIII'.0.0.99999.9.retSS.RETRIEVESS.FG.BG): END ELSE BEGIN FG:=O; 86:80: GETNUM(74.15.5.'N'.ECON_IN_BU_OR[NY], 'IIIII'.0.0.99999.9.retSS.FALSE.FG.BG); END; END; 29: GETITEN(70.19.1.'Y'.EES_IN_BU_FLAG. 'U'.’ '.' '.retSS.retrieveSS.15.D); 30: BEGIN IF (RETRIEVESS=TRUE) AND (EES_IN_BU_FLAG=’Y') THEN BEGIN FG:=15; BG:=O; GETNUM(74.19,5,'N'.EES_IN_BU_OR[NY]. 'lilll'.0.0.99999.9.retSS.RETRIEVESS,FG.BG); END ELSE BEGIN FG:I0; BG:-0; GETNUM(74.19.5.'N'.EES_IN_BU_OR[NY]. 'lllll'.D.D.99999.9.retSS.FALSE.FG.BG); END; END; 31: GETITEH(70.22.1.'Y'.ENE_IN_BU_FLAG, 'U'.’ '.' '.retSS.retrieveSS.15.D); 32: BEGIN IF (RETRIEVESS=TRUE) AND (ENE_IN_BU_FLAG='Y') THEN BEGIN FG:=15; BGz-O; GETNUM(74.22.5.'N'.ENE_IN_BU_0R[NY], 'Olill'.0.0.99999.9.retSS.RETRIEVESS.FG.BG); END ELSE BEGIN FG:-O; 861-0; GETNUM(74.22.5.'N'.ENE_IN_BU_0R[NY]. 'Illll'.0.0.99999.9.retSS.FALSE.FG,BG); END; END; END; { CASE } .2179 COLOR(HHITE.BLACK); if varSS-screen_fieldSS then last_fieldSS:=TRUE; RET_STATUS; { Check the code in "retSS". Set "varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:-TRUE; last_fieldSS:-FALSE; actionSS:-staySS; varSS:-I; end else last_fieldSS:=FALSE; UNTIL actionSS-exitSS END; { PROCEDURE EXPORTERS NET EXPORTS SCREEN_I } procedure US_EXPORTS_SCREEN; { B:XXPORT } BEGIN screenSS:-25; screen_fieldSS:-22; varSS:-l; retrieveSS:IFALSE; last_fieldSS:cFALSE: DISPLAY_SCREEN('XXPORT.SCR'.file_existSS); { Display Screen } if not file_existSS then begin gotoxy(I.I); write('Missing Screen XXPORT') end; retSS:-"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS - exitSS ) CASE varSS of l: GETNUM(3D.5.2.'N'.YEAR[NY-3]. 'II'.D.D.99.0.retSS.FALSE.15.0); 2: begin yearb[NY-3]:-year[NY-3]+I; GETNUH(33.5.2.'N'.YEARB[NY-3]. 'll'.O.D.99.D.retSS.FALSE.15.0); end; 3: GETNUM(4D.5.Z.'N',YEAR[NY-2]. 'll'.D.O.99.0.retSS.FALSE.15.0); 4: begin yearb[NY-2]:uyear[NY-2]+I; GETNUM(43.5.2.'N'.YEARB[NY-2]. 'll'.D.0.99.D.retSS.FALSE.15,0); end; 5: GETNUM(50.5.2.'N'.YEAR[NY-l]. 'll'.0.0.99.0.retSS.FALSE.15.0); 6: begin yearb[NY-1]:-year[NY-1]+l; GETNUH(53.5.2.'N'.YEARB[NY-1]. 'l!’.0.0.99.0.retSS.FALSE.15.0); end; 7: GETNUM(GD.5.2.'N',YEAR[NY]. 'Il'.0.0.99.0.retSS.FALSE.15.0)z EFF-— IO: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 213C) begin yearb[NY]:-year[NY]+l; GETNUM(63.5.2.'N'.YEARB[NY], 'll'.D.D.99.D.retSS.FALSE.15.0); end; GETNUM(28.11.7.'N'.INI_IN_BU[NY-3]. 'llll.Ii'.DDOD.DD.9999.99.retSS,FALSE.15.0); GETNUM(28.15,7.'N'.ENE_IN_BU[NY-3]. 'llll.#l'.OOOD.OO.9999.99.retSS.FALSE.15.0); begin exports[NY-3]:-ini_in_bu[NY-3]-ene_in_bu[NY-3]; GETNUM(29.19.6.'N'.EXPORTS[NY-3]. 'llll.l'.D.O.9999.9.retSS.FALSE.15.0); end; GETNUM(38.11.7.'N'.INI_IN-BU[NY-2]. 'llll.ll'.ODOD.DD.9999.99,retSS.FALSE.15.0); GETNUM(38.15.7.'N'.ENE_IN_BU[NY-2]. 'llll.ll'.DDDD.DD.9999.99.retSS.FALSE.15.0); begin exports[NY-2]:-ini_in_bu[NY-2]-ene_in_bu[NY-2]; GETNUM(39.19.6.'N'.EXPDRTS[NY-2]. 'Illl.l'.D.O.9999.9.retSS,FALSE.15.0); end; GETNUM(48.II.7.'N'.INI_IN_BU[NY-I]. 'llll.li'.0000.DO.9999.99.retSS.FALSE.15.0); GETNUM(48.15.7.'N'.ENE_IN_BU[NY-l]. 'Illl.ll'.0000.0D.9999.99.retSS.FALSE.15.0); begin exports[NY-I]:Iini_in_bu[NY-1]-ene_in_bu[NY-l]; GETNUM(49.19,G.'N'.EXPORTS[NY-I]. 'lill.l'.D.O.9999.9.retSS.FALSE.15.0); end; GETNUM(SB.II.7.'N’.INI_IN_BU[NY]. 'IIII.I".0000.DD.9999.99.retSS.FAL$E.15.0); GETNUM(58.15.7.'N'.ENE_IN_BU[NY]. 'Illf.ll'.ODO0.0D.9999.99.retSS.FALSE.15.0); begin exports[NY]:sini_in_bu[NY]-ene_in_bu[NY]; GETNUM(59.19.6.'N'.EXPDRTS[NY], 'il'l.l'.D.O.9999.9.retSS.FALSE.15.0); end; GETITEN(70.II.1.'Y'.INI_IN_BU_FLAG. 'U'.’ '.' '.retSS.retrieveSS.15.D); BEGIN IF (RETRIEVESSsTRUE) AND (INI_IN_BU_FLAG='Y') THEN BEGIN FGt-IS; BGz-O; GETNUM(74.II.5.'N'.INI_IN_BU_OR[NY]. ’Illll'.D.D.99999.9.retSS.RETRIEVESS,FG.BG); END ELSE BEGIN 2E3]. FG:=O; BG:-O; GETNUM(74.II.5.’N'.INI_IN_BU_OR[NY], 'll!!!’.0.0.99999.9.retSS.FALSE.FG.BG); END; END; END; { CASE } COLOR(HHITE.BLACK); if varSS-screen_fieldSS then last_fieldSS:=TRUE; RET_STATUS; { Check the code in ”retSS". Set ”varSS” and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:-TRUE; last_fieldSS:=FALSE; actionSS:=staySS; varSS:=1; end else last_fieldSS:=FALSE; UNTIL actionSS-exitSS END; { PROCEDURE US EXPORTS SCREEN } ***** End of Include file HETT.INC ***** BEGIN REPEAT IF (EDIT=FALSE) AND (BACTIVE=FALSE) THEN BEGIN COLOR(HHITE.BLACK); CLRSCR; FLASHUP('HIXPORTSUN.NOESC.NOMOVE'); GOTOXY(1.25); READ(RESPONSE); CLREOL: FLASHUP(‘C-ALL'): END; CASE (RESPONSE) OF '1': EXPORTERS_NET_EXPORTS_SCREEN; { EXPORTER NET EXPORT } '2': US_EXPORTS_SCREEN; { US EXPORT SUMMARY } '3':; END; { CASE } IF (RESPONSE <> '3') THEN UHATHENU(BSCREEN.BACTIVE.UB); UNTIL (RESPONSE I '3'); END; { PROCEDURE EXPORTER VARIABLE SUB HENU } overlay procedure feed_grain_demand; *’*** Beginning of Include file FEEDTOR.INC ***** {SI FEEDTOR.INC} OVERLAY PROCEDURE DAIRY_ANINAL_CONS_PERHEAD; { BzDACDN } BE .2E32 GIN screenSS:-26; screen_fieldSS:-22; varSS:-I; retrieveSS:=FALSE; last_fieldSS:=FALSE; DISPLAY_SCREEN('DACDN.SCR'.file_existSS); { Display Screen } if not file_existSS then begin gotoxy(I.I); write('Missing Screen DACON') end; retSS:-"; { RE 1: 10: 11: 12: 13: 14: Display Items. Change retrieveSS to TRUE and INPUT items} PEAT { until actionSS - exitSS } CASE varSS of GETNUM(31.6.2.'N'.YEAR[NY-3]. 'll'.O.D.99.0.retSS.FALSE.15.0); begin yearb[NY—3]:-year[NY-3]+1; GETNUM(34.6.2.'N'.YEARB[NY-3]. 'l!’.D.O,99.D.retSS.FALSE,15.0); end; GETNUM(41.6.2.'N',YEAR[NY-2], 'll',0.0,99.D,retSS.FALSE.15.0); begin YEARB[NY-2]:=year[NY-2]+l; GETNUM(44.6.2.'N',YEARB[NY-2]. 'll',O.D.99.0.retSS.FALSE.15.0); end; GETNUM(51.6.2.'N'.YEAR[NY-l]. 'll'.D.O.99.0.retSS.FALSE.15.0); begin YEARB[NY-l]:syear[NY-1]+l; GETNUM(54.6.2,'N'.YEARB[NY-1]. 'Il'.D.D.99.0,retSS,FALSE.15.0); end; GETNUM(61.6.2.'N'.YEAR[NY]. 'll'.0.0.99.0.retSS.FALSE.15.0); begin YEARB[NY]:=year[NY]+1; GETNUM(64.6.2.'N'.YEARB[NY], 'li'.0.0.99.0.retSS.FALSE.15.0); end; GETNUM(3D.9.6.'N',ONEPH[NY-3]. 'll.lll'.OD.DDD.99.999.retSS.FALSE.15.0); GETNUM(30.15.6.'N'.DANUH[NY-3]. 'I#.lll',0.000.99.999.retSS.FALSE.15.0); BEGIN DAIRYCONS[NY-3]:=ONEPH[NY-3]*DANUH[NY-3]; GETNUM(30,20.6.'N'.DAIRYCONS[NY-3]. 'lll.#l'.0.00,999.99,retSS,FALSE.15.0); END; GETNUM(40.9.6.'N'.ONEPH[NY-2]. 'II.III',OD.OOD.99.999.retSS.FALSE.15.0); GETNUM(40.15.6.'N'.DANUH[NY-2]. 'll.lli',D.OOD.99.999.retSS.FALSE.15.0); BEGIN .2£33 DAIRYCDNS[NY-2]:IDNEPH[NY-2]'DANUM[NY-2]; GETNUM(AO.ZO.G.'N'.DAIRYCONS[NY-2]. 'lll.il'.0.00.999.99.retSS.FALSE.15.0); END; 15: GETNUM(50.9.6.'N'.DNEPH[NY-l]. 'll.lll'.O0.000.99.999.retSS.FALSE.15.0); 16: GETNUM(SO.15.6.'N'.OANUM[NY-l]. 'll.lll'.0.000.99.999.retSS.FALSE.15.0); l7: BEGIN OAIRYCONS[NY—l]z-ONEPH[NY-l]*DANUM[NY-1]; GETNUM(SO.ZO.G.'N'.DAIRYCONS[NY-l]. 'Ill.ll'.D.OO,999.99,retSS.FALSE.15.0}; END; 18: GETNUM(60.9.G.'N'.ONEPH[NY], 'll.lll'.D0.000.99.999.retSS.FALSE.15.0}; 19: GETNUM(60.15.6.'N'.DANUM[NY]. 'l'.lll'.0.0DO.99.999.retSS.FALSE.15.0); 20: BEGIN DAIRYCONS[NY]:80NEPH[NY]*DANUM[NY]; GETNUM(GO.ZD.6.'N'.DAIRYCONS[NY]. 'III.II'.D.OO.999.99.retSS.FALSE,15.0}; END; 21: GETNUM(71.9.6.'N'.ONEPH_OR[NY]. 'll.lll'.O0.000.99.999,retSS.retrieveSS.15.0); 22: BEGIN 1r ONEPH_OR[NY]<>O.D THEN DAIRYCDNS-DR[NY]:’0NEPH_OR[NY]*DANUH[NY] ELSE DAIRYCDNS_0R[NY]:-0.0; GETNUM(72.ZD.6.'N'.DAIRYCONS_OR[NY]. 'lil.ll'.0.00.999.99.retSS.FALSE,15.0); END; END; { CASE } 1 if varSS-screen_fieldSS then last_fieldSS:=TRUE; RET_STATUS; { Check the code in ”retSS". Set "varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:-TRUE; last_fieldSS:-FALSE; actionSS:-staySS; varSS:=I; end else last_fieldSS:=FALSE; UNTIL actionSS-exitSS END; { OVERLAY PROCEDURE DAIRY ANIMAL CONS PERHEAD } OVERLAY PROCEDURE CATTLE_ON_FEED_CONS_PERHEAD; { B:COFCON } BEGIN screenSS:-27; screen_fieldSS:IZZ; varSS:=l; retrieveSS:IFALSE; last_fieldSS:IFALSE; DISPLAY_SCREEN('COFCON.SCR',file_existSS); { Display Screen } if not file_existSS then 12£l4 begin gotoxy(I.I); write('Missing Screen COFCDN') end; retSS:-"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS - exitSS } CASE varSS of I: GETNUM(33.6.2.'N'.YEAR[NY-3]. 'IX'.D.0.9.D.retSS.FALSE.15.D); 2: GETNUM(36.6.2.'N'.YEARB[NY-3]. 'II'.D.O.99.D.retSS.FALSE.15.0}; 3: GETNUM(43,6.2,'N'.YEAR[NY-2], 'II'.0.D.99.0,retSS.FALSE.15.0); 4: GETNUM(46.6.2.'N'.YEARB[NY-2]. 'll'.0.0.99.D,retSS,FALSE.15.0}; 5: GETNUM(S3.6.Z.'N'.YEAR[NY-1]. 'll'.0.0.99.D.retSS.FALSE.15.0); 6: GETNUM(56.6.Z.'N'.YEARB[NY-l]. 'II'.O.D,99.D.retSS.FALSE.15.0): 7: GETNUM(63.5.2.'N',YEAR[NY], 'Ol'.D.D.99.D.retSS.FALSE.15.0}i B: GETNUM(66.5,Z.'N'.YEARB[NY]. 'Il'.O.D.99.D.retSS.FALSE.15.0); 9: GETNUM(31.9.7.'N'.TUDPH[NY-3]. 'PI.#II'.DD.OOO,99.999.retSS.FALSE.15.0}; 10: GETNUM(32.15.B.'N'.COFNUM[NY-3], 'll.l!!'.O.DOD.99.999.retSS.FALSE,15.0}; ll: BEGIN CATONFED[NY-3]:tTUOPH[NY-3]*CDFNUM[NY-3]; GETNUM(32.20.6.'N'.CATONFED[NY-3]. 'lll.ll'.D.DO.999.99,retSS.FALSE.15.0}; END; 12: GETNUM(4I.9.7.'N'.TUOPH[NY-2]. 'II.III',DD.ODD.99.999,retSS.FALSE.15,0); l3: GETNUM(42.15.6.'N'.CDFNUM[NY-2]. 'II.IPI'.D.ODO.99.999.retSS.FALSE.15.0}; l4: BEGIN CATONFED[NY-Z]:8TU0PH[NY*Z]*CDFNUM[NY-2]; GETNUM(42.ZD.6.'N'.CATDNFED[NY-2]. 'l'l.ll'.D.DD.999.99.retSS.FALSE.15.0}; END; 15: GETNUM(51.9.7.'N'.TUOPH[NY-l]. 'PI.#II'.00.000.99.999,retSS.FALSE.15.0); 16: GETNUM(52.15.6.'N'.CDFNUH[NY-I]. 'll."l'.D.DDO.99.999.retSS.FALSE.15.0}; l7: BEGIN CATONFED[NY-I]:=TUDPH[NY-l]*CDFNUH[NY-1]; GETNUM(52.20.5.'N'.CATONFED[NY-l]. 'BIP.II'.D.DO.999.99.retSS.FALSE.15.0); END; 18: GETNUM(61.9.7.'N'.TUDPH[NY]. "P.lll'.DO.DOO.99.999.retSS.FALSE.15.0); 19: GETNUM(62.15.6,'N'.CDFNUM[NY], 'll.'ll'.D.000.99.999.retSS.FALSE.15.0}; 20: BEGIN 21355 CATONFEO[NY]:-TUOPH[NY]*COFNUM[NY]; GETNUM(62.20.6.'N'.CATONFED[NY]. 'lll.ll'.D.OO.999.99.retSS.FALSE.15.0); END; 21: GETNUM(72.9.7.'N'.TUOPH_OR[NY], 'll.#ll'.O0.0DO.99.999.retSS.retrieveSS.15,0); 22: BEGIN IF THOPH_OR[NY]<>0.0 THEN CATONFEO_0R[NY]:-THOPH_OR[NY]*COFNUM[NY] ELSE CATONFED_OR[NY]:-0.0; GETNUM(73.ZD.6.'N'.CATONFED_OR[NY]. 'Il!.ll',0.00.999.99.retSS.FALSE.15.0); END; END; { CASE } if varSSsscreen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in ”retSS". Set "varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:=FALSE; actionSS:=staySS; varSS:=l; end else last_fieldSS:=FALSE; UNTIL actionSSaexitSS END; { OVERLAY PROCEDURE CATTLE_ON_FEED_CONS_PERHEAD } OVERLAY PROCEDURE OTHER_BEEF_CATTLE_CONS_PERHEAD; { B:OBCCON } BEGIN screenSS:-28; screen_fieldSS:-22; varSS:-I; retrieveSS:-FALSE; last_fieldSS:=FALSE; DISPLAY_SCREEN('OBCCON.SCR'.file_existSS); { Display Screen } if not file_existSS then begin gotoxy(I.I); write('Missing Screen OBCCON') end; retSS:-"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS - exitSS } CASE varSS of 1: GETNUM(34.6.2.'N'.YEAR[NY-3]. 'II'.0.0,99.D.retSS.FALSE.15.0); 2: GETNUM(37.6.2.'N'.YEARB[NY-3]. 'II'.0.0.99.0.retSS.FALSE.15.0); 3: GETNUM(44.6.2.'N'.YEAR[NY-2]. 'li'.0.0.99.D.retSS.FALSE.15.0); 4: GETNUM(47,6.Z.'N'.YEARB[NY-2]. 'll'.D.O.99.D.retSS.FALSE.15.0); 5: GETNUM(54.6.2.'N'.YEAR[NY-l], 'll'.D.O.99.D.retSS.FALSE.15.0); G: GETNUM(57.6.2.'N'.YEARB[NY-l]. 'll'.D.O.99.0.retSS.FALSE.15.0); JZEMS 7: GETNUM(64.6.2.'N'.YEAR[NY], 'II'.0.0.99.0.retSS.FALSE.15.0); 8: GETNUM(67.6.2.'N'.YEARB[NY]. 'll',D.D.99.D.retSS.FALSE,15.0); 9: GETNUM(32.9.7.'N'.THREEPH[NY—3]. 'l.lll'.O.DOO.9.999.retSS.FALSE.15.0); ID: GETNUM(33.IS.6.'N'.OBCNUM[NY-3]. 'll.lll'.0.000.99.999.retSS.FALSE.15.0); II: BEGIN DTHERBEEFCAT[NY-3]:ITHREEPH[NY-3]*DBCNUM[NY-3]; GETNUM(33.ZO.6.'N'.OTHERBEEFCAT[NY-3]. 'lll.li'.0.00.999.99.retSS.FALSE.15.0}; END; 12: GETNUM(42,9.7.'N',THREEPH[NY-2]. 'I.III'.0.000.9.999.retSS.FALSE.15.0); 13: GETNUM(43,15.B.'N'.DBCNUM[NY—2]. 'Il.lll'.0.000.99.999,retSS,FALSE,15.0); 14: BEGIN 0THERBEEFCAT[NY-2]:=THREEPH[NY-2]*OBCNUM[NY-2]; GETNUM(43.ZO.6.'N'.OTHERBEEFCAT[NY-2]. 'lll.il'.0.00.999.99.retSS.FALSE.15.0); END; 15: GETNUM(52.9.7.'N'.THREEPH[NY-l]. 'l.lll'.0.000.9.999.retSS,FALSE.15,0); 16: GETNUM(53.15.6.'N'.OBCNUM[NY-l]. 'Il.lll'.D.DOO.99.999.retSS.FALSE.15.0); 17: BEGIN OTHERBEEFCAT[NY-l]:-THREEPH[NY-I]*OBCNUM[NY-1]; GETNUM(53.20.6.'N'.OTHERBEEFCAT[NY-1], 'Ill.ll'.D.OD.999.99.retSS.FALSE.15.0); END; 18: GETNUM(62.9.7.‘N'.THREEPH[NY], 'l.lll'.O.DOO.9.999.retSS.FALSE.15.0); 19: GETNUM(63.15.6.'N'.DBCNUM[NY], 'll.lll'.D.DDO.99.999.retSS.FALSE.15.0); 20: BEGIN OTHERBEEFCAT[NY]z-THREEPH[NY]*OBCNUM[NY]; GETNUM(63.20.6.'N'.DTHERBEEFCAT[NY]. 'lil.ll'.D.OO.999.99.retSS,FALSE.15.0); END; 21: GETNUM(72.9.7.'N'.THREEPH_OR[NY], 'l.ill'.0.00D.9.999.retSS.retrieveSS.15.0); 22: BEGIN IF THREEPH_OR[NY]<>D.O THEN OTHERBEEFCAT_OR[NY]z-THREEPH_OR[NY]*OBCNUM[NY] ELSE OTHERBEEFCAT_OR[NY]z-O.D; GETNUM(73.ZD.6.'N'.OTHERBEEFCAT_OR[NY]. 'lli.ll'.0.0D.999.99.retSS.FALSE.15.0); END; END; { CASE } if varSSescreen_fieldSS then last_fieldSS:=TRUE; RET_STATUS; { Check the code in "retSS". Set ”varSS" and "actionSS" } .2£¥7 { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE; actionSS:IstaySS; varSS:I1; end else last_fieldSS:IFALSE; UNTIL actionSSIexitSS END; { OVERLAY PROCEDURE OTHER_BEEF_CATTLE_CDNS_PERHEAD } OVERLAY PROCEDURE CHICKEN_CONS_PERHEAO; { BzHPCCON } BEGIN screenSS:I29; screen_fieldSS:IZZ; varSS:I1; retrieveSS:IFALSE; last_fieldSS:IFALSE; DISPLAY_SCREEN('HPCCDN.SCR'.file_existSS): { Display Screen } if not file_existSS then begin gotoxy(I.I); write('Missing Screen HPCCON') end; retSS:I"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of l: GETNUM(29.6.2.'N'.YEAR[NY-3]. 'Il'.0.0.99.0.retSS.FALSE.15.0); 2: GETNUM(32.G.2.'N'.YEARB[NY-3]. 'II'.0.0.99.0.retSS.FALSE.15.0}; 3: GETNUM(41.6.2.'N'.YEAR[NY-2]. 'll',0.0,99.D.retSS.FALSE.15.0}; 4: GETNUM(44,6.2.'N'.YEARB[NY-2]. 'Il'.0.0.99£O.retSS.FALSE.15.0); 5: GETNUM(53.6.2.'N'.YEAR[NY-l]. 'Il'.0.0.99.0.retSS.FALSE.15.0}; 6: GETNUM(56.6.2.'N'.YEARB[NY-l]. 'll',0.0,99.0.retSS.FALSE.15.0}; 7: GETNUM(65.6.2.'N'.YEAR[NY]. 'II'.O.D.99.0.retSS.FALSE.15.0); 8: GETNUM(GB.6.2.'N'.YEARB[NY]. 'Il'.0.0.99.0.retSS.FALSE.15.0); 9: GETNUM(29.9.5.'N'.FDURPH[NY-3], 'l.'ll'.0.000.9.999.retSS.FALSE.15.0); IO: GETNUM(27.15,7.'N'.HPCNUM[NY-3]. 'lil.l#l'.0.000.999.999.retSS.FALSE.15.0); ll: BEGIN CHICKENCDNS[NY-3]:IFOURPH[NY-3]*HPCNUH[NY-3]; GETNUM(ZB.20.6.'N'.CHICKENCDNS[NY-3]. 'lll.ll'.0.0D.999.99,retSS.FALSE.15.0}; END; 12: GETNUM(41.9.5.'N'.FOURPH[NY-2]. 'I.Ill'.O.DOO.9.999.retSS.FALSE.15.0}; 13: GETNUM(39.15.7.'N'.HPCNUH[NY-2]. 'III.III'.D.DOD.999.999,retSS.FALSE.15.0); 14: BEGIN JZEMB CHICKENCONS[NY-Z]:IFOURPH[NY-2]*HPCNUM[NY-2]; GETNUM(40,ZO.6.'N'.CHICKENCONS[NY-2], 'lll.ll',0.00.999.99.retSS.FALSE,15.0); END; 15: GETNUM(53.9.5.'N'.FOURPH[NY-1]. 'I.III'.0.000.9.999.retSS.FALSE.15.0); 16: GETNUM(51.15.7.'N'.HPCNUM[NY-1]. 'lll.lli'.0.000.999.999.retSS.FALSE.15.0}; 17: BEGIN CHICKENCONS[NY-l]:IFOURPH[NY-I]*HPCNUM[NY-I]; GETNUM(52.20.G.'N'.CHICKENCONS[NY-l]. 'Ill.li'.0.00.999.99.retSS.FALSE.15.0); END; 18: GETNUM(65.9.5.'N'.FOURPH[NY], 'l.lll'.0.000.9.999,retSS.FALSE.15.0); 19: GETNUM(63,15,7.’N'.HPCNUM[NY]. 'lll.lli'.0.000.999.999.retSS.FALSE.15.0); 20: BEGIN CHICKENCONS[NY]:IFOURPH[NY]*HPCNUM[NY]; GETNUM(64.ZO.6.'N'.CHICKENCONS[NY]. 'lll.ll'.0.00.999.99,retSS.FALSE,15.0); END; 21: GETNUM(74.9.5.'N'.FOURPH_OR[NY], 'I.I#I'.0.000.9.999.retSS.retrieveSS.15.0}; 22: BEGIN IF FOURPH_OR[NY]<>0.0 THEN CHICKENCONS_DR[NY]:IFOURPH_OR[NY]*HPCNUM[NY] ELSE CHICKENCONS_OR[NY]:=0.0; GETNUM(73,ZO.G.'N'.CHICKENCONS_OR[NY], ”##I.Il'.0.00.999.99.retSS,FALSE.15.0); END; END; { CASE } if varSSIscreen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in ”retSS". Set "varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE; actionSS:IstaySS; varSS:=l; end else last_fieldSS:IFALSE; UNTIL actionSS-exitSS END; { OVERLAY PROCEDURE CHICKEN CONS PERHEAD } OVERLAY PROCEDURE BROILER_CONS_PERHEAD; { B:BROCON } BEGIN screenSS:IBD; screen_fieldSS:IZZ; varSS:Il; retrieveSS:IFALSE; last_fieldSS:IFALSE; DISPLAY_SCREEN('BROCDN.SCR'.file_existSS); { Display Screen } .2£39 if not file_existSS then begin gotoxy(I.I); write('Missing Screen BROCON') end; retSS:I"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of 1: GETNUM(29.G.Z,'N'.YEAR[NY-3]. 'Il'.0.0.99.0.retSS.FALSE.15.0}; 2: GETNUM(32.G.2,'N'.YEARB[NY-3]. 'IP'.0.0.99.0.retSS.FALSE.15.0}; 3: GETNUM(4I.6.2.'N'.YEAR[NY-2]. 'll'.0.0.99.0.retSS.FALSE.15.0); 4: GETNUM(44.G.2.'N',YEARB[NY-2]. 'II'.0.0.99.0.retSS.FALSE.15.0); 5: GETNUM(53.6.2.'N'.YEAR[NY-l]. 'll'.O.D.99.D.retSS.FALSE.15.0); 6: GETNUM(56.6.2.'N',YEARB[NY-I], 'Il'.0.0.99.0.retSS.FALSE.15,0}; 7: GETNUM(64,6.Z.'N'.YEAR[NY], 'II'.D.D.99.D.retSS.FALSE.15.0); 8: GETNUM(67.6.Z.'N'.YEARB[NY]. 'Il'.D.O,99.0,retSS,FALSE.15.0}; 9: GETNUM(28.9.6.'N'.FIVEPH[NY-3]. 'I.IIII'.0.DDOO.9.9999.retSS.FALSE.15.0}; IO: GETNUM(26.15.B.'N'.BRDNUM[NY-3]. 'IIII.III'.D.OOO.9999.999.retSS.FALSE.15.0); 11: BEGIN BR0ILERCONS[NY-3]:IFIVEPH[NY-3]*BRDNUM[NY-3]; GETNUM(ZB,ZD.G.'N'.BRDILERCONS[NY-3]. 'Il'.ll'.0.00.999.99.retSS.FALSE.15.0}; END; 12: GETNUM(40.9.G.'N'.FIVEPH[NY-2]. 'I.llll'.0.0000.9.9999.retSS.FALSE.15.0); 13: GETNUM(38.15,8.'N'.BRONUM[NY-Z]. 'IIIP.PII'.0.000.9999.999.retSS.FAL$E.15.0}; 14: BEGIN BROILERCDNS[NY-2]:3FIVEPH[NY-2]*BRONUM[NY-2]; GETNUM(40.ZD.6.'N'.BRDILERCONS[NY-2]. 'III.II'.0.00.999.99.retSS.FALSE.15.0); END; 15: GETNUM(52.9.6.'N',FIVEPH[NY-l]. 'l.llll'.0.00DO.9.9999.retSS.FALSE.15.0}; 16: GETNUM(SO.15,B.'N'.BRDNUM[NY-l]. 'IIII.III'.0.000.9999.999.retSS.FALSE.15.0); 17: BEGIN BROILERCONS[NY-l]:IFIVEPH[NY-l]*BRONUH[NY-l]; GETNUM(52.20.6.'N'.BRDILERCDNS[NY-I]. 'III.II'.0.00.999.99.retSS.FALSE.15.0}; END; 18: GETNUM(63.9.6.'N'.FIVEPH[NY]. 'l.llll'.0.00DD.9.9999.retSS.FAL$E.15.0); 19: GETNUM(61.15.B.'N'.BRONUM[NY], 'Ilfl.lll'.0.000.9999.999.retSS.FALSE.15,0}; ZHBCI 20: BEGIN BROILERCONS[NY]:IFIVEPH[NY]*BRONUM[NY]; GETNUM(63.ZO.6.'N'.BROILERCONS[NY]. 'lli.ll'.0.00.999.99,retSS.FALSE.15.0); END; 21: GETNUM(73.9.6.'N'.FIVEPH_OR[NY]. 'I.IIII',0.0000.9.9999.retSS.retrieveSS.15,0); 22: BEGIN IF FIVEPH_OR[NY]<>0.0 THEN BROILERCONS_OR[NY]:IFIVEPH_OR[NY]*BRONUM[NY] ELSE BROILERCONS_OR[NY]:IO.O; GETNUM(73.20.G.'N'.BROILERCONS_OR[NY]. 'lll.ll'.0.00,999.99.retSS.FALSE.15.0); END; END; { CASE } if varSS-screen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in "retSS". Set ”varSS" and "actionSS" } I Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE; actionSS:IstaySS; varSS:=1; end else last_fieldSS:IFALSE; UNTIL actionSSIexitSS END; { OVERLAY PROCEDURE BROILER CONS PERHEAD } OVERLAY PROCEDURE TURKEY_CDNS_PERHEAD; { BzTURCON } BEGIN screenSS:IBI; screen_fieldSS:IZZ; varSS:-l; retrieveSS:IFALSE; last_fieldSS:IFALSE; DISPLAY_SCREEN('TURCON.SCR',file_existSS); { Display Screen } if not file_existSS then begin gotoxy(I.I); write('Missing Screen TURCDN') end; retSS:-"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of l: GETNUM(31.6.2.'N'.YEAR[NY-3]. 'Il'.0.0.99.0.retSS.FALSE.15.0); 2: GETNUM(34.6.2.'N'.YEARB[NY-3]. 'II'.0.0.99.0.retSS.FALSE.15,0}; 3: GETNUM(42.G.2.'N'.YEAR[NY-2]. 'Il'.0.0.99.0.retSS.FALSE.15,0); 4: GETNUM(45.6.2.'N'.YEARB[NY-2]. 'II'.0.0.99.0,retSS.FALSE.15.0}; 5: GETNUM(53.6.2.'N'.YEAR[NY-l]. 'l".0.0.99.0.retSS.FALSE.15.0); 6: GETNUM(56.6.2.'N',YEARB[NY-I]. 12511 'i!’.0.0.99.0.retSS.FALSE.15.0}; 7: GETNUM(64.6.2.'N'.YEAR[NY]. 'II'.0.0.99.0.retSS.FALSE,15.0}; 8: GETNUM(67.6.2.'N'.YEARB[NY]. 'Ii'.D.O.99.0.retSS.FALSE.15.0); 9: GETNUM(30.9.6.'N'.SIXPH[NY-3]. 'l.llll'.0.0DOO.9.9999.retSS.FALSE.15.0); IO: GETNUM(29.15.7.'N'.TURNUM[NY-3]. 'lll.!ll'.0.000.999.999.retSS.FALSE.15.0); ll: BEGIN TURKEYCONS[NY-3]:ISIXPH[NY-3]*TURNUM[NY-3]; GETNUM(30.20.6.'N'.TURKEYCONS[NY-3], 'l##.li'.0.00,999.99.retSS.FALSE.15,0); END; 12: GETNUM(41.9.B.'N'.SIXPH[NY-2]. 'l.llil'.0.0000.9.9999.retSS.FALSE.15,0); 13: GETNUM(40.15.7.'N',TURNUM[NY-2]. 'Ill.ill'.0.0DO,999.999.retSS.FALSE.15.0); I4: BEGIN TURKEYCONS[NY-2]:ISIXPH[NY-2]*TURNUM[NY-2]; GETNUM(4I.20.6.'N'.TURKEYCONS[NY-2]. 'Ill.il'.0.00.999.99.retSS.FALSE.15.0); END; 15: GETNUM(52.9.6.'N'.SIXPH[NY-1]. 'l.llli'.0.0000.9.9999.retSS.FALSE.15.0); 16: GETNUM(51.15.7.'N'.TURNUH[NY-l]. 'Ill.Ill'.0.000,999.999.retSS.FALSE.15.0); 17: BEGIN TURKEYCONS[NY-1]:ISIXPH[NY-1]*TURNUM[NY-I]; GETNUM(52.ZO,6.'N'.TURKEYCONS[NY-I]. 'Oll.ll'.O.DO.999.99.retSS.FALSE.15,0); END; 18: GETNUM(63,9.6.'N'.SIXPH[NY]. 'l.lli#'.0.0000.9.9999.retSS.FALSE.15.0); 19: GETNUM(62.15.7.'N'.TURNUM[NY]. 'l#l.i#l'.0.000.999.999.retSS.FALSE.15.0); 20: BEGIN TURKEYCONS[NY]:ISIXPH[NY]*TURNUM[NY]; GETNUM(63.ZO,6.'N'.TURKEYCONS[NY]. 'ill.!#'.0.00.999.99.retSS.FALSE.15.0); END; 21: GETNUM(73.9.6.'N'.SIXPH_OR[NY], '#.#iil'.0.0000.9.9999.retSS.retrieveSS.15.0); 22: BEGIN IF SIXPH_OR[NY]<>D.D THEN TURKEYCONS_OR[NY]:ISIXPH_OR[NY]*TURNUM[NY] ELSE TURKEYCONS_OR[NY]:IO.O; GETNUM(73.ZO.6.'N'.TURKEYCONS_OR[NY]. 'II!.II'.0.00.999.99.retSS.FALSE.15.0); END; END; { CASE } if varSSIscreen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in ”retSS". Set ”varSS" and "actionSS" } .2592 { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE; actionSS:IstaySS; varSS:=1; end else last_fieldSS:IFALSE; UNTIL actionSSIexitSS END; { OVERLAY PROCEDURE TURKEY CONS PERHEAD } OVERLAY PROCEDURE HOG_CONS_PERHEAD; { BzHOGCON } BEGIN screenSS:I32; screen_fieldSS:IZZ; varSS:Il; retrieveSS:IFALSE; last_fieldSS:IFALSE; DISPLAY_SCREEN('HOGCON.SCR'.file_existSS); { Display Screen } if not file_existSS then begin gotoxy(I.I); write('Missing Screen HOGCON') end; retSS:-"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of l: GETNUM(31.5.2.'N'.YEAR[NY-3]. 'll'.D.O.99.0.ret$S.FALSE,15.0}; 2: GETNUM(34.6.2.'N'.YEARB[NY-3], 'Il'.0.0,99.0.retSS.FALSE.15.0); 3: GETNUM(42,5.2.'N'.YEAR[NY-2]. 'll'.0.0.99.0.retSS.FALSE.15.0); 4: GETNUM(45.6.2.'N'.YEARB[NY-2]. 'Pl'.0.0.99.0.retSS.FALSE.15.0}; 5: GETNUM(53.6.2,'N'.YEAR[NY-l]. 'Il'.D.O.99.0.retSS.FALSE.15.0}; 6: GETNUM(55.6,Z.'N',YEARB[NY-l]. 'll'.O.D.99.0.retSS.FALSE.15.0}; 7: GETNUM(64,6.2.'N'.YEAR[NY], 'll'.0.0.99.0.retSS.FALSE.15.0}; B: GETNUM(B7.6.2.'N'.YEARB[NY]. 'll'.0.0.99.0.retSS.FALSE.15.0}; 9: GETNUM(3D.9.B.'N'.SEVENPH[NY-3]. 'II.III'.0.000.99.999.retSS.FALSE.15.0}; IO: GETNUM(30.15.6.'N'.HOGNUH[NY-3]. 'PI.IPI'.O.DDD.99.999.retSS,FALSE,15,0); ll: BEGIN HOGCDNS[NY-3]:ISEVENPH[NY-3]*HOGNUH[NY-3]; GETNUM(29.ZO.7.'N'.HOGCONS[NY-3]. 'llll.li',0.00.9999.99.retSS.FALSE.15.0); END; 12: GETNUM(41.9.6.'N'.SEVENPH[NY-Z]. 'll.lll'.0.000.99.999.retSS.FALSE.15.0); l3: GETNUM(41.15.6.'N'.HOGNUM[NY-Z]. 'II.III'.0.000.99.999.retSS.FALSE.15.0): 2593 I4: BEGIN HOGCONS[NY-Z]:ISEVENPH[NY-2]*HOGNUM[NY-2]; GETNUM(40.20.7.'N'.HOGCONS[NY—2]. 'Illt.ll',0.0D.9999.99.retSS.FALSE.15.0); END; 15: GETNUM(52.9.B.'N'.SEVENPH[NY-I]. 'li.ill'.0.000.99.999.retSS.FALSE.15.0); 16: GETNUM(52.15.G.'N'.HOGNUM[NY-1]. 'll.lll'.0.000.99.999.retSS.FALSE.15.0); 17: BEGIN HOGCONS[NY-I]:ISEVENPH[NY-1]*HOGNUM[NY-1]; GETNUM(SI.20.7.'N'.HOGCONS[NY-I]. 'llli.ll'.0.00.9999.99.retSS.FALSE.15.0); END; 18: GETNUM(63.9.6.'N'.SEVENPH[NY]. 'll.lll'.0.000.99.999.retSS,FALSE.15.0); 19: GETNUM(63.15.6.'N'.HOGNUM[NY], 'll.ll#'.0.000.99.999,retSS.FALSE.15.0); 20: BEGIN HOGCONS[NY]:ISEVENPH[NY]*HOGNUH[NY]; GETNUM(GZ.ZO.7.'N'.HOGCONS[NY]. 'IIII.II'.0.00.9999.99.retSS.FALSE.15.0); END; 21: GETNUM(73.9.6.'N'.SEVENPH_OR[NY]. 'll.Ill'.0.000.99.999.retSS.retrieveSS.15.0); 22: BEGIN IF SEVENPH_OR[NY]<>0.0 THEN HOGCONS_OR[NY]:ISEVENPH_OR[NY]’HOGNUM[NY] ELSE HOGCONS_OR[NY]:IO.O; GETNUM(72.ZO.7.'N'.HOGCONS_OR[NY], 'Ill!.'l'.0.00.9999.99.retSS.FALSE.15.0); END; END; { CASE } if varSS-screen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in "retSS”. Set "varSS” and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE; actionSS:IstaySS; varSS:=1; end else last_fieldSS:IFALSE; UNTIL actionSSIexitSS END; { OVERLAY PROCEDURE HOG CONS PERHEAD } OVERLAY PROCEDURE OTHER_UNALLOCATED_CONS; { B:OUNCON } BEGIN screenSS:I33; screen_fieldSS:II3; varSS:I1; retrieveSS:IFALSE; last_fieldSS:IFALSE; .2514 DISPLAY_SCREEN('OUNCON.SCR'.file_existSS); { Display Screen } if not file_existSS then begin gotoxy(I.I); write('Missing Screen OUNCDN') end; retSS:I"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of 1: GETNUM(29.B.2.'N'.YEAR[NY-3]. 'll'.0.0.99.0.retSS.FALSE.15.0); 2: GETNUM(32.B,2.'N',YEARB[NY-3]. 'll'.0.0.99.0.retSS.FALSE.15.0}; 3: GETNUM(40.B.2.'N'.YEAR[NY-2]. 'II'.0.0.99.0.retSS.FALSE.15.0}; 4: GETNUM(43.B.2.'N',YEARB[NY-2]. 'll'.0.0.99.0.retSS.FALSE.15.0}; 5: GETNUM(51.B.2.'N'.YEAR[NY-l]. 'Il'.0.0,99.0,retSS.FALSE,15.0}; 6: GETNUM(54,B.2.'N'.YEARB[NY-I]. 'il'.0.0.99.0.retSS.FALSE.15.0}; 7: GETNUM(62,B.2.'N'.YEAR[NY], 'Il'.0.0.99.0.retSS.FALSE.15.0}; B: GETNUM(65.B.2.'N',YEARB[NY]. 'il'.0.0.99.0.retSS.FALSE.15.0}; 9: GETNUM(Z7.14.7,'N'.OTHERCONS[NY—3]. 'IIII.II',0.00.9999.99.retSS.FALSE.15.0}; IO: GETNUM(38.14.7.'N'.OTHERCDNS[NY-2]. 'llll.li'.0.00.9999.99.retSS.FALSE.15.0); 11: GETNUM(49.I4.7.'N'.DTHERCONS[NY-l]. 'IIII.II'.0.00.9999.99,retSS.FALSE,15.0); 12: GETNUM(60.14.7,'N'.DTHERCONS[NY], 'il'l.l'.0.0.9999.9.retSS.FALSE.15.0}; 13: GETNUM(71 . 14. 7. 'N' ,OTHER_UNALLOC_OR [NY]. 'llll.!'.D.D.9999.9.retSS.retrieveSS.15.0); END; { CASE } if varSS-screen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in "retSS". Set "varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE; actionSS:IstaySS; varSS:=I; end else last_fieldSS:IFALSE; UNTIL actionSSIexitSS END; { OVERLAY PROCEDURE OTHER UNALLOCATED CONS } OVERLAY PROCEDURE SCREEN_IS; { THE CORN CONSUMPTION SUMMARY SCREEN } BEGIN screenSS:I34; screen_fieldSS:I44; varSS:Il; 25955 retrieveSS:IFALSE; last_fieldSS:IFALSE; DISPLAY_SCREEN('CORNCONS.SCR'.file_existSS); { Display Screen } if not file_existSS then begin gotoxy(I.I); write('Missing Screen CORNCONS') end; retSS:-"; { Display Items. Change retrieveSS to TRUE and INPUT items} REPEAT { until actionSS I exitSS } CASE varSS of l: GETNUM(36.4.2.'N'.YEAR[NY-3], 'Ii'.0.0.99.0.retSS.FALSE.15.0)z 2: BEGIN YEARB[NY-3]:8YEAR[NY-3]+I; GETNUM(39.4.Z.'N'.YEARB[NY-3]. 'Il'.0.0.99.0.retSS.FALSE.15.0); END; 3: GETNUM(47.4.Z.'N'.YEAR[NY-Z]. 'PI'.0.0.99.0.retSS.FALSE.15.0); 4: BEGIN YEARB[NY-2]:IYEAR[NY-2]+1; GETNUM(SO,4.2.'N'.YEARB[NY-Z]. 'II'.0.0.99.0.retSS.FALSE.15.0); END; 5: GETNUM(58.4.2.'N'.YEAR[NY-I], 'II'.O.D.99.0.retSS.FALSE.15.0}; 6: BEGIN YEARB[NY-I]:IYEAR[NY-I]+l; GETNUM(61.4.2.'N'.YEARB[NY-l]. 'll'.0.0,99.0.retSS.FALSE.15.0)z END; 7: GETNUM(69.4.2.'N'.YEAR[NY]. 'Il'.0.0.99.0.retSS.FALSE.15.0}; 8: BEGIN YEARB[NY]:=YEAR[NY]+I; GETNUM(72.4.2.'N'.YEARB[NY], 'Il'.0.0.99.0.retSS,FALSE.15.0); END; . 9: GETNUM(3S.6.6.'N'.DAIRYCONS[NY-3]. 'Ill.ll'.0.00.999.99.retSS.FALSE.15.0); IO: GETNUM(34,B.7.'N'.CATONFED[NY-3]. 'l'll.ll'.0.00.9999.99.retSS.FALSE.15.0); 11: GETNUM(3S.IO.6.'N'.OTHERBEEFCAT[NY-3]. 'lll.ll'.0.00.999.99,retSS.FALSE.15.0); IZ: GETNUM(35.I3.6.'N'.CHICKENCONS[NY—3]. 'Iil.ll'.0.00.999.99.retSS.FALSE.15.0); I3: GETNUM(35.15.6.'N'.BROILERCONS[NY-3]. 'l'l.ll'.0.00.999.99.retSS.FALSE.15.0}; I4: GETNUM(35.17.6.'N'.TURKEYCONS[NY-3]. 'lll.ll'.0.00.999.99.retSS.FALSE.15.0}; 15: GETNUM(34.19.7.'N'.HOGCONS[NY-3]. 'l'll.ll'.0.00.9999.99.retSS.FALSE.15.0}; 16: GETNUM(35.21.G.'N'.OTHERCONS[NY-3]. 'lll.ll'.0.00.999.99.retSS.FALSE.15.0); l7: BEGIN 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: JZEMG FEEDT[NY-B]:IDAIRYCONS[NY-3]+CATONFED[NY-3]+OTHERBEEFCAT[NY-3] +CHICKENCONS[NY-3]+BROILERCONS[NY-3]+TURKEYCONS[NY-3] +HOGCONS[NY-3]+OTHERCONS[NY-3]; GETNUM(34.23.7.'N'.FEEDT[NY-3], 'IIII.II'.D.OO.9999.99.retSS.FALSE.15.0); END; GETNUM(46.6.6.'N'.OAIRYCONS[NY-2], 'lil.ll'.0.00.999.99.retSS.FALSE.15.0); GETNUM(45.B.7.'N'.CATONFED[NY-2]. 'Illl.ll'.0.0D.9999.99.retSS.FALSE.15.0); GETNUM(46.IO.6.'N'.DTHERBEEFCAT[NY-2]. 'lll.ll'.0.00.999.99.retSS.FALSE.15.0); GETNUM(46.I3.6.'N'.CHICKENCONS[NY-2]. 'lll.ll'.0.00.999.99.retSS.FALSE,15.0); GETNUM(46.IS.6.'N'.BROILERCONS[NY-2]. 'lll.ll'.0.0D.999.99.retSS.FALSE.15.0); GETNUM(46.17.6.'N'.TURKEYCONS[NY-2]. 'III.II'.0.00.999.99,retSS.FALSE.15.0); GETNUM(45.19.7.'N'.HOGCONS[NY-2]. 'illl.il'.0.00.9999.99.retSS.FALSE.15.0): GETNUM(46.21.6.'N'.OTHERCONS[NY—2]. 'Iil.ll'.0.00.999.99.retSS.FALSE.15.0); BEGIN FEEDT[NY-Z]:IDAIRYCONS[NY-2]+CATONFED[NY-2]+OTHERBEEFCAT[NY-2] +CHICKENCONS[NY-2]+BROILERCONS[NY-2]+TURKEYCONS[NY-2] +HOGCONS[NY-2]+OTHERCONS[NY-Z]; GETNUM(4S,23.7.'N'.FEEDT[NY-2]. 'IIII.II'.0.00,9999.99.retSS.FALSE.15.0); END; GETNUM(57.6.6.'N'.DAIRYCONS[NY-1]. 'Ill.ll'.0.0D.999.99.retSS.FALSE.15.0); GETNUM(56.B.7.'N'.CATONFED[NY-I]. 'Illl.ll'.0.00.9999.99.retSS.FALSE.15.0); GETNUM(57.IO.6.'N'.DTHERBEEFCAT[NY-1]. 'lll.li'.0.00.999.99.retSS.FALSE.15.0); GETNUM(57.13.6.'N'.CHICKENCONS[NY-l]. 'ill.ll'.0.00.999.99.retSS.FALSE.15.0); GETNUM(57.15.6.'N'.BROILERCONS[NY-I]. 'lll.ll'.0.00.999.99.retSS.FALSE.15.0); GETNUM(57.17.6.'N'.TURKEYCONS[NY-l]. 'li!.ll'.0.00.999.99.retSS.FALSE.15.0); GETNUM(56.19.7.'N'.HOGCONS[NY-I]. 'lill.l#'.0.00.9999.99.retSS.FALSE.15.0); GETNUM(57.21.G.'N'.OTHERCONS[NY-1]. 'lll.ll'.D.OO.999.99.retSS,FALSE.15.0); BEGIN FEEDT[NY-I]:IDAIRYCONS[NY-l]+CATONFED[NY-1]+OTHERBEEFCAT[NY-1] +CHICKENCONS[NY-1]+BROILERCONS[NY-1]+TURKEYCONS[NY-I]+HOGCONS[NY-I] +OTHERCONS[NY-l]; GETNUM(56.23.7.'N'.FEEDT[NY—l]. 'Ill!.li'.D.OO.9999.99.retSS.FALSE,15.0); END; begin if dairycons_DR[NY]<>D.O then 37: 38: 39: 40: 41: 42: 43: 44: 12517 dairycons[NY]:Idairycons_OR[NY]; GETNUM(68.6.6.'N'.DAIRYCONS[NY]. 'll!.ll'.D.DO.999.99.retSS.FALSE.15.0); end; begin if catonfed_OR[NY]<>O.D then catonfed[NY]:Icatonfed_OR[NY]; GETNUM(67,8.7.'N',CATONFED[NY], 'lill.ll'.D.OO.9999.99,retSS.FALSE.15.0); end; begin if otherbeefcat_OR[NY]<>O.D then otherbeefcat[NY]:Iotherbeefcat_0R[NY]; GETNUM(68.IO.6.'N'.OTHERBEEFCAT[NY], 'lll.ll'.0.00.999.99.retSS.FALSE.15.0}; end; begin if chickencons_OR[NY]<>O.D then chickencons[NY]:Ichickencons_OR[NY]; GETNUM(68,13.6.'N'.CHICKENCONS[NY]. 'lll.ll'.O.DO.999.99.retSS.FALSE.15.0); end; begin if broilercons_OR[NY]<>0.0 then broilercons[NY]:Ibroilercons_OR[NY]; GETNUM(68.15.6.'N'.BROILERCONS[NY]. 'lll.ll'.0.00,999.99.retSS.FALSE.15.0}; end; begin if turkeycons_DR[NY]<>O.D then turkeycons[NY]:Iturkeycons_OR[NY]; GETNUM(68.I7.6.'N',TURKEYCONS[NY]. 'il!.ll'.D.DO.999.99.retSS.FALSE.15.0); end; begin if hogcons_OR[NY]<>D.O then hogcons[NY]:Ihogcons_OR[NY]; GETNUM(67.19.7. 'N' .HOGCONS[NY], 'Ilil.ll'.0.00.9999.99.retSS.FALSE.15.0); end; begin if other_unalloc_OR[NY]<>D.D then othercons[NY]:Iother_unalloc_OR[NY]; GETNUM(68.21.6.'N'.DTHERCONS[NY]. 'l'l.ll'.0.00.999.99.retSS.FALSE.15.0}; end; BEGIN FEEDT[NY]:IDAIRYCONS[NY]+CATONFED[NY]+OTHERBEEFCAT[NY]+CHICKENCONS[NY] +BROILERCONS[NY]+TURKEYCONS[NY]+HOGCONS[NY]+OTHERCONS[NY]; GETNUM(67.23.7.'N'.FEEDT[NY]. 'l#ll.ll'.0.00.9999.99.retSS.FALSE.15.0); END; END: { CASE } .2538 if varSS-screen_fieldSS then last_fieldSS:ITRUE; RET_STATUS; { Check the code in "retSS". Set ”varSS" and "actionSS" } { Check to see whether to switch retrieveSS to true } if last_fieldSS and (not retrieveSS) then begin retrieveSS:ITRUE; last_fieldSS:IFALSE; actionSS:IstaySS; varSS:-1; end else last_fieldSS:IFALSE; UNTIL actionSSIexitSS END; { OVERLAY PROCEDURE SCREEN_IS } *’*" End of Include file FEEDTOR.INC ‘*'*‘ BEGIN REPEAT IF (EDIT-FALSE) AND (BACTIVEIFALSE) THEN BEGIN color(Hhite.Black); ClrScr; FLASHUP('HIfeedt.NOESC.NOHOVE'); GOTOXY(1.25); READ(RESPONSE); CLREOL: FLASHUP(‘CIALL'); END; CASE (RESPONSE) OF '1': screen_lS; { feed grain summary } '2': dairy_animal_cons_perhead; '3': cattle_on_feed_cons_perhead; '4': other_beef_cattle_cons_perhead; '5': chicken_cons_perhead; '6': broiler_cons_perhead; '7': turkey_cons__perhead; '8': hog_cons_perhead; '9 ' : other_unal located_cons; 'O': ; END; { CASE } IF (response <> '0') THEN HHATMENU(BSCREEN.BACTIVE.UB); UNTIL (RESPONSE - '0'); END; VAR RESPONSEI:CHAR; BEGIN { Main Test Program } vtypeSS:ISET_HONITOR_TYPE; { ZIColor. 3IMono } screenSS:IO; use_screenSS:I1; BeepOnSS:IFALSE; initial; INIT_VAR_UTIL: { USED IN THE LOAD AND SAVE PROCEDURES } FLASHUP(‘X:LITLPSCR'); FLASHUP(‘LITLPLIB'); .25T9 FLASHUP(‘S-TITLE'); UHATMENU(BSCREEN.BACTIVE.UB); REPEAT IF (EDIT-FALSE) AND (BACTIVEIFALSE) THEN BEGIN COLOR(HHITE.BLACK); CLRSCR; FLASHUP('UIMAINMENU.NOESC.NOMOVE'); GOTOXY(1.25); READ(RESPONSE); CLREOL: FLASHUP(‘CIALL'); ENO; CASE (RESPONSE) OF '1':LOAD; '2':SAVE; '3':EXOGENOUS_VARIABLE_SUB_MENU: '4':BEGIN { ADD_FACTOR } UBzIZ; BACTIVE:-TRUE; CASE (BSCREEN) OF I: ADD_FACTOR_SCREEN_1: 2: ADO_FACTOR_SCREEN_2: END; { CASE BSCREEN OF } END; '5':BEGIN { BALANCE SHEET } UB:=3; BACTIVEzITRUE: CASE (BSCREEN) OF I: SCREEN_IZ; 2: SCREEN_IB; 3: SCREEN_I4; END; { CASE BSCREEN OF } END; '6':feed_grain_demand; { DOMESTIC FEED DEMAND } '7':EXPORT4VARIABLE_SUB_MENU; { EXPORT_DEMAND } '8':begin REPEAT IF (EDIT=FALSE) AND (BACTIVE=FALSE) THEN BEGIN COLOR(HHITE.BLACK); CLRSCR; FLASHUP('HISOLUTION.NOESC.NOMOVE'); GOTOXY(1.25); READ(RESPONSEI); CLREOL: FLASHUP(‘CIALL'); END; CASE (RESPONSEI) OF '1': remain; '2': BEGIN UBzIZ; BACTIVEzITRUE; 3(3C) CASE (BSCREEN) OF I: RANDOMIZE_YIELD_SCREEN_1: {SOLVES FOR A SINGLE PRICE} 2: DISPLAY_RANDOMIZE_SCREEN; {SOLVES HITH RANDOM SHOCKS} END; { CASE BSCREEN OF } END; '3':; end; { CASE } IF (RESPONSEI <> '3') THEN UHATMENU(BSCREEN.BACTIVE.UB); UNTIL(RESPONSE1I'3'); END; '9':EXITSCREEN: END; {CASE} IF (NOT EXIT) THEN HHATMENU(BSCREEN.BACTIVE.UB); UNTIL (EXIT-TRUE); END. { PROGRAM FIRST.PAS } PROCEDURE NAME ADD_FACTOR_SCREEN_1 ADD_FACTDR_SCREEN_2 BROILER_CONS_PERHEAD CALCULATIONS CATTLE_DN_FEED_CDNS_PERHEAD CHICKEN_CONS_PERHEAD CHECKDISK CONTINUE DAIRY_ANIMAL_CONS-PERHEAD DISPLAY_RANDDMIZE_SCREEN DIRECTORY EXOGENOUS_VARIABLE_SUB_MENU EXPORTERS_COMPOSITES EXPORTERS_GDP_SCREEN_1 EXPORTERS_GDP_SCREEN_2 EXPORTERS_NET_EXPORTS_SCREEN EXPORTER_CROP_REVENUE EXPORT_VARIABLE_SUB_MENU EXITSCREEN FIND_PERCENTILES FREESTOCK_PRDC FREESTOCK_PROC FSI_USE_SCREEN FEED_GRAIN_DEMAND FLASHUP FUNCTION_KEY_PRESSED GETNUM HOG_CONS_PERHEAD HELPSCREEN IMPORTERS_GDP_SCREEN_I IMPORTERS_GDP_SCREEN_2 IMPORTERS_GDP_SCREEN_3 INIT_VAR_UTIL IOCHECK INITIAL LOAD LINE25 LDADBEV OTHER_BEEF_CATTLE_CONS_PERHEAD OTHER_UNALLOCATED_CDNS PRESSKEY PRINT RANDOMIZE_YIELD_SCREEN_1 RET_STATUS RE_CALCULATE REMAIN SAVE SCREEN_I SCREEN_Iz SCREEN_13 ALPHABETIC SORT OF PROCEDURES LISTING FILE HOTT.INC HOTT.INC FEEDTOR.INC CACULATE.INC FEEDTOR.INC FEEDTOR.INC MENU.UTL MENU.UTL FEEDTOR.INC RANDOMIZE.INC MENU.UTL FIRST.PAS FIRST.PAS MAGIC4.INC MAGIC4.INC UETT.INC MAGIC5.INC FIRST.PAS MENU.UTL RANDOMIZE.INC CACULATE.INC RECALC.INC MAGICI.INC FIRST.PAS MENU.UTL MENU.UTL FIRST.PAS FEEDTOR.INC MENU.UTL MAGIC3.INC MAGIC3.INC MAGIC3.INC MENU.UTL MENU.UTL INITIAL.INC INTRO.INC MENU.UTL MENU.UTL FEEDTOR.INC FEEDTOR.INC MENU.UTL MENU.UTL RANDOMIZE.INC FIRST.PAS RECALC.INC REMAIN.INC INTRO.INC MAGICI.INC BALSHEET.INC BALSHEET.INC PROCEDURE NAME SCREEN_14 SCREEN_IS SCREEN_z SCREEN_3 SCREEN_3A SCREEN_4 SOLUTION_SCREEN SAVEBEV TURKEY_CONS_PERHEAD US_COMPOSITES_SCREEN_1 US_CDMPOSITES_SCREEN_2 US_CDMPDSITES_SCREEN_3 US_COMPOSITES_VARIABLES US_EXPORTS_SCREEN UNATNENU ZEBRAC 302 ALPHABETIC SORT OF PROCEDURES (Cont'd) LISTING FILE BALSHEET.INC FEEDTOR.INC MAGICI.INC MAGICI.INC MAGICI.INC MAGICI.INC SOLUTION.INC MENU.UTL FEEDTOR.INC MAGIC2.INC MAGIC2.INC MAGIC2.INC FIRST.PAS UETT.INC MENU.UTL ZEBRAC.INC BIBLIOGRAPHY BIBLIOGRAPHY Anderson, J.R., J.L. Dillon, and J.B. Hardaker. A9ri2ulturel_negi§ign_5nalxei§- Ames= Iowa state University Press, 1977. Bentham, Jeremy. Intrggggtign to the Principles of Morals and Legislation. Hafner, London, 1948. Bernoulli, Daniel. "Exposition of a New Theory on the Measurement of Risk." Econometrica 22, January 1954. Bhattacharyya, Gouri K., and Richard A. Johnson. §§atistical Qoncepts and Methods. Whiley & Sons, New York, 1977. Dell. John P- 2r2du2ti9n.£22n2micei_1be2rx_flith Applicatiggg. John Wiley 8 Sons, New York, 1978. Eisner. Robert. Er2e2tatign§1_21en§1_end_§epitel Expenditures: A Synthesis of Ex Post and Ex Ante Data. presented at the Conference on Expectations, Uncertainty, and Business Behavior, October 1955. Feed Situation and Outlook Report. United States Department of Agriculture, August 1986. Ferris, John N. Egrecgsting ngn Producers' Besponse to tne_12§§_Eeed_§rain_£regram- Presented at AAEA 1986. ------ , John. "Probability Forecasts on U.S. Corn Prices." Ag Econ Staff Paper #82—4, Michigan State University, December 1983. ------ , J. "Feed Grain, Wheat, and Oilseed Supply and Demand." MSU Staff Paper, October 1985. Gadson, Kenneth E., J. Michael Price, and Larry E. Salathe, U.S. Department of Agriculture, Staff Report AGESBZOSOG, May 1982. Halter, A. N. and R. Mason. ”Utility Measurement for Those Who Need to Know," Neeterneleurna1_9f_egrigultural Economics, Vol. 3, No. 2, December 1978, p. 99-109. 303 304 BIBLIOGRAPHY (cont'd) Heady. Earl 0- An_EQ2n2metric_Simulatign_ngdel_2f_the U1S1_Earm_Sect2r_and_its_Eelicie§_and_E22d_Ereert§- Vandenhoeck & Ruprecht, 1978. Hertzmark, Donald R. ”Economic Feasibility of Agricultural Alcohol Production Within a Biomass System." American Journal of Agricultural Economics, December 1980. Hilker, Jim and Mary Schultz. '"PIK and ROLL" - Is It For You.‘ Agricultural Economics Staff Paper No. 86-90, November 1986. Houck, J.P. and M.E. Ryan. ”Supply Analysis for Corn in the United States: The Impact of Changing Government Programs." American Journal of Agriculture Economics, May 1972. Houck, J.P., M.E. Ryan, and A. Subotnik. 3 nd Their Products. University on Minnesota Press, Minneapolis, 1972. Knight. Frank H. Bisk1_UOgertaintxl_and_2r2fit- Houghton- Mifflin, 1921. Marshall, Alfred. Bringiplgg_gt_£ggngm1g§. Macmillan & Co., London, 1920. Mc Keon, John. "Farm Commodity Programs: Their Effect On Plantings of Feed Grains and Soybeans." doctoral dissertation, Michigan State University, 1974. Nerlove, Marc. m 5 ° st ation of Eatmets' Bespgnse IQ Etige. The John Hopkins Press, 1958. Nicholson, Walter. ' o ' ° s 'nci les and_fixtens1gn§. The Dryden Press, Chicago, 1985. Pindyck, Robert S. and Daniel L. Rubinfeld. Eggngmgttig M9de1s_and_E22n2mic_Eerecaet§. McGraw-Hill. New York. 1981. Raiffa, Howard. pegigign_§ngty§i§. Addison-Wesley Publishing Co., Reading, Mass., 1968 Robison, L.J., and P.J. Barry. The ngpetitive Eizm's Begpgn§e_tg_gi_k. Macmillian, New York, 1987. A l 305 BIBLIOGRAPHY (cont'd) Ryan, W.J.L. Etige_1hggzy. Macmillan and Company Limited, London, 1958. Schlaifer, Robert. MW Busine§§_pe§i§ign§. Mc Grew-Hill Book Co., New York, 1961. Shagam, Shayle. "Specification and Structure of an International Agricultural Trade Model With Linkage Capabilities." master's thesis, Michigan State University, 1986. Tomek, W.G. and K.L. Robinson. Agtiggltgtgl_£;gdg§t Etiggg. Cornell University Press, Ithaca, NY, 1972. Tweeten, L.G. and C.L. Quance. "Positivistic Measures of Aggregate Supply Elasticities: Some New Approaches." American Journal of Agricultural Economics, 1969. Tweeten. L G. Wiser University of Nebraska Press, Lincoln, 1970. Wailes, E. "A Simulation Model of United States Agriculture." doctoral dissertation, Michigan State University, 1983. Walker, 0. L. "Teaching Decision Making Under Uncertainty in the Farm Management Curriculum." Bzggeeding§_gt mew Michigan State University, East Lansing, Michigan, April 14-15 1977, New York: Agricultural Development Council, Inc. Walker, O.L. and A.G. Nelson. ' e nd c tio t o c's' - ' e ncertaint nt 'v v' w o ' t . Oklahoma State University Agricultural Experiment Station Research Report P-747, March 1977.