From 6a4003b81ced7add131a9b6ee31b84fe9c84ebd4 Mon Sep 17 00:00:00 2001 From: <> Date: Tue, 27 Feb 2024 16:40:08 +0000 Subject: [PATCH] Deployed 57d8280d with MkDocs version: 1.5.3 --- index.html | 4 ++-- search/search_index.json | 2 +- sitemap.xml.gz | Bin 127 -> 127 bytes 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/index.html b/index.html index 19e1ed4c..84bd06ec 100644 --- a/index.html +++ b/index.html @@ -389,7 +389,7 @@

User Programming Guide (UPG)

-

SOFTWARE VERSION 23.4

+

SOFTWARE VERSION 24.1

NYCPlanningLogo <>

Department of City Planning / City of New York
@@ -450,5 +450,5 @@

User Programming Guide (UPG)

diff --git a/search/search_index.json b/search/search_index.json index e24ad29e..2c6917ba 100644 --- a/search/search_index.json +++ b/search/search_index.json @@ -1 +1 @@ -{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"User Programming Guide (UPG) SOFTWARE VERSION 23.4 Department of City Planning / City of New York Information Technology Division Citywide Geo Application Services","title":"Home"},{"location":"aboutUs/","text":"CITY OF NEW YORK Eric Adams, Mayor DEPARTMENT OF CITY PLANNING Dan Garodnick, Director Edith Hsu-Chen, Executive Director INFORMATION TECHNOLOGY DIVISION Varghese Abraham, Chief Information Officer ENTERPRISE DATA MANAGEMENT Amanda Doyle, Director Rodrigo Zapata, Manager, Geographic Research NYC PLANNING GEOSUPPORT SERVICES Steve Oliver, Director, GeoSupport Services GeoSupport Services Team Jie Ding Narish Singh The Geosupport logo is a trademark of the Department of City Planning / City of New York. Geosupport Desktop Edition is a trademark of the Department of City Planning / City of New York Windows is a registered trademark of Microsoft Corporation in the United States and/or other countries. Other product and company names mentioned herein may be the trademarks or registered trademarks of their respective owners.","title":"About Us"},{"location":"overview/","text":"Overview of the User Programming Guide This document, the Geosupport System User Programming Guide (UPG), contains the detailed technical information necessary for users to design and develop their own application programs that access Geosupport, as well as to use GBAT. (The use of GOAT and the AIMZ transaction requires no programming skills and they are not documented herein.) The UPG serves as a comprehensive set of technical specifications for the Geosupport System, and can be incorporated into procurement documents issued by city agencies soliciting consulting services for application design and development. The contents of the UPG are as follows Chapter I is a general overview of the system, its purposes, features, means of access and the broad outlines of its architecture. Chapter II is an introduction to the Geosupport API, describing in general terms its components and the user programming required to utilize it. ( Chapter VIII discusses the usage of the API in greater detail.) Chapter III covers street name processing and in particular describes important user-controllable features of Geosupport\u2019s street name standardizing routine. Chapter IV discusses Geosupport\u2019s system of numeric street codes, a feature that is relevant principally for applications that must retrieve data from user files by geographic location. Chapters V through VII discuss in detail the types of geographic locations that Geosupport can process and the functions that process them: Chapter V discusses address and non-addressable place name processing and Functions 1, 1A, 1B, 1E, and AP. Chapter VI discusses tax lot and building processing and Functions 1A &1B (aspects not covered in Chapter V ), BL and BN. Chapter VII discusses street configuration processing and Functions 2, 3, 3C and 3S. Chapter VIII describes in detail the application program coding and JCL required to use the Geosupport API Chapter IX discusses GBAT, Geosupport\u2019s standalone batch utility program. Appendix 1 contains summary reference information for each Geosupport function, including a brief description of the function and reference to relevant sections of the UPG. Appendix 2 contains layouts of the Geosupport API Mainframe-Specific Work Areas (MSWs). Note: MSWs are no longer supported. Appendix 3 is a data item dictionary, containing descriptions of the formats and contents of all of the data items that appear in the work area. Appendix 4 is a comprehensive table of Geosupport Return Codes, Reason Codes and Messages. Appendix 5 contains listings of the MSW Geosupport COPY files for all of the programming languages supported by the Geosupport COPY feature. (This important feature is discussed in Chapter VIII .) Note: MSWs are no longer supported. Appendix 6 describes the procedures that users should follow to report Geosupport System problems and to provide feedback to GSS of rejected input data that the user is unable to resolve. Appendix 7 is a list of the data centers where Geosupport is installed. Appendix 8 contains sample user programs written in various programming languages together with sample JCL. Appendix 9 contains reference tables for setting up GBAT jobs. Appendix 10 contains sample GBAT jobs. Appendix 11 contains a set of guidelines for user application design. Appendix 12 contains a description of Character-Only Work Areas (COWs) and how to use them. Appendix 13 contains layouts of the Character-Only Work Areas (COWs). Appendix 14 contains listings of the COW Geosupport COPY files for all of the programming languages supported by the Geosupport COPY feature. (This important feature is discussed in Chapter VIII .) Appendix 15 describes where the 2010 Census Geography was incorporated into the Version 11.0 Geosupport System. The appendix includes tables describing the offsets of the data and the field names in the COPYLIBs Appendix 16 contains a description of the history and significance of the Neighborhood Tabulation Areas. Appendix 17 contains additional TPAD information, including error processing and error message handling. The Glossary contains definitions of special terms and acronyms Appendices 1 through 5, together with Appendices 13 and 14 (for COW Work Areas), collectively can serve as a quick reference guide for experienced Geosupport users. Note: Since the geography of New York City is constantly growing and changing, any examples mentioned in this document may, occasionally, function differently from the way they are described. The examples will, in any case, illustrate the concept being discussed. Summary of Changes and New Features The updates listed below indicate changes and new features since the last release of the User Programming Guide (written for Software Version 19.4). Some of the changes and features are described elsewhere in the UPG; other changes are mentioned only in this summary to make users aware of items such as general improvements or items displayed by GOAT. Note: Entries in this summary which begin with \u2018(COW Only)\u2019 describe changes and features which are available only for applications that use the Character-Only Work Areas (COWs). Character-Only Work Areas are described in Appendix 12 . To take advantage of the full functionality of Geosupport, applications need to be written using the Character-Only Work Areas (COWs). Character-Only Work Areas (COWs) , as the name implies, contain character fields only. The original Geosupport work areas were called the Mainframe-Specific Work Areas (MSWs) . Reminder: As of January 1, 2020, MSWs are no longer supported. See the updated MSW announcement below in the Version 20.1 section. Reminder: As of Version 19.3, Geosupport enhancements are supported only in a non-mainframe environment (NMF). See the mainframe announcement below in the Version 20.1 section. As a result of this announcement, entries in this summary often begin with '(NMF Only)' . By definition, all non-mainframe environment applications are COW applications. (MSW applications cannot run in a non-mainframe environment.) Typically, MSWs contain some fields that are in a format which is unique to IBM mainframes. COWs were introduced as an essential part of a long-term effort to port the Geosupport System to other platforms, e.g. the Desktop, the Internet (web version of GOAT) , GeoX, .net, and Linux. For a detailed description of the COWs, see Appendix 12 . Work Area 1 and Work Area 2 are often referred to, in this document, as WA1 and WA2 , respectively. -------------------- Version 23.2 2020 PUMA Field Added The 2020 PUMA field contains the Public Use Microdata Area Code associated with the input location. The 2020 PUMA is related to 2020 Census tract and NTA applications. The existing field called PUMA Code is based on the 2010 Census geography. Available in Functions 1EX, 1B, 3X, 3CX, 3E, 3CE Function 1X, 1EX, 1B (please note - new fields will not be in regular Function 1 Work Area) Function Field Name Start Length F1EX Puma_2020 783 5 F1B Puma_2020 783 5 Function 3X, 3E (please note - new fields will not be in regular Function 3 Work Area) Function Field Name Start Length F3X Left_Puma_2020 851 5 Right_Puma_2020 856 5 F3CX Puma_2020 586 5 F3E Left_Puma_2020 358 5 Right_Puma_2020 363 5 F3CE Puma_2020 358 5 Available across all Geosupport platforms: Geosupport Desktop Edition (Windows 32-bit and 64-bit; LINUX) GeoX.Net classes Geoservice NYCgbat New Desktop GBAT (beta) GOAT (web version only) Version 22.3 Sanborn Volume and Page Information Please be informed that the Sanborn Volume and Page information returned in functions 1A, 2, BL, and BN of the Geosupport System has been deprecated, as no source data is available to maintain a reliable level of accuracy or currency. For now, the field will continue to exist and be populated with data; however, users are hereby advised of the obsolete nature of this data, and the plan to eliminate this field in a future release. Users that rely on retrieving this information from Geosupport should plan accordingly. DSNY Commercial Waste Zones As part of the Department of Sanitation\u2019s (DSNY) comprehensive plan for reforming the private carting industry, it has established Commercial Waste Zones (CWZ). These 20 zones were designed to limit the number of carters that serve the commercial establishments of a geographic area of the city, thereby reducing noise pollution, reducing greenhouse gas emissions, and increasing public safety. Starting with this release (22.3/22C) Geoupport will be returning the CWZ designations via Function 1E and Function 1E Extended calls. The new field san_commercial_waste_zone will contain 4 characters consisting of the borough initials MN, BX, BK, QN, and SI, a one-digit number, and an optional suffix letter (currently \u201cA\u201d or \u201cB\u201d). Available in Functions F1E and F1EX Function Field Name Start Length Notes F1E, F1EX san_commercial_waste_zone 263 4 in pac.h this is after the hurricane_zone Available across all Geosupport platforms: Geosupport Desktop Edition (Windows 32-bit and 64-bit; LINUX) GeoX.Net classes Geoservice NYCgbat New Desktop GBAT (beta) GOAT (web version only) Version 21.4 Condo Base BBL Starting with release 21D, Geosupport includes a new field called the Condo Base BBL field that has been added to Work Area 2 for functions 1A, 1AX, BL, BLX, BN, and BNX. This field will only be populated for condos without a Condo Billing BBL; otherwise, the field will contain spaces. For Condos, Geosupport returns the Condo Billing BBL as the BBL to use for the condo complex. Early in the condo conversion process DOF often has not provided a Condo Billing BBL so this field will contain all zeroes. In these cases, Geosupport will return all zeroes in the BBL. Geosupport also returns high and low condo unit BBLs but many users do not want to rely on these as a substitute because it can lead to official notices being sent to a condo unit and not the managers of the condo complex. Therefore, we are adding this new Condo Base BBL field to provide users with a BBL that may be used on a temporary basis. Available in Functions F1A, F1AX, FBL, FBLX, FBN, FBNX. In pac.h this is after the single byte filler08 that follows the condo_hi_bbl field. Function Field Name Start Length Notes F1A, F1AX condo_base_bbl 136 10 in pac.h this is after the single byte filler08 that follows the condo_hi_bbl field Available across all Geosupport platforms: Geosupport Desktop Edition (Windows 32-bit and 64-bit; LINUX) GeoX.Net classes Geoservice NYCgbat New Desktop GBAT (beta) GOAT (web version only) Version 21.3 2020 Census Geography This Geosupport Release, v21.3/21C, will include new fields for the 2020 Census geography. The information below is to aid users in planning to implement these changes. Several new fields specifically related to the new 2020 Census geography have been added. An existing field has been renamed to avoid confusion about which Census the values are derived from. The former NTA field based on the 2010 Census geography has been renamed to NTA_2010. While these new fields appear in the mainframe version of Geosupport, we will be providing limited support to users who don\u2019t make efforts to port their applications to other platforms. Users are encouraged to use Geosupport Desktop Edition, Geosupport Linux Edition, GeoX classes for .Net, GeoX classes for Java, or Geoservice instead of the mainframe version of Geosupport. The new Census 2020 fields will be returned in Geosupport Functions as follows: Function 1X, 1EX, 1B (please note - new fields will not be in regular Function 1 Work Area) Field Name Length Note Census_Tract_2020 6 bytes Census_Block_2020 4 bytes Census_Block_Suffix_2020 1 byte this field will be blank NTA_2020 6 bytes CDTA_2020 4 bytes the CDTA did not exist for the 2010 Census Existing NTA field will be renamed NTA_2010 Function 2 (only the Census Tract for 2020 will be in the regular Function 2 Work Area) Field Name Length Note Census_Tract_2020 6 bytes Function 2W (other than Census Tract 2020, the new fields will not be in regular Function 2 Work Area) Field Name Length Note Census_Block_2020 4 bytes Census_Block_Suffix_2020 1 byte NTA_2020 6 bytes CDTA_2020 4 bytes the CDTA did not exist for the 2010 Census Function 3X (please note - new fields will not be in regular Function 3 Work Area) Field Name Length Note Left_Census_Tract_2020 6 bytes Left_Census_Block_2020 4 bytes Left_Census_Block_Suffix_2020 1 byte Left_NTA_2020 6 bytes (2 char boro + 4 digits) Left_CDTA_2020 4 bytes (2 char boro + 2 digits) Right_Census_Tract_2020 6 bytes Right_Census_Block_2020 4 bytes Right_Census_Block_Suffix_2020 1 byte Right_NTA_2020 6 bytes (2 char boro + 4 digits) Right_CDTA_2020 4 bytes (2 char boro + 2 digits) [the CDTA did not exist for the 2010 Census] Existing NTA field in Segside will be renamed NTA_2010 Function 3E (please note - new fields will not be in regular Function 3 Work Area) SegsideB7sc structure with left and right array entries Field Name Length Note Census_Tract_2020 6 bytes Census_Block_2020 4 bytes Census_Block_Suffix_2020 1 byte NTA_2020 6 bytes CDTA_2020 4 bytes [the CDTA did not exist for the 2010 Census] Existing NTA field will be renamed NTA_2010 Available across all Geosupport platforms: Geosupport Desktop Edition (Windows 32-bit and 64-bit; LINUX) GeoX.Net classes Geoservice NYCgbat New Desktop GBAT (beta) GOAT (web version only) Version 20.1 IMPORTANT MAINFRAME ANNOUNCEMENT (Reminder) As of Geosupport Version 19.3, enhancements to Geosupport (such as new fields and new functions) are being made available and supported only for applications running in a non-mainframe environment (NMF) , e.g. Desktop Edition, GeoX, .net, and Linux. Enhancements to Geosupport will continue to be implemented for non-mainframe environments. It is important for users to convert any existing applications to a COW format in a non-mainframe environment. IMPORTANT UPDATED MSW ANNOUNCEMENT MSW IS NO LONGER SUPPORTED As of January 1, 2020, Mainframe-Specific Work Areas (MSWs) are no longer supported. Character-Only Work Areas (COWs) will continue to be supported. As mentioned above, COWs will be enhanced only in a non-mainframe environment. It is essential for users to convert any existing MSW applications to the COW format in a non-mainframe environment. User-written application programs and GBAT utilities that use the MSW format may continue to run but no technical support will be available. If an MSW issue arises, users can no longer call DCP for resolution. To assist users in the conversion to COW format: * Appendix 12 contains information needed to create COW applications. * Appendix 13 contains the COW Work Area Layouts. * Appendix 14 contains the COW copy files. Any further issues may be directed via email to: Geosupport_DL@planning.nyc.gov SYSTEM ENHANCEMENTS IMPLEMENTED IN VERSION 20.1 Note: All enhancements (if any) are available and supported in COW non-mainframe environments (NMF) only. (Web GOAT) Fine tuning and bug fixes were implemented GOAT will now accept an ampersand in the street name input for all functions. (Geosupport System) Fine tuning and bug fixes were implemented For functions 1, 1E and 1B, the count of cross streets in the list of the High-End Cross Streets (a.k.a \u2018To Cross Streets\u2019) is now accurate even for Addressable Place Names and Non-Addressable Place Names (NAPs). (All COW Function 1, 1E and 1B related calls) --------------------","title":"Overview of the UPG"},{"location":"overview/#overview-of-the-user-programming-guide","text":"This document, the Geosupport System User Programming Guide (UPG), contains the detailed technical information necessary for users to design and develop their own application programs that access Geosupport, as well as to use GBAT. (The use of GOAT and the AIMZ transaction requires no programming skills and they are not documented herein.) The UPG serves as a comprehensive set of technical specifications for the Geosupport System, and can be incorporated into procurement documents issued by city agencies soliciting consulting services for application design and development. The contents of the UPG are as follows Chapter I is a general overview of the system, its purposes, features, means of access and the broad outlines of its architecture. Chapter II is an introduction to the Geosupport API, describing in general terms its components and the user programming required to utilize it. ( Chapter VIII discusses the usage of the API in greater detail.) Chapter III covers street name processing and in particular describes important user-controllable features of Geosupport\u2019s street name standardizing routine. Chapter IV discusses Geosupport\u2019s system of numeric street codes, a feature that is relevant principally for applications that must retrieve data from user files by geographic location. Chapters V through VII discuss in detail the types of geographic locations that Geosupport can process and the functions that process them: Chapter V discusses address and non-addressable place name processing and Functions 1, 1A, 1B, 1E, and AP. Chapter VI discusses tax lot and building processing and Functions 1A &1B (aspects not covered in Chapter V ), BL and BN. Chapter VII discusses street configuration processing and Functions 2, 3, 3C and 3S. Chapter VIII describes in detail the application program coding and JCL required to use the Geosupport API Chapter IX discusses GBAT, Geosupport\u2019s standalone batch utility program. Appendix 1 contains summary reference information for each Geosupport function, including a brief description of the function and reference to relevant sections of the UPG. Appendix 2 contains layouts of the Geosupport API Mainframe-Specific Work Areas (MSWs). Note: MSWs are no longer supported. Appendix 3 is a data item dictionary, containing descriptions of the formats and contents of all of the data items that appear in the work area. Appendix 4 is a comprehensive table of Geosupport Return Codes, Reason Codes and Messages. Appendix 5 contains listings of the MSW Geosupport COPY files for all of the programming languages supported by the Geosupport COPY feature. (This important feature is discussed in Chapter VIII .) Note: MSWs are no longer supported. Appendix 6 describes the procedures that users should follow to report Geosupport System problems and to provide feedback to GSS of rejected input data that the user is unable to resolve. Appendix 7 is a list of the data centers where Geosupport is installed. Appendix 8 contains sample user programs written in various programming languages together with sample JCL. Appendix 9 contains reference tables for setting up GBAT jobs. Appendix 10 contains sample GBAT jobs. Appendix 11 contains a set of guidelines for user application design. Appendix 12 contains a description of Character-Only Work Areas (COWs) and how to use them. Appendix 13 contains layouts of the Character-Only Work Areas (COWs). Appendix 14 contains listings of the COW Geosupport COPY files for all of the programming languages supported by the Geosupport COPY feature. (This important feature is discussed in Chapter VIII .) Appendix 15 describes where the 2010 Census Geography was incorporated into the Version 11.0 Geosupport System. The appendix includes tables describing the offsets of the data and the field names in the COPYLIBs Appendix 16 contains a description of the history and significance of the Neighborhood Tabulation Areas. Appendix 17 contains additional TPAD information, including error processing and error message handling. The Glossary contains definitions of special terms and acronyms Appendices 1 through 5, together with Appendices 13 and 14 (for COW Work Areas), collectively can serve as a quick reference guide for experienced Geosupport users. Note: Since the geography of New York City is constantly growing and changing, any examples mentioned in this document may, occasionally, function differently from the way they are described. The examples will, in any case, illustrate the concept being discussed.","title":"Overview of the User Programming Guide"},{"location":"overview/#summary-of-changes-and-new-features","text":"The updates listed below indicate changes and new features since the last release of the User Programming Guide (written for Software Version 19.4). Some of the changes and features are described elsewhere in the UPG; other changes are mentioned only in this summary to make users aware of items such as general improvements or items displayed by GOAT. Note: Entries in this summary which begin with \u2018(COW Only)\u2019 describe changes and features which are available only for applications that use the Character-Only Work Areas (COWs). Character-Only Work Areas are described in Appendix 12 . To take advantage of the full functionality of Geosupport, applications need to be written using the Character-Only Work Areas (COWs). Character-Only Work Areas (COWs) , as the name implies, contain character fields only. The original Geosupport work areas were called the Mainframe-Specific Work Areas (MSWs) . Reminder: As of January 1, 2020, MSWs are no longer supported. See the updated MSW announcement below in the Version 20.1 section. Reminder: As of Version 19.3, Geosupport enhancements are supported only in a non-mainframe environment (NMF). See the mainframe announcement below in the Version 20.1 section. As a result of this announcement, entries in this summary often begin with '(NMF Only)' . By definition, all non-mainframe environment applications are COW applications. (MSW applications cannot run in a non-mainframe environment.) Typically, MSWs contain some fields that are in a format which is unique to IBM mainframes. COWs were introduced as an essential part of a long-term effort to port the Geosupport System to other platforms, e.g. the Desktop, the Internet (web version of GOAT) , GeoX, .net, and Linux. For a detailed description of the COWs, see Appendix 12 . Work Area 1 and Work Area 2 are often referred to, in this document, as WA1 and WA2 , respectively. --------------------","title":"Summary of Changes and New Features"},{"location":"overview/#version-232","text":"2020 PUMA Field Added The 2020 PUMA field contains the Public Use Microdata Area Code associated with the input location. The 2020 PUMA is related to 2020 Census tract and NTA applications. The existing field called PUMA Code is based on the 2010 Census geography. Available in Functions 1EX, 1B, 3X, 3CX, 3E, 3CE Function 1X, 1EX, 1B (please note - new fields will not be in regular Function 1 Work Area) Function Field Name Start Length F1EX Puma_2020 783 5 F1B Puma_2020 783 5 Function 3X, 3E (please note - new fields will not be in regular Function 3 Work Area) Function Field Name Start Length F3X Left_Puma_2020 851 5 Right_Puma_2020 856 5 F3CX Puma_2020 586 5 F3E Left_Puma_2020 358 5 Right_Puma_2020 363 5 F3CE Puma_2020 358 5 Available across all Geosupport platforms: Geosupport Desktop Edition (Windows 32-bit and 64-bit; LINUX) GeoX.Net classes Geoservice NYCgbat New Desktop GBAT (beta) GOAT (web version only)","title":"Version 23.2"},{"location":"overview/#version-223","text":"Sanborn Volume and Page Information Please be informed that the Sanborn Volume and Page information returned in functions 1A, 2, BL, and BN of the Geosupport System has been deprecated, as no source data is available to maintain a reliable level of accuracy or currency. For now, the field will continue to exist and be populated with data; however, users are hereby advised of the obsolete nature of this data, and the plan to eliminate this field in a future release. Users that rely on retrieving this information from Geosupport should plan accordingly. DSNY Commercial Waste Zones As part of the Department of Sanitation\u2019s (DSNY) comprehensive plan for reforming the private carting industry, it has established Commercial Waste Zones (CWZ). These 20 zones were designed to limit the number of carters that serve the commercial establishments of a geographic area of the city, thereby reducing noise pollution, reducing greenhouse gas emissions, and increasing public safety. Starting with this release (22.3/22C) Geoupport will be returning the CWZ designations via Function 1E and Function 1E Extended calls. The new field san_commercial_waste_zone will contain 4 characters consisting of the borough initials MN, BX, BK, QN, and SI, a one-digit number, and an optional suffix letter (currently \u201cA\u201d or \u201cB\u201d). Available in Functions F1E and F1EX Function Field Name Start Length Notes F1E, F1EX san_commercial_waste_zone 263 4 in pac.h this is after the hurricane_zone Available across all Geosupport platforms: Geosupport Desktop Edition (Windows 32-bit and 64-bit; LINUX) GeoX.Net classes Geoservice NYCgbat New Desktop GBAT (beta) GOAT (web version only)","title":"Version 22.3"},{"location":"overview/#version-214","text":"Condo Base BBL Starting with release 21D, Geosupport includes a new field called the Condo Base BBL field that has been added to Work Area 2 for functions 1A, 1AX, BL, BLX, BN, and BNX. This field will only be populated for condos without a Condo Billing BBL; otherwise, the field will contain spaces. For Condos, Geosupport returns the Condo Billing BBL as the BBL to use for the condo complex. Early in the condo conversion process DOF often has not provided a Condo Billing BBL so this field will contain all zeroes. In these cases, Geosupport will return all zeroes in the BBL. Geosupport also returns high and low condo unit BBLs but many users do not want to rely on these as a substitute because it can lead to official notices being sent to a condo unit and not the managers of the condo complex. Therefore, we are adding this new Condo Base BBL field to provide users with a BBL that may be used on a temporary basis. Available in Functions F1A, F1AX, FBL, FBLX, FBN, FBNX. In pac.h this is after the single byte filler08 that follows the condo_hi_bbl field. Function Field Name Start Length Notes F1A, F1AX condo_base_bbl 136 10 in pac.h this is after the single byte filler08 that follows the condo_hi_bbl field Available across all Geosupport platforms: Geosupport Desktop Edition (Windows 32-bit and 64-bit; LINUX) GeoX.Net classes Geoservice NYCgbat New Desktop GBAT (beta) GOAT (web version only)","title":"Version 21.4"},{"location":"overview/#version-213","text":"2020 Census Geography This Geosupport Release, v21.3/21C, will include new fields for the 2020 Census geography. The information below is to aid users in planning to implement these changes. Several new fields specifically related to the new 2020 Census geography have been added. An existing field has been renamed to avoid confusion about which Census the values are derived from. The former NTA field based on the 2010 Census geography has been renamed to NTA_2010. While these new fields appear in the mainframe version of Geosupport, we will be providing limited support to users who don\u2019t make efforts to port their applications to other platforms. Users are encouraged to use Geosupport Desktop Edition, Geosupport Linux Edition, GeoX classes for .Net, GeoX classes for Java, or Geoservice instead of the mainframe version of Geosupport. The new Census 2020 fields will be returned in Geosupport Functions as follows: Function 1X, 1EX, 1B (please note - new fields will not be in regular Function 1 Work Area) Field Name Length Note Census_Tract_2020 6 bytes Census_Block_2020 4 bytes Census_Block_Suffix_2020 1 byte this field will be blank NTA_2020 6 bytes CDTA_2020 4 bytes the CDTA did not exist for the 2010 Census Existing NTA field will be renamed NTA_2010 Function 2 (only the Census Tract for 2020 will be in the regular Function 2 Work Area) Field Name Length Note Census_Tract_2020 6 bytes Function 2W (other than Census Tract 2020, the new fields will not be in regular Function 2 Work Area) Field Name Length Note Census_Block_2020 4 bytes Census_Block_Suffix_2020 1 byte NTA_2020 6 bytes CDTA_2020 4 bytes the CDTA did not exist for the 2010 Census Function 3X (please note - new fields will not be in regular Function 3 Work Area) Field Name Length Note Left_Census_Tract_2020 6 bytes Left_Census_Block_2020 4 bytes Left_Census_Block_Suffix_2020 1 byte Left_NTA_2020 6 bytes (2 char boro + 4 digits) Left_CDTA_2020 4 bytes (2 char boro + 2 digits) Right_Census_Tract_2020 6 bytes Right_Census_Block_2020 4 bytes Right_Census_Block_Suffix_2020 1 byte Right_NTA_2020 6 bytes (2 char boro + 4 digits) Right_CDTA_2020 4 bytes (2 char boro + 2 digits) [the CDTA did not exist for the 2010 Census] Existing NTA field in Segside will be renamed NTA_2010 Function 3E (please note - new fields will not be in regular Function 3 Work Area) SegsideB7sc structure with left and right array entries Field Name Length Note Census_Tract_2020 6 bytes Census_Block_2020 4 bytes Census_Block_Suffix_2020 1 byte NTA_2020 6 bytes CDTA_2020 4 bytes [the CDTA did not exist for the 2010 Census] Existing NTA field will be renamed NTA_2010 Available across all Geosupport platforms: Geosupport Desktop Edition (Windows 32-bit and 64-bit; LINUX) GeoX.Net classes Geoservice NYCgbat New Desktop GBAT (beta) GOAT (web version only)","title":"Version 21.3"},{"location":"overview/#version-201","text":"IMPORTANT MAINFRAME ANNOUNCEMENT (Reminder) As of Geosupport Version 19.3, enhancements to Geosupport (such as new fields and new functions) are being made available and supported only for applications running in a non-mainframe environment (NMF) , e.g. Desktop Edition, GeoX, .net, and Linux. Enhancements to Geosupport will continue to be implemented for non-mainframe environments. It is important for users to convert any existing applications to a COW format in a non-mainframe environment. IMPORTANT UPDATED MSW ANNOUNCEMENT MSW IS NO LONGER SUPPORTED As of January 1, 2020, Mainframe-Specific Work Areas (MSWs) are no longer supported. Character-Only Work Areas (COWs) will continue to be supported. As mentioned above, COWs will be enhanced only in a non-mainframe environment. It is essential for users to convert any existing MSW applications to the COW format in a non-mainframe environment. User-written application programs and GBAT utilities that use the MSW format may continue to run but no technical support will be available. If an MSW issue arises, users can no longer call DCP for resolution. To assist users in the conversion to COW format: * Appendix 12 contains information needed to create COW applications. * Appendix 13 contains the COW Work Area Layouts. * Appendix 14 contains the COW copy files. Any further issues may be directed via email to: Geosupport_DL@planning.nyc.gov SYSTEM ENHANCEMENTS IMPLEMENTED IN VERSION 20.1 Note: All enhancements (if any) are available and supported in COW non-mainframe environments (NMF) only. (Web GOAT) Fine tuning and bug fixes were implemented GOAT will now accept an ampersand in the street name input for all functions. (Geosupport System) Fine tuning and bug fixes were implemented For functions 1, 1E and 1B, the count of cross streets in the list of the High-End Cross Streets (a.k.a \u2018To Cross Streets\u2019) is now accurate even for Addressable Place Names and Non-Addressable Place Names (NAPs). (All COW Function 1, 1E and 1B related calls) --------------------","title":"Version 20.1"},{"location":"tableofcontents/","text":"Table of Contents Overview of the UPG 25 Chapter I: SYSTEM OVERVIEW 36 I.1 Introduction 37 I.2 System Functionality 41 I.3 Introduction to Geographic Retrieval Consistency 44 I.4 The Geosupport Function Suite 47 I.5 Overview of System Architecture 60 The Foreground Component 60 The Background Component 61 Foreground Component Updating: New File Releases 62 Foreground Component Updating: New Software Versions and Vestigial Features 64 Character-Only Work Areas (COWs) 67 User Feedback of Rejects 67 I.6 Technical References 70 Chapter II: INTRODUCTION TO THE GEOSUPPORT API 73 II.1 Introduction 75 II.2 Geosupport Return Codes and Reject Handling 80 II.3 Geosupport API User Programming Procedure 85 II.4 One-Work-Area and Two-Work-Area Calls 88 II.5 Coding Geosupport API Calls 92 II.6 The Work Area C/C++ Header Files and Visual Basic Typedef File 95 II.7 Coding API Calls When Using Geosupport C/C++ 95 II.7.1 C/C++ Source Code Statement 96 II.8 Creating a Geosupport Desktop Edition Application 99 II.9 Sample Programs with Descriptions 99 II.9.1 C/C++ Sample Program with Descriptions 100 II.9.2 Visual Basic(VB/VBA) Sample Program with Descriptions 120 II.10 The Long Work-Area-2 Option 139 II.11 The Auxiliary Segment Option (COW Only) 142 II.12 The Extended Work Area 2 Option - via Mode Switch (COW Only) 142 II.13 The Enhanced Work Area 2 Option - via Mode Switch (NMF Only) 145 Chapter III: STREET NAME PROCESSING 147 III.1 Introduction 149 III.2 Street Name Normalizing and the SNL Parameter 153 III.3 Street Name Sorting and Normalization Format Options 158 III.4 Partial Street Names 165 III.5 The Similar Names Feature 171 III.6 Unconventional Geographic Feature Names 183 Paper Streets 184 Non-Street Features 184 Addressable Place Names 185 Non-Addressable Place Names (NAPs) 186 Support of Non-Addressable Place Names (NAPs) with address numbers 188 Pseudo-Street Names 191 Duplicate Address Pseudo-Street Names (DAPSs) 191 Intersection Names 193 III.7 Street Name Browsing and Functions BB and BF 194 III.8 Selection of Output Street Names (COW only) 198 CHAPTER IV: STREET CODES 201 IV.1 Introduction: Street Codes and Geographic Retrieval Consistency 203 IV.2 Street Name Relationships: Aliases and Locally Valid Street Names 206 IV.3 Five-Digit and Ten-Digit Street Codes 208 IV.4 Resynchronization of Street Codes Stored in User Files 213 Resynchronization procedure using B5SCs 216 Resynchronization procedure using street names 218 Resynchronization procedure using B10SCs 218 Summary of Street Code Resynchronization 222 IV.5 Seven-Digit Street Codes: Local Street Name Validity, Local Group Codes 225 Local Group Codes (LGCs) 227 Street Name Codes (SNCs) 229 IV.6 Functions D, DG and DN; Primary, Principal and Preferred Street Names 232 Input Data 233 Output Data 235 Preferred Street Names 238 IV.7 Street Codes and Non-Addressable Place Names 243 IV.8 Street Code Input Feature 246 Functions 1, 1A, 1B, 1E, and AP and Street Code Input 248 NAPs and Street Code Input 250 IV.9 Summary of Street Codes 250 Table IV-1: Notation for Street Code Items 255 Table IV-2: Summary of Street Code Items 256 CHAPTER V: ADDRESS PROCESSING - FUNCTIONS 1, 1A, 1B, 1E, AP 258 V.1 Introduction 260 V.2 Address Numbers (\u2018House\u2019 Numbers), Normalization and Formats: HNI, HNS and HND 260 Processing of HNIs or HNSs by the Display Functions 263 HNIs or HNSs as Input to the Address-Processing Functions 264 House Number Format Standards 265 V.3 Specifying Input Data to the Address-Processing Functions: NAPs, Parsed-Form Addresses, Free-Form Addresses and Unit Information 274 V.4 Input Address Acceptance/Rejection and its Validation Significance 278 Function 1E 280 Function 1A 281 Function AP 282 Function 1B Input Address Processing and Return Code Processing 283 V.5 Output Data Returned in Work Area 2 of Address Processing Functions 285 Function 1 285 Function 1E 291 Function 1A 292 Function AP (COW Only) 294 Function 1B (COW Only) 295 Work Area 2 for Function 1B 296 V.5.1 Mainframe GOAT Screen for Function 1B 299 V.6 Duplicate Addresses 300 V.7 Marble Hill/Rikers Island 312 V.8 Special Ruby Street Processing 315 V.9 Vanity Addresses 316 V.10 Out-of-Sequence Addresses 318 V.11 ZIP Code as Input Instead of Borough Code 320 V.12 Fuzzy Search for Address Functions 1, 1A, 1B, and 1E 321 V.13 Special Place Name Processing 322 V.14 \u2018No Cross Street\u2019 Segment Processing 322 V.15 UNIT Information Feature (COW Only) 323/td> CHAPTER VI: TAX LOT AND BUILDING PROCESSING - FUNCTIONS 1A, BL, BN / ADDRESS POINT PROCESSING - FUNCTION AP 335 VI.1 Introduction 337 VI.2 Tax Lots and BBLs 338 VI.3 Buildings and Building Identification Numbers (BINs) 341 VI.4 Condominiums and Billing BBLs 345 VI.5 Vacant Street Frontages and Pseudo-Addresses 347 VI.6 Function 1A 349 VI.7 Function BL 356 VI.8 Standard and Legacy Versions of Functions 1A and BL 359 VI.9 Function BN 360 VI.10 Function AP (COW Only) 361 VI.11 Transitional Property Address Directory (TPAD) Building Identification Number (BIN) and status information for Functions 1A, 1B, BL and BN (COW Only) 363 CHAPTER VII: STREET CONFIGURATION PROCESSING - FUNCTIONS 2, 3, 3C, 3S 374 VII.1 Introduction 376 VII.2 Intersections:Function 2 and Function 2W 381 Nodes 382 The Two-Node Case 388 Overview of Function 2 Node Enhancements 393 VII.3 Three-Street Configurations - Concepts and Terminology 419 Street Stretches and Street Segments 420 Logical Direction Assigned to Streets 426 Blockfaces 427 T-Intersections 429 VII.4 Street Segments and Related Configurations: Function 3 434 Input Data Examples for Function 3 436 Ambiguous Function 3 Input Data 440 Function 3 Output Data 441 Cross Street Reversal Flag 446 Segment Orientation 448 Consistent Retrieval of Application Data by \u2018On\u2019 Street and Two Cross Streets 450 Converting Address-Keyed Application Data to \u2018On\u2019 Street/Cross Streets 452 VII.5 Blockfaces: Function 3C 453 VII.6 Street Stretches: Function 3S 458 Locally Valid Street Name or Street Code processing 468 Roadbed Street Stretches: Function 3S Partial Implementation 469 Coincident Segments: Function 3S Processing 473 VII.7 Borough Boundary Processing (Functions 2, 3 and 3C) 474 VII.8 Fuzzy Name Search Processing for Functions 3, 3C, and 3S \u2013 Front-truncated street names 476 CHAPTER VIII: THE GEOSUPPORT API - USER PROGRAM CODING AND JCL 479 VIII.1 Introduction 481 VIII.2 Review of the Geosupport API 483 Important note for CICS applications written in NATURAL 486 VIII.3 Coding API Calls 487 VIII.4 The Geosupport COPY Files 489 Overview of COPY Files in General 490 The Geosupport COPY Libraries 493 VIII.5 Coding API Calls When Using Geosupport COPY Files 500 COBOL Source Code Statements 502 Assembler Source Code Statements 506 PL/1 Source Code Statements 508 IBM/C Source Code Statements 510 NATURAL Source Code Statements 514 VIII.6 JCL for the Compile Step 519 VIII.7 JCL for the Linkage Editor Step 522 VIII.8 JCL for the Execute Step (Batch Applications) 525 CHAPTER IX: GEOSUPPORT BATCH ADDRESS TRANSLATOR (GBAT) 528 IX.1 Introduction 530 IX.2 JCL Considerations 531 IX.3 GBAT Processing and Programmed Abnormal Terminations 539 IX.4 The Input Data File (DDNAME=INFILE or INVSAM) 545 IX.5 The Input Control File (DDNAME=CARDIN) 546 IX.6 The Input Alias File (DDNAME=ALIASES) 552 IX.7 The Output File of Accepted Records (DDNAME=OUTFILE) 557 IX.8 The Output Files of Rejected Records (DDNAME=ERRFILx) 565 IX.8.1 ERRFILE 566 IX.8.2 ERRFIL2 (for use by Function 1B only) 567 IX.8.3 ERRFIL3 (for use by Function2 with RELATEDNODES=YES) 569 IX.8.4 ERRFIL4 (for use with WORKAREA1=YES) 573 IX.8.5 ERRFIL5 (for use by Function 1B with WORKAREA1=YES) 574 IX.9 The Output Print File (DDNAME=SYSPRINT) 575 CHAPTER X: Desktop Edition GBAT 577 X.1 What is GBAT 579 X.2 Using GBAT 580 X.2.1 Before You Begin 581 X.2.2 Starting the Application 581 X.2.3 Selecting an ODBC Data Source 581 X.2.4 Configuring a New Text Data Source 583 X.2.5 Function Selection 592 X.2.6 Function-Specific Configuration 594 X.2.7 General Input Configuration 611 X.2.8 Output Configuration 614 X.2.9 Function Processing 618 CHAPTER XI: Desktop Edition GOAT 621 XI.1 Introduction 623 XI.2 How to Use GOAT 624 XI.3 Invoking Function 1 or Function 1E 626 XI.4 Invoking Function 1A 629 XI.5 Invoking Function 2 632 XI.6 Invoking Function 3 or Function 3C 635 XI.7 Invoking Function 3S 639 XI.8 Invoking Function B 644 XI.9 Invoking Function BL 644 XI.10 Invoking Function BN 647 XI.11 Invoking Function D 648 Appendices and Glossary 653 APPENDIX 1: GEOSUPPORT FUNCTIONS - QUICK REFERENCE 655 Introduction 655 Function 1 663 Function 1A 669 Function 1E 676 Function 1B 679 Function 1N 682 Function 2 (and 2W) 684 Function 3 692 Function 3C 699 Function 3S 705 Function AP 711 Functions BB and BF 716 Function BL 719 Function BN 722 Functions D, DG and DN 725 APPENDIX 2: MAINFRAME-SPECIFIC WORK AREA LAYOUTS (MSW) 732 Work Area 1 (MSW) All Functions 735 Regular Work Area 2 (MSW) Layout for Function 1 740 Long Work Area 2 (MSW) Layout for Function 1 743 Regular Work Area 2 (MSW) Layout for Functions 1A, BL, BN 744 Long Work Area 2 (MSW) Layout for Functions 1A and BL 747 Regular Work Area 2 (MSW) Layout for Function 1E 750 Long Work Area 2 (MSW) Layout for Function 1E 753 Work Area 2 (MSW) Layout for Function 2 754 Work Area 2 (MSW) Layout for Function 3 756 Long Work Area 2 (MSW) Layout for Function 3 759 Work Area 2 (MSW) Layout for Function 3C 761 Work Area 2 (MSW) Layout for Function 3S 764 APPENDIX 3: DATA ITEM DICTIONARY 766 APPENDIX 4: GEOSUPPORT RETURN CODES, REASON CODES AND MESSAGES 922 TPAD WARNING MESSAGES and TPAD Conflict Flag / REASON CODE QUALIFIERS in( ) 938 APPENDIX 5: GEOSUPPORT COPY FILES (MSW) 940 COBOL COPY Files (MSW) 941 ASSEMBLER COPY FILES (MSW) 1010 PL/1 COPY Files (MSW) 1066 C COPY File (MSW) 1147 NATURAL LDAs (MSW) 1183 APPENDIX 6: USER FEEDBACK PROCEDURES 1249 APPENDIX 7: MAINFRAME DATA CENTERS WHERE GEOSUPPORT IS INSTALLED 1252 APPENDIX 8: SAMPLE APPLICATION PROGRAMS AND JCL 1254 COBOL SAMPLE PROGRAM #1 1259 COBOL SAMPLE PROGRAM #2 1303 ASSEMBLER SAMPLE PROGRAM #1 1342 ASSEMBLER SAMPLE PROGRAM #2 1443 PL/1 SAMPLE PROGRAM #1 1495 PL/1 SAMPLE PROGRAM #2 1525 C SAMPLE PROGRAM #1 1540 C SAMPLE PROGRAM #2 1571 NATURAL SAMPLE PROGRAM #1 1600 NATURAL SAMPLE PROGRAM #2 1629 APPENDIX 9: GBAT REFERENCE TABLES 1657 Table A9-1: GBAT Control Entry Descriptions by Keyword 1657 Table A9-2: Summary of GBAT Control Entries by Keyword 1703 Table A9-3: Summary of GBAT Control Entry Usage by Function 1711 Table A9-4: MSW Appended Items for GEOCODE=NO 1723 Table A9-5: MSW Format- Length of GBAT\u2011Appended Datad 1727 APPENDIX 10: SAMPLE GBAT JOBS 1730 SAMPLE GBAT JOB #1 1731 SAMPLE GBAT JOB #2 1759 APPENDIX 11: GUIDELINES FOR APPLICATION DESIGN 1790 APPENDIX 12: CHARACTER-ONLY WORK AREAS (COW) 1796 Introduction 1796 Overview 1798 Comparison of COWs and MSWs 1800 Consideration When Using the COWs 1804 Work Area Lengths (COWs and MSWs) 1805 Specifying a Work Area Format (COW or MSW) 1807 GBAT Considerations for COWs 1808 COPY Files for COWs 1822 APPENDIX 13: CHARACTER-ONLY WORK AREA LAYOUTS (COW) 1828 Character-Only Work Area 1 (COW) \u2013 All Functions 1834 Work Area 2 (COW) - Functions 1, 1E 1846 Work Area 2 (COW) - Functions 1, 1E Extended 1852 Work Area 2 (COW) - Functions 1A, BL, BN 1860 Long Work Area 2 (COW) - Functions 1A, BL 1868 TPAD Long Work Area 2 (COW) - Functions 1A, BL 1870 Work Area 2 (COW) - Functions 1A, BL, BN Extended 1871 Work Area 2 (COW) - Function 1B 1874 Work Area 2 (COW) - Function AP 1896 Work Area 2 (COW) - Function AP Extended 1901 Work Area 2 (COW) - Function 2 1904 Work Area 2 (COW) - Function 2W (Wide) 1908 Work Area 2 (COW) - Function 3 1911 Work Area 2 (COW) - Function 3 with Auxiliary Segment List 1919 Work Area 2 (COW) - Function 3 Extended 1920 Work Area 2 (COW) - Function 3 Extended with Auxiliary Segment List 1925 Work Area 2 (COW) - Function 3C 1926 Work Area 2 (COW) - Function 3C with Auxiliary Segment List 1931 Work Area 2 (COW) - Function 3C Extended 1932 Work Area 2 (COW) - Function 3C Extended with Auxiliary Segment List 1936 Work Area 2 (COW) - Function 3S 1936 APPENDIX 14: GEOSUPPORT COPY FILES (COW) 1939 COBOL COPY Files (COW) 1942 P1COB COPY File 1942 P2COB COPY File 1952 P2COB1A COPY File 2014 P2COB1AL COPY File 2020 P2COB3S COPY File 2059 P2COBAP COPY File 2070 ASSEMBLER COPY Files (COW) 2079 P2BAL COPY File 2090 P2BAL1A COPY File 2152 P2BAL3S COPY File 2202 P2BALAP COPY File 2205 PL/1 COPY Files (COW) 2218 P1PL1 COPY File 2218 P2PL1 COPY File 2227 P2PL11A COPY File 2292 P2PL11AL COPY File 2299 P2PL13S COPY FIle 2351 P2PL1AP COPY File 2353 C COPY File (COW) 2363 PAC COPY File 2363 NATURAL LDAs (COW) 2440 GEOLP1 COPY File 2440 GEOLP2 COPY File 2445 GEOLP21A COPY File 2508 GEOLP2AL COPY File 2515 GEOLP23S COPY File 2564 GEOL2AP COPY File 2565 GEOL2APX COPY File 2567 APPENDIX 15: 2010 CENSUS GEOGRAPHY \u2013 Functions 1, 1E, 2, 3, and 3C 2571 APPENDIX 16: NEIGHBORHOOD TABULATION AREAS (NTAS) AND PUMAS 2582 APPENDIX 17: TPAD - ADDITIONAL INFORMATION 2585 APPENDIX 18: RESERVED FOR FUTURE USE 2595 APPENDIX 19: GEOSUPPORT COPY FILES (COW) 2596 Character-Only Work Areas 2596 Work Area 1 (COW) - All Functions 2598 Work Area 2 (COW) - Functions 1 and 1E 2503 Work Area 2 (COW) - Functions 1A, BL and BN 2607 Long Work Area 2 (COW) - Functions 1A and BL 2614 Work Area 2 (COW) - Function 2 2615 Work Area 2 (COW) - Function 3 2618 Work Area 2 (COW) - Function 3C 2623 Work Area 2 (COW) - Function 3S 2627 APPENDIX 20: Geosupport Header And Typedef Files 2632 C/C++ Header File 2632 Visual Basic Typedef File 2664 APPENDIX 21: Geosupport System And General Overview 2682 Geosupport System General Overview 2685 I Goals And Objectives of The Geosupport Systems 2686 II System requirements, Availability And Enhancements 2693 III Accessing Geosupport: The Application Programming Interface And Utility Programs 2695 IV Geosupport Update Cycles And User Feedback 2698 APPENDIX 22: GeoX Programming Guide 2703 GeoX Overview 2703 Setup 2704 Using GeoX in a .NET Program 2705 Sample Code for Function 1E 2707 Sample Code for Function BL 2710 Selecting the Broker to Use 2713 Which Functions to Use 2717 Which Options to Use 2718 Selecting the Proper Work Area 2 2723 List of Classes and Overview 2726 Classes 2727 Supporting Classes for Work Areas 2731 Glossary of Terms and Acronyms 2733 About Us 2765","title":"Table of Contents"},{"location":"appendices/appendices/","text":"Appendices and Glossary","title":"Appendices and Glossary"},{"location":"appendices/appendix01/","text":"APPENDIX 1: GEOSUPPORT FUNCTIONS - QUICK REFERENCE Introduction This appendix contains a summary description of each Geosupport function. The entry for each function includes the following elements: Description of function and UPG citations: A brief narrative description of the function\u2019s purposes, main features and principal output data, with references to relevant sections in the body of the UPG. (For a comprehensive list of output data items, see the corresponding work area layouts in Appendix 2. ) Validation: A description of the validation significance of a successful two-work area call to the function. (The nature of the validation significance of a one-work area call is described in Chapter II.4. ) Entries in this appendix for functions that cannot be called using two work areas do not have a validation section. Input fields: A list of mandatory and optional WA1 input fields used to call the function. All input field names are listed in this appendix as they appear in the WA1 layout in Appendix 2 for MSWs and Appendix 13 for COWs, except for street and house number input fields, which are listed as follows: Input street fields are usually listed in this appendix generically, using the terms \u2018Street-1\u2019, \u2018Street-2\u2019 and \u2018Street-3\u2019. Input street data may be in the form of either street names or street codes; input street code data may be in several forms (see Chapter IV.8 ). The terms \u2018Street-1\u2019, \u2018Street-2\u2019 and \u2018Street-3\u2019 refer to any of the following three sets of WA1 input fields, the choice of which is at the discretion of the application designer: Street Name-1, Street Name-2 and Street Name-3; or PB5SC-1, PB5SC-2 and PB5SC-3 (MSW only); or B10SC-1, B10SC-2 and B10SC-3. ( Note: B5SC-x (where x = 1, 2 or 3) input and B7SC-x input is located left-justified and space-filled in the corresponding B10SC-x input fields.) The generic street input field names, \u2018Street-1\u2019, \u2018Street-2\u2019 and \u2018Street-3\u2019, are not used in the entries for Function 1N, which accepts input street names only, and Functions D, DG and DN, which accept input street codes only. Input house number fields are listed generically using the term \u2018House Number\u2019. Input house numbers may be in a displayable, character format, using the WA1 input field called House Number, or they may be in HNI format (MSW, see Chapter V.2 ), using the WA1 input field House Number in Internal Format (HNI), or they may be in HNS format (COW, see Chapter V.2 ); using the WA1 input field House Number in Sort Format (HNS). Selected Geosupport Return Codes: A list of selected Geosupport Return Codes (GRCs) and Reason Codes that the function can issue, with brief explanations. Only certain notable GRCs specific to the function are included. GRCs that are self-explanatory or that apply to many functions, such as those relating to system errors or to street name normalization and recognition problems, are not included. For a complete list of GRCs, Reason Codes and Messages, see Appendix 4 . Appendix 2 (MSW) and Appendix 13 (COW) contain the work area layouts of all of the Geosupport functions. The abbreviated notation for street code items listed in Table IV-1 (at the end of Chapter IV ) is used throughout Appendices 1 , 2 and 13 . Below is a summary list of the Geosupport functions. Summary of Geosupport Functions Function User Input Selected Geosupport Output Items 1 Address or Non-Addressable Place name (NAP) Block face-level data - Standardized Street Name and Street Code, Address Range, List of Cross Streets, ZIP Code, Community District, Health Area, Health Center District, 1990 Census Tract, 2010 Census Tract and block, Fire Engine or Ladder Company, School District, Police Precinct, Police Patrol Borough, XY Coordinates (based on the State Plane Coordinate System), COW : Hurricane Evacuation Zone, COW Extended : USPS Preferred City Name, Latitude, Longitude 1B Address or NAP Same as for Function 1E + Property Level Information from Function 1A + Street Names for Cross Streets and Address Lists 1E Address or NAP Same as for Function 1 + Political Geography (Election District, Assembly District, Congressional District, City Council District, Municipal Court District and State Senatorial District) 1A Address Tax lot - and building-level data - Standardized Street Name and Street Code, Tax Block and Lot, Alternative Addresses for Lot, Building Identification Number (BIN), RPAD Building Class, Interior Lot Flag, Vacant Lot Flag, Irregularly-Shaped Lot Flag, Corner Code, Business Improvement District (BID), Latitude, Longitude. 1N Street Name Standardized Street Name and Street Code (not available in the Desktop Edition of GOAT) 2 / 2W Pair of Intersecting Streets, Named Intersection, or Node Number Intersection-Level data - Standardized Street Name and Street Codes, List of Additional Cross Streets, ZIP Code, Community District, Health Area, 1990 and 2000 Census Tract, Fire Districts, School District, Police Precinct, XY Coordinates (based on State Plane Coordinate System), COW: Sanitation District, Health Center District, some Political Geography COW: 2W: Latitude, Longitude, Node IDs and Cross Streets 3 On Street and a pair of Consecutive Cross Streets Segment-level data - Standardized Street Names and Street Codes, Lists of Cross Streets at both ends, and information about both sides of the street, (including ZIP Codes, Community Districts, Health Areas, 1990, 2000 and 2010 Census Tracts, Fire Districts, School Districts, Police Precincts) COW: \u2018From\u2019 and \u2018To\u2019 Nodes, Election District, Assembly District COW Extended: Latitude, Longitude, Blockface ID 3C On Street and a Pair of Consecutive Cross Streets & a Compass Direction (Side of Street) Same as Function 3 but for one side of the street only (Blockface information) 3S On Street and an Optional pair of any Intersecting Streets along the On Street Stretch-level data - Street Stretch information: List of intersecting streets in order along \u2018on\u2019 street, the distance between them and node IDs AP Address Address Point ID, Spatial Coordinates of CSCL Address Point, BBL, BIN BF, BB Character String List of up to 10 street names in alphabetic order - supports street name browsing BL Borough, Tax Block and Lot Tax lot- and building- level data - List of Addresses for Lot, List of Building Identification Numbers (BINs), RPAD Building Class, Interior Lot Flag, Vacant Log Flag, Flag, Corner Code, etc. BN Building Identification Number Ta lot- and building-level data - List of Address Ranges for Building, Tax Block and Lot, RPAD Building Class, Interior Lot Flag, Vacant Lot Flag, Irregularly Shaped Lot Flag, Corner Code etc. D, DG, DN Street Code and/or House Number Street Name and./or House Number in Displayable HR None \u2013 CICS GOAT Geosupport Data Set Information \u2013 Creation date, release cycle, number of records N* Street Name Normalized street name (w/o a borough, so no consideration of validity) Function 1 Description: Function 1 processes an input address or input Non-Addressable Place name (NAP) (see Chapter III.6 ). When called using two work areas, Function 1 returns information about the blockface containing the input address or NAP. This information includes the cross streets at the two intersections delimiting the blockface, and a set of geographic district identifiers including ZIP code, census tract and community district. MSW Function 1 can be called with the long WA2 option. COW Function 1 may be called with the Extended Mode Switch. See Chapter V for a detailed discussion of Function 1 and how it differs from Function 1A. Validation: A successful outcome of a two-work area call to Function 1 signifies (assuming address rather than NAP input) only that the input address falls within a valid range of addresses of the same parity (odd or even house numbers) allocated to some blockface; it does not signify that there is an actual building having the input address. (To validate the latter condition, Function 1A or AP must be used. See Chapter V.4 and Chapter VI.10 for Function 1A and Function AP respectively.) Input Fields: Function 1 Input Fields Field Value Comments Function Code \u20181 \u2019 ( \u20181\u2019 followed by a blank) Required. Work Area Format Indicator \u2018C\u2019 = COW format Blank = MSW format Optional; default (blank) requests MSW format. See Appendix 12 . Mode Switch \u2018X\u2019 = Extended Mode Work Area 2 Blank = normal mode Optional; COW Only. See Chapter II.7 . Borough Code-1 (or ZIP Code) 1\u2019=Manhattan, \u20182\u2019=Bronx, \u20183\u2019=Brooklyn, \u20184\u2019=Queens, \u20185\u2019=Staten Island Required. (ZIP Code may be used instead of Borough Code) House Number Required for address input except free-form addresses (see Chapter V.3 ). Typically not used for NAP input (see Chapter III.6 ). Long WA2 Flag (MSW Only) \u2018L\u2019 = Long WA2, Blank = regular WA2 Optional; default (blank) is regular WA2. See Chapter II.5 . Street-1 Required. SNL A number between 4 and 32 Optional; default is 32. See Chapter III.2 . Street Name Normalization Format Flag \u2018C\u2019 = compact format, Blank = sort format Optional; default (blank) requests sort format. See Chapter III.3 . Cross Street Names Flag \u2018E\u2019 = return names Blank = do not return names Optional ZIP Code Optional; may be used instead of Borough Code, or to identify a DAPS. See Chapter III.6 and Chapter V.6 . Roadbed Request Switch \u2018R\u2019 = Roadbed info requested Blank = Generic info requested Optional; default (blank) requests generic information. Browse Flag (COW Only) \u2018P\u2019 = primary street name / code \u2018F\u2019 = principal street name / code \u2018R\u2019= DCP preferred street name / code Blank = input street name / code Optional; may be used to select output street name / code. Default (blank) requests use of input street name / code. See Chapter III.8 Selected Function 1 Geosupport Return Codes: GRC Value/ Reason Code Value Meaning 01/V (Warning) The input was a vanity address, an addressable place name, or a NAP. This message returns the underlying address or street name when available 01/P (Warning) The street segment containing the input address is an irregular curve (i.e., it is curved but not as an arc of a circle). No values are returned in the WA2 Spatial Coordinate fields. 07 The input street was specified as a B5SC (or PB5SC) representing a NAP that is the name of a complex. Five-digit street code input is not permitted for the name of a complex. Either the NAP (the name of the complex) must be specified in the input street name field, or its B7SC or B10SC must be specified in the appropriate input street code field. 28 Partial Street name is not valid for free-form address 29 Intersection name cannot be used as \u2018on\u2019 Street. 41 The input street name is valid but this entire street has no addresses 42 The input address does not fall within a valid range of addresses for a blockface of the input street. 50 The input street name is not valid for the portion of the street where the input house number is located. See Chapter IV.5 . 75 The input address is a \u2018duplicate address\u2019 - i.e., the same address exists at two different locations on the given input street. (Note: this is not a user data error, but an address that is duplicated on this street in reality.) See Chapter V.6 . 89 Long workarea2 option is invalid for COW format for function 1. It is only valid for MSW for this function Function 1A Description: Function 1A processes an input address or input NAP. When successfully called using two work areas, it returns information in WA2 about the tax lot and the building (if any) identified by the input address or NAP. See Chapter VI and particularly Chapters VI.6 . The information that is returned in WA2 consists of information about the tax lot and the building (if any) identified by the input address or NAP. This information includes the Borough\u2011Block\u2011and\u2011Lot (BBL), which is the Department of Finance\u2019s (DOF) identifier for the tax lot; the DOF building class code; the number of buildings on the lot; the number of street frontages of the lot; a flag indicating whether the lot is a condominium; the Building Identification Number (BIN) (see Chapter VI.3 ) of the building identified by the input address, if any; and the Business Improvement District (BID) if the property is in such a district. Function 1A can be called with the long WA2 option. The regular WA2 includes a List of Geographic Identifiers (LGI) for the tax lot, including address ranges, BINs and street frontages. The long WA2 includes, instead of the LGI, a List of BINs for all the buildings in the tax lot. Function 1A normally returns information that is updated on a quarterly basis. COW users may request more up-to-date information on new buildings and demolitions using the TPAD Request Switch. The TPAD information will include the status of new building construction and/or demolition. See Chapter VI.11 . The regular, long, and extended WA2s for Function 1A are identical to those for Function BL. Function 1A enables the user to retrieve this information by address, while Function BL enables retrieval by BBL. The regular and extended WA2s for Function 1A is identical to that for Function BN. Function 1A enables the user to retrieve this information by address, while Function BN enables retrieval by BIN. Validation: An unconditionally successful outcome of a two-work-area call to Function 1A signifies that a building having the given input address exists. A warning is issued if the input is a pseudo-address (see Chapter VI.5 ). Input Fields: Function 1A Input Fields Field Value Comments Function Code \u20181A\u2019 Required. Work Area Format Indicator \u2018C\u2019 = COW format Blank = MSW format Optional; default (blank) requests MSW format. See Appendix 12 . Mode Switch \u2018X\u2019 = Extended Mode Work Area 2 Blank = normal mode Optional; COW Only. See Chapter II.7 . Borough Code-1 (or ZIP Code) \u20181\u2019=Manhattan, \u20182\u2019=Bronx, \u20183\u2019=Brooklyn, \u20184\u2019=Queens, \u20185\u2019=Staten Island Required. (ZIP Code may be used instead of Borough Code) House Number Required for address input except free-form addresses (see Chapter V.3 ). Typically not used for NAP input (see Chapter III.6 ). Street-1 Required. SNL A number between 4 and 32 Optional; default is 32. See Chapter III.2 . Street Name Normalization Format Flag \u2018C\u2019 = compact format, Blank = sort format Optional; default (blank) requests sort format. See Chapter III.3 . ZIP Code Optional; may be used instead of Borough Code, or to identify a DAPS. See Chapter III.6 and Chapter V.6 . Browse Flag (COW Only) \u2018P\u2019 = primary street name / code \u2018F\u2019 = principal street name / code \u2018R\u2019 = DCP preferred street name Blank = input street name / code Optional; may be used to select output street name / code. Default (blank) requests use of input street name / code. Chapter III.8 Long WA2 Flag \u2018L\u2019 = Long WA2, Blank = regular WA2 Optional; default (blank) is regular WA2. See Chapters II.5 and VI.6 . TPAD Request Switch (COW Only) \u2018Y\u2019 = TPAD information requested Blank or \u2018N\u2019 = TPAD not requested Optional; may be used to request Transitional PAD information. See Chapter VI.11 1A/BL Version Switch \u2018S\u2019 = standard version(MSW or COW) Blank = standard version; (COW Only) \u2018S\u2019 is required for MSW; Optional for COW. See Chapter VI.8 . 1A/BL Version Switch \u2018S\u2019 = standard version, Blank = standard version; valid only for COW Required for MSW; Optional for COW. See Chapter VI.8 . Selected Function 1A Geosupport Return Codes: GRC Value/ Reason Code Value Meaning 01/8 (Warning) Input address is a pseudo-address. 01/A (Warning) Function 1A has been called with the regular WA2, but the tax lot identified by the input address or NAP has the List of Geographic Identifiers (LGI) overflow condition, and therefore the LGI in WA2 is incomplete. If a complete list of BINs for the tax lot is required, Function 1A may be called with the long WA2 option for the same input data to retrieve the BINs of all buildings on the tax lot. 01/* (Warning) [related to TPAD]See Chapter VI.11 .Various messages are returned with this reason code. The Conflict flag is set to correspond to the specific warning message 04 An invalid value has been specified for the 1A/BL Version Switch. Must be \u2018S\u2019 for standard. See Chapter VI.8 . 07 The input street was specified as a B5SC (or PB5SC) representing a NAP that is the name of a complex. Five-digit street code input is not permitted for the name of a complex. Either the NAP itself (the name of the complex) must be specified in the input street name field, or its B7SC or B10SC must be specified in the appropriate input street code field. 41 The input street name is valid but this entire street has no addresses. 42 The input address is not valid (as defined in Chapter V.4 ). 50 The input street name is not valid for the portion of the street where the input house number is located. See Chapter IV.5 . 69/B Invalid TPAD Request Switch. Must be Y, N or blank 73 Legacy version of Function 1A is discontinued. See Technical Bulletin 05-1. 75 The input address is a \u2018duplicate address\u2019 - i.e., the same address exists at two different locations on the given input street. (Note: this is not a user input data error, but an address duplication that exists in reality.) See Chapter V.6 . 90 Invalid value specified for Long WA2 Flag \u2013 must be \u2018L\u2019 or blank Function 1E Description: Function 1E processes an input address or input NAP. When called using two work areas, it returns the same WA2 information that is returned by Function 1, and additionally, it returns a set of political districts, including Election, State Assembly and Senate, City Council and Congressional Districts. The layouts of WA2 for Functions 1 and 1E are identical, except for the political district fields, which are fillers in Function 1\u2019s WA2. Input Fields: Same as Function 1, except for definition of the Browse Flag. When the Browse Flag is set to \u2018R\u2019, the Board of Elections (BOE) preferred street code is returned instead of the DCP preferred street code. See below. Browse Flag (COW Only) \u2018P\u2019 = primary street name / code \u2018F\u2019 = principal street name / code \u2018R\u2019 = BOE preferred street name / code Blank = input street name / code Optional; may be used to select output street name / code. Default (blank) requests use of input street name / code. See Chapter III.8 Browse Flag \u2018P\u2019 = primary street name / code Optional; may be used to (COW Only) \u2018F\u2019 = principal street name / code select output street name / code. \u2018R\u2019 = BOE preferred street name Default (blank) requests use of / code input street name / code. See Blank = input street name / code Chapter III.8 Validation: Same as Function 1. Selected Function 1E Geosupport Return Codes: Function 1E\u2019s possible GRC values include all of the ones for Function 1, and also the following: GRC Value/ Reason Code Value Meaning 01/E (Warning) The output address range returned in WA2 is split by an election district boundary. Therefore, the election district value returned in WA2 applies to only a portion of that address range. 56 The input address is associated with more than one Election District (ED). Function 1E requires that this address be specified with a house number suffix to identify a portion of the building specific to one ED. See Chapter V.4 . Function 1B Description: Function 1B processes an input address or input Non-Addressable Place name (NAP) (see Chapter III.6 ). When called using two work areas, Function 1B returns information about the blockface as well as information about the tax lot and the building (if any) identified by the input address or NAP. The information that is returned in WA2 includes the cross streets at the two intersections delimiting the blockface, and a set of geographic district identifiers including ZIP code, census tract and community district. Information about the tax lot and the building (if any) identified by the input address or NAP is also returned. This information includes the Borough\u2011Block\u2011and\u2011Lot (BBL), which is the Department of Finance\u2019s (DOF) identifier for the tax lot; the DOF building class code; the number of buildings on the lot; the number of street frontages of the lot; a flag indicating whether the lot is a condominium; and the Building Identification Number (BIN) (see Chapter VI.3 ) of the building identified by the input address Function 1B Input Fields: Function 1B Input Fields Field Value Comments Function Code \u20181B\u2019 Required. Work Area Format Indicator \u2018C\u2019 = COW format Borough Code or ZIP Code \u20181\u2019=Manhattan\u20182\u2019=Bronx, \u20183\u2019=Brooklyn, \u20184\u2019=Queens, \u20185\u2019=Staten Island, or nnnnn Required. Street Name Required. SNL A number between 4 and 32 Optional; default is 32. See Chapter III.2 . Street Name Normalization Format Flag \u2018C\u2019 = compact format, Blank = sort format Optional; default (blank) requests sort format. See Chapter III.3 . ZIP Code Optional; may be used instead of Borough Code, or to identify a DAPS. See Chapter III.6 and Chapter V.6 . Browse Flag \u2018P\u2019 = primary street name / code \u2018F\u2019 = principal street name / code \u2018R\u2019= DCP preferred street name / cod e Blank = input street name / code Optional; may be used to select Output street name / code. Default (blank) requests use of Input street name / code. See Chapter III.8 . Validation: Same as Function 1 and Function 1A.. Selected Geosupport Return Codes: Function 1B\u2019s possible GRC values include all of the ones for Function 1, Function 1E, Function 1A, and also the following: GRC Value / Reason Code Value Meaning ??/1 (MSW Only) INVALID FUNCTION CODE \u2013 AVAILABLE IN COW FORMAT ONLY Function 1N Description: Function 1N is used to normalize a street name and obtain its street code. Functions 1, 1A and 1E can do this also, but those functions require an input house number. The purpose of Function 1N is to provide a way to process a street name alone, without a house number. Note that since the input to Function 1N is not a specific location along a street, Function 1N does not perform local street name validation. Function 1N does not have a Work Area 2, and can only be called using one work area. See Chapter III.1 . Function 1N Input Fields: Function 1N Input Fields Field Value Comments Function Code \u20181N\u2019 Required Work Area Format Indicator C\u2019 = COW format Blank = MSW format Optional; default (blank) requests MSW format. See Appendix 12 Borough Code-1 1\u2019=Manhattan, \u20182\u2019=Bronx, \u20183\u2019=Brooklyn, \u20184\u2019=Queens, \u20185\u2019=Staten Island Required Street Name-1 Required. (Note: Street code input is not permitted for Function 1N.) SNL A number between 4 and 32 Optional; default is 32. See Chapter III.2 . Street Name Normalization Format Flag \u2018C\u2019 = compact format, Blank = sort format Optional; default (blank) requests sort format. See Chapter III.3 . Browse Flag (COW Only) \u2018P\u2019 = primary street name / code \u2018F\u2019 = principal street name / code Blank = input street name / code \u2018P\u2019 = primary street name / code \u2018F\u2019 = principal street name / code Blank = input street name / code Selected Geosupport Return Codes: All are self-explanatory. Function 2 (and 2W) Description: Function 2 processes an input intersection specified either in terms of an intersection name, or in terms of two streets (and, when necessary, a compass direction), or in terms of a node ID. If two input streets intersect exactly once, the user should not specify an input compass direction. If the two input streets intersect at two distinct locations, a compass direction must be specified; it serves to identify which of the two intersections the user wishes Geosupport to process. Geosupport has the ability to process a pair of input streets that intersect more than twice, only if the user can identify the intersection by its node ID. If the user does not know the node ID, the user may issue Function 2W to find the node ID. Function 2W is basically identical to Function 2 except when streets intersect more than twice, Function 2W will reject the call and return a Work Area 2 that includes the node IDs and street codes/street names for all the intersections at the various nodes. Function 2 and Function 2W are discussed in detail in Chapter VII.2 . When successfully called using two work areas, Function 2 returns information about the input intersection in WA2. If there are more than two streets at an intersection, Function 2 accepts any pair of those streets as user input for that intersection. An intersection that lies on a borough boundary can be specified in terms of one street from each borough, by using the WA1 input field Borough Code 2, as described in Chapter VII.7 . The information that Function 2 returns in WA2 includes a list of street codes for all streets at the intersection (including the input streets), spatial coordinates for the intersection, and a set of geographic area identifiers including community district, census tract, police precinct and others. If the intersection lies on the boundary of two or more areas of a given type, the information for one of those areas is returned.. In COW format only, Function 2 also returns political geography and CD Eligibility. Validation: A successful outcome of a two-work-area Function 2 call signifies that the two input streets intersect exactly once (if no input compass direction was specified) or exactly twice (if a compass direction was specified). In the double-intersection case, a successful outcome also signifies that the input compass direction is a valid designation of one of the two intersections. Input Fields: Function 2 (and 2W) Input Fields Field Value Comments Function Code \u20182 \u2019 (\u20182\u2019 followed by a blank) \u20182W\u2019 Required. Work Area Format Indicator C\u2019 = COW format Blank = MSW format Optional; default (blank) requests MSW format. See Appendix 12 . Borough Code-1 \u20181\u2019=Manhattan, \u20182\u2019=Bronx, \u20183\u2019=Brooklyn, \u20184\u2019=Queens, \u20185\u2019=Staten Island Required (unless Node Number is used as input). Specifies borough of Street Name 1. Street-1 Required ( \u25cf ) (unless Node Number is used as input). Specifies either of the two streets defining the intersection. Borough Code-2 See Borough Code-1) Optional unless Street Name 2 is in a different borough from Street Name 1; default is value in Borough Code-1. Street-2 Required ( \u25cf ) (unless Node Number is used as input). Specifies the other street defining the intersection Compass Direction \u2018N\u2019, \u2018S\u2019, \u2018E\u2019 or \u2018W\u2019 Required only when the two input streets intersect twice, in which case it designates which intersection to process Node Number Seven-digit number Required when streets intersect more than twice. Optional at other nodes. May be used instead of borough and street names. SNL A number between 4 and 32 Optional; default is 32. See Chapter III.2](../../chapters/chapterIII/section02/). Street Name Normalization Format Flag \u2018C\u2019 = compact format, Blank = sort format Optional; default (blank) requests sort format. See Chapter III.3 . Cross Street Names Flag E\u2019 = return names Blank = do not return names Optional. Browse Flag (COW Only) P\u2019 = primary street names / codes F\u2019 = principal street names / codes R\u2019 = DCP preferred street names/Codes Blank = input street names / codes Optional; may be used to select output street names / codes. Default (blank) requests use of input street names / codes. See Chapter III.8 ( \u25cf ) Note: If either Street 1 or Street 2 contains an intersection name, then the other input street field may either be left blank or it may contain any street that exists at the given intersection. Selected Function 2 (and 2W) Geosupport Return Codes: Selected Function 2 (and 2W) Geosupport Return Codes GRC Value/ Reason Code Value Meaning 01/H (Warning) The two input streets intersect only once, but a non-blank input compass direction value has been supplied. The compass direction is superfluous and is ignored. A full complement of output data is returned in the work areas. 01/N (Warning) Both a node ID and street names or street codes were specified as input. The node ID will be used; the street names/codes will be ignored. 01/T (Warning) The input street name is ignored if an intersection name is specified along with a street name that is part of the intersection. 02 The two input streets intersect twice, but no input compass direction has been supplied. The distance between the two intersections is included in the message. A valid input compass direction value is required for these input streets. 03/blank (Reject) MSW - The two input streets intersect more than twice. MSW Function 2 calls cannot process such intersections. The Reason Code value is blank. The message suggests that the user use a COW function call. 03/A (Reject) COW - The two input streets intersect more than twice. Function 2 calls cannot process such intersections. The message suggests that the user issue a Function 2W call to find related nodes. 03/B (Reject) COW \u2013 Function 2W only - The two input streets intersect more than twice. Function 2W returns node IDs and street codes. The message suggests that the user use a node ID as input. 12 The input information was in the form of an intersection name or a street code of an intersection name. Geosupport recognizes this name or code as valid, but does not yet have this name or code associated with a specific intersection. 30 An input intersection name was specified along with an input street name, but the input street is not part of the intersection 32 (Reject) An invalid node ID was specified as input. It was non-numeric or had embedded blanks.. 33 (Reject) A node ID was specified as input, but no intersection was found with that node ID. 39 The input compass direction field contains an invalid value, that is, a non-blank value other than \u2018N\u2019, \u2018S\u2019, \u2018E\u2019 or \u2018W\u2019. 40 The two input streets intersect twice, but the input compass direction value supplied is an invalid descriptor for either of those intersections. If the value supplied is \u2018E\u2019 or \u2018W\u2019, it is invalid because the two intersections are situated approximately due north-south of each other; if the value supplied is \u2018N\u2019 or \u2018S\u2019, it is invalid because the two intersections are situated approximately due east-west of each other. 50 An input street name is not valid for the portion of the street where the input intersection is located. See Chapter IV.5 . 62 The two input streets do not intersect. Function 3 Description: Function 3 processes street segments and closely related three-street configurations. A street segment is a part of a street (called the \u2018on' street) between two consecutive cross streets. For example, Madison Avenue (in Manhattan) between East 51st Street and East 52nd Street is a street segment. Madison Avenue between East 51st Street and East 53rd Street is not a street segment, because there is an intervening street, East 52nd Street, between the given cross streets. An exception to the requirement that the input cross streets be consecutive along the \u2018on\u2019 street is the case of a T\u2011intersection: Function 3 accepts as input a street configuration that defines the long blockface of a T\u2011intersection. (For precise definitions of the terms \u2018three-street configuration\u2019, \u2018street segment\u2019, and \u2018T-intersection\u2019, see Chapter VII.3 .) A street segment intersecting with or lying on a borough boundary can be specified in terms of streets from both boroughs, by using the WA1 input fields Borough Code 2 and Borough Code 3, as described in Chapter VII.7 . The information returned by a successful two\u2011work\u2011area Function 3 call includes two lists of street codes for all cross streets at the two intersections defined by the input streets; and geographic area codes for the left and right sides of the street, such as the left and right community districts, ZIP codes, census tracts, etc. \u2018Left\u2019 and \u2018right\u2019 are defined relative to the \u2018on\u2019 street\u2019s \u2018logical direction\u2019, which in general is the direction of increasing address. The WA2 information also includes two items called the Segment Azimuth and the Segment Orientation that indicate how the street segment is oriented with respect to the points of the compass. Applications can use either of these items to determine compass direction descriptors for the left and right sides of the street. Another WA2 item, the Cross Street Reversal Flag, can be used to determine left and right relative to the order in which the input cross streets were specified. In COW format, Function 3 also returns the FROM and TO node IDs. In COW Extended format, Function 3 also returns Latitude and Longitude. Function 3 in MSW format has the Long Work Area 2 Option (see Chapter II.5 ). Function 3 in COW format has the Auxiliary Segment Option (see Chapter II.6 ). For a detailed discussion of Function 3, see Chapter VII.4 . Validation: A successful outcome of a two-work-area call to Function 3 signifies that the input \u2018on\u2019 street and two cross streets define a valid street segment or long blockface of a T-intersection. Input Fields: Function 3 Input Fields Field Value Comments Function Code \u20183 \u2019 (\u20183\u2019 followed by a blank) Required. Work Area Format Indicator \u2018C\u2019 = COW format Blank = MSW format Optional; default (blank) requests MSW format. See Appendix 12 . Mode Switch \u2018X\u2019 = Extended Mode Work Area 2 Blank = normal mode Optional; COW Only. See Chapter II.7 . Borough Code-1 \u20181\u2019=Manhattan, \u20182\u2019=Bronx, \u20183\u2019=Brooklyn, \u20184\u2019=Queens, \u20185\u2019=Staten Island Required. Specifies borough of Street Name-1. Street-1 Required. Specifies \u2018on\u2019 street Borough Code-2 (See Borough Code-1) Optional unless borough of Street Name-2 differs from that of Street Name-1. Specifies borough of Street Name-2. Default is Borough Code-1 value. Street-2 Required. Specifies either cross street. Borough Code-3 (See Borough Code-1) Optional unless borough of Street Name-3 differs from that of Street Name-1. Specifies borough of Street Name-3. Default is Borough Code-1 value. Street-3 Required. Specifies other cross street. SNL A number between 4 and 32 Optional; default is 32. See Chapter III.2 . Street Name Normalization Format Flag \u2018C\u2019 = compact format, Blank = sort format Optional; default (blank) requests sort format. See Chapter III.3 . Cross Street Names Flag \u2018E\u2019 = return names Blank = do not return names Optional Long WA2 Flag (MSW only) \u2018L\u2019 = Long WA2, Blank = regular WA2 Optional; default (blank) is regular WA2. See Chapter II.5 . Auxiliary Segment Switch (COW only) \u2018Y\u2019 = return all segment IDs \u2018N\u2019 or Blank = regular WA2 Optional; default (blank) is regular WA2. See Chapter II.6 Browse Flag (COW Only) \u2018P\u2019 = primary street names / codes \u2018F\u2019 = principal street names / codes \u2018R\u2019 = DCP preferred street names / codes Blank = input street names / codes Optional; may be used to select output street names / codes. Default (blank) requests use of input street names / codes. See Chapter III.8 Selected Function 3 Geosupport Return Codes: Selected Function 3 Geosupport Return Codes: GRC Value/ Reason Code Value Meaning 01/L or R (Warning) The input \u2019on\u2019 street lies on a borough boundary. The side of street indicated by the Reason Code value is outside of the input borough; no information is returned in WA2 for that side of the street if it is in Nassau or Westchester. 01/Q These streets involve a dogleg, Shortest Stretch provided. (See Chapter VII.2 ) 45 Although each of the three input street names was individually recognized, collectively they do not define a valid street segment nor the long blockface of a T\u2011intersection. 46 The geographic location specified by the combination of three input streets is ambiguous, i.e., it defines more than one valid segment or T\u2011intersection blockface. Geosupport cannot process this input. 50 An input street name is not valid for the portion of the street where the input street segment is located. See Chapter IV.5 . 55 At least one of the input streets is a Non-Addressable Place Name (NAP). NAPs are not allowed as input streets for this function 69/A Invalid value specified for Auxiliary Segment Switch. Auxiliary Segment Switch must be \u2018Y\u2019 or \u2018N\u2019 or blank. 89 Long WA2 option is not valid for this function in COW format. 90 Invalid value specified for Long WA2 Flag - must be \u2018L\u2019 or blank. Function 3C Description: Function 3C processes blockfaces specified in terms of an input \u2018on\u2019 street, two cross streets and a compass direction designating the side of the street, such as \u2018the west side of Madison Avenue between East 53rd Street and East 54th Street\u2019. A blockface intersecting with or lying on a borough boundary can be specified in terms of streets from both boroughs, by using the WA1 input fields Borough Code 2 and Borough Code 3, as described in Chapter VII.7 . When called using two work areas, function 3C returns blockface related information in WA2. This information is a subset of the set of items returned in WA2 by Function 3, consisting of those items that are related to the specified side of the street. Function 3C in COW format has the Auxiliary Segment Option (see Chapter II.6 ). Function 3C is discussed in detail in Chapter VII.5 . Validation: A successful outcome of a two-work-area call to Function 3C signifies that the input \u2018on\u2019 street and two cross streets define a valid street segment or long blockface of a T-intersection, and that the input compass direction is a valid designation of a side of this segment. The validity of an input compass direction is determined by the spatial orientation of the segment. Input Fields: Function 3C Input Fields Field Value Comments Function Code \u20183C\u2019 Required. Work Area Format Indicator \u2018C\u2019 = COW format Blank = MSW format Optional; default (blank) requests MSW format. See Appendix 12 . Mode Switch \u2018X\u2019 = Extended Mode Work Area 2 Blank = normal mode Optional; COW Only. See Chapter II.7 . Borough Code-1 \u20181\u2019=Manhattan, \u20182\u2019=Bronx, \u20183\u2019=Brooklyn, \u20184\u2019=Queens, \u20185\u2019=Staten Island Required. Specifies borough of Street Name-1. Street-1 Required. Specifies \u2018on\u2019 street Borough Code-2 (See Borough Code-1) Optional unless borough of Street Name-2 differs from that of Street Name-1. Specifies borough of Street Name-2. Default is Borough Code-1 value. Street-2 Required. Specifies either cross street. Borough Code-3 (See Borough Code-1) Optional unless borough of Street Name-3 differs from that of Street Name-1. Specifies borough of Street Name-3. Default is Borough Code-1 value. Street-3 Required. Specifies other cross street. Compass Direction \u2018N\u2019, \u2018S\u2019, \u2018E\u2019 or \u2018W\u2019 Required. Specifies side of street of blockface (relative to street\u2019s \u2018logical direction\u2019 - see Chapter VII.3 ). SNL A number between 4 and 32 Optional; default is 32. See Chapter III.2 . Street Name Normalization Format Flag \u2018C\u2019 = compact format, Blank = sort format Optional; default (blank) requests sort format. See Chapter III.3 . Cross Street Names Flag \u2018E\u2019 = return names Blank = do not return names Optional Long WA2 Flag (MSW only) \u2018L\u2019 = Long WA2, Blank = regular WA2 Optional; default (blank) is regular WA2. See Chapter II.5 . Auxiliary Segment Switch (COW only) \u2018Y\u2019 = return all segment IDs \u2018N\u2019 or Blank = regular WA2 Optional; default (blank) is regular WA2. See Chapter II.6 Browse Flag (COW Only) \u2018P\u2019 = primary street names / codes \u2018F\u2019 = principal street names / codes \u2018R\u2019= DCP preferred street names / codes Blank= input street names / codes Optional; may be used to select output street names / codes. Default (blank) requests use of input street names / codes. See Chapter III.8 Selected Geosupport Return Codes: Selected Geosupport Return Codes GRC Value Meaning 09 The blockface on the side of street specified by the compass direction does not exist in the borough specified for the \u2018on\u2019 street. 39 The input compass direction field contains a non-blank value other than \u2018N\u2019, \u2018S\u2019, \u2018E\u2019 or \u2018W\u2019 40 The input compass direction value is invalid as a descriptor of a side of the input street segment, because it is incompatible with the segment\u2019s spatial orientation. This condition arises if the segment is oriented approximately east-west and the input compass direction value is specified as \u2018E\u2019 or \u2018W\u2019 (because a street segment oriented approximately east-west has no east and west sides), or the segment is oriented approximately north-south and the input compass direction value is \u2018N\u2019 or \u2018S\u2019 44 Although each of the three input street names was individually recognized, collectively they do not define a valid blockface. 46 The combination of these three input streets is ambiguous, i.e., it defines more than one valid blockface. Function 3C cannot process such input. 50 An input street name is not valid for the portion of the street where the input blockface is located. See Chapter IV.5 . 69/A Invalid value specified for Auxiliary Segment Switch. Auxiliary Segment Switch must be \u2018Y\u2019 or \u2018N\u2019 or blank. Function 3S Description: Function 3S processes input street stretches. A street stretch is a portion of a street between any two cross streets. If an input cross street intersects with the \u2018on\u2019 street twice, an input compass direction is required to identify which of the two intersections is intended. If the user application does not specify input cross streets, Function 3S returns information about the full length of the \u2018on\u2019 street. Note that, in a Function 3S call, the input cross streets need not be consecutive along the \u2018on\u2019 street. When successfully called using two work areas, Function 3S returns, in WA2, a list of all intersections in sequence along the \u2018on\u2019 street between (and including) the two intersections defined by the input \u2018on\u2019 and two cross streets, if any. If the user has not specified input cross streets, the list contains all intersections in sequence from the beginning to the end of the \u2018on\u2019 street. The sequence in which the intersections are listed accords with the direction of increasing addresses along the \u2018on\u2019 street. Each intersection in the list is specified as a pair of street codes for two of the streets at that intersection. One of the street codes listed for an intersection may or not be the street code of the \u2018on\u2019 street. In a COW function 3S call, if the user requests Real Street Only output, only real street intersections are returned; Bends and Non-Street Features are not included in the list of intersections. For each entry in the WA2 list of intersections of the street stretch, there are fields for a distance and a gap flag. The distance is the approximate distance in feet between the given intersection and its predecessor in the list; the gap flag indicates whether the intersection and its predecessor are connected by the \u2018on\u2019 street. The gap flag also indicates the nature of the gap. The first entry within a list will always have a zero in the distance field and a blank in the gap flag. Function 3S is discussed in detail in Chapter VII.6 . Validation: A successful outcome of a two-work-area call to Function 3S using input cross streets signifies that each of the input cross streets intersects the input \u2018on\u2019 street. Input Fields : Function 3S Input Fields Field Value Comments Function Code \u20183S\u2019 Required. Work Area Format Indicator \u2018C\u2019 = COW format Blank = MSW format Optional; default (blank) requests MSW format. See Appendix 12 Borough Code-1 \u20181\u2019=Manhattan, \u20182\u2019=Bronx, \u20183\u2019=Brooklyn, \u20184\u2019=Queens, \u20185\u2019=Staten Island Required. Specifies borough of Street-1. Street-1 Required. Specifies \u2018on\u2019 street. Street-2 Optional. Specifies either cross street. Compass Direction for First Intersection \u2018N\u2019, \u2018S\u2019, \u2018E\u2019 or \u2018W\u2019 Required if Street-2 intersects Street-1 (\u2018on\u2019-street) twice. Identifies which of the two intersections is intended. Street-3 Optional. Specifies other cross street. Must be specified if Street-2 is specified. If Street-2 and Street-3 are not specified, data for full length of street are returned in WA2. Compass Direction for Second Intersection \u2018N\u2019, \u2018S\u2019, \u2018E\u2019 or \u2018W\u2019 Required if Street-3 intersects Street-1 (\u2018on\u2019-street) twice. Identifies which of the two intersections is intended. SNL A number between 4 and 32 Optional; default is 32. See Chapter III.2. Street Name Normalization Format Flag \u2018C\u2019 = compact format, Blank = sort format Optional; default (blank) requests sort format. See Chapter III.3. Real Street Only Flag (COW Only) \u2018R\u2019 = real streets only Blank = all streets Optional; default (blank) requests all streets. See Chapter VII.6] . Roadbed Request Switch R\u2019 = Roadbed info requested Blank = Generic info requested Optional; default (blank) requests generic information See Chapter VII.6 Selected Geosupport Return Codes: Selected Geosupport Return Codes Value Meaning 01/H (Warning) The input \u2018on\u2019 street intersects only once with one of the input cross streets, but a non-blank input compass direction value has been supplied for that intersection. That compass direction is superfluous and is ignored. A full complement of output data is returned in the work areas. 05 A value was supplied in at least one of the input borough code fields other than Borough Code 1. All Function 3S input streets are required to be from the same borough, which must be supplied in the WA1 field Borough Code 1; Borough Code 2 and Borough Code 3 must be blank. 14 The three input streets do not define a street stretch, because the \u2018from\u2019 and \u2018to\u2019 input intersections are identical. 38 The input \u2018on\u2019 street and an input cross street intersect twice, but the input compass direction value supplied is an invalid descriptor for either of those intersections. If the value supplied is \u2018E\u2019 or \u2018W\u2019, it is invalid because the two intersections are situated approximately due north-south of each other; if the value supplied is \u2018N\u2019 or \u2018S\u2019, it is invalid because the two intersections are situated approximately due east-west of each other. 39 An input compass direction field contains an invalid value, that is, a non-blank value other than \u2018N\u2019, \u2018S\u2019, \u2018E\u2019 or \u2018W\u2019. 55 At least one of the input streets is a Non-Addressable Place Name (NAP). NAPs are not allowed as input streets for this function. 61 Geosupport has no street stretch data for this \u2018on\u2019 street. (This condition should never occur for a normal input street. It occurs if the input \u2018on\u2019 street is a pseudo-street name (such as DEAD END) or another type of geographic feature that Geosupport recognizes but that Function 3S cannot process as an input \u2018on\u2019 street.) 62 The input \u2018on\u2019 street does not intersect with one of the input cross streets. 66 The input \u2018on\u2019 street intersects with one of the input cross streets more than twice. Function 3S cannot be used to process this combination of input data. (However, Function 3S could be called for this \u2018on\u2019 street with no cross streets specified. That call would return data for the full length of the street, including the intersections in question.) 68 The input \u2018on\u2019 street intersects with one of the input cross streets twice. An input compass direction value must be supplied to identify which of the two intersections is intended. 96 The functionality to support part of a roadbed street stretch is under construction Function AP Description: Function AP processes an input address. When successfully called using two work areas, it returns information in WA2 about the CSCL Address Point identified by the input address. See Chapter VI and particularly Chapter VI.10 . Function AP and its data are currently available to Geosupport users. The information that is returned in WA2 consists of information about the address point and the tax lot and the building (if any) identified by the input address. This information includes the CSCL Address Point ID, the spatial coordinates of the Address Point, the Building Identification Number (BIN) and the Borough\u2011Block\u2011and\u2011Lot (BBL), which is the Department of Finance\u2019s (DOF) identifier for the tax lot. By geocoding to a CSCL Address Point, the user application will presumably geocode to a \u2018real\u2019 posted address \u2013 not an address that might be part of an administrative range. Function AP is also available in an Extended Mode. It includes that Principal Street Name in WA2. See the Function AP work area layouts in Appendix 13 . Validation: An unconditionally successful outcome of a two-work-area call to Function AP signifies that a building having the given input address exists. Input Fields: Function AP Input Fields Field Value Comments Function Code \u2018AP\u2019 Required. Work Area Format Indicator \u2018C\u2019 = COW format Required. AP is a COW only function Mode Switch \u2018X\u2019 = Extended Mode Work Area 2 Blank = normal mode Optional Borough Code-1 (or ZIP Code) \u20181\u2019=Manhattan, \u20182\u2019=Bronx, \u20183\u2019=Brooklyn, \u20184\u2019=Queens, \u20185\u2019=Staten Island Required. (ZIP Code may be used instead of Borough Code) House Number Required for address input except free-form addresses (see Chapter V.3 ). Street-1 Required. SNL A number between 4 and 32 Optional; default is 32. See Chapter III.2 . Street Name Normalization Format Flag \u2018C\u2019 = compact format, Blank = sort format Optional; default (blank) requests sort format. See Chapter III.3 . ZIP Code Optional; may be used instead of Borough Code, or to identify a DAPS. See Chapter III.6 and Chapter V.6 . Browse Flag (COW Only) \u2018P\u2019 = primary street name / code \u2018F\u2019 = principal street name / code \u2018R\u2019 = DCP preferred street name Blank = input street name / code Optional; may be used to select output street name / code. Default (blank) requests use of input street name / code. Chapter III.8 Selected Geosupport Return Codes: Selected Geosupport Return Codes GRC Value/ Reason Code Value Meaning 42 The input address is not valid (as defined in Chapter V.4 . 50 The input street name is not valid for the portion of the street where the input house number is located. See Chapter IV.5 . 75 The input address is a \u2018duplicate address\u2019 - i.e., the same address exists at two different locations on the given input street. (Note: this is not a user input data error, but an address duplication that exists in reality.) See Chapter V.6 . Functions BB and BF Description: Function BB (\"browse backward\") and BF (\"browse forward\") enable applications to develop street name browse capability, in order to assist user data entry staff to determine valid spellings of street names that have been rejected. Functions BB and BF can only be called using one work area. A sequence of repeated calls to Functions BB and/or BF will browse backwards and/or forwards in alphabetical order through the set of all valid normalized street names in a given borough. When issuing a COW Function BB or BF call, the user may request that only Primary or Principal street names be returned. This is done by setting the Browse Flag to \u2018P\u2019 or \u2018F\u2019 respectively. Each call to one of these functions returns up to ten such names in alphabetical order (or fewer, if there are not ten names remaining in the given borough in the given browse direction). The names are returned in the WA1 field List of Street Names. The number of street names returned in the list is returned in the WA1 field Number of Street Names in List. For COWs, corresponding B7SCs are also returned. To start a browse sequence, the user application calls either of the browse functions , passing a borough code and character string in the WA1 input fields called Borough Code 1 and Street Name 1, respectively. The input character string can be from one to 32 bytes long. When the last set of ten or fewer names in the given borough is reached, a warning is issued. For a detailed discussion of Functions BB and BF, see Chapter III.7 . Input Fields: Functions BB / BF Input Fields Field Value Comments Function Code \u2018BB\u2019 or \u2018BF\u2019 Required. Work Area Format Indicator \u2018C\u2019 = COW format Blank = MSW format Optional; default (blank) requests MSW format. See Appendix 12 Borough Code-1 \u20181\u2019=Manhattan, \u20182\u2019=Bronx, \u20183\u2019=Brooklyn, \u20184\u2019=Queens, \u20185\u2019=Staten Island Required. Street Name-1 Any character string Required. Browse Flag (COW Only) \u2018P\u2019 = primary street names\u2019 \u2018F\u2019 = principal street names Blank = all street names Optional; default (blank) See Chapter III.7 . Selected Geosupport Return Codes: Selected Geosupport Return Codes GRC Value / Reason Code Value Meaning 01/4 (Warning) The last street name has been reached in the specified input borough in the given browse direction. It is possible that fewer than ten street names have been returned in WA1 97 The input street name is alphabetically beyond the last street name in the specified input borough. Function BL Description: Function BL processes a parcel of real property, or tax lot, specified in terms of a standard Department of Finance set of tax lot identifiers, consisting of a combination of a borough code, a tax block number and a tax lot number, collectively called the BBL. When successfully called using two work areas, Function BL returns information about the tax lot in WA2. The WA2 layouts for Function BL are identical to those for Function 1A. Function 1A enables the user to retrieve this information by address, while Function BL enables retrieval by BBL. For a detailed discussion of Function BL, see Chapter VI and particularly Chapter VI.7 . Validation: A successful outcome of a two-work-area call to Function BL signifies that the input BBL is valid. Function BL Input Fields: Function BL Input Fields Field Value Comments Function Code \u2018BL\u2019 Required. Work Area Format Indicator \u2018C\u2019 = COW format Blank = MSW format Optional; default (blank) requests MSW format. See Appendix 12 Mode Switch \u2018X\u2019 = Extended Mode Work Area 2 Blank = normal mode Optional; COW Only. See Chapter II.7 . Borough-Block-Lot (BBL) Required. Long WA2 Flag \u2018L\u2019 = Long Blank = regular WA2 Optional default (blank) is regular WA2. See Chapter II.5 . TPAD Request Switch (COW Only) \u2018Y\u2019 = TPAD information requested Blank or \u2018N\u2019 = TPAD not requested Optional; may be used to request Transitional PAD information. See Chapter VI.11 1A/BL Version Switch \u2018S\u2019 = standard version, Blank = standard version; valid only for COW Required for MSW; optional for COW. See Chapter VI.8 . Selected Geosupport Return Codes: Selected Geosupport Return Codes GRC Value / Reason Code Value Meaning 01/A (Warning) Function BL has been called with the regular WA2, but the input tax lot has the List of Geographic Identifiers (LGI) overflow condition, and therefore the LGI in WA2 is incomplete. If a complete list of BINs for the tax lot is required, Function BL may be called with the long WA2 option for the same input data to retrieve the BINs of all buildings on the tax lot. 04 An invalid value has been specified for the 1A/BL Version Switch. See Chapter VI.8 . 01/* (Warning) [related to TPAD]See Chapter VI.11 and Appendix 4 .Various messages are returned with this reason code. The Conflict flag is set to correspond the specific warning message. 69/B Invalid TPAD Request Switch. Must be Y, N or blank 73 Legacy version of Function BL is discontinued. See Technical Bulletin 05-1. 90 Invalid value specified for Long WA2 Flag - must be \u2018L\u2019 or blank. Function BN Description: Function BN processes a building specified by an input Building Identification Number (BIN). For a discussion of BINs, see Chapter VI.3 . A successful Function BN call using two work areas returns information about the building in WA2. This includes the building's borough\u2011tax block\u2011tax lot (BBL); a list of geographic identifiers associated with the building (in contrast to Functions 1A and BL, which return geographic identifiers for the entire tax lot, subject to the list\u2019s space limitation); a building status flag and date [not implemented] ; and a condominium flag. Condominiums have unique characteristics discussed in Chapter VI.4 . Function BN is discussed in detail in Chapter VI and particularly in Chapter VI.9 . Validation: A successful outcome of a two-work-area call to Function BN signifies that the input BIN is valid. Input Fields: Input Fields Field Value Comments Function Code \u2018BN\u2019 Required Work Area Format Indicator C\u2019 = COW format Blank = MSW format Optional; default (blank) requests MSW format. See Appendix 12 . Mode Switch \u2018X\u2019 = Extended Mode Work Area 2 Blank = normal mode Optional; COW Only. See Chapter II.7 . BIN Required Selected Geosupport Return Codes: Selected Geosupport Return Codes GRC Value / Reason Code Value Meaning 01/F (Warning) The input BIN (contains a 9 in the 2nd digit after the borough code) is a temporary BIN assigned by GSS to a multi-building tax lot, the individual buildings of which have not yet been assigned permanent BINs. The temporary BIN will be replaced in the future 20 No input BIN value was specified. 21 The input BIN is not valid 22 The input BIN has an invalid format: either it contains non-numeric characters, or its first digit is not a valid borough code (the digits 1 through 5), or the digits beyond the first digit are all zeros. 23 The input BIN is a \u2018dummy\u2019 BIN (contains an 8 in the 2nd digit after the borough code) assigned by the NYC Department of Buildings. It exists only in DOB files and is not valid in Geosupport. Functions D, DG and DN Description: Functions D, DG and DN are the \u2018display\u2019 functions. They do not actually display anything themselves, but can be used to obtain data items that applications can use to format geographic locations for display on reports, screens, mailing labels etc. The display functions do not have a WA2 and can only be called using one work area. Each of them can process any combination of up to two input House Numbers in Internal format (HNI) for MSWs or up to two input House Numbers in Sort format (HNS) for COWs and up to three input street codes. For each successfully processed input HNI/HNS, the corresponding House Number in Display format (HND) is returned in WA1. (House number processing by the display functions is discussed in detail in Chapter V.2 .) For each successfully processed input street code, a corresponding street name is returned in WA1. (Street code processing by the display functions is discussed in Chapter IV.6 .) For each unsuccessfully processed input street code, the corresponding output field is returned containing all question marks. If one input HNI/HNS is supplied, it may be passed in either input HNI/HNS field. Input street codes may not \u2018skip\u2019 any input street code fields. The display functions process each input item independently of the others, and the input data are not treated as collectively forming a geographic location. In particular, a successful call to a display function does not imply the validation of a geographic location. For example, if there is an input house number and an input street code, these are not treated or validated as forming an address, but are independently processed for conversion to display format. If the input consists of two street codes, these are not treated or validated as forming an intersection, etc. Functions D, DG and DN differ in the type of street code each processes and in the street name each returns: Function D processes input borough-code-and-five-digit street codes, specified either in the form of B5SCs or PB5SCs (MSW only). Input B5SCs are passed left-justified and space-filled in the corresponding WA1 input B10SC fields. Input PB5SCs are passed in the corresponding MSW WA1 input PB5SC fields. For each successfully processed input B5SC or PB5SC (MSW only), Function D returns the corresponding \u2018primary\u2019 name for the street ( a name from among all of the street\u2019s aliases that GSS has designated as \u2018best\u2019 representing the street as a whole). Function DG processes input borough-code-and-seven-digit street codes (B7SCs). Input B7SCs are passed left-justified and space-filled in the corresponding WA1 input B10SC fields. For each input B7SC, Function DG returns a street name that GSS has designated as the \u2018principal\u2019 street name of the local group of names represented by the given B7SC. Function DG can be used in conjunction with a geographic location-processing function to obtain the \u2018preferred street name\u2019 customized for a particular geographic location. (For a discussion of seven-digit street codes and local groups, see Chapter IV.5 .) Function DN processes input borough-code-and-ten-digit street codes (B10SCs). For each input B10SC, Function DN returns the unique street name spelling corresponding to it. Input Fields: Input Fields Field Value Comments Function Code \u2018D \u2019 (D followed by a blank) or \u2018DG\u2019 or \u2018DN\u2019 Required. Work Area Format Indicator \u2018C\u2019 = COW format Blank = MSW format Optional; default (blank) requests MSW format. See Appendix 12 HNI-1 or HNS-1 Optional. HNI-2 or HNS-2 Optional. PB5SC-1 (MSW) Function D only; optional unless PB5SC-2 is nonblank. PB5SC-2 (MSW) Function D only; optional unless PB5SC-3 is nonblank. PB5SC-3 (MSW) Function D only; optional. B10SC-1 (or B5SC-1) (or B7SC-1) Optional unless B10SC-2 is nonblank. (B5SC-1, B7SC-1are left-justified, space-filled in B10SC-1) B10SC-2 (or B5SC-2) (or B7SC-2) Optional unless B10SC-3 is nonblank. (B5SC-2, B7SC-2 are left-justified, space-filled in B10SC-2) B10SC-3 (or B5SC-3) (or B7SC-3) Optional. (B5SC-3, B7SC-3 are left- justified, space-filled in B10SC-3) SNL A number between 4 and 32 Optional; default is 32. See Chapter III.2 . Street Name Normalization Format Flag \u2018C\u2019 = compact format, Blank = sort format Optional; default (blank) requests sort format. See Chapter III.3 . Selected Geosupport Return Codes: Selected Geosupport Return Codes GRC / Reason Code Value Meaning 13 At least one input HNI/HNS has a format error. There are many possible house number format errors. The specific format error is indicated by the Reason Code and Message. Output HND fields corresponding to unsuccessfully processed input HNI/HNSs are returned containing all blanks. 64 At least one input street code is invalid. Output street name fields corresponding to invalid input street code fields are returned containing all \u2018?\u2019.","title":"Appendix 1: Geosupport Functions - Quick Reference"},{"location":"appendices/appendix01/#introduction","text":"This appendix contains a summary description of each Geosupport function. The entry for each function includes the following elements: Description of function and UPG citations: A brief narrative description of the function\u2019s purposes, main features and principal output data, with references to relevant sections in the body of the UPG. (For a comprehensive list of output data items, see the corresponding work area layouts in Appendix 2. ) Validation: A description of the validation significance of a successful two-work area call to the function. (The nature of the validation significance of a one-work area call is described in Chapter II.4. ) Entries in this appendix for functions that cannot be called using two work areas do not have a validation section. Input fields: A list of mandatory and optional WA1 input fields used to call the function. All input field names are listed in this appendix as they appear in the WA1 layout in Appendix 2 for MSWs and Appendix 13 for COWs, except for street and house number input fields, which are listed as follows: Input street fields are usually listed in this appendix generically, using the terms \u2018Street-1\u2019, \u2018Street-2\u2019 and \u2018Street-3\u2019. Input street data may be in the form of either street names or street codes; input street code data may be in several forms (see Chapter IV.8 ). The terms \u2018Street-1\u2019, \u2018Street-2\u2019 and \u2018Street-3\u2019 refer to any of the following three sets of WA1 input fields, the choice of which is at the discretion of the application designer: Street Name-1, Street Name-2 and Street Name-3; or PB5SC-1, PB5SC-2 and PB5SC-3 (MSW only); or B10SC-1, B10SC-2 and B10SC-3. ( Note: B5SC-x (where x = 1, 2 or 3) input and B7SC-x input is located left-justified and space-filled in the corresponding B10SC-x input fields.) The generic street input field names, \u2018Street-1\u2019, \u2018Street-2\u2019 and \u2018Street-3\u2019, are not used in the entries for Function 1N, which accepts input street names only, and Functions D, DG and DN, which accept input street codes only. Input house number fields are listed generically using the term \u2018House Number\u2019. Input house numbers may be in a displayable, character format, using the WA1 input field called House Number, or they may be in HNI format (MSW, see Chapter V.2 ), using the WA1 input field House Number in Internal Format (HNI), or they may be in HNS format (COW, see Chapter V.2 ); using the WA1 input field House Number in Sort Format (HNS). Selected Geosupport Return Codes: A list of selected Geosupport Return Codes (GRCs) and Reason Codes that the function can issue, with brief explanations. Only certain notable GRCs specific to the function are included. GRCs that are self-explanatory or that apply to many functions, such as those relating to system errors or to street name normalization and recognition problems, are not included. For a complete list of GRCs, Reason Codes and Messages, see Appendix 4 . Appendix 2 (MSW) and Appendix 13 (COW) contain the work area layouts of all of the Geosupport functions. The abbreviated notation for street code items listed in Table IV-1 (at the end of Chapter IV ) is used throughout Appendices 1 , 2 and 13 . Below is a summary list of the Geosupport functions. Summary of Geosupport Functions Function User Input Selected Geosupport Output Items 1 Address or Non-Addressable Place name (NAP) Block face-level data - Standardized Street Name and Street Code, Address Range, List of Cross Streets, ZIP Code, Community District, Health Area, Health Center District, 1990 Census Tract, 2010 Census Tract and block, Fire Engine or Ladder Company, School District, Police Precinct, Police Patrol Borough, XY Coordinates (based on the State Plane Coordinate System), COW : Hurricane Evacuation Zone, COW Extended : USPS Preferred City Name, Latitude, Longitude 1B Address or NAP Same as for Function 1E + Property Level Information from Function 1A + Street Names for Cross Streets and Address Lists 1E Address or NAP Same as for Function 1 + Political Geography (Election District, Assembly District, Congressional District, City Council District, Municipal Court District and State Senatorial District) 1A Address Tax lot - and building-level data - Standardized Street Name and Street Code, Tax Block and Lot, Alternative Addresses for Lot, Building Identification Number (BIN), RPAD Building Class, Interior Lot Flag, Vacant Lot Flag, Irregularly-Shaped Lot Flag, Corner Code, Business Improvement District (BID), Latitude, Longitude. 1N Street Name Standardized Street Name and Street Code (not available in the Desktop Edition of GOAT) 2 / 2W Pair of Intersecting Streets, Named Intersection, or Node Number Intersection-Level data - Standardized Street Name and Street Codes, List of Additional Cross Streets, ZIP Code, Community District, Health Area, 1990 and 2000 Census Tract, Fire Districts, School District, Police Precinct, XY Coordinates (based on State Plane Coordinate System), COW: Sanitation District, Health Center District, some Political Geography COW: 2W: Latitude, Longitude, Node IDs and Cross Streets 3 On Street and a pair of Consecutive Cross Streets Segment-level data - Standardized Street Names and Street Codes, Lists of Cross Streets at both ends, and information about both sides of the street, (including ZIP Codes, Community Districts, Health Areas, 1990, 2000 and 2010 Census Tracts, Fire Districts, School Districts, Police Precincts) COW: \u2018From\u2019 and \u2018To\u2019 Nodes, Election District, Assembly District COW Extended: Latitude, Longitude, Blockface ID 3C On Street and a Pair of Consecutive Cross Streets & a Compass Direction (Side of Street) Same as Function 3 but for one side of the street only (Blockface information) 3S On Street and an Optional pair of any Intersecting Streets along the On Street Stretch-level data - Street Stretch information: List of intersecting streets in order along \u2018on\u2019 street, the distance between them and node IDs AP Address Address Point ID, Spatial Coordinates of CSCL Address Point, BBL, BIN BF, BB Character String List of up to 10 street names in alphabetic order - supports street name browsing BL Borough, Tax Block and Lot Tax lot- and building- level data - List of Addresses for Lot, List of Building Identification Numbers (BINs), RPAD Building Class, Interior Lot Flag, Vacant Log Flag, Flag, Corner Code, etc. BN Building Identification Number Ta lot- and building-level data - List of Address Ranges for Building, Tax Block and Lot, RPAD Building Class, Interior Lot Flag, Vacant Lot Flag, Irregularly Shaped Lot Flag, Corner Code etc. D, DG, DN Street Code and/or House Number Street Name and./or House Number in Displayable HR None \u2013 CICS GOAT Geosupport Data Set Information \u2013 Creation date, release cycle, number of records N* Street Name Normalized street name (w/o a borough, so no consideration of validity)","title":" Introduction "},{"location":"appendices/appendix01/#function-1","text":"Description: Function 1 processes an input address or input Non-Addressable Place name (NAP) (see Chapter III.6 ). When called using two work areas, Function 1 returns information about the blockface containing the input address or NAP. This information includes the cross streets at the two intersections delimiting the blockface, and a set of geographic district identifiers including ZIP code, census tract and community district. MSW Function 1 can be called with the long WA2 option. COW Function 1 may be called with the Extended Mode Switch. See Chapter V for a detailed discussion of Function 1 and how it differs from Function 1A. Validation: A successful outcome of a two-work area call to Function 1 signifies (assuming address rather than NAP input) only that the input address falls within a valid range of addresses of the same parity (odd or even house numbers) allocated to some blockface; it does not signify that there is an actual building having the input address. (To validate the latter condition, Function 1A or AP must be used. See Chapter V.4 and Chapter VI.10 for Function 1A and Function AP respectively.) Input Fields: Function 1 Input Fields Field Value Comments Function Code \u20181 \u2019 ( \u20181\u2019 followed by a blank) Required. Work Area Format Indicator \u2018C\u2019 = COW format Blank = MSW format Optional; default (blank) requests MSW format. See Appendix 12 . Mode Switch \u2018X\u2019 = Extended Mode Work Area 2 Blank = normal mode Optional; COW Only. See Chapter II.7 . Borough Code-1 (or ZIP Code) 1\u2019=Manhattan, \u20182\u2019=Bronx, \u20183\u2019=Brooklyn, \u20184\u2019=Queens, \u20185\u2019=Staten Island Required. (ZIP Code may be used instead of Borough Code) House Number Required for address input except free-form addresses (see Chapter V.3 ). Typically not used for NAP input (see Chapter III.6 ). Long WA2 Flag (MSW Only) \u2018L\u2019 = Long WA2, Blank = regular WA2 Optional; default (blank) is regular WA2. See Chapter II.5 . Street-1 Required. SNL A number between 4 and 32 Optional; default is 32. See Chapter III.2 . Street Name Normalization Format Flag \u2018C\u2019 = compact format, Blank = sort format Optional; default (blank) requests sort format. See Chapter III.3 . Cross Street Names Flag \u2018E\u2019 = return names Blank = do not return names Optional ZIP Code Optional; may be used instead of Borough Code, or to identify a DAPS. See Chapter III.6 and Chapter V.6 . Roadbed Request Switch \u2018R\u2019 = Roadbed info requested Blank = Generic info requested Optional; default (blank) requests generic information. Browse Flag (COW Only) \u2018P\u2019 = primary street name / code \u2018F\u2019 = principal street name / code \u2018R\u2019= DCP preferred street name / code Blank = input street name / code Optional; may be used to select output street name / code. Default (blank) requests use of input street name / code. See Chapter III.8 Selected Function 1 Geosupport Return Codes: GRC Value/ Reason Code Value Meaning 01/V (Warning) The input was a vanity address, an addressable place name, or a NAP. This message returns the underlying address or street name when available 01/P (Warning) The street segment containing the input address is an irregular curve (i.e., it is curved but not as an arc of a circle). No values are returned in the WA2 Spatial Coordinate fields. 07 The input street was specified as a B5SC (or PB5SC) representing a NAP that is the name of a complex. Five-digit street code input is not permitted for the name of a complex. Either the NAP (the name of the complex) must be specified in the input street name field, or its B7SC or B10SC must be specified in the appropriate input street code field. 28 Partial Street name is not valid for free-form address 29 Intersection name cannot be used as \u2018on\u2019 Street. 41 The input street name is valid but this entire street has no addresses 42 The input address does not fall within a valid range of addresses for a blockface of the input street. 50 The input street name is not valid for the portion of the street where the input house number is located. See Chapter IV.5 . 75 The input address is a \u2018duplicate address\u2019 - i.e., the same address exists at two different locations on the given input street. (Note: this is not a user data error, but an address that is duplicated on this street in reality.) See Chapter V.6 . 89 Long workarea2 option is invalid for COW format for function 1. It is only valid for MSW for this function","title":" Function 1 "},{"location":"appendices/appendix01/#function-1a","text":"Description: Function 1A processes an input address or input NAP. When successfully called using two work areas, it returns information in WA2 about the tax lot and the building (if any) identified by the input address or NAP. See Chapter VI and particularly Chapters VI.6 . The information that is returned in WA2 consists of information about the tax lot and the building (if any) identified by the input address or NAP. This information includes the Borough\u2011Block\u2011and\u2011Lot (BBL), which is the Department of Finance\u2019s (DOF) identifier for the tax lot; the DOF building class code; the number of buildings on the lot; the number of street frontages of the lot; a flag indicating whether the lot is a condominium; the Building Identification Number (BIN) (see Chapter VI.3 ) of the building identified by the input address, if any; and the Business Improvement District (BID) if the property is in such a district. Function 1A can be called with the long WA2 option. The regular WA2 includes a List of Geographic Identifiers (LGI) for the tax lot, including address ranges, BINs and street frontages. The long WA2 includes, instead of the LGI, a List of BINs for all the buildings in the tax lot. Function 1A normally returns information that is updated on a quarterly basis. COW users may request more up-to-date information on new buildings and demolitions using the TPAD Request Switch. The TPAD information will include the status of new building construction and/or demolition. See Chapter VI.11 . The regular, long, and extended WA2s for Function 1A are identical to those for Function BL. Function 1A enables the user to retrieve this information by address, while Function BL enables retrieval by BBL. The regular and extended WA2s for Function 1A is identical to that for Function BN. Function 1A enables the user to retrieve this information by address, while Function BN enables retrieval by BIN. Validation: An unconditionally successful outcome of a two-work-area call to Function 1A signifies that a building having the given input address exists. A warning is issued if the input is a pseudo-address (see Chapter VI.5 ). Input Fields: Function 1A Input Fields Field Value Comments Function Code \u20181A\u2019 Required. Work Area Format Indicator \u2018C\u2019 = COW format Blank = MSW format Optional; default (blank) requests MSW format. See Appendix 12 . Mode Switch \u2018X\u2019 = Extended Mode Work Area 2 Blank = normal mode Optional; COW Only. See Chapter II.7 . Borough Code-1 (or ZIP Code) \u20181\u2019=Manhattan, \u20182\u2019=Bronx, \u20183\u2019=Brooklyn, \u20184\u2019=Queens, \u20185\u2019=Staten Island Required. (ZIP Code may be used instead of Borough Code) House Number Required for address input except free-form addresses (see Chapter V.3 ). Typically not used for NAP input (see Chapter III.6 ). Street-1 Required. SNL A number between 4 and 32 Optional; default is 32. See Chapter III.2 . Street Name Normalization Format Flag \u2018C\u2019 = compact format, Blank = sort format Optional; default (blank) requests sort format. See Chapter III.3 . ZIP Code Optional; may be used instead of Borough Code, or to identify a DAPS. See Chapter III.6 and Chapter V.6 . Browse Flag (COW Only) \u2018P\u2019 = primary street name / code \u2018F\u2019 = principal street name / code \u2018R\u2019 = DCP preferred street name Blank = input street name / code Optional; may be used to select output street name / code. Default (blank) requests use of input street name / code. Chapter III.8 Long WA2 Flag \u2018L\u2019 = Long WA2, Blank = regular WA2 Optional; default (blank) is regular WA2. See Chapters II.5 and VI.6 . TPAD Request Switch (COW Only) \u2018Y\u2019 = TPAD information requested Blank or \u2018N\u2019 = TPAD not requested Optional; may be used to request Transitional PAD information. See Chapter VI.11 1A/BL Version Switch \u2018S\u2019 = standard version(MSW or COW) Blank = standard version; (COW Only) \u2018S\u2019 is required for MSW; Optional for COW. See Chapter VI.8 . 1A/BL Version Switch \u2018S\u2019 = standard version, Blank = standard version; valid only for COW Required for MSW; Optional for COW. See Chapter VI.8 . Selected Function 1A Geosupport Return Codes: GRC Value/ Reason Code Value Meaning 01/8 (Warning) Input address is a pseudo-address. 01/A (Warning) Function 1A has been called with the regular WA2, but the tax lot identified by the input address or NAP has the List of Geographic Identifiers (LGI) overflow condition, and therefore the LGI in WA2 is incomplete. If a complete list of BINs for the tax lot is required, Function 1A may be called with the long WA2 option for the same input data to retrieve the BINs of all buildings on the tax lot. 01/* (Warning) [related to TPAD]See Chapter VI.11 .Various messages are returned with this reason code. The Conflict flag is set to correspond to the specific warning message 04 An invalid value has been specified for the 1A/BL Version Switch. Must be \u2018S\u2019 for standard. See Chapter VI.8 . 07 The input street was specified as a B5SC (or PB5SC) representing a NAP that is the name of a complex. Five-digit street code input is not permitted for the name of a complex. Either the NAP itself (the name of the complex) must be specified in the input street name field, or its B7SC or B10SC must be specified in the appropriate input street code field. 41 The input street name is valid but this entire street has no addresses. 42 The input address is not valid (as defined in Chapter V.4 ). 50 The input street name is not valid for the portion of the street where the input house number is located. See Chapter IV.5 . 69/B Invalid TPAD Request Switch. Must be Y, N or blank 73 Legacy version of Function 1A is discontinued. See Technical Bulletin 05-1. 75 The input address is a \u2018duplicate address\u2019 - i.e., the same address exists at two different locations on the given input street. (Note: this is not a user input data error, but an address duplication that exists in reality.) See Chapter V.6 . 90 Invalid value specified for Long WA2 Flag \u2013 must be \u2018L\u2019 or blank","title":"Function 1A"},{"location":"appendices/appendix01/#function-1e","text":"Description: Function 1E processes an input address or input NAP. When called using two work areas, it returns the same WA2 information that is returned by Function 1, and additionally, it returns a set of political districts, including Election, State Assembly and Senate, City Council and Congressional Districts. The layouts of WA2 for Functions 1 and 1E are identical, except for the political district fields, which are fillers in Function 1\u2019s WA2. Input Fields: Same as Function 1, except for definition of the Browse Flag. When the Browse Flag is set to \u2018R\u2019, the Board of Elections (BOE) preferred street code is returned instead of the DCP preferred street code. See below. Browse Flag (COW Only) \u2018P\u2019 = primary street name / code \u2018F\u2019 = principal street name / code \u2018R\u2019 = BOE preferred street name / code Blank = input street name / code Optional; may be used to select output street name / code. Default (blank) requests use of input street name / code. See Chapter III.8 Browse Flag \u2018P\u2019 = primary street name / code Optional; may be used to (COW Only) \u2018F\u2019 = principal street name / code select output street name / code. \u2018R\u2019 = BOE preferred street name Default (blank) requests use of / code input street name / code. See Blank = input street name / code Chapter III.8 Validation: Same as Function 1. Selected Function 1E Geosupport Return Codes: Function 1E\u2019s possible GRC values include all of the ones for Function 1, and also the following: GRC Value/ Reason Code Value Meaning 01/E (Warning) The output address range returned in WA2 is split by an election district boundary. Therefore, the election district value returned in WA2 applies to only a portion of that address range. 56 The input address is associated with more than one Election District (ED). Function 1E requires that this address be specified with a house number suffix to identify a portion of the building specific to one ED. See Chapter V.4 .","title":" Function 1E "},{"location":"appendices/appendix01/#function-1b","text":"Description: Function 1B processes an input address or input Non-Addressable Place name (NAP) (see Chapter III.6 ). When called using two work areas, Function 1B returns information about the blockface as well as information about the tax lot and the building (if any) identified by the input address or NAP. The information that is returned in WA2 includes the cross streets at the two intersections delimiting the blockface, and a set of geographic district identifiers including ZIP code, census tract and community district. Information about the tax lot and the building (if any) identified by the input address or NAP is also returned. This information includes the Borough\u2011Block\u2011and\u2011Lot (BBL), which is the Department of Finance\u2019s (DOF) identifier for the tax lot; the DOF building class code; the number of buildings on the lot; the number of street frontages of the lot; a flag indicating whether the lot is a condominium; and the Building Identification Number (BIN) (see Chapter VI.3 ) of the building identified by the input address Function 1B Input Fields: Function 1B Input Fields Field Value Comments Function Code \u20181B\u2019 Required. Work Area Format Indicator \u2018C\u2019 = COW format Borough Code or ZIP Code \u20181\u2019=Manhattan\u20182\u2019=Bronx, \u20183\u2019=Brooklyn, \u20184\u2019=Queens, \u20185\u2019=Staten Island, or nnnnn Required. Street Name Required. SNL A number between 4 and 32 Optional; default is 32. See Chapter III.2 . Street Name Normalization Format Flag \u2018C\u2019 = compact format, Blank = sort format Optional; default (blank) requests sort format. See Chapter III.3 . ZIP Code Optional; may be used instead of Borough Code, or to identify a DAPS. See Chapter III.6 and Chapter V.6 . Browse Flag \u2018P\u2019 = primary street name / code \u2018F\u2019 = principal street name / code \u2018R\u2019= DCP preferred street name / cod e Blank = input street name / code Optional; may be used to select Output street name / code. Default (blank) requests use of Input street name / code. See Chapter III.8 . Validation: Same as Function 1 and Function 1A.. Selected Geosupport Return Codes: Function 1B\u2019s possible GRC values include all of the ones for Function 1, Function 1E, Function 1A, and also the following: GRC Value / Reason Code Value Meaning ??/1 (MSW Only) INVALID FUNCTION CODE \u2013 AVAILABLE IN COW FORMAT ONLY","title":"Function 1B"},{"location":"appendices/appendix01/#function-1n","text":"Description: Function 1N is used to normalize a street name and obtain its street code. Functions 1, 1A and 1E can do this also, but those functions require an input house number. The purpose of Function 1N is to provide a way to process a street name alone, without a house number. Note that since the input to Function 1N is not a specific location along a street, Function 1N does not perform local street name validation. Function 1N does not have a Work Area 2, and can only be called using one work area. See Chapter III.1 . Function 1N Input Fields: Function 1N Input Fields Field Value Comments Function Code \u20181N\u2019 Required Work Area Format Indicator C\u2019 = COW format Blank = MSW format Optional; default (blank) requests MSW format. See Appendix 12 Borough Code-1 1\u2019=Manhattan, \u20182\u2019=Bronx, \u20183\u2019=Brooklyn, \u20184\u2019=Queens, \u20185\u2019=Staten Island Required Street Name-1 Required. (Note: Street code input is not permitted for Function 1N.) SNL A number between 4 and 32 Optional; default is 32. See Chapter III.2 . Street Name Normalization Format Flag \u2018C\u2019 = compact format, Blank = sort format Optional; default (blank) requests sort format. See Chapter III.3 . Browse Flag (COW Only) \u2018P\u2019 = primary street name / code \u2018F\u2019 = principal street name / code Blank = input street name / code \u2018P\u2019 = primary street name / code \u2018F\u2019 = principal street name / code Blank = input street name / code Selected Geosupport Return Codes: All are self-explanatory.","title":"Function 1N "},{"location":"appendices/appendix01/#function-2-and-2w","text":"Description: Function 2 processes an input intersection specified either in terms of an intersection name, or in terms of two streets (and, when necessary, a compass direction), or in terms of a node ID. If two input streets intersect exactly once, the user should not specify an input compass direction. If the two input streets intersect at two distinct locations, a compass direction must be specified; it serves to identify which of the two intersections the user wishes Geosupport to process. Geosupport has the ability to process a pair of input streets that intersect more than twice, only if the user can identify the intersection by its node ID. If the user does not know the node ID, the user may issue Function 2W to find the node ID. Function 2W is basically identical to Function 2 except when streets intersect more than twice, Function 2W will reject the call and return a Work Area 2 that includes the node IDs and street codes/street names for all the intersections at the various nodes. Function 2 and Function 2W are discussed in detail in Chapter VII.2 . When successfully called using two work areas, Function 2 returns information about the input intersection in WA2. If there are more than two streets at an intersection, Function 2 accepts any pair of those streets as user input for that intersection. An intersection that lies on a borough boundary can be specified in terms of one street from each borough, by using the WA1 input field Borough Code 2, as described in Chapter VII.7 . The information that Function 2 returns in WA2 includes a list of street codes for all streets at the intersection (including the input streets), spatial coordinates for the intersection, and a set of geographic area identifiers including community district, census tract, police precinct and others. If the intersection lies on the boundary of two or more areas of a given type, the information for one of those areas is returned.. In COW format only, Function 2 also returns political geography and CD Eligibility. Validation: A successful outcome of a two-work-area Function 2 call signifies that the two input streets intersect exactly once (if no input compass direction was specified) or exactly twice (if a compass direction was specified). In the double-intersection case, a successful outcome also signifies that the input compass direction is a valid designation of one of the two intersections. Input Fields: Function 2 (and 2W) Input Fields Field Value Comments Function Code \u20182 \u2019 (\u20182\u2019 followed by a blank) \u20182W\u2019 Required. Work Area Format Indicator C\u2019 = COW format Blank = MSW format Optional; default (blank) requests MSW format. See Appendix 12 . Borough Code-1 \u20181\u2019=Manhattan, \u20182\u2019=Bronx, \u20183\u2019=Brooklyn, \u20184\u2019=Queens, \u20185\u2019=Staten Island Required (unless Node Number is used as input). Specifies borough of Street Name 1. Street-1 Required ( \u25cf ) (unless Node Number is used as input). Specifies either of the two streets defining the intersection. Borough Code-2 See Borough Code-1) Optional unless Street Name 2 is in a different borough from Street Name 1; default is value in Borough Code-1. Street-2 Required ( \u25cf ) (unless Node Number is used as input). Specifies the other street defining the intersection Compass Direction \u2018N\u2019, \u2018S\u2019, \u2018E\u2019 or \u2018W\u2019 Required only when the two input streets intersect twice, in which case it designates which intersection to process Node Number Seven-digit number Required when streets intersect more than twice. Optional at other nodes. May be used instead of borough and street names. SNL A number between 4 and 32 Optional; default is 32. See Chapter III.2](../../chapters/chapterIII/section02/). Street Name Normalization Format Flag \u2018C\u2019 = compact format, Blank = sort format Optional; default (blank) requests sort format. See Chapter III.3 . Cross Street Names Flag E\u2019 = return names Blank = do not return names Optional. Browse Flag (COW Only) P\u2019 = primary street names / codes F\u2019 = principal street names / codes R\u2019 = DCP preferred street names/Codes Blank = input street names / codes Optional; may be used to select output street names / codes. Default (blank) requests use of input street names / codes. See Chapter III.8 ( \u25cf ) Note: If either Street 1 or Street 2 contains an intersection name, then the other input street field may either be left blank or it may contain any street that exists at the given intersection. Selected Function 2 (and 2W) Geosupport Return Codes: Selected Function 2 (and 2W) Geosupport Return Codes GRC Value/ Reason Code Value Meaning 01/H (Warning) The two input streets intersect only once, but a non-blank input compass direction value has been supplied. The compass direction is superfluous and is ignored. A full complement of output data is returned in the work areas. 01/N (Warning) Both a node ID and street names or street codes were specified as input. The node ID will be used; the street names/codes will be ignored. 01/T (Warning) The input street name is ignored if an intersection name is specified along with a street name that is part of the intersection. 02 The two input streets intersect twice, but no input compass direction has been supplied. The distance between the two intersections is included in the message. A valid input compass direction value is required for these input streets. 03/blank (Reject) MSW - The two input streets intersect more than twice. MSW Function 2 calls cannot process such intersections. The Reason Code value is blank. The message suggests that the user use a COW function call. 03/A (Reject) COW - The two input streets intersect more than twice. Function 2 calls cannot process such intersections. The message suggests that the user issue a Function 2W call to find related nodes. 03/B (Reject) COW \u2013 Function 2W only - The two input streets intersect more than twice. Function 2W returns node IDs and street codes. The message suggests that the user use a node ID as input. 12 The input information was in the form of an intersection name or a street code of an intersection name. Geosupport recognizes this name or code as valid, but does not yet have this name or code associated with a specific intersection. 30 An input intersection name was specified along with an input street name, but the input street is not part of the intersection 32 (Reject) An invalid node ID was specified as input. It was non-numeric or had embedded blanks.. 33 (Reject) A node ID was specified as input, but no intersection was found with that node ID. 39 The input compass direction field contains an invalid value, that is, a non-blank value other than \u2018N\u2019, \u2018S\u2019, \u2018E\u2019 or \u2018W\u2019. 40 The two input streets intersect twice, but the input compass direction value supplied is an invalid descriptor for either of those intersections. If the value supplied is \u2018E\u2019 or \u2018W\u2019, it is invalid because the two intersections are situated approximately due north-south of each other; if the value supplied is \u2018N\u2019 or \u2018S\u2019, it is invalid because the two intersections are situated approximately due east-west of each other. 50 An input street name is not valid for the portion of the street where the input intersection is located. See Chapter IV.5 . 62 The two input streets do not intersect.","title":"Function 2 (and 2W) "},{"location":"appendices/appendix01/#function-3","text":"Description: Function 3 processes street segments and closely related three-street configurations. A street segment is a part of a street (called the \u2018on' street) between two consecutive cross streets. For example, Madison Avenue (in Manhattan) between East 51st Street and East 52nd Street is a street segment. Madison Avenue between East 51st Street and East 53rd Street is not a street segment, because there is an intervening street, East 52nd Street, between the given cross streets. An exception to the requirement that the input cross streets be consecutive along the \u2018on\u2019 street is the case of a T\u2011intersection: Function 3 accepts as input a street configuration that defines the long blockface of a T\u2011intersection. (For precise definitions of the terms \u2018three-street configuration\u2019, \u2018street segment\u2019, and \u2018T-intersection\u2019, see Chapter VII.3 .) A street segment intersecting with or lying on a borough boundary can be specified in terms of streets from both boroughs, by using the WA1 input fields Borough Code 2 and Borough Code 3, as described in Chapter VII.7 . The information returned by a successful two\u2011work\u2011area Function 3 call includes two lists of street codes for all cross streets at the two intersections defined by the input streets; and geographic area codes for the left and right sides of the street, such as the left and right community districts, ZIP codes, census tracts, etc. \u2018Left\u2019 and \u2018right\u2019 are defined relative to the \u2018on\u2019 street\u2019s \u2018logical direction\u2019, which in general is the direction of increasing address. The WA2 information also includes two items called the Segment Azimuth and the Segment Orientation that indicate how the street segment is oriented with respect to the points of the compass. Applications can use either of these items to determine compass direction descriptors for the left and right sides of the street. Another WA2 item, the Cross Street Reversal Flag, can be used to determine left and right relative to the order in which the input cross streets were specified. In COW format, Function 3 also returns the FROM and TO node IDs. In COW Extended format, Function 3 also returns Latitude and Longitude. Function 3 in MSW format has the Long Work Area 2 Option (see Chapter II.5 ). Function 3 in COW format has the Auxiliary Segment Option (see Chapter II.6 ). For a detailed discussion of Function 3, see Chapter VII.4 . Validation: A successful outcome of a two-work-area call to Function 3 signifies that the input \u2018on\u2019 street and two cross streets define a valid street segment or long blockface of a T-intersection. Input Fields: Function 3 Input Fields Field Value Comments Function Code \u20183 \u2019 (\u20183\u2019 followed by a blank) Required. Work Area Format Indicator \u2018C\u2019 = COW format Blank = MSW format Optional; default (blank) requests MSW format. See Appendix 12 . Mode Switch \u2018X\u2019 = Extended Mode Work Area 2 Blank = normal mode Optional; COW Only. See Chapter II.7 . Borough Code-1 \u20181\u2019=Manhattan, \u20182\u2019=Bronx, \u20183\u2019=Brooklyn, \u20184\u2019=Queens, \u20185\u2019=Staten Island Required. Specifies borough of Street Name-1. Street-1 Required. Specifies \u2018on\u2019 street Borough Code-2 (See Borough Code-1) Optional unless borough of Street Name-2 differs from that of Street Name-1. Specifies borough of Street Name-2. Default is Borough Code-1 value. Street-2 Required. Specifies either cross street. Borough Code-3 (See Borough Code-1) Optional unless borough of Street Name-3 differs from that of Street Name-1. Specifies borough of Street Name-3. Default is Borough Code-1 value. Street-3 Required. Specifies other cross street. SNL A number between 4 and 32 Optional; default is 32. See Chapter III.2 . Street Name Normalization Format Flag \u2018C\u2019 = compact format, Blank = sort format Optional; default (blank) requests sort format. See Chapter III.3 . Cross Street Names Flag \u2018E\u2019 = return names Blank = do not return names Optional Long WA2 Flag (MSW only) \u2018L\u2019 = Long WA2, Blank = regular WA2 Optional; default (blank) is regular WA2. See Chapter II.5 . Auxiliary Segment Switch (COW only) \u2018Y\u2019 = return all segment IDs \u2018N\u2019 or Blank = regular WA2 Optional; default (blank) is regular WA2. See Chapter II.6 Browse Flag (COW Only) \u2018P\u2019 = primary street names / codes \u2018F\u2019 = principal street names / codes \u2018R\u2019 = DCP preferred street names / codes Blank = input street names / codes Optional; may be used to select output street names / codes. Default (blank) requests use of input street names / codes. See Chapter III.8 Selected Function 3 Geosupport Return Codes: Selected Function 3 Geosupport Return Codes: GRC Value/ Reason Code Value Meaning 01/L or R (Warning) The input \u2019on\u2019 street lies on a borough boundary. The side of street indicated by the Reason Code value is outside of the input borough; no information is returned in WA2 for that side of the street if it is in Nassau or Westchester. 01/Q These streets involve a dogleg, Shortest Stretch provided. (See Chapter VII.2 ) 45 Although each of the three input street names was individually recognized, collectively they do not define a valid street segment nor the long blockface of a T\u2011intersection. 46 The geographic location specified by the combination of three input streets is ambiguous, i.e., it defines more than one valid segment or T\u2011intersection blockface. Geosupport cannot process this input. 50 An input street name is not valid for the portion of the street where the input street segment is located. See Chapter IV.5 . 55 At least one of the input streets is a Non-Addressable Place Name (NAP). NAPs are not allowed as input streets for this function 69/A Invalid value specified for Auxiliary Segment Switch. Auxiliary Segment Switch must be \u2018Y\u2019 or \u2018N\u2019 or blank. 89 Long WA2 option is not valid for this function in COW format. 90 Invalid value specified for Long WA2 Flag - must be \u2018L\u2019 or blank.","title":"Function 3 "},{"location":"appendices/appendix01/#function-3c","text":"Description: Function 3C processes blockfaces specified in terms of an input \u2018on\u2019 street, two cross streets and a compass direction designating the side of the street, such as \u2018the west side of Madison Avenue between East 53rd Street and East 54th Street\u2019. A blockface intersecting with or lying on a borough boundary can be specified in terms of streets from both boroughs, by using the WA1 input fields Borough Code 2 and Borough Code 3, as described in Chapter VII.7 . When called using two work areas, function 3C returns blockface related information in WA2. This information is a subset of the set of items returned in WA2 by Function 3, consisting of those items that are related to the specified side of the street. Function 3C in COW format has the Auxiliary Segment Option (see Chapter II.6 ). Function 3C is discussed in detail in Chapter VII.5 . Validation: A successful outcome of a two-work-area call to Function 3C signifies that the input \u2018on\u2019 street and two cross streets define a valid street segment or long blockface of a T-intersection, and that the input compass direction is a valid designation of a side of this segment. The validity of an input compass direction is determined by the spatial orientation of the segment. Input Fields: Function 3C Input Fields Field Value Comments Function Code \u20183C\u2019 Required. Work Area Format Indicator \u2018C\u2019 = COW format Blank = MSW format Optional; default (blank) requests MSW format. See Appendix 12 . Mode Switch \u2018X\u2019 = Extended Mode Work Area 2 Blank = normal mode Optional; COW Only. See Chapter II.7 . Borough Code-1 \u20181\u2019=Manhattan, \u20182\u2019=Bronx, \u20183\u2019=Brooklyn, \u20184\u2019=Queens, \u20185\u2019=Staten Island Required. Specifies borough of Street Name-1. Street-1 Required. Specifies \u2018on\u2019 street Borough Code-2 (See Borough Code-1) Optional unless borough of Street Name-2 differs from that of Street Name-1. Specifies borough of Street Name-2. Default is Borough Code-1 value. Street-2 Required. Specifies either cross street. Borough Code-3 (See Borough Code-1) Optional unless borough of Street Name-3 differs from that of Street Name-1. Specifies borough of Street Name-3. Default is Borough Code-1 value. Street-3 Required. Specifies other cross street. Compass Direction \u2018N\u2019, \u2018S\u2019, \u2018E\u2019 or \u2018W\u2019 Required. Specifies side of street of blockface (relative to street\u2019s \u2018logical direction\u2019 - see Chapter VII.3 ). SNL A number between 4 and 32 Optional; default is 32. See Chapter III.2 . Street Name Normalization Format Flag \u2018C\u2019 = compact format, Blank = sort format Optional; default (blank) requests sort format. See Chapter III.3 . Cross Street Names Flag \u2018E\u2019 = return names Blank = do not return names Optional Long WA2 Flag (MSW only) \u2018L\u2019 = Long WA2, Blank = regular WA2 Optional; default (blank) is regular WA2. See Chapter II.5 . Auxiliary Segment Switch (COW only) \u2018Y\u2019 = return all segment IDs \u2018N\u2019 or Blank = regular WA2 Optional; default (blank) is regular WA2. See Chapter II.6 Browse Flag (COW Only) \u2018P\u2019 = primary street names / codes \u2018F\u2019 = principal street names / codes \u2018R\u2019= DCP preferred street names / codes Blank= input street names / codes Optional; may be used to select output street names / codes. Default (blank) requests use of input street names / codes. See Chapter III.8 Selected Geosupport Return Codes: Selected Geosupport Return Codes GRC Value Meaning 09 The blockface on the side of street specified by the compass direction does not exist in the borough specified for the \u2018on\u2019 street. 39 The input compass direction field contains a non-blank value other than \u2018N\u2019, \u2018S\u2019, \u2018E\u2019 or \u2018W\u2019 40 The input compass direction value is invalid as a descriptor of a side of the input street segment, because it is incompatible with the segment\u2019s spatial orientation. This condition arises if the segment is oriented approximately east-west and the input compass direction value is specified as \u2018E\u2019 or \u2018W\u2019 (because a street segment oriented approximately east-west has no east and west sides), or the segment is oriented approximately north-south and the input compass direction value is \u2018N\u2019 or \u2018S\u2019 44 Although each of the three input street names was individually recognized, collectively they do not define a valid blockface. 46 The combination of these three input streets is ambiguous, i.e., it defines more than one valid blockface. Function 3C cannot process such input. 50 An input street name is not valid for the portion of the street where the input blockface is located. See Chapter IV.5 . 69/A Invalid value specified for Auxiliary Segment Switch. Auxiliary Segment Switch must be \u2018Y\u2019 or \u2018N\u2019 or blank.","title":"Function 3C "},{"location":"appendices/appendix01/#function-3s","text":"Description: Function 3S processes input street stretches. A street stretch is a portion of a street between any two cross streets. If an input cross street intersects with the \u2018on\u2019 street twice, an input compass direction is required to identify which of the two intersections is intended. If the user application does not specify input cross streets, Function 3S returns information about the full length of the \u2018on\u2019 street. Note that, in a Function 3S call, the input cross streets need not be consecutive along the \u2018on\u2019 street. When successfully called using two work areas, Function 3S returns, in WA2, a list of all intersections in sequence along the \u2018on\u2019 street between (and including) the two intersections defined by the input \u2018on\u2019 and two cross streets, if any. If the user has not specified input cross streets, the list contains all intersections in sequence from the beginning to the end of the \u2018on\u2019 street. The sequence in which the intersections are listed accords with the direction of increasing addresses along the \u2018on\u2019 street. Each intersection in the list is specified as a pair of street codes for two of the streets at that intersection. One of the street codes listed for an intersection may or not be the street code of the \u2018on\u2019 street. In a COW function 3S call, if the user requests Real Street Only output, only real street intersections are returned; Bends and Non-Street Features are not included in the list of intersections. For each entry in the WA2 list of intersections of the street stretch, there are fields for a distance and a gap flag. The distance is the approximate distance in feet between the given intersection and its predecessor in the list; the gap flag indicates whether the intersection and its predecessor are connected by the \u2018on\u2019 street. The gap flag also indicates the nature of the gap. The first entry within a list will always have a zero in the distance field and a blank in the gap flag. Function 3S is discussed in detail in Chapter VII.6 . Validation: A successful outcome of a two-work-area call to Function 3S using input cross streets signifies that each of the input cross streets intersects the input \u2018on\u2019 street. Input Fields : Function 3S Input Fields Field Value Comments Function Code \u20183S\u2019 Required. Work Area Format Indicator \u2018C\u2019 = COW format Blank = MSW format Optional; default (blank) requests MSW format. See Appendix 12 Borough Code-1 \u20181\u2019=Manhattan, \u20182\u2019=Bronx, \u20183\u2019=Brooklyn, \u20184\u2019=Queens, \u20185\u2019=Staten Island Required. Specifies borough of Street-1. Street-1 Required. Specifies \u2018on\u2019 street. Street-2 Optional. Specifies either cross street. Compass Direction for First Intersection \u2018N\u2019, \u2018S\u2019, \u2018E\u2019 or \u2018W\u2019 Required if Street-2 intersects Street-1 (\u2018on\u2019-street) twice. Identifies which of the two intersections is intended. Street-3 Optional. Specifies other cross street. Must be specified if Street-2 is specified. If Street-2 and Street-3 are not specified, data for full length of street are returned in WA2. Compass Direction for Second Intersection \u2018N\u2019, \u2018S\u2019, \u2018E\u2019 or \u2018W\u2019 Required if Street-3 intersects Street-1 (\u2018on\u2019-street) twice. Identifies which of the two intersections is intended. SNL A number between 4 and 32 Optional; default is 32. See Chapter III.2. Street Name Normalization Format Flag \u2018C\u2019 = compact format, Blank = sort format Optional; default (blank) requests sort format. See Chapter III.3. Real Street Only Flag (COW Only) \u2018R\u2019 = real streets only Blank = all streets Optional; default (blank) requests all streets. See Chapter VII.6] . Roadbed Request Switch R\u2019 = Roadbed info requested Blank = Generic info requested Optional; default (blank) requests generic information See Chapter VII.6 Selected Geosupport Return Codes: Selected Geosupport Return Codes Value Meaning 01/H (Warning) The input \u2018on\u2019 street intersects only once with one of the input cross streets, but a non-blank input compass direction value has been supplied for that intersection. That compass direction is superfluous and is ignored. A full complement of output data is returned in the work areas. 05 A value was supplied in at least one of the input borough code fields other than Borough Code 1. All Function 3S input streets are required to be from the same borough, which must be supplied in the WA1 field Borough Code 1; Borough Code 2 and Borough Code 3 must be blank. 14 The three input streets do not define a street stretch, because the \u2018from\u2019 and \u2018to\u2019 input intersections are identical. 38 The input \u2018on\u2019 street and an input cross street intersect twice, but the input compass direction value supplied is an invalid descriptor for either of those intersections. If the value supplied is \u2018E\u2019 or \u2018W\u2019, it is invalid because the two intersections are situated approximately due north-south of each other; if the value supplied is \u2018N\u2019 or \u2018S\u2019, it is invalid because the two intersections are situated approximately due east-west of each other. 39 An input compass direction field contains an invalid value, that is, a non-blank value other than \u2018N\u2019, \u2018S\u2019, \u2018E\u2019 or \u2018W\u2019. 55 At least one of the input streets is a Non-Addressable Place Name (NAP). NAPs are not allowed as input streets for this function. 61 Geosupport has no street stretch data for this \u2018on\u2019 street. (This condition should never occur for a normal input street. It occurs if the input \u2018on\u2019 street is a pseudo-street name (such as DEAD END) or another type of geographic feature that Geosupport recognizes but that Function 3S cannot process as an input \u2018on\u2019 street.) 62 The input \u2018on\u2019 street does not intersect with one of the input cross streets. 66 The input \u2018on\u2019 street intersects with one of the input cross streets more than twice. Function 3S cannot be used to process this combination of input data. (However, Function 3S could be called for this \u2018on\u2019 street with no cross streets specified. That call would return data for the full length of the street, including the intersections in question.) 68 The input \u2018on\u2019 street intersects with one of the input cross streets twice. An input compass direction value must be supplied to identify which of the two intersections is intended. 96 The functionality to support part of a roadbed street stretch is under construction","title":"Function 3S "},{"location":"appendices/appendix01/#function-ap","text":"Description: Function AP processes an input address. When successfully called using two work areas, it returns information in WA2 about the CSCL Address Point identified by the input address. See Chapter VI and particularly Chapter VI.10 . Function AP and its data are currently available to Geosupport users. The information that is returned in WA2 consists of information about the address point and the tax lot and the building (if any) identified by the input address. This information includes the CSCL Address Point ID, the spatial coordinates of the Address Point, the Building Identification Number (BIN) and the Borough\u2011Block\u2011and\u2011Lot (BBL), which is the Department of Finance\u2019s (DOF) identifier for the tax lot. By geocoding to a CSCL Address Point, the user application will presumably geocode to a \u2018real\u2019 posted address \u2013 not an address that might be part of an administrative range. Function AP is also available in an Extended Mode. It includes that Principal Street Name in WA2. See the Function AP work area layouts in Appendix 13 . Validation: An unconditionally successful outcome of a two-work-area call to Function AP signifies that a building having the given input address exists. Input Fields: Function AP Input Fields Field Value Comments Function Code \u2018AP\u2019 Required. Work Area Format Indicator \u2018C\u2019 = COW format Required. AP is a COW only function Mode Switch \u2018X\u2019 = Extended Mode Work Area 2 Blank = normal mode Optional Borough Code-1 (or ZIP Code) \u20181\u2019=Manhattan, \u20182\u2019=Bronx, \u20183\u2019=Brooklyn, \u20184\u2019=Queens, \u20185\u2019=Staten Island Required. (ZIP Code may be used instead of Borough Code) House Number Required for address input except free-form addresses (see Chapter V.3 ). Street-1 Required. SNL A number between 4 and 32 Optional; default is 32. See Chapter III.2 . Street Name Normalization Format Flag \u2018C\u2019 = compact format, Blank = sort format Optional; default (blank) requests sort format. See Chapter III.3 . ZIP Code Optional; may be used instead of Borough Code, or to identify a DAPS. See Chapter III.6 and Chapter V.6 . Browse Flag (COW Only) \u2018P\u2019 = primary street name / code \u2018F\u2019 = principal street name / code \u2018R\u2019 = DCP preferred street name Blank = input street name / code Optional; may be used to select output street name / code. Default (blank) requests use of input street name / code. Chapter III.8 Selected Geosupport Return Codes: Selected Geosupport Return Codes GRC Value/ Reason Code Value Meaning 42 The input address is not valid (as defined in Chapter V.4 . 50 The input street name is not valid for the portion of the street where the input house number is located. See Chapter IV.5 . 75 The input address is a \u2018duplicate address\u2019 - i.e., the same address exists at two different locations on the given input street. (Note: this is not a user input data error, but an address duplication that exists in reality.) See Chapter V.6 .","title":"Function AP "},{"location":"appendices/appendix01/#functions-bb-and-bf","text":"Description: Function BB (\"browse backward\") and BF (\"browse forward\") enable applications to develop street name browse capability, in order to assist user data entry staff to determine valid spellings of street names that have been rejected. Functions BB and BF can only be called using one work area. A sequence of repeated calls to Functions BB and/or BF will browse backwards and/or forwards in alphabetical order through the set of all valid normalized street names in a given borough. When issuing a COW Function BB or BF call, the user may request that only Primary or Principal street names be returned. This is done by setting the Browse Flag to \u2018P\u2019 or \u2018F\u2019 respectively. Each call to one of these functions returns up to ten such names in alphabetical order (or fewer, if there are not ten names remaining in the given borough in the given browse direction). The names are returned in the WA1 field List of Street Names. The number of street names returned in the list is returned in the WA1 field Number of Street Names in List. For COWs, corresponding B7SCs are also returned. To start a browse sequence, the user application calls either of the browse functions , passing a borough code and character string in the WA1 input fields called Borough Code 1 and Street Name 1, respectively. The input character string can be from one to 32 bytes long. When the last set of ten or fewer names in the given borough is reached, a warning is issued. For a detailed discussion of Functions BB and BF, see Chapter III.7 . Input Fields: Functions BB / BF Input Fields Field Value Comments Function Code \u2018BB\u2019 or \u2018BF\u2019 Required. Work Area Format Indicator \u2018C\u2019 = COW format Blank = MSW format Optional; default (blank) requests MSW format. See Appendix 12 Borough Code-1 \u20181\u2019=Manhattan, \u20182\u2019=Bronx, \u20183\u2019=Brooklyn, \u20184\u2019=Queens, \u20185\u2019=Staten Island Required. Street Name-1 Any character string Required. Browse Flag (COW Only) \u2018P\u2019 = primary street names\u2019 \u2018F\u2019 = principal street names Blank = all street names Optional; default (blank) See Chapter III.7 . Selected Geosupport Return Codes: Selected Geosupport Return Codes GRC Value / Reason Code Value Meaning 01/4 (Warning) The last street name has been reached in the specified input borough in the given browse direction. It is possible that fewer than ten street names have been returned in WA1 97 The input street name is alphabetically beyond the last street name in the specified input borough.","title":"Functions BB and BF "},{"location":"appendices/appendix01/#function-bl","text":"Description: Function BL processes a parcel of real property, or tax lot, specified in terms of a standard Department of Finance set of tax lot identifiers, consisting of a combination of a borough code, a tax block number and a tax lot number, collectively called the BBL. When successfully called using two work areas, Function BL returns information about the tax lot in WA2. The WA2 layouts for Function BL are identical to those for Function 1A. Function 1A enables the user to retrieve this information by address, while Function BL enables retrieval by BBL. For a detailed discussion of Function BL, see Chapter VI and particularly Chapter VI.7 . Validation: A successful outcome of a two-work-area call to Function BL signifies that the input BBL is valid. Function BL Input Fields: Function BL Input Fields Field Value Comments Function Code \u2018BL\u2019 Required. Work Area Format Indicator \u2018C\u2019 = COW format Blank = MSW format Optional; default (blank) requests MSW format. See Appendix 12 Mode Switch \u2018X\u2019 = Extended Mode Work Area 2 Blank = normal mode Optional; COW Only. See Chapter II.7 . Borough-Block-Lot (BBL) Required. Long WA2 Flag \u2018L\u2019 = Long Blank = regular WA2 Optional default (blank) is regular WA2. See Chapter II.5 . TPAD Request Switch (COW Only) \u2018Y\u2019 = TPAD information requested Blank or \u2018N\u2019 = TPAD not requested Optional; may be used to request Transitional PAD information. See Chapter VI.11 1A/BL Version Switch \u2018S\u2019 = standard version, Blank = standard version; valid only for COW Required for MSW; optional for COW. See Chapter VI.8 . Selected Geosupport Return Codes: Selected Geosupport Return Codes GRC Value / Reason Code Value Meaning 01/A (Warning) Function BL has been called with the regular WA2, but the input tax lot has the List of Geographic Identifiers (LGI) overflow condition, and therefore the LGI in WA2 is incomplete. If a complete list of BINs for the tax lot is required, Function BL may be called with the long WA2 option for the same input data to retrieve the BINs of all buildings on the tax lot. 04 An invalid value has been specified for the 1A/BL Version Switch. See Chapter VI.8 . 01/* (Warning) [related to TPAD]See Chapter VI.11 and Appendix 4 .Various messages are returned with this reason code. The Conflict flag is set to correspond the specific warning message. 69/B Invalid TPAD Request Switch. Must be Y, N or blank 73 Legacy version of Function BL is discontinued. See Technical Bulletin 05-1. 90 Invalid value specified for Long WA2 Flag - must be \u2018L\u2019 or blank.","title":"Function BL "},{"location":"appendices/appendix01/#function-bn","text":"Description: Function BN processes a building specified by an input Building Identification Number (BIN). For a discussion of BINs, see Chapter VI.3 . A successful Function BN call using two work areas returns information about the building in WA2. This includes the building's borough\u2011tax block\u2011tax lot (BBL); a list of geographic identifiers associated with the building (in contrast to Functions 1A and BL, which return geographic identifiers for the entire tax lot, subject to the list\u2019s space limitation); a building status flag and date [not implemented] ; and a condominium flag. Condominiums have unique characteristics discussed in Chapter VI.4 . Function BN is discussed in detail in Chapter VI and particularly in Chapter VI.9 . Validation: A successful outcome of a two-work-area call to Function BN signifies that the input BIN is valid. Input Fields: Input Fields Field Value Comments Function Code \u2018BN\u2019 Required Work Area Format Indicator C\u2019 = COW format Blank = MSW format Optional; default (blank) requests MSW format. See Appendix 12 . Mode Switch \u2018X\u2019 = Extended Mode Work Area 2 Blank = normal mode Optional; COW Only. See Chapter II.7 . BIN Required Selected Geosupport Return Codes: Selected Geosupport Return Codes GRC Value / Reason Code Value Meaning 01/F (Warning) The input BIN (contains a 9 in the 2nd digit after the borough code) is a temporary BIN assigned by GSS to a multi-building tax lot, the individual buildings of which have not yet been assigned permanent BINs. The temporary BIN will be replaced in the future 20 No input BIN value was specified. 21 The input BIN is not valid 22 The input BIN has an invalid format: either it contains non-numeric characters, or its first digit is not a valid borough code (the digits 1 through 5), or the digits beyond the first digit are all zeros. 23 The input BIN is a \u2018dummy\u2019 BIN (contains an 8 in the 2nd digit after the borough code) assigned by the NYC Department of Buildings. It exists only in DOB files and is not valid in Geosupport.","title":"Function BN "},{"location":"appendices/appendix01/#functions-d-dg-and-dn","text":"Description: Functions D, DG and DN are the \u2018display\u2019 functions. They do not actually display anything themselves, but can be used to obtain data items that applications can use to format geographic locations for display on reports, screens, mailing labels etc. The display functions do not have a WA2 and can only be called using one work area. Each of them can process any combination of up to two input House Numbers in Internal format (HNI) for MSWs or up to two input House Numbers in Sort format (HNS) for COWs and up to three input street codes. For each successfully processed input HNI/HNS, the corresponding House Number in Display format (HND) is returned in WA1. (House number processing by the display functions is discussed in detail in Chapter V.2 .) For each successfully processed input street code, a corresponding street name is returned in WA1. (Street code processing by the display functions is discussed in Chapter IV.6 .) For each unsuccessfully processed input street code, the corresponding output field is returned containing all question marks. If one input HNI/HNS is supplied, it may be passed in either input HNI/HNS field. Input street codes may not \u2018skip\u2019 any input street code fields. The display functions process each input item independently of the others, and the input data are not treated as collectively forming a geographic location. In particular, a successful call to a display function does not imply the validation of a geographic location. For example, if there is an input house number and an input street code, these are not treated or validated as forming an address, but are independently processed for conversion to display format. If the input consists of two street codes, these are not treated or validated as forming an intersection, etc. Functions D, DG and DN differ in the type of street code each processes and in the street name each returns: Function D processes input borough-code-and-five-digit street codes, specified either in the form of B5SCs or PB5SCs (MSW only). Input B5SCs are passed left-justified and space-filled in the corresponding WA1 input B10SC fields. Input PB5SCs are passed in the corresponding MSW WA1 input PB5SC fields. For each successfully processed input B5SC or PB5SC (MSW only), Function D returns the corresponding \u2018primary\u2019 name for the street ( a name from among all of the street\u2019s aliases that GSS has designated as \u2018best\u2019 representing the street as a whole). Function DG processes input borough-code-and-seven-digit street codes (B7SCs). Input B7SCs are passed left-justified and space-filled in the corresponding WA1 input B10SC fields. For each input B7SC, Function DG returns a street name that GSS has designated as the \u2018principal\u2019 street name of the local group of names represented by the given B7SC. Function DG can be used in conjunction with a geographic location-processing function to obtain the \u2018preferred street name\u2019 customized for a particular geographic location. (For a discussion of seven-digit street codes and local groups, see Chapter IV.5 .) Function DN processes input borough-code-and-ten-digit street codes (B10SCs). For each input B10SC, Function DN returns the unique street name spelling corresponding to it. Input Fields: Input Fields Field Value Comments Function Code \u2018D \u2019 (D followed by a blank) or \u2018DG\u2019 or \u2018DN\u2019 Required. Work Area Format Indicator \u2018C\u2019 = COW format Blank = MSW format Optional; default (blank) requests MSW format. See Appendix 12 HNI-1 or HNS-1 Optional. HNI-2 or HNS-2 Optional. PB5SC-1 (MSW) Function D only; optional unless PB5SC-2 is nonblank. PB5SC-2 (MSW) Function D only; optional unless PB5SC-3 is nonblank. PB5SC-3 (MSW) Function D only; optional. B10SC-1 (or B5SC-1) (or B7SC-1) Optional unless B10SC-2 is nonblank. (B5SC-1, B7SC-1are left-justified, space-filled in B10SC-1) B10SC-2 (or B5SC-2) (or B7SC-2) Optional unless B10SC-3 is nonblank. (B5SC-2, B7SC-2 are left-justified, space-filled in B10SC-2) B10SC-3 (or B5SC-3) (or B7SC-3) Optional. (B5SC-3, B7SC-3 are left- justified, space-filled in B10SC-3) SNL A number between 4 and 32 Optional; default is 32. See Chapter III.2 . Street Name Normalization Format Flag \u2018C\u2019 = compact format, Blank = sort format Optional; default (blank) requests sort format. See Chapter III.3 . Selected Geosupport Return Codes: Selected Geosupport Return Codes GRC / Reason Code Value Meaning 13 At least one input HNI/HNS has a format error. There are many possible house number format errors. The specific format error is indicated by the Reason Code and Message. Output HND fields corresponding to unsuccessfully processed input HNI/HNSs are returned containing all blanks. 64 At least one input street code is invalid. Output street name fields corresponding to invalid input street code fields are returned containing all \u2018?\u2019.","title":"Functions D, DG and DN "},{"location":"appendices/appendix02/","text":"APPENDIX 2: MAINFRAME-SPECIFIC WORK AREA LAYOUTS(MSW) (as of Geosupport System Software Version 19.4 - Layouts unchanged since 15.3) IMPORTANT MSW / COW ANNOUNCEMENT SUPPORT FOR MSW WORK AREAS ENDED ON JANUARY 1, 2020 As of January 1, 2020, Mainframe-Specific Work Areas (MSWs) are no longer supported. Also, as of Version 19.3, COW Work Areas are no longer enhanced in the mainframe environment . It is therefore important for users to convert all existing MSW applications to the COW format in a non-mainframe environment . User-written application programs and GBAT utilities that use the MSW format may continue to run but no technical support will be available. If an MSW issue arises, users can no longer call DCP for resolution. To assist users in the conversion to COW format: Appendix 12 contains information needed to create COW applications. Appendix 13 contains the COW Work Area Layouts. Appendix 14 contains the COW copy files. Any further issues may be directed via email to: Geosupport_DL@planning.nyc.gov Appendix 2 Begins This appendix contains layouts of all of the work MSW areas used with the Geosupport System\u2019s API. As of January 1, 2020, these layouts are no longer supported. Some Geosupport functions can only be called using one work area, Work Area 1 (WA1). Other functions can be called using two work areas, WA1 and Work Area 2 (WA2). For a discussion of one-work-area and two-work-area calls, see Chapter II.4 . WA1 contains both input fields (fields used to pass data from the application to Geosupport) and output fields (fields used to pass data from Geosupport to the application). WA1 is organized so that the input fields occur first, followed by a filler, followed by the output fields. WA2 contains output fields only. All functions use the same WA1 layout, but the set of WA1 fields that are used depends on the function. In the layout of WA1 in this appendix, the column labeled \u2018Functions\u2019 indicates which functions use each field. The functions that can be called using two work areas use various WA2 layouts of various lengths. In some cases, several functions share a single WA2 layout. For some functions, the user has a choice of two WA2 layouts, a \u2018regular\u2019 WA2 and a \u2018long\u2019 WA2. For a discussion of the long WA2 option, see Chapter II.5 . The following is a list of all of the Geosupport MSW work areas, indicating the length of each in bytes. Functions that are listed together share a single Work Area 2 layout. Appendix 3 consists of a data item dictionary describing the fields that occur in the work area. Mainframe-Specific Work Area (MSW) Length WA1, all functions 884 Regular WA2, Function 1 200 Long WA2, Function 1 300 Regular WA2, Functions 1A, BL, BN 939 Long WA2, Functions 1A and BL 17,683 Regular WA2, Function 1E 200 Long WA2, Function 1E 300 WA2, Function 2 200 Regular WA2, Function 3 200 Long WA2, Function 3 300 WA2, Function 3C 200 WA2, Function 3S 4,224 Work Area 1 (MSW) - All Functions Field Size Position Functions INPUT FIELDS: Geosupport Function Code 2 1-2 All Borough Code-1 13 1 3 All but BL, BN, D\\* House Number 12 4-15 1, 1A, 1E House Nr. in Internal Format (HNI) 6 16-21 1, 1A, 1E, D Street Name-1 32 22-53 All but BL, BN, D* Street Name-2 32 54\u201185 2, 3\\* Street Name-3 32 86-117 3\\* Compass Direction 1 118 2, 3C, 3S Compass Direction for 2 nd Intersection 1 119 3S PB5SC-1 4 120\u2011123 1, 1A, 1E, 2, 3*, D PB5SC-2 4 124-127 2, 3*, D PB5SC-3 4 128-131 3*, D Roadbed Request Switch 1 132 1, 1E, 3S Borough Code-2 1 133 2, 3, 3C Borough Code-3 1 134 3, 3C Street Name Normalization 2 135\u2011136 All but B* Length Limit (SNL) B10SC-1 (includes B5SC-1 and B7SC-1) 11 137-147 1, 1A, 1E, 2, 3\\*, D\\* B10SC-2 (includes B5SC-2 and B7SC-2) 11 148-158 2, 3\\*, D\\* B10SC-3 (includes B5SC-3 and B7SC-3) 11 159\u2011169 3\\*, D\\* ZIP Code 5 170\u2011174 1, 1A, 1E Borough\u2011Block\u2011and\u2011Lot (BBL): 10 175\u2011184 Borough 1 175 BL Tax Block 5 176-180 BL Tax Lot 4 181-184 BL Filler 1 185 Building Identification Number (BIN) 7 186\u2011192 BN Street Name Normalization Format Flag 1 193 All but B* Long Work Area 2 Flag 1 194 1, 1A, 1E, 3, BL Filler - Reserved for Geosupport Use 12 195-206 HNI-2 6 207-212 D\\* Work Area Format Indicator 1 213 All 1ABL Version Switch 1 214 1A, BL Cross Street Names Flag 1 215 1, 1E, 2, 3, 3C Filler 4 216-219 Work Area 1 (MSW) - All Functions Field Size Position Functions OUTPUT FIELDS: HND-2 12 220-231 D\\* Borough Name 9 232\u2011240 All but D* Street Name-1Normalized 32 241\u2011272 All but B\\* Street Name-2Normalized 32 273\u2011304 2, 3\\*, D\\* Street Name-3Normalized 32 305\u2011336 3\\*, D\\* HND 12 337\u2011348 1, 1A, 1E, D\\* HNI 6 349\u2011354 1, 1A, 1E Filler 7 355\u2011361 PB5SC-1 4 362\u2011365 1\\*, 2, 3\\*, D\\* Filler 2 366\u2011367 PB5SC-2 4 368\u2011371 2, 3\\*, D\\* Filler 2 372\u2011373 PB5SC-3 4 374\u2011377 3\\*, D\\* Attribute Bytes 3 378\u2011380 Up to ten PB5SCs 40 381\u2011420 BB, BF B10SC-1 11 421\u2011431 1\\*, 2, 3\\*, D\\* B10SC-2 11 432\u2011442 2, 3\\*, D\\* B10SC-3 11 443\u2011453 3\\*, D\\* Filler 5 454\u2011458 BBL Normalized 10 459\u2011468 BL Reserved 8 469-476 Street Attribute Indicator 1 477 1\\* Reason Code 1 478 All Filler - Reserved for Geosupport Use 2 479\u2011480 Geosupport Return Code 2 481\u2011482 All Geosupport Message 80 483\u2011562 All Number of Street Names in List (packed) 2 563\u2011564 1*, 2, 3*, BB, BF List of Street Names: (10 Street Name Fields, 32 Bytes Each) 320 565\u2011884 1*, 2, 3*, BB, BF *NOTE: An asterisk in the second position of a function code is used as a shorthand notation to represent all function codes having the indicated value in the first position, as follows: 1* = 1 , 1A, 1E, 1N 3* = 3, 3C, 3S B* = BB, BF, BL, BN D* = D, DG, DN Regular Work Area 2 (MSW) Layout for Function 1 Field Size Position Filler 22 1-22 Low House Number of Blockface 6 23-28 High House Number of Blockface 6 29-34 Alley/Cross Streets Flag 1 35 Number of Cross Streets at Low Address End 1 36 List of Cross Streets at Low Address End (up to 5 PB5SCs) 20 37-56 Number of Cross Streets at High Address End 1 57 List of Cross Streets at High Address End (up to 5 PB5SCs) 20 58-77 Community District: 3 78-80 Community District Borough Code 1 78 Community District Number 2 79-80 ZIP Code 5 81-85 DOT Street Light Contractor Area 1 86 Health Center District 2 87-88 Side of Street Indicator 1 89 Continuous Parity Indicator 1 90 2010 Census Tract 6 91-96 2010 Census Block 4 97-100 2010 Census Block Suffix (Not Implemented) 1 101-101 Filler 1 102-102 Filler 2 103-104 Health Area 4 105-108 Sanitation Recycling Collection Schedule 3 109-111 Feature Type Code 1 112 Interim Assistance Eligibility Indicator (IAEI) 1 113 Curve Flag 1 114 Police Patrol Borough Command 1 115 Police Precinct 3 116-118 School District 2 119-120 Filler to Preserve Layout Consistency with WA2 for Function 1E 14 121-134 Coincident Segment Count 1 135 Segment Type Code 1 136 Sanitation District 3 137-139 Sanitation Collection Scheduling Section and Subsection 2 140-141 Fire Division 2 142-143 Fire Battalion 2 144-145 Fire Company Type 1 146 Fire Company Number 3 147-149 Special Address Generated Record Flag 1 150 Reserved for Internal Geosupport Use 1 151 Filler (was Split Community School District Flag) 1 152 DCP-Preferred LGC 2 153-154 Face Code 4 155-158 Sequence Number 5 159-163 1990 Census Tract 6 164-169 Filler 4 170-173 Dynamic Block / Atomic Polygon 3 174-176 X Coordinate 7 177-183 Y Coordinate 7 184-190 Segment Length in Feet 5 191-195 Sanitation Regular Collection Schedule 5 196-200 Long Work Area 2 (MSW) Layout for Function 1 Field Size Position Same as corresponding position in Function 1's regular WA2 200 1-200 Segment-ID 7 201-207 Underlying B7SC of True Street 8 208-215 Underlying HNI on True Street 6 216-221 2000 Census Tract 6 222-227 2000 Census Block 4 228-231 2000 Census Block Suffix (Not Implemented) 1 232-232 Filler 68 233-300 Regular Work Area 2 (MSW) Layout for Functions 1A, BL, BN Field Size Position Filler 28 1-28 Borough-Tax Block-Tax Lot (BBL): 10 29-38 Borough Code 1 29 Tax Block 5 30-34 Tax Lot 4 35-38 Tax Lot Version Number [not implemented] 1 39 RPAD Self-Check Code (SCC) for BBL 1 40 Filler 1 41 RPAD Building Classification Code 2 42-43 Corner Code 2 44-45 Filler (reserved) 2 46-47 Number of Street Frontages of Lot 2 48-49 Interior Lot Flag 1 50 Vacant Lot Flag 1 51 Irregularly-Shaped Lot Flag 1 52 Alternative Borough Flag 1 53 Filler 1 54 Strolling Key 13 55-67 List of Geographic Identifiers Overflow Flag 1 68 Reserved for Internal Geosupport Use 1 69 Building Identification Number (BIN) of Input Address or NAP 7 70-76 Condominium Flag 1 77 Condominium Identification Number 4 78-81 Low BBL of this Building\u2019s Condominium Units 10 82-91 Filler 1 92 Condominium Billing BBL 10 93-102 Filler 1 103 Condominium Billing BBL SCC 1 104 High BBL of this Building\u2019s Condominium Units 10 105-114 Filler 1 115 SBVP (Sanborn Map Identifiers): 8 116-123 Sanborn Borough Code 1 116-123 Sanborn Volume and Volume Suffix 3 117-119 Sanborn Page and Page Suffix 4 120-123 Filler (was DCP Commercial Area) 5 124-128 Cooperative Identification Number 4 129-132 Filler 4 133-136 Number of Existing Buildings on Lot 4 137-140 Tax Map Identifiers: 9 141-149 Borough Code: 1 141 Tax Map Section 2 142-143 Tax Map Volume 2 144-145 Tax Map Page [not yet implemented] 4 146-149 X Coordinate of Internal Label Point 7 150-156 Y Coordinate of Internal Label Point 7 157-163 Business Improvement District (BID) 6 164-169 Filler 12 170-181 Number of Entries in List of Geographic Identifiers 2 182-183 List of Geographic Identifiers, up to 21 entries - each entry consisting of 36 bytes as follows: 756 184-939 Low House Number 6 Filler 3 High House Number 6 Filler 3 B5SC: 1 Borough Code 5-Digit Street Code 5 DCP-Preferred LGC 2 BIN 7 Geographic Identifier Type Code 1 Filler 1 Side of Street Indicator 1 Long Work Area 2 (MSW) Layout for Functions 1A and BL Field Size Position Filler 28 1-28 Borough-Tax Block-Tax Lot (BBL): 10 29-38 Borough Code 1 29 Tax Block 5 30-34 Tax Lot 4 35-38 Filler 3 Tax Lot Version Number [not implemented] 1 39 RPAD Self-Check Code (SCC) for BBL 1 40 Filler 1 41 RPAD Building Classification Code 2 42-43 Corner Code 2 44-45 Filler (reserved) 2 46-47 Number of Street Frontages of Lot 2 48-49 Interior Lot Flag 1 50 Vacant Lot Flag 1 51 Irregularly-Shaped Lot Flag 1 52 Alternative Borough Flag 1 53 Filler 15 54-68 Reserved for Internal Geosupport Use 1 69 Building Identification Number (BIN) of Input Address or NAP 7 70-76 Condominium Flag 1 77 Condominium Identification Number 4 78-81 Low BBL of this Building\u2019s Condominium Units 10 82-91 Filler 1 92 Condominium Billing BBL 10 93-102 Filler 1 103-102 Condominium Billing BBL SCC 1 104 High BBL of this Building\u2019s Condominium Units 10 105-114 Filler 1 115 SBVP (Sanborn Map Identifiers): 8 116-123 Sanborn Borough Code 1 116 Sanborn Volume and Volume Suffix 3 117-119 Sanborn Page and Page Suffix 4 120-123 Filler (was DCP Commercial Area) 5 124-128 Cooperative Identification Number 4 129-132 Cooperative Identification Number 4 129-132 Filler 4 133-136 Number of Existing Buildings on Lot 4 137-140 Tax Map Identifiers: 9 141-149 Borough Code 1 141 Tax Map Section 2 142-143 Tax Map Volume 2 144-145 Tax Map Page [not yet implemented] 4 146-149 X Coordinate of Internal Label Point 7 150-156 Y Coordinate of Internal Label Point 7 157-163 Filler 16 164-179 Number of Buildings on Tax Lot (Maximum = 2,500) 4 180-183 List of Buildings on Tax Lot (each represented by a 7-Byte BIN) 17,500 184-17,683 Regular Work Area 2 (MSW) Layout for Function 1E Field Size Positions Filler 22 1-22 Low House Number of Blockface 6 23-28 High House Number of Blockface 6 29-34 Alley/Cross Streets Flag 1 35 Number of Cross Streets at Low Address End 1 36 List of Cross Streets at Low Address End (up to 5 PB5SCs) 20 37-56 Number of Cross Streets at High Address End 1 57 List of Cross Streets at High Address End (up to 5 PB5SCs) 20 58-77 Community District 3 78-80 Community District Borough Code 1 78 Community District Number 2 79-80 Community District Number 2 79-80 ZIP Code 5 81-85 DOT Street Light Contractor Area 1 86 Health Center District 2 87-88 Side of Street Indicator 1 89 Continuous Parity Indicator 1 90 2010 Census Tract 6 91-96 2010 Census Block 4 97-100 2010 Census Block Suffix 1 101-101 Filler 1 102-102 Filler 1 103-104 Health Area 4 105-108 Sanitation Recycling Collection Schedule 3 109-111 Feature Type Code 1 112 Interim Assistance Eligibility Indicator (IAEI) 1 113 Curve Flag 1 114 Police Patrol Borough Command 1 115 Police Precinct 3 116-118 School District 2 119-120 Election District 3 121-123 Assembly District 2 124-125 Split Election District Flag 1 126 Congressional District 2 127-128 State Senatorial District 2 129-130 Civil Court District 2 131-132 City Council District 2 133-134 Coincident Segment Count 1 135 Segment Type Code 1 136 Sanitation District 3 137-139 Sanitation Collection Scheduling Section and Subsection 2 140-141 Fire Division 2 142-143 Fire Battalion 2 144-145 Fire Company Type 1 146 Fire Company Number 3 147-149 Special Address Generated Record Flag 1 150 Reserved for Internal Geosupport Use 1 151 Filler (was Split Community School District Flag) 1 152 Board of Elections-Preferred LGC 2 153-154 Face Code (was known as LION Face Code) 4 155-158 Sequence Number (was known as LION Sequence Number) 5 159-163 1990 Census Tract 6 164-169 Filler 4 170-173 Atomic Polygon (Previously known as Dynamic Block) 3 174-176 X Coordinate 7 177-183 Y Coordinate 7 184-190 Segment Length in Feet 5 191-195 Sanitation Regular Collection Schedule 5 196-200 Long Work Area 2 (MSW) Layout for Function 1E Field Size Positions Same as corresponding positions in Function 1E's regular WA2 200 1-200 Segment-ID (was known as LION Segment-ID) 7 201-207 Underlying B7SC of True Street 8 208-215 Underlying HNI on True Street 6 216-221 2000 Census Tract 6 222-227 2000 Census Block 4 228-231 2000 Census Block Filler / Suffix 1 232-232 Filler 68 233-300 Work Area 2 (MSW) Layout for Function 2 Field Size Positions Filler 31 1\u201131 DCP-Preferred LGC for Street 1 2 32-33 DCP-Preferred LGC for Street 2 2 34-35 Number of Intersecting Streets 1 36 List of Intersecting Streets (up to five PB5SCs, 4 bytes each) 20 37\u201156 Compass Direction for Intersection Key 1 57 Filler 10 58\u201167 Filler 2 68\u201169 Fire Division 2 70-71 Fire Battalion 2 72-73 Fire Company Type 1 74 Fire Company Number 3 75-77 Community District 3 78\u201180 Community District Borough Code 1 78 Community District Number 2 79-80 ZIP Code 5 81-85 DOT Street Light Contractor Area 1 86 2010 Census Tract 6 87\u201192 Filler 3 93\u201195 Health Area 4 96\u201199 Health Area 4 96\u201199 Filler 9 100-108 Node Number (was known as LION Node Number) 7 109\u2011115 X Coordinate 7 116-122 Y Coordinate 7 123\u2011129 Filler 4 130\u2011133 Police Patrol Borough Command 1 134 Police Precinct 3 135\u2011137 School District (was known as Community School District) 2 138\u2011139 Reserved for Internal Geosupport Use 1 140 1990 Census Tract 6 141\u2011146 SBVP1 (Sanborn Map Identifiers): 8 147-154 Sanborn Borough Code 1 147 Sanborn Volume and Volume Suffix 3 148-150 Sanborn Page and Page Suffix 4 151-154 SBVP2 (Sanborn Map Identifiers for Second Map, if any) 8 155-162 Sanborn Borough Code 1 155 Sanborn Volume and Volume Suffix 3 156-158 Sanborn Page and Page Suffix 4 159-162 Sanborn Page and Page Suffix 4 159-162 Distance Between Duplicate Intersections 5 163\u2011167 2000 Census Tract 6 168-173 Filler 27 174-200 Work Area 2 (MSW) Layout for Function 3 Field Size Positions Filler 22 1\u201122 Curve Flag 1 23 Locational Status 1 24 County Boundary Indicator 1 25 Coincident Segment Count 1 26 Filler 3 27-29 DCP-Preferred LGC for Street 1 2 30-31 DCP-Preferred LGC for Street 2 2 32-33 DCP-Preferred LGC for Street 3 2 34-35 DCP-Preferred LGC for Street 3 2 34-35 Number of Cross Streets at Low Address End 1 36 List of Cross Streets at Low Address End (up to five PB5SCs) 20 37\u201156 Number of Cross Streets at High Address End 1 57 List of Cross Streets at High Address End (up to five PB5SCs) 20 58\u201177 DOT Street Light Contractor Area 1 78 Cross Street Reversal Flag 1 79 Left Community District 3 80\u201182 Left Community District Borough Code 1 80 Left Community District Number 2 81-82 Right Community District 3 83\u201185 Right Community District Borough Code 1 83 Right Community District Number 2 84-85 Left ZIP Code 5 86\u201190 Right ZIP Code 5 91\u201195 Filler 18 96\u2011113 Left Health Area 4 114\u2011117 Right Health Area 4 118\u2011121 Filler 2 122-123 Filler 2 124-125 Left Low House Number 7 126\u2011132 Left High House Number 7 133\u2011139 Right Low House Number 7 140\u2011146 Right High House Number 7 147\u2011153 Continuous Parity Indicator 1 154 Face Code (was known as LION Face Code) 4 155-158 Sequence Number (was known as LION Sequence Number) 5 159\u2011163 Generated Record Flag 1 164 Segment Length in Feet (Packed) 3 165-167 Segment Azimuth 3 168\u2011170 Segment Orientation 1 171 Filler 2 172\u2011173 Filler 2 174-175 Left Interim Assistance Eligibility Indicator 1 176 Right Interim Assistance Eligibility Indicator 1 177 Dogleg Flag 1 178 Feature Type Code 1 179 Left Police Patrol Borough Command 1 180 Left Police Precinct 3 181\u2011183 Right Police Patrol Borough Command 1 184 Right Police Precinct 3 185\u2011187 Left School District (was known as Left Community School\u2026) 2 188\u2011189 Right School District (was known as Right Community School\u2026) 2 190\u2011191 Reserved for Internal Geosupport Use 1 192 Segment-ID (was known an LION Segment-ID) 7 193-199 Segment Type code 1 200 Long Work Area 2 (MSW) Layout for Function 3 Field Size Positions Same as corresponding positions in Function 3's regular WA2 200 1-200 Left 1990 Census Tract 6 201\u2011206 Filler 4 207\u2011210 Left Atomic Polygon (Previously known as Dynamic Block) 3 211\u2011213 Right 1990 Census Tract 6 214\u2011219 Filler 4 220\u2011223 Right Atomic Polygon (Previously known as Dynamic Block) 3 224\u2011226 Left Fire Division 2 227-228 Left Fire Battalion 2 229-230 Left Fire Company Type 1 231 Left Fire Company Number 3 232-234 Right Fire Division 2 235-236 Right Fire Battalion 2 237-238 Right Fire Company Type 1 239-239 Right Fire Company Number 3 240-242 Left 2010 Census Tract 6 243-248 Left 2010 Census Block 4 249-252 Left 2010 Census Block Suffix / Filler 1 253 Right 2010 Census Tract 6 254-259 Right 2010 Census Block 4 260-263 Right 2010 Census Block Suffix / Filler 1 264 From Node 7 265-271 To Node 7 272-278 Left 2000 Census Tract 6 279-284 Left 2000 Census Block Suffix 1 289 Right 2000 Census Tract 6 290-295 Right 2000 Census Block 4 296-299 Right 2000 Census Block Suffix 1 300 Work Area 2 (MSW) Layout for Function 3C Field Size Positions Filler 21 1-21 Curve Flag 1 22 Segment Type Code 1 23 Locational Status 1 24 County Boundary Indicator 1 25 Coincident Segment Count 1 26 Filler 3 27-29 DCP-Preferred LGC for Street 1 2 30-31 DCP-Preferred LGC for Street 2 2 32-33 DCP-Preferred LGC for Street 3 2 34-35 Number of Cross Streets at Low Address End 1 36 Number of Cross Streets at Low Address End 1 36 List of Cross Streets at Low Address End (up to 5 PB5SCs) 20 37\u201156 Number of Cross Streets at High Address End 1 57 List of Cross Streets at High Address End (up to 5 PB5SCs) 20 58\u201177 Community District 20 78\u201180 Community District Borough Code 1 78 Community District Number 2 79-80 ZIP Code 5 81-85 DOT Street Light Contractor Area 1 86 2000 Census Tract 6 87\u201192 Filler 1 93 2010 Census Tract 6 94\u201199 2010 Census Block 4 100\u2011103 2010 Census Block Suffix (Future Use) 1 104 Health Area 4 105\u2011108 Cross Street Reversal Flag 1 109 Side of Street Indicator 1 110 Fire Division 2 111-112 Fire Battalion 2 113-114 Fire Company Type 1 115 Fire Company Number 3 116-118 Segment-ID (was known as LION Segment-ID) 7 119\u2011125 Low House Number of Blockface 7 126\u2011132 High House Number of Blockface 7 133\u2011139 Alternate Low House Number 7 140\u2011146 Alternate High House Number 7 147\u2011153 Continuous Parity Indicator 1 154 Face Code (was known as LION Face Code) 4 155-158 Sequence Number (was known as LION Sequence Number) 5 159\u2011163 Generated Record Flag 1 164 Generated Record Flag 1 164 Segment Length in Feet (Packed) 3 165\u2011167 Segment Azimuth 3 168\u2011170 Segment Orientation 1 171 Filler 2 172\u2011173 Interim Assistance Eligibility Indicator (IAEI) 1 174 Feature Type Code 1 175 Police Patrol Borough Command 1 176 Police Precinct 3 177\u2011179 School District (was known as Community School District) 2 180\u2011181 Reserved for Internal Geosupport Use 1 182 1990 Census Tract 6 183\u2011188 Filler 4 189\u2011192 Atomic Polygon (Previously known as Dynamic Block) 3 193\u2011195 2000 Census Block 4 196\u2011199 2000 Census Block Suffix Filler 1 200 Work Area 2 (MSW) Layout for Function 3S Field Size Positions Filler 21 1-21 Number of Cross Streets in Stretch (Maximum = 350) 3 22\u201124 List of Cross Streets in Stretch, each list entry 12 bytes as follows: 4200 25\u20114224 Smallest PB5SC at Intersection 4 Second smallest PB5SC at Intersection 4 Distance from Predecessor in Feet 3 Gap Flag 1 _________________________ 13 Borough Code values are: '1'=Manhattan, '2'=Bronx, '3'=Brooklyn, '4'=Queens, \"5\"=Staten Island","title":"Appendix 2: Mainframe-Specific Work Area Layouts(MSW)"},{"location":"appendices/appendix02/#important-msw-cow-announcement","text":"","title":"IMPORTANT MSW / COW ANNOUNCEMENT"},{"location":"appendices/appendix02/#support-for-msw-work-areas-ended-on-january-1-2020","text":"As of January 1, 2020, Mainframe-Specific Work Areas (MSWs) are no longer supported. Also, as of Version 19.3, COW Work Areas are no longer enhanced in the mainframe environment . It is therefore important for users to convert all existing MSW applications to the COW format in a non-mainframe environment . User-written application programs and GBAT utilities that use the MSW format may continue to run but no technical support will be available. If an MSW issue arises, users can no longer call DCP for resolution. To assist users in the conversion to COW format: Appendix 12 contains information needed to create COW applications. Appendix 13 contains the COW Work Area Layouts. Appendix 14 contains the COW copy files. Any further issues may be directed via email to: Geosupport_DL@planning.nyc.gov","title":"SUPPORT FOR MSW WORK AREAS ENDED ON JANUARY 1, 2020"},{"location":"appendices/appendix02/#appendix-2-begins","text":"This appendix contains layouts of all of the work MSW areas used with the Geosupport System\u2019s API. As of January 1, 2020, these layouts are no longer supported. Some Geosupport functions can only be called using one work area, Work Area 1 (WA1). Other functions can be called using two work areas, WA1 and Work Area 2 (WA2). For a discussion of one-work-area and two-work-area calls, see Chapter II.4 . WA1 contains both input fields (fields used to pass data from the application to Geosupport) and output fields (fields used to pass data from Geosupport to the application). WA1 is organized so that the input fields occur first, followed by a filler, followed by the output fields. WA2 contains output fields only. All functions use the same WA1 layout, but the set of WA1 fields that are used depends on the function. In the layout of WA1 in this appendix, the column labeled \u2018Functions\u2019 indicates which functions use each field. The functions that can be called using two work areas use various WA2 layouts of various lengths. In some cases, several functions share a single WA2 layout. For some functions, the user has a choice of two WA2 layouts, a \u2018regular\u2019 WA2 and a \u2018long\u2019 WA2. For a discussion of the long WA2 option, see Chapter II.5 . The following is a list of all of the Geosupport MSW work areas, indicating the length of each in bytes. Functions that are listed together share a single Work Area 2 layout. Appendix 3 consists of a data item dictionary describing the fields that occur in the work area. Mainframe-Specific Work Area (MSW) Length WA1, all functions 884 Regular WA2, Function 1 200 Long WA2, Function 1 300 Regular WA2, Functions 1A, BL, BN 939 Long WA2, Functions 1A and BL 17,683 Regular WA2, Function 1E 200 Long WA2, Function 1E 300 WA2, Function 2 200 Regular WA2, Function 3 200 Long WA2, Function 3 300 WA2, Function 3C 200 WA2, Function 3S 4,224","title":"Appendix 2 Begins"},{"location":"appendices/appendix02/#work-area-1-msw-all-functions","text":"Field Size Position Functions INPUT FIELDS: Geosupport Function Code 2 1-2 All Borough Code-1 13 1 3 All but BL, BN, D\\* House Number 12 4-15 1, 1A, 1E House Nr. in Internal Format (HNI) 6 16-21 1, 1A, 1E, D Street Name-1 32 22-53 All but BL, BN, D* Street Name-2 32 54\u201185 2, 3\\* Street Name-3 32 86-117 3\\* Compass Direction 1 118 2, 3C, 3S Compass Direction for 2 nd Intersection 1 119 3S PB5SC-1 4 120\u2011123 1, 1A, 1E, 2, 3*, D PB5SC-2 4 124-127 2, 3*, D PB5SC-3 4 128-131 3*, D Roadbed Request Switch 1 132 1, 1E, 3S Borough Code-2 1 133 2, 3, 3C Borough Code-3 1 134 3, 3C Street Name Normalization 2 135\u2011136 All but B* Length Limit (SNL) B10SC-1 (includes B5SC-1 and B7SC-1) 11 137-147 1, 1A, 1E, 2, 3\\*, D\\* B10SC-2 (includes B5SC-2 and B7SC-2) 11 148-158 2, 3\\*, D\\* B10SC-3 (includes B5SC-3 and B7SC-3) 11 159\u2011169 3\\*, D\\* ZIP Code 5 170\u2011174 1, 1A, 1E Borough\u2011Block\u2011and\u2011Lot (BBL): 10 175\u2011184 Borough 1 175 BL Tax Block 5 176-180 BL Tax Lot 4 181-184 BL Filler 1 185 Building Identification Number (BIN) 7 186\u2011192 BN Street Name Normalization Format Flag 1 193 All but B* Long Work Area 2 Flag 1 194 1, 1A, 1E, 3, BL Filler - Reserved for Geosupport Use 12 195-206 HNI-2 6 207-212 D\\* Work Area Format Indicator 1 213 All 1ABL Version Switch 1 214 1A, BL Cross Street Names Flag 1 215 1, 1E, 2, 3, 3C Filler 4 216-219 Work Area 1 (MSW) - All Functions Field Size Position Functions OUTPUT FIELDS: HND-2 12 220-231 D\\* Borough Name 9 232\u2011240 All but D* Street Name-1Normalized 32 241\u2011272 All but B\\* Street Name-2Normalized 32 273\u2011304 2, 3\\*, D\\* Street Name-3Normalized 32 305\u2011336 3\\*, D\\* HND 12 337\u2011348 1, 1A, 1E, D\\* HNI 6 349\u2011354 1, 1A, 1E Filler 7 355\u2011361 PB5SC-1 4 362\u2011365 1\\*, 2, 3\\*, D\\* Filler 2 366\u2011367 PB5SC-2 4 368\u2011371 2, 3\\*, D\\* Filler 2 372\u2011373 PB5SC-3 4 374\u2011377 3\\*, D\\* Attribute Bytes 3 378\u2011380 Up to ten PB5SCs 40 381\u2011420 BB, BF B10SC-1 11 421\u2011431 1\\*, 2, 3\\*, D\\* B10SC-2 11 432\u2011442 2, 3\\*, D\\* B10SC-3 11 443\u2011453 3\\*, D\\* Filler 5 454\u2011458 BBL Normalized 10 459\u2011468 BL Reserved 8 469-476 Street Attribute Indicator 1 477 1\\* Reason Code 1 478 All Filler - Reserved for Geosupport Use 2 479\u2011480 Geosupport Return Code 2 481\u2011482 All Geosupport Message 80 483\u2011562 All Number of Street Names in List (packed) 2 563\u2011564 1*, 2, 3*, BB, BF List of Street Names: (10 Street Name Fields, 32 Bytes Each) 320 565\u2011884 1*, 2, 3*, BB, BF *NOTE: An asterisk in the second position of a function code is used as a shorthand notation to represent all function codes having the indicated value in the first position, as follows: 1* = 1 , 1A, 1E, 1N 3* = 3, 3C, 3S B* = BB, BF, BL, BN D* = D, DG, DN","title":"Work Area 1 (MSW) - All Functions"},{"location":"appendices/appendix02/#regular-work-area-2-msw-layout-for-function-1","text":"Field Size Position Filler 22 1-22 Low House Number of Blockface 6 23-28 High House Number of Blockface 6 29-34 Alley/Cross Streets Flag 1 35 Number of Cross Streets at Low Address End 1 36 List of Cross Streets at Low Address End (up to 5 PB5SCs) 20 37-56 Number of Cross Streets at High Address End 1 57 List of Cross Streets at High Address End (up to 5 PB5SCs) 20 58-77 Community District: 3 78-80 Community District Borough Code 1 78 Community District Number 2 79-80 ZIP Code 5 81-85 DOT Street Light Contractor Area 1 86 Health Center District 2 87-88 Side of Street Indicator 1 89 Continuous Parity Indicator 1 90 2010 Census Tract 6 91-96 2010 Census Block 4 97-100 2010 Census Block Suffix (Not Implemented) 1 101-101 Filler 1 102-102 Filler 2 103-104 Health Area 4 105-108 Sanitation Recycling Collection Schedule 3 109-111 Feature Type Code 1 112 Interim Assistance Eligibility Indicator (IAEI) 1 113 Curve Flag 1 114 Police Patrol Borough Command 1 115 Police Precinct 3 116-118 School District 2 119-120 Filler to Preserve Layout Consistency with WA2 for Function 1E 14 121-134 Coincident Segment Count 1 135 Segment Type Code 1 136 Sanitation District 3 137-139 Sanitation Collection Scheduling Section and Subsection 2 140-141 Fire Division 2 142-143 Fire Battalion 2 144-145 Fire Company Type 1 146 Fire Company Number 3 147-149 Special Address Generated Record Flag 1 150 Reserved for Internal Geosupport Use 1 151 Filler (was Split Community School District Flag) 1 152 DCP-Preferred LGC 2 153-154 Face Code 4 155-158 Sequence Number 5 159-163 1990 Census Tract 6 164-169 Filler 4 170-173 Dynamic Block / Atomic Polygon 3 174-176 X Coordinate 7 177-183 Y Coordinate 7 184-190 Segment Length in Feet 5 191-195 Sanitation Regular Collection Schedule 5 196-200","title":"Regular Work Area 2 (MSW) Layout for Function 1 "},{"location":"appendices/appendix02/#long-work-area-2-msw-layout-for-function-1","text":"Field Size Position Same as corresponding position in Function 1's regular WA2 200 1-200 Segment-ID 7 201-207 Underlying B7SC of True Street 8 208-215 Underlying HNI on True Street 6 216-221 2000 Census Tract 6 222-227 2000 Census Block 4 228-231 2000 Census Block Suffix (Not Implemented) 1 232-232 Filler 68 233-300","title":"Long Work Area 2 (MSW) Layout for Function 1"},{"location":"appendices/appendix02/#regular-work-area-2-msw-layout-for-functions-1a-bl-bn","text":"Field Size Position Filler 28 1-28 Borough-Tax Block-Tax Lot (BBL): 10 29-38 Borough Code 1 29 Tax Block 5 30-34 Tax Lot 4 35-38 Tax Lot Version Number [not implemented] 1 39 RPAD Self-Check Code (SCC) for BBL 1 40 Filler 1 41 RPAD Building Classification Code 2 42-43 Corner Code 2 44-45 Filler (reserved) 2 46-47 Number of Street Frontages of Lot 2 48-49 Interior Lot Flag 1 50 Vacant Lot Flag 1 51 Irregularly-Shaped Lot Flag 1 52 Alternative Borough Flag 1 53 Filler 1 54 Strolling Key 13 55-67 List of Geographic Identifiers Overflow Flag 1 68 Reserved for Internal Geosupport Use 1 69 Building Identification Number (BIN) of Input Address or NAP 7 70-76 Condominium Flag 1 77 Condominium Identification Number 4 78-81 Low BBL of this Building\u2019s Condominium Units 10 82-91 Filler 1 92 Condominium Billing BBL 10 93-102 Filler 1 103 Condominium Billing BBL SCC 1 104 High BBL of this Building\u2019s Condominium Units 10 105-114 Filler 1 115 SBVP (Sanborn Map Identifiers): 8 116-123 Sanborn Borough Code 1 116-123 Sanborn Volume and Volume Suffix 3 117-119 Sanborn Page and Page Suffix 4 120-123 Filler (was DCP Commercial Area) 5 124-128 Cooperative Identification Number 4 129-132 Filler 4 133-136 Number of Existing Buildings on Lot 4 137-140 Tax Map Identifiers: 9 141-149 Borough Code: 1 141 Tax Map Section 2 142-143 Tax Map Volume 2 144-145 Tax Map Page [not yet implemented] 4 146-149 X Coordinate of Internal Label Point 7 150-156 Y Coordinate of Internal Label Point 7 157-163 Business Improvement District (BID) 6 164-169 Filler 12 170-181 Number of Entries in List of Geographic Identifiers 2 182-183 List of Geographic Identifiers, up to 21 entries - each entry consisting of 36 bytes as follows: 756 184-939 Low House Number 6 Filler 3 High House Number 6 Filler 3 B5SC: 1 Borough Code 5-Digit Street Code 5 DCP-Preferred LGC 2 BIN 7 Geographic Identifier Type Code 1 Filler 1 Side of Street Indicator 1","title":"Regular Work Area 2 (MSW) Layout for Functions 1A, BL, BN"},{"location":"appendices/appendix02/#long-work-area-2-msw-layout-for-functions-1a-and-bl","text":"Field Size Position Filler 28 1-28 Borough-Tax Block-Tax Lot (BBL): 10 29-38 Borough Code 1 29 Tax Block 5 30-34 Tax Lot 4 35-38 Filler 3 Tax Lot Version Number [not implemented] 1 39 RPAD Self-Check Code (SCC) for BBL 1 40 Filler 1 41 RPAD Building Classification Code 2 42-43 Corner Code 2 44-45 Filler (reserved) 2 46-47 Number of Street Frontages of Lot 2 48-49 Interior Lot Flag 1 50 Vacant Lot Flag 1 51 Irregularly-Shaped Lot Flag 1 52 Alternative Borough Flag 1 53 Filler 15 54-68 Reserved for Internal Geosupport Use 1 69 Building Identification Number (BIN) of Input Address or NAP 7 70-76 Condominium Flag 1 77 Condominium Identification Number 4 78-81 Low BBL of this Building\u2019s Condominium Units 10 82-91 Filler 1 92 Condominium Billing BBL 10 93-102 Filler 1 103-102 Condominium Billing BBL SCC 1 104 High BBL of this Building\u2019s Condominium Units 10 105-114 Filler 1 115 SBVP (Sanborn Map Identifiers): 8 116-123 Sanborn Borough Code 1 116 Sanborn Volume and Volume Suffix 3 117-119 Sanborn Page and Page Suffix 4 120-123 Filler (was DCP Commercial Area) 5 124-128 Cooperative Identification Number 4 129-132 Cooperative Identification Number 4 129-132 Filler 4 133-136 Number of Existing Buildings on Lot 4 137-140 Tax Map Identifiers: 9 141-149 Borough Code 1 141 Tax Map Section 2 142-143 Tax Map Volume 2 144-145 Tax Map Page [not yet implemented] 4 146-149 X Coordinate of Internal Label Point 7 150-156 Y Coordinate of Internal Label Point 7 157-163 Filler 16 164-179 Number of Buildings on Tax Lot (Maximum = 2,500) 4 180-183 List of Buildings on Tax Lot (each represented by a 7-Byte BIN) 17,500 184-17,683","title":"Long Work Area 2 (MSW) Layout for Functions 1A and BL"},{"location":"appendices/appendix02/#regular-work-area-2-msw-layout-for-function-1e","text":"Field Size Positions Filler 22 1-22 Low House Number of Blockface 6 23-28 High House Number of Blockface 6 29-34 Alley/Cross Streets Flag 1 35 Number of Cross Streets at Low Address End 1 36 List of Cross Streets at Low Address End (up to 5 PB5SCs) 20 37-56 Number of Cross Streets at High Address End 1 57 List of Cross Streets at High Address End (up to 5 PB5SCs) 20 58-77 Community District 3 78-80 Community District Borough Code 1 78 Community District Number 2 79-80 Community District Number 2 79-80 ZIP Code 5 81-85 DOT Street Light Contractor Area 1 86 Health Center District 2 87-88 Side of Street Indicator 1 89 Continuous Parity Indicator 1 90 2010 Census Tract 6 91-96 2010 Census Block 4 97-100 2010 Census Block Suffix 1 101-101 Filler 1 102-102 Filler 1 103-104 Health Area 4 105-108 Sanitation Recycling Collection Schedule 3 109-111 Feature Type Code 1 112 Interim Assistance Eligibility Indicator (IAEI) 1 113 Curve Flag 1 114 Police Patrol Borough Command 1 115 Police Precinct 3 116-118 School District 2 119-120 Election District 3 121-123 Assembly District 2 124-125 Split Election District Flag 1 126 Congressional District 2 127-128 State Senatorial District 2 129-130 Civil Court District 2 131-132 City Council District 2 133-134 Coincident Segment Count 1 135 Segment Type Code 1 136 Sanitation District 3 137-139 Sanitation Collection Scheduling Section and Subsection 2 140-141 Fire Division 2 142-143 Fire Battalion 2 144-145 Fire Company Type 1 146 Fire Company Number 3 147-149 Special Address Generated Record Flag 1 150 Reserved for Internal Geosupport Use 1 151 Filler (was Split Community School District Flag) 1 152 Board of Elections-Preferred LGC 2 153-154 Face Code (was known as LION Face Code) 4 155-158 Sequence Number (was known as LION Sequence Number) 5 159-163 1990 Census Tract 6 164-169 Filler 4 170-173 Atomic Polygon (Previously known as Dynamic Block) 3 174-176 X Coordinate 7 177-183 Y Coordinate 7 184-190 Segment Length in Feet 5 191-195 Sanitation Regular Collection Schedule 5 196-200","title":"Regular Work Area 2 (MSW) Layout for Function 1E"},{"location":"appendices/appendix02/#long-work-area-2-msw-layout-for-function-1e","text":"Field Size Positions Same as corresponding positions in Function 1E's regular WA2 200 1-200 Segment-ID (was known as LION Segment-ID) 7 201-207 Underlying B7SC of True Street 8 208-215 Underlying HNI on True Street 6 216-221 2000 Census Tract 6 222-227 2000 Census Block 4 228-231 2000 Census Block Filler / Suffix 1 232-232 Filler 68 233-300","title":"Long Work Area 2 (MSW) Layout for Function 1E"},{"location":"appendices/appendix02/#work-area-2-msw-layout-for-function-2","text":"Field Size Positions Filler 31 1\u201131 DCP-Preferred LGC for Street 1 2 32-33 DCP-Preferred LGC for Street 2 2 34-35 Number of Intersecting Streets 1 36 List of Intersecting Streets (up to five PB5SCs, 4 bytes each) 20 37\u201156 Compass Direction for Intersection Key 1 57 Filler 10 58\u201167 Filler 2 68\u201169 Fire Division 2 70-71 Fire Battalion 2 72-73 Fire Company Type 1 74 Fire Company Number 3 75-77 Community District 3 78\u201180 Community District Borough Code 1 78 Community District Number 2 79-80 ZIP Code 5 81-85 DOT Street Light Contractor Area 1 86 2010 Census Tract 6 87\u201192 Filler 3 93\u201195 Health Area 4 96\u201199 Health Area 4 96\u201199 Filler 9 100-108 Node Number (was known as LION Node Number) 7 109\u2011115 X Coordinate 7 116-122 Y Coordinate 7 123\u2011129 Filler 4 130\u2011133 Police Patrol Borough Command 1 134 Police Precinct 3 135\u2011137 School District (was known as Community School District) 2 138\u2011139 Reserved for Internal Geosupport Use 1 140 1990 Census Tract 6 141\u2011146 SBVP1 (Sanborn Map Identifiers): 8 147-154 Sanborn Borough Code 1 147 Sanborn Volume and Volume Suffix 3 148-150 Sanborn Page and Page Suffix 4 151-154 SBVP2 (Sanborn Map Identifiers for Second Map, if any) 8 155-162 Sanborn Borough Code 1 155 Sanborn Volume and Volume Suffix 3 156-158 Sanborn Page and Page Suffix 4 159-162 Sanborn Page and Page Suffix 4 159-162 Distance Between Duplicate Intersections 5 163\u2011167 2000 Census Tract 6 168-173 Filler 27 174-200","title":"Work Area 2 (MSW) Layout for Function 2"},{"location":"appendices/appendix02/#work-area-2-msw-layout-for-function-3","text":"Field Size Positions Filler 22 1\u201122 Curve Flag 1 23 Locational Status 1 24 County Boundary Indicator 1 25 Coincident Segment Count 1 26 Filler 3 27-29 DCP-Preferred LGC for Street 1 2 30-31 DCP-Preferred LGC for Street 2 2 32-33 DCP-Preferred LGC for Street 3 2 34-35 DCP-Preferred LGC for Street 3 2 34-35 Number of Cross Streets at Low Address End 1 36 List of Cross Streets at Low Address End (up to five PB5SCs) 20 37\u201156 Number of Cross Streets at High Address End 1 57 List of Cross Streets at High Address End (up to five PB5SCs) 20 58\u201177 DOT Street Light Contractor Area 1 78 Cross Street Reversal Flag 1 79 Left Community District 3 80\u201182 Left Community District Borough Code 1 80 Left Community District Number 2 81-82 Right Community District 3 83\u201185 Right Community District Borough Code 1 83 Right Community District Number 2 84-85 Left ZIP Code 5 86\u201190 Right ZIP Code 5 91\u201195 Filler 18 96\u2011113 Left Health Area 4 114\u2011117 Right Health Area 4 118\u2011121 Filler 2 122-123 Filler 2 124-125 Left Low House Number 7 126\u2011132 Left High House Number 7 133\u2011139 Right Low House Number 7 140\u2011146 Right High House Number 7 147\u2011153 Continuous Parity Indicator 1 154 Face Code (was known as LION Face Code) 4 155-158 Sequence Number (was known as LION Sequence Number) 5 159\u2011163 Generated Record Flag 1 164 Segment Length in Feet (Packed) 3 165-167 Segment Azimuth 3 168\u2011170 Segment Orientation 1 171 Filler 2 172\u2011173 Filler 2 174-175 Left Interim Assistance Eligibility Indicator 1 176 Right Interim Assistance Eligibility Indicator 1 177 Dogleg Flag 1 178 Feature Type Code 1 179 Left Police Patrol Borough Command 1 180 Left Police Precinct 3 181\u2011183 Right Police Patrol Borough Command 1 184 Right Police Precinct 3 185\u2011187 Left School District (was known as Left Community School\u2026) 2 188\u2011189 Right School District (was known as Right Community School\u2026) 2 190\u2011191 Reserved for Internal Geosupport Use 1 192 Segment-ID (was known an LION Segment-ID) 7 193-199 Segment Type code 1 200","title":"Work Area 2 (MSW) Layout for Function 3"},{"location":"appendices/appendix02/#long-work-area-2-msw-layout-for-function-3","text":"Field Size Positions Same as corresponding positions in Function 3's regular WA2 200 1-200 Left 1990 Census Tract 6 201\u2011206 Filler 4 207\u2011210 Left Atomic Polygon (Previously known as Dynamic Block) 3 211\u2011213 Right 1990 Census Tract 6 214\u2011219 Filler 4 220\u2011223 Right Atomic Polygon (Previously known as Dynamic Block) 3 224\u2011226 Left Fire Division 2 227-228 Left Fire Battalion 2 229-230 Left Fire Company Type 1 231 Left Fire Company Number 3 232-234 Right Fire Division 2 235-236 Right Fire Battalion 2 237-238 Right Fire Company Type 1 239-239 Right Fire Company Number 3 240-242 Left 2010 Census Tract 6 243-248 Left 2010 Census Block 4 249-252 Left 2010 Census Block Suffix / Filler 1 253 Right 2010 Census Tract 6 254-259 Right 2010 Census Block 4 260-263 Right 2010 Census Block Suffix / Filler 1 264 From Node 7 265-271 To Node 7 272-278 Left 2000 Census Tract 6 279-284 Left 2000 Census Block Suffix 1 289 Right 2000 Census Tract 6 290-295 Right 2000 Census Block 4 296-299 Right 2000 Census Block Suffix 1 300","title":"Long Work Area 2 (MSW) Layout for Function 3"},{"location":"appendices/appendix02/#work-area-2-msw-layout-for-function-3c","text":"Field Size Positions Filler 21 1-21 Curve Flag 1 22 Segment Type Code 1 23 Locational Status 1 24 County Boundary Indicator 1 25 Coincident Segment Count 1 26 Filler 3 27-29 DCP-Preferred LGC for Street 1 2 30-31 DCP-Preferred LGC for Street 2 2 32-33 DCP-Preferred LGC for Street 3 2 34-35 Number of Cross Streets at Low Address End 1 36 Number of Cross Streets at Low Address End 1 36 List of Cross Streets at Low Address End (up to 5 PB5SCs) 20 37\u201156 Number of Cross Streets at High Address End 1 57 List of Cross Streets at High Address End (up to 5 PB5SCs) 20 58\u201177 Community District 20 78\u201180 Community District Borough Code 1 78 Community District Number 2 79-80 ZIP Code 5 81-85 DOT Street Light Contractor Area 1 86 2000 Census Tract 6 87\u201192 Filler 1 93 2010 Census Tract 6 94\u201199 2010 Census Block 4 100\u2011103 2010 Census Block Suffix (Future Use) 1 104 Health Area 4 105\u2011108 Cross Street Reversal Flag 1 109 Side of Street Indicator 1 110 Fire Division 2 111-112 Fire Battalion 2 113-114 Fire Company Type 1 115 Fire Company Number 3 116-118 Segment-ID (was known as LION Segment-ID) 7 119\u2011125 Low House Number of Blockface 7 126\u2011132 High House Number of Blockface 7 133\u2011139 Alternate Low House Number 7 140\u2011146 Alternate High House Number 7 147\u2011153 Continuous Parity Indicator 1 154 Face Code (was known as LION Face Code) 4 155-158 Sequence Number (was known as LION Sequence Number) 5 159\u2011163 Generated Record Flag 1 164 Generated Record Flag 1 164 Segment Length in Feet (Packed) 3 165\u2011167 Segment Azimuth 3 168\u2011170 Segment Orientation 1 171 Filler 2 172\u2011173 Interim Assistance Eligibility Indicator (IAEI) 1 174 Feature Type Code 1 175 Police Patrol Borough Command 1 176 Police Precinct 3 177\u2011179 School District (was known as Community School District) 2 180\u2011181 Reserved for Internal Geosupport Use 1 182 1990 Census Tract 6 183\u2011188 Filler 4 189\u2011192 Atomic Polygon (Previously known as Dynamic Block) 3 193\u2011195 2000 Census Block 4 196\u2011199 2000 Census Block Suffix Filler 1 200","title":"Work Area 2 (MSW) Layout for Function 3C"},{"location":"appendices/appendix02/#work-area-2-msw-layout-for-function-3s","text":"Field Size Positions Filler 21 1-21 Number of Cross Streets in Stretch (Maximum = 350) 3 22\u201124 List of Cross Streets in Stretch, each list entry 12 bytes as follows: 4200 25\u20114224 Smallest PB5SC at Intersection 4 Second smallest PB5SC at Intersection 4 Distance from Predecessor in Feet 3 Gap Flag 1 _________________________ 13 Borough Code values are: '1'=Manhattan, '2'=Bronx, '3'=Brooklyn, '4'=Queens, \"5\"=Staten Island","title":"Work Area 2 (MSW) Layout for Function 3S"},{"location":"appendices/appendix03/","text":"APPENDIX 3: DATA ITEM DICTIONARY This Data Item Dictionary is an alphabetical list of the data items for which there are fields in the Geosupport API work areas, together with descriptive information. In general, data items are listed in this appendix under the names used in the work area layouts in Appendix 2 (MSW) and Appendix 13 (COW) . However, if an item is associated with multiple work area fields having varying field names, and is identical in format and range of values in all those fields, the item is documented in a generically-named entry, and there is also a separate entry for each of those fields consisting only of a reference to the generic entry. For example, there is a generic entry for CENSUS TRACT containing full descriptive information, and there are also entries for 2000 CENSUS TRACT, LEFT 2000 CENSUS TRACT, RIGHT 2000 CENSUS TRACT, 2010 CENSUS TRACT etc., containing only a reference to the entry for CENSUS TRACT. Each entry consists of an appropriate combination of the following elements: Name of Data Item. This might be identical to the name of a specific work area field or it might be a generic name for a data item that is represented by multiple work area fields. Field Names. A list of the field names associated with a generic entry. Function(s). A list of the Geosupport functions that utilize this data item as either an input or an output item in either WA1 or WA2. If the data item is in the added portion of WA2 that is passed when the function is called with the long WA2 option, this is so stated. Similarly, if the data is passed when the function is called with an Extended or Auxiliary or other option, it is so stated. In the list of functions, an asterisk in the second position of a function code is a \u2018wild card\u2019 signifying all functions having the indicated value in the first position, as follows: 1 * = 1, 1A, 1B, 1E, 1N; also 1Extended, 1A Extended, 1E Extended 2 * = 2, 2W 3 * = 3, 3C, 3S, 3 & 3C with Auxiliary Segments, 3 & 3C Extended (with or without Auxiliary Segments), 3 & 3C Enhanced (with or without Auxiliary Segments) B * = BB, BF, BL, BN D * = D, DG, DN Environment. If a data item is supported only in a non-mainframe environment (NMF), this element contains that information. Work Area Format: A list of the work area format(s) that apply to this entry, namely, MSW (Mainframe-Specific Work Area) and/or COW (Character-Only Work Area). Length and Format. The length of this data item in bytes, and a description of its format, including whether it is numeric, alphabetic or alphanumeric (these terms are defined below); whether it contains any special editing characters; and for numeric items, the justification and the fill character. The following terms and abbreviations are used: RJ = Right-Justified LJ = Left-Justified ZF = Zero-Filled BF = Blank-Filled Numeric: Contains only the digits 0 through 9, and possibly blanks serving as fill characters only. Alphabetic: Contains letters of the alphabet only. LJBF unless otherwise stated. Alphanumeric: Can contain any allowable characters, including special characters such as hyphens. LJBF unless otherwise stated. Description. A brief narrative description of the data item. The description may include citations to sections of the UPG where the data item is principally discussed. Data items that are self\u2011explanatory have no description and/or citations. Valid Values and Code Meanings. The values or ranges of values valid for this data item and, if the item consists of codes, the meaning of each code value. Numeric 1A/BL VERSION FLAG - See FUNCTION 1A/BL VERSION FLAG. 1990 CENSUS TRACT - See CENSUS TRACT. 2000 CENSUS BLOCK - See CENSUS BLOCK. 2000 CENSUS BLOCK SUFFIX - See CENSUS BLOCK SUFFIX. 2000 CENSUS TRACT - See CENSUS TRACT. 2010 CENSUS BLOCK - See CENSUS BLOCK. 2010 CENSUS BLOCK SUFFIX - See CENSUS BLOCK SUFFIX. 2010 CENSUS TRACT - See CENSUS TRACT. A ALLEY/CROSS STREETS FLAG (ALX) Functions: 1, 1E Work Area Format: MSW and COW Length and Format: 1 byte Description: Indicates if the segment has been split by alleys, or if the cross streets named in the segment have been copied from a previous or subsequent segment because the segment itself has no cross streets. Code Value Meaning \u2018A\u2019 Split by Alley(s) \u2018X\u2019 Cross Streets Modified Blank Neither Split by Alleys or Cross Streets Modified ALTERNATE LOW AND HIGH HOUSE NUMBERS Functions: 3C Work Area Format: MSW and COW Length and Format: See HOUSE NUMBER Description: These two fields are non-blank only if this blockface has addresses of both parities (the parity of a number is its attribute of being odd or even). Such a blockface is said to have \u2018continuous parity\u2019. If the blockface has continuous parity, the Continuous Parity Indicator is non-blank, the Low and High House Number fields contain the address range for one parity, and the Alternate Low and High House Number fields contain the address range for the other parity. (Which parity is in which set of house number fields is unpredictable.) ALTERNATIVE BOROUGH FLAG Functions: 1, 1A, 1B, 1E, 2, 3, 3C, 3S (COW only), BL, BN Work Area Format: MSW and COW Length and Format: 1 byte Description: This flag indicates either that the input address is in Marble Hill or Rikers Island and the alternative (rather than the legal) borough was specified (see Chapter V.7 ), or that the input address is on Ruby Street in Brooklyn but it was specified using the alternative (Queens) street name 75 Street (see Chapter V.8). This field was also known as the Marble Hill / Rikers Island Flag. Code Value Meaning \u2018C\u2019 Ruby Street address specified using 75 Street \u2018M\u2019 Marble Hill address with Bronx specified \u2018R\u2019 Rikers Island address with Queens specified ALX FLAG - See ALLEY/CROSS STREETS FLAG ANNOTATION POINT - No longer used by Geosupport. See SPATIAL COORDINATES OF THE TAX LOT CENTROID ASSEMBLY DISTRICT Field Names: LEFT ASSEMBLY DISTRICT RIGHT ASSEMBLY DISTRICT Functions: 1E, 2 (COW only), 3 (COW only), 3C (COW only) Work Area Format: MSW and COW Length and Format: 2 bytes. RJZF Description: A district of the lower house of the New York State legislature. Consists of an aggregation of Election Districts ATOMIC POLYGON - Previously known as DYNAMIC BLOCK Functions: 1, 1B, 1E, 3(MSW: Long WA2), 3(COW), 3C Work Area Format: MSW and COW Length and Format: 3 bytes RJZF Description: An atomic polygon is an un-subdivided polygon . Atomic polygons are created based on the New York City CSCL (Citywide Street Centerline) database. Atomic polygons are numbered uniquely within census tract. ATTRIBUTE BYTE - See STREET ATTRIBUTE INDICATOR AUXILIARY SEGMENT SWITCH (auxseg or segaux) Functions: 3, 3C, 3 & 3C Extended Work Area Format: COW Length and Format: 1 byte character. Description: When this flag is set to \u2018Y\u2019, the list of all the Segment IDs that comprise the segment will be added to the end of Work Area 2 for Functions 3 or 3C. Code Value Meaning \u2018N\u2019 or Blank One Segment ID is returned in Work Area 2. \u2018Y\u2019 A list of all the segment IDs is added to the end of Word Area 2 for Function 3 or 3C. B B7SC OF \u201cTRUE\u201d STREET (a.k.a. B7SC OF \u201cUNDERLYING\u201d STREET) Functions: 1and 1E (MSW: Long WA2 only); 1, 1B and 1E (COW) Work Area Format: MSW and COW Length and Format: 8 bytes (B7SC) Description: This item typically applies to Addressable Place Names, Non-addressable Place Names and Vanity Addresses. It item contains the B7SC of the street segment upon which the address specified is actually located. This is the street segment that is identified by the field SEGMENT-ID and by the fields FACE CODE and SEQUENCE NUMBER. In most cases, the B5SC portion of this item is identical to the B5SC specified in the key. However, the two B5SCs differ when the SPECIAL ADDRESS GENERATED RECORD FLAG is either \u2018B\u2019, \u2018N\u2019, \u2018P\u2019, or \u2018V\u2019. BBL Functions: 1A, BL, BN, AP Work Area Format: MSW and COW Length and Format: 10 bytes in standard version, Numeric. (Note: the legacy version of Functions 1A and BL is no longer supported.) Standard: Field Length Position Comments Borough 1 1-1 Tax Block 5 2-6 RJZF Tax Lot 4 7-10 RJZF Description: The first 6 bytes of the standard BBL consists of the 1-byte borough code followed by the 5-byte tax block field, which contains the tax block value right-justified and zero-filled. The last 4 bytes of the standard BBL is the standard tax lot field, which contains the tax lot value right-justified and zero-filled. See Chapter VI.8 . The BBL (\u2018borough-block-and-lot\u2019) identifies a parcel of real property in New York City, called a tax lot. The BBL is composed of the concatenation of the Borough Code, Tax Block and Tax Lot. If the property is a condominium (indicated by the Condominium Flag), the WA2 BBL field contains the billing BBL of the condominium (see Chapter VI.4 ). BID - See BUSINESS IMPROVEMENT DISTRICT BIKE LANE BIKE LANE is being replaced by BIKE LANE 2. See also BIKE LANE 2 Functions: 1 Extended, 1B, 1E Extended, 3 Extended, 3C Extended Work Area Format: COW Length and Format: 1 byte Notice: As of Release 16D, Bike Lane has 11 codes, instead of 7. A new two-byte field, BIKE LANE 2, is being introduced. The original one-byte Bike Lane field still exists to give users a chance to update their applications. In the one-byte Bike Lane field, the value \u2018A\u2019 will appear when the new code is \u201810\u2019, and the value \u2018B\u2019 will appear when the new code is \u201811\u2019. We recommend that users update their applications to refer to the new Bike Lane-2 since the one-byte Bike Lane field will be deleted in a later release. Description: Defines which street segments are part of the bicycle network as defined by the Department of Transportation. Code Value Meaning 1 Class I: Separated Greenway 2 Class II: Striped Bike Lane 3 Class III: Signed Bicycle Route 4 Links: Connecting Segments 5 Class I, II: Combination of Class I and II 6 Class II, III: Combination of Class II and III 7 Stairs: Step streets, bridge stairs, etc. 8 Class I, III Combination of Class I and III 9 Class II, I Combination of Class II and I A Class III, I Combination of Class III and I B Class III, II Combination of Class III and II BIKE LANE 2 Functions: 1 Extended, 1B, 1E Extended, 3 Extended, 3C Extended Work Area Format: COW Length and Format: 2 bytes, RJBF Description: Defines which street segments are part of the bicycle network as defined by the Department of Transportation. Note: As of Geosupport Version 16.4, Bike Lane 2 is being introduced to replace Bike Lane The following table contains the values that can appear in the Bike Lane 2 field Code Value Meaning Description 1 Class I: Separated Greenway 2 Class II: Striped Bike Lane 3 Class III: Signed Bicycle Route 4 Links: Connecting Segments 5 Class I, II: Combination of Class I and II 6 Class II, III: Combination of Class II and III 7 Stairs: Step streets, bridge stairs, etc. 8 Class I, III Combination of Class I and III 9 Class II, I Combination of Class II and I 10 Class III, I Combination of Class III and I 11 Class III, II Combination of Class III and II BIKE TRAFFIC DIRECTION Functions: 1 Extended, 1B, 1E Extended, 3 Extended, 3C Extended Work Area Format: COW Length and Format: 2 bytes, RJBF Description: Defines the traffic direction of the bike lanes on a segment. The following table contains the values that can appear in the Bike Lane 2 field Code Value Meaning Description Blank No bike lane No bike lane exists at this segment FT FROM node to TO node Bike traffic flows with the segment\u2019s logical direction, i.e. from the FROM node to the TO node. TF TO node to FROM node Bike traffic flows against the segment\u2019s logical direction, i.e. from the TO node to the FROM node. TW Two-Way Bikes travel in both directions BIN - See BUILDING IDENTIFICATION NUMBER BLOCKFACE ID Field Names: LEFT BLOCKFACE ID RIGHT BLOCKFACE ID Functions: 1 Extended, 1B, 1E Extended, 3 Extended, 3C Extended Work Area Format: COW Length and Format: 10 bytes. RJZF Description: Left Blockface ID is a ten digit number identifying the block face on the left hand side of a segment. Correspondingly, Right Blockface ID identifies the block face on the right hand side of a segment. Block Face is defined as one continuous side of a physical block that is intersected on that side by two other physical through streets. Blockface IDs were established by DoITT\u2019s consultants working on the planimetric feature classes for NYC and are not maintained by the Department of City Planning. BOARD OF ELECTIONS PREFERRED LGC Functions: 1E Work Area Format: MSW and COW Length and Format: 2 bytes. RJZF Description: This item is the LGC (the sixth and seventh digits of the 10-digit street code) that corresponds to the NYC Board of Elections\u2019 preferred street name for a given location. BOROUGH CODE Functions: All functions Work Area Format: MSW and COW Length and Format: 1 byte. Numeric. Description: Code Value Meaning 1 Manhattan 2 Bronx 3 Brooklyn 4 Queens 5 Staten Island BOROUGH/BLOCK/LOT - See BBL BOROUGH/TAX BLOCK/TAX LOT - See BBL BROWSE FLAG Functions: 1, 1A, 1B, 1E, 1N, 2, 3, 3C, BB, BF Work Area Format: COW Length and Format: 1 byte. Alphabetic Description: Code Value Meaning Blank All streets or normalized input street P Primary streets F Principal streets R Preferred street Only Functions 1, 1A, 1B. 1E, 2, 3, and 3C. (Not 1N, BB, BF) See Chapter III.7 for use of Browse Flag with Functions BB and BF. See Chapter III.8 for use of Browse Flag with Functions 1, 1A, 1B, 1E, 1N, 2, 3, 3C. BUILDING IDENTIFICATION NUMBER (BIN) Functions: 1A, BL, BN, 1B (COW only) and AP (COW only) Work Area Format: MSW and COW Length and Format: 7 bytes. Numeric Description: Building Identification Number. A permanent BIN is a seven-digit numerical identifier unique to each building in the City of New York. The first digit is the Borough Code. There are also two types of temporary BINs; those maintained by the Dept. of Buildings (DOB) and those maintained by the Dept. of City Planning (DCP). The temporary BINs assigned by DOB contain the number \u20188\u2019 as the second digit, and the temporary BINs assigned by DCP contain a \u20189\u2019 in the same position. DCP is currently in the process of phasing out all of its temporary BINs. BUSINESS IMPROVEMENT DISTRICT (BID) Functions: 1A, 1B, BL, BN Work Area Format: MSW and COW Length and Format: 6 bytes, B5SC Description: The Business Improvement District (BID) field (which was requested by the Fire Department) consists of a borough and five-digit street code (B5SC). Function D may be used to obtain the 32-byte name of the BID. The \u2018Street Attribute Indicator\u2019 is set to \u2018C\u2019 for BIDs. An example of a Business Improvement District is \u20185 AVE BID\u2019 Note that a BID may not be used as input to Function 1, 1A, 1B, 1E, 2*, and 3*. CD - See COMMUNITY DISTRICT or COMMUNITY DEVELOPMENT\u2026 CD ELIGIBILITY FLAG - See INTERIM ASSISTANCE ELIGIBILITY INDICATOR C CENSUS BLOCK Field Names: 2000 CENSUS BLOCK, LEFT 2000 CENSUS BLOCK, RIGHT 2000 CENSUS BLOCK, 2010 CENSUS BLOCK LEFT 2010 CENSUS BLOCK, RIGHT 2010 CENSUS BLOCK Functions: 1 & 1E (MSW: for 2010 - Regular WA2, for 2000 - Long WA2 Only;), 1 & 1E(COW). 2, 3 (MSW: Long WA2 Only), 3(COW), 3C Work Area Format: MSW and COW Length and Format: 4 bytes, numeric Description: When appended by the CENSUS BLOCK SUFFIX, this area is the smallest geographic area defined by the U.S. Census Bureau for tabulating the census. Generally (but not always) corresponds to a physical city block. Each census block is numbered uniquely within its census tract. CENSUS BLOCK SUFFIX Field Names: 2000 CENSUS BLOCK SUFFIX, LEFT 2000 CENSUS BLOCK SUFFIX, RIGHT 2000 CENSUS BLOCK SUFFIX, 2010 CENSUS BLOCK SUFFIX, LEFT 2010 CENSUS BLOCK SUFFIX, RIGHT 2010 CENSUS BLOCK SUFFIX, Functions: 1&1E (MSW: for 2010 - Regular WA2, for 2000 - Long WA2 Only;), 1, 1B &1E(COW) 2, 3 (MSW: Long WA2 Only), 3(COW), 3C Work Area Format: MSW and COW Length and Format: 1 byte. Description: This suffix is defined by the U.S. Census Bureau. At the government\u2019s discretion, this field may, or may not, contain data. CENSUS TRACT Field Names: 1990 CENSUS TRACT, LEFT 1990 CENSUS TRACT, RIGHT 1990 CENSUS TRACT, 2000 CENSUS TRACT, LEFT 2000 CENSUS TRACT, RIGHT 2000 CENSUS TRACT 2010 CENSUS TRACT, LEFT 2010 CENSUS TRACT, RIGHT 2010 CENSUS TRACT Functions: 1, 1E, 1B, 2, 3 (MSW: 2010 - Regular WA2; 2000 - Long WA2 Only), 3(COW), 3C Work Area Format: MSW and COW Length and Format: 6 bytes, consisting of numeric 4-digit root followed by numeric 2-digit suffix. The root subfield is RJBF and the suffix subfield is RJZF if any. If the tract number contains no suffix, then the suffix subfield is blank. Description: Geographic area defined by the U.S. Census Bureau for the various decennial censuses. Census tracts for a particular census year are numbered uniquely within borough. CITY COUNCIL DISTRICT Functions: 1B (COW), 1E, 2(COW only) Work Area Format: MSW and COW Length and Format: 2 bytes. Description: A district represented by a member of the New York City Council. Consists of an aggregation of Election Districts. There are currently 51 City Council Districts. CIVIL COURT DISTRICT Functions: 1E, 1B (COW), 2(COW only) Work Area Format: MSW and COW Length and Format: 2 bytes. Description: A district from which a Civil Court judge is elected. Consists of an aggregation of Election Districts. COINCIDENT SEGMENT COUNT Functions: 1, 1E, 3, 3C Work Area Format: MSW and COW Length and Format: 1 byte, numeric Description: The Coincident Segment Count indicates the situation where one road is above another road. Most streets, such as Broadway in Manhattan have a value of \u20181\u2019 in the Coincident Segment Count. However, there are a few streets where the Coincident Segment Count is greater than one. An example of this is Third Avenue and the Gowanus Expressway in Brooklyn. The Gowanus Expressway is above Third Avenue from about 18th Street until 63rd Street. For these segments, the Coincident Segment Count is \u20182\u2019. COMMUNITY DEVELOPMENT BLOCK GRANT (CDBG) - See INTERIM ASSISTANCE ELIGIBILITY INDICATOR COMMUNITY DEVELOPMENT ELIGIBILITY FLAG - See INTERIM ASSISTANCE ELIGIBILITY INDICATOR COMMUNITY DISTRICT (CD) Functions: 1, 1E, 2, 3, 3C, 1B (COW) Work Area Format: MSW and COW Length and Format: 3 bytes. Numeric. The first byte is the Community District Borough Code, and the second and third bytes are the Community District Number, RJZF. Description: There are 59 community districts in the City of New York, as well as 12 Joint Interest Areas (JIAs). The JIAs are major parks and airports that are not contained within any CD. Examples are Central Park, Van Cortlandt Park, LaGuardia and JFK Airports. The JIAs are the numerically highest items in each borough. Code Value Meaning 101-112 Manhattan except Marble Hill 164 Central Park 201-212 Bronx except Rikers Island (Note: the Marble Hill section of Manhattan is in Bronx CDs 7 and 8) 226 Van Cortlandt Park 227 Bronx Park 228 Pelham Bay Park 301-318 Brooklyn 355 Prospect Park 356 Brooklyn Gateway National Recreational Area 401-414 Queens (Note: the Rikers Island section of the Bronx is in Queens CD 1) 480 LaGuardia Airport 481 Flushing Meadows - Corona Park 482 Forest Park 483 JFK International Airport 484 Queens Gateway National Recreational Area 501-503 Staten Island 595 Staten Island Gateway National Recreational Area COMMUNITY DISTRICT ELIGIBILITY FLAG - See INTERIM ASSISTANCE ELIGIBILITY INDICATOR COMMUNITY SCHOOL DISTRICT \u2013 see SCHOOL DISTRICT COMPACT FLAG - See STREET NAME NORMALIZATION FORMAT FLAG COMPASS DIRECTION Functions: 2, 3C, 3S Work Area Format: MSW and COW Length and Format: 1 byte. Description: In the case of Function 2, the compass direction identifies, for a pair of input streets that intersect at two distinct locations, which of those two intersections is to be processed. (See Chapter VII.2 ) In the case of Function 3C, the compass direction identifies which side of the street is to be processed. (See Section VII.5) In the case of Function 3S, if the \u2018on\u2019 street intersects the first cross street at two distinct locations, the compass direction identifies which of those two intersections is to be processed. (See Chapter VII.6 ) COMPASS DIRECTION FOR INTERSECTION KEY Functions: 2 Work Area Format: MSW and COW Length and Format: 1 byte. Description: If the first two entries in the LIST OF INTERSECTING STREETS are an instance of the two-node case (i.e., they intersect twice), this field contains a compass direction value identifying the intersection in terms of those two streets. If the two streets are not an instance of the two-node case, this field is blank. If both a \u2018longitudinal\u2019 compass direction (\u2018N\u2019 or \u2018S\u2019) and a \u2018latitudinal\u2019 compass direction (\u2018E\u2019 or \u2018W \u2019) are valid for this intersection, the longitudinal compass direction value appears in this field. COMPASS DIRECTION FOR 2nd INTERSECTION Functions: 3S Work Area Format: MSW and COW Length and Format: 1 byte. Description: If the \u2018on\u2019 street intersects the second cross street at two distinct locations, this compass direction identifies which of those two intersections is to be processed. (See Chapter VII.6 ) CONDOMINIUM FLAG Functions: 1A, BL, BN, 1B (COW), AP Work Area Format: MSW and COW Length and Format: 1 byte. Description: Code Value Meaning \u2018C\u2019 Property is a condominium Blank Property is not a condo. CONDOMINIUM IDENTIFICATION NUMBER Functions: 1A, BL, BN, 1B (COW), AP Work Area Format: MSW and COW Length and Format: 4 bytes Description: An identification number assigned by the Department of Finance to each condominium in the city. This field is blank for non-condominiums. CONGRESSIONAL DISTRICT Functions: 1E, 1B (COW), 2 (COW only) Work Area Format: MSW and COW Length and Format: 2 bytes. Description: A district of the U.S. House of Representatives. Consists of an aggregation of Election Districts. CONTINUOUS PARITY INDICATOR Functions: 1, 1E, 3, 3C, 1B (COW) Work Area Format: MSW and COW Length and Format: 1 byte Description: An \u2018address range\u2019 is a sequence of house numbers along an \u2018on\u2019 street between (and including) a Low House Number and a High House Number. Every address range has one of three possible parities: odd, even or continuous. An address range of odd parity consists of all odd house numbers along the \u2018on\u2019 street between the Low and High House Numbers. An even-parity range consists of all even house numbers between the Low and High House Numbers. A continuous-parity range consists of all house numbers (both even and odd) between the Low and High House Numbers. Most New York City blockfaces contain an address range that is either of even or odd parity. However, some blockfaces have a continuous-parity address range, usually where the opposite side of the street is non-addressable because it is a park, a body of water, etc. Some examples of the continuous parity case in Manhattan are Central Park West (the east side of the street runs along Central Park and is non-addressable, while the west side has both odd and even addresses); Riverside Drive; and the portion of Fifth Avenue that runs alongside Central Park. If a New York City blockface has a continuous parity address range, Geosupport represents this range as two separate ranges, an odd-parity range and an even-parity range. The practical effect of this depends on the Geosupport function. For Functions 1 and 1E, if an input address lies on a continuous-parity blockface, only the range (i.e., the Low and High House Numbers) whose parity is the same as that of the input address is returned in WA2. For Function 3, if an input street segment contains a continuous parity address range, both the odd and the even ranges are returned, in the WA2 fields called Left Low House Number and Left High House Number for the range of one parity, and in the fields Right Low and High House Numbers for the range of the other parity; note that in this case, in reality both the odd and the even ranges are on the same side of the street, even though they are returned in fields called \u2018left\u2019 and \u2018right\u2019. For Function 3C, if an input blockface is on a street segment containing a continuous parity address range (regardless of whether the input blockface is on the addressable or the non-addressable side of the segment), both the odd and the even ranges are returned, in the WA2 fields called Low House Number and High House Number for the range of one parity, and in the fields Alternate Low House Number and Alternate High House Number for the range of the other parity. The field Continuous Parity Indicator indicates, for Functions 1, 1E, 3 and 3C, whether the street segment containing or corresponding to the user input is of the continuous parity type, and if so, which side of the segment is addressable. Code Value Meaning Blank The street segment does not have a continuous parity address range \u2018L\u2019 or \u2018R\u2019 The street segment has continuous parity. In this case, the Continuous Parity Indicator indicates which side of the street segment, the left or the right, is addressable. (Left and right are specified with respect to the direction of increasing addresses along the segment) COOPERATIVE IDENTIFICATION NUMBER Functions: 1A, BL, BN, 1B (COW) Work Area Format: MSW and COW Length and Format: 4 bytes. Description: This is an identification number assigned by the Department of Finance to each cooperative in the city. This field is blank for non-coops. CORNER CODE Functions: 1A, BL, BN, 1B (COW) Work Area Format: MSW and COW Length and Format: 2 bytes Description: Code Value Meaning \u2018SE\u2019,\u2019SW\u2019,\u2019NE\u2019,\u2019NW\u2019 Tax lot occupies the indicated corner of the physical block \u2018CR\u2019 Tax lot occupies more than one corner Blank Tax lot occupies no corners COUNTY BOUNDARY INDICATOR Functions: 3, 3C Work Area Format: MSW and COW Length and Format: 1 byte Description: This field is non-blank when the street segment lies along a borough boundary. The value of this field indicates which side of the segment is out of borough. Code Value Meaning \u2018L\u2019 Left side of segment is out of borough \u2018R\u2019 Right side of segment is out of borough Blank Neither side is out of borough CROSS STREET NAMES FLAG (a.k.a. EXPANDED FORMAT FLAG) Functions: 1, 1E, 2, 3, 3C, 1B (COW) Work Area Format: MSW and COW Length and Format: 1 byte character. Description: When this flag is set to \u2018E\u2019, the LIST OF STREET NAMES is used to return street names corresponding to the street codes in the LIST OF CROSS STREETS (Functions 1, 1B, 1E, 3 and 3C) or in the LIST OF INTERSECTING STREETS (Function 2). See LIST OF STREET NAMES for related details. When possible, the BBL and BIN are returned in the output area of Work Area 1 for Functions 1, 1A, 1B, and 1E. The cross street names feature incurs processing overhead, and should only be used when necessary. Note that Function 1B returns the principal street codes and street names of the cross streets in the Blockface portion of Work Area 2. Therefore it is typically not necessary to set the Cross Street Names flag with Function 1B. Code Value Meaning Blank The names of cross or intersecting streets are not returned in the LIST OF STREET NAMES. The BBL an BIN are not returned in the output area of Work Area 1. \u2018E\u2019 The names of cross or intersecting streets are returned in the LIST OF STREET NAMES The BIN and BBL of the input address are returned in the output area of Work Area 1. CROSS STREET REVERSAL FLAG Functions: 3, 3C Work Area Format: MSW and COW Length and Format: 1 byte Description: This flag indicates the relationship between the order in which the user specified the input cross streets and the direction of increasing addresses along the \u2018on\u2019 street. Code Value Meaning Blank The direction from Street Name 2 to Street Name 3 (the two input cross street fields) conforms to the direction of increasing addresses \u2018R\u2019 The direction from Street Name 2 to Street Name 3 is opposite to the direction of increasing addresses CROSS SREETS See LIST OF CROSS STREETS (Functions 1, 1E, 3, 3C, 1B) See LIST OF INTERSECTING STREET (Function 2) See LIST OF CROSS STREET CODES (Function 3S) CURVE FLAG Functions: 1, 1E, 3, 3C, 1B (COW) Work Area Format: MSW and COW Length and Format: 1 byte character Description: This flag indicates whether the given geographic feature segment is in reality curved. If so, the curve may be an arc of a circle or an irregular curve. When the segment specified by the input data is an arc of a circle, Functions 1 and 1E return Spatial Coordinates that are positioned relative to this arc rather than to the segment\u2019s chord (the imaginary straight line joining the curved feature\u2019s endpoints). When the segment specified by the input data is an irregular curve, Functions 1 and 1E return blanks in the Spatial Coordinate fields (q.v.), and issue a warning with Reason Code value \u2018P\u2019. In the case of Functions 3 and 3C, if the input data define a street stretch encompassing more than one segment (because of a T-intersection or bend), the Curve Flag is set \u2018on\u2019 (non-blank) if at least one of the constituent segments of the stretch is curved. See also discussion of Segment Length. Code Value Meaning Blank Segment is not curved \u2018I\u2019 Segment is an irregular curve, i.e., it is curved but it is not an arc of a circle \u2018L\u2019 Segment is an arc of a circle on the left side of the line joining the segment\u2019s FROM and TO nodes \u2018R\u2019 Segment is an arc of a circle on the right side of the line joining the segment\u2019s FROM and TO nodes D DCP PREFERRED LGC Functions: 1, 1A and BL (regular WA2 only), 2, 3, 3C, BN Work Area Format: MSW and COW Length and Format: 2 bytes RJZF Description: Identifies the local group of street names designated by the Department of City Planning as \u2018preferred\u2019 for display purposes for a specific location on a street. DCP ZONING MAP Functions: 1A/BL/BN, 1A/BL/BN Extended, 1A/BL Long WA2, 1A/BL TPAD Long WA2, 1B Work Area Format: COW Length and Format: 3 bytes Description: The DCP Zoning Map field contains the DCP Zoning Map number. DEPARTMENT OF SANITATION SNOW PRIORITY CODE - See DSNY SNOW PRIORITY CODE DISTANCE BETWEEN DUPLICATE INTERSECTIONS Functions: 2 Work Area Format: MSW and COW Length and Format: 5 bytes numeric Description: When the two input streets intersect exactly twice, this field contains the distance, in feet, between those two intersections. DOGLEG FLAG Functions: 3 Work Area Format: MSW and COW Length and Format: 1 byte Description: A dogleg is a street configuration in which a street has a displacement or offset as it crosses another street. A non-blank value in the Dogleg Flag indicates that at least one of the cross streets forms a dogleg as it crosses the \u2018on\u2019 street, in such a way that at least one side of the \u2018on\u2019 street has a blockface encompassing more than one segment. When Function 3 returns a non-blank value in this flag, the work area represents the \u2018innermost\u2019 segment of the dogleg configuration. The Dogleg Flag value indicates which side or sides of the street has (or have) the long blockface(s). Code Meaning Blank Not a dogleg \u2018B\u2019 Both sides of the \u2018on\u2019 street have long blockfaces formed by doglegs. This can only occur if both cross streets form doglegs as they cross the \u2018on\u2019 street. \u2018L\u2019 The left side of the street has a long blockface formed by a dogleg \u2018R\u2019 The right side of the street has a long blockface formed by a dogleg A Function 3C call will return information on the long blockface when the user input data specifies a side of a street where there is a long blockface formed by a dogleg or doglegs. The Dogleg Flag will not be set in response to a function 3C call. DOT STREET LIGHT CONTRACTOR AREA Functions: 1, 1E, 2, 3, 3C, 1B (COW) Work Area Format: MSW and COW Length and Format: 1 byte Description: Code Meaning \u20181' Street lights serviced by Manhattan contractors \u20182' Street lights serviced by Bronx contractors \u20183' Street lights serviced by Brooklyn contractors \u20184' Street lights serviced by Queens contractors \u20185' Street lights serviced by Staten Island contractors \u2018X' Street light is located on the Brooklyn, Queens boundary \u2018N\u2019 Street light is located in one borough, but serviced by a different borough DSNY ... - See also SANITATION ... DSNY SNOW PRIORITY CODE Functions: 1/1E, 1/1E Extended, 1B, 3, 3 Extended, 3C, 3C Extended Work Area Format: COW Length and Format: 1 byte character Description: DSNY (Department of Sanitation) Snow Priority code is used during snow emergencies. It helps DSNY to determine the snow removal schedule, routes and resources needed. The DSNY (Department of Sanitation) Snow Priority indicates the priority of the street with respect to snow removal. New snow priority codes were assigned with Version 16.4 The snow priority codes are as follows: Code Value Meaning C Critical S Sector H Haulster V Non-DSNY Street (unchanged) The DSNY definition of the new codes is as follows: C - Critical Routes: These routes are comprised of highways (main beds, entrances, exits interchanges), arterial roadways, main travel thoroughfares (single lane and multi-lane), bus routes, that contain emergency services & first responder facilities (Hospitals, EMS, FDNY, NYPD) and schools. S - Sector Routes: Designed to encompass all streets that are not classified as Critical Streets and are wide enough to accommodate a full size DSNY collection truck with a plow attached. H - Haulster Routes: Designed to service dead ends and streets that cannot be serviced with a collection truck or salt spreader with a plow attached due to narrow street width or tight turning radius (either entering or exiting the street). Important Note: The old code values (i.e. prior to Version 16.4) are no longer in use. They were P (Primary), S (Secondary) and T (Tertiary) If a user application checks for specific Snow Priority Values, the application will need to be updated It is also important to note that the new Snow Priority values provided to DCP were for roadbed geography only. Snow Priority values will not be returned for generic geography, unless requested for a future release by DSNY. DYNAMIC BOCK - See ATOMIC POLYGON E s ELECTION DISTRICT (ED) Field Names: LEFT ELECTION DISTRICT RIGHT ELECTION DISTRICT Function: 1E, 3 (COW only), 3C (COW only), 1B (COW only) Work Area Format: MSW and COW Length and Format: 3 bytes Description: A set of districts defined by the NYC Board of Elections to conduct elections. There are approximately 6,000 Election Districts (EDs) in NYC. Each ED is numbered uniquely within its Assembly District. All of NYC\u2019s higher-level political districts, namely Assembly Districts, City Council Districts, Municipal Court Districts, Congressional Districts and State Senatorial Districts, are defined as aggregates of Eds. EXPANDED FORMAT FLAG - See CROSS STREET NAMES FLAG EXTENDED MODE SWITCH - See MODE SWTICH F FACE CODE Functions: 1, 1E, 3, 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: 4 bytes. Numeric Description: A Face Code is assigned to each linear geographic feature represented in the LION file. These consist of streets and certain non-street features, such as census boundaries, shorelines and railroad tracks. Face Codes serve as part of LION keys, which identify a unique LION record. Face Code values are assigned uniquely within borough. FEATURE TYPE CODE Functions: 1, 1E, 3, 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: 1 byte Description: Identifies the type of geographic feature represented by the work area Code Meaning blank Public street that exists physically, other than a type \u2018W\u2019 feature (see below) \u20181' Railroad \u20182' Shoreline \u20183' Census block boundary without physical existence \u20184' Other non-street feature \u20185' \u2018Paper street\u2019, i.e., a public street that is legally \u2018mapped\u2019 but does not exist physically \u20186' \u2018Private street that exists physically \u20187' Physically nonexistent district boundary, other than a type \u20183\u2019 feature (see above) \u20188' Physical Boundary such as a cemetery wall \u20189' Paper street\u2019 that coincides with a non-physical boundary such as a Census block \u2018C' CCO (Corporation Council Opinion). Street dedicated for public use (See Glossary) \u2018W' Path, non-vehicular, addressable Note: As of Release 16D, Physical Boundaries, such as cemetery walls, will no longer appear as cross streets in Functions 1/1E, 1B, 2, 3 and 3C FIRE BATTALION Functions: 1, 1E, 2, 3 (MSW: Long WA2), 3 (COW), 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: 2 bytes Description: An administrative fire district composed of Fire Companies/ FIRE COMPANY NUMBER Functions: 1, 1E, 2, 3 (MSW: Long WA2), 3 (COW), 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: 3 bytes. Numeric RJZF Description: The smallest kind of administrative fire district defined by the NYC Fire Department. There are three types, indicated by the Fire Company Type: engine companies, Squad and ladder companies. FIRE COMPANY NUMBER Functions: 1, 1E, 2, 3 (MSW: Long WA2), 3 (COW), 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: 1 byte Description: Fire companies are characterized by the type of apparatus they use to fight fires. Code Meaning \u2018E\u2019 Engine Company \u2018L\u2019 Ladder Company \u2018Q\u2019 Fire Squad Note: \u2018Q\u2019 may appear as \u2018SQ\u2019 on GOAT screens FIRE DIVISION Functions: 1, 1E, 2, 3 (MSW: Long WA2), 3 (COW), 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: 2 bytes Description: An administrative fire district composed of Fire Battalions. FROM NODE - See NODE NUMBER FROM NODE ID - See NODE NUMBER FUNCTION 1A/BL VERSION FLAG Functions: 1A, BL Work Area Format: MSW and COW Work Area Format: MSW and COW Length and Format: 1 byte Length and Format: Code Meaning Description: Code Meaning \u2018S\u2019 Standard version - Required for MSW \u2018L\u2019 Invalid - No Longer Supported Blank COW: Standard version MSW: Invalid G GAP FLAG Functions: 3S Work Area Format: MSW and COW Length and Format: 1 byte Description: Code Value Meaning \u2018E\u2019 Engine Company \u2018L\u2019 Ladder Company \u2018Q\u2019 Fire Squad Note: \u2018Q\u2019 may appear as \u2018SQ\u2019 on GOAT screens 1, 1E, 2, 3 (MSW: Long WA2), 3 (COW), 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: 2 bytes Description: An administrative fire district composed of Fire Battalions. FROM NODE - See NODE NUMBER FROM NODE ID - See NODE NUMBER FUNCTION 1A/BL VERSION FLAG Function: 1A, BL Work Area Format: MSW and COW Length and Format: 1 byte Description: Code Meaning \u2018S\u2019 Standard version - Required for MSW \u2018L\u2019 Invalid - No Longer Supported Blank COW: Standard version MSW: Invalid GAP FLAG Functions: 3S Work Area Format: MSW and COW Length and Format: 1 byte Description: Code Value Meaning Blank No gap, i.e., the \u2018on\u2019 street connects this intersection with its predecessor in list. The gap flag in the 1st entry in the list is always blank. \u2018G\u2019 A gap exists along the \u2018on\u2019 street between this intersection and its predecessor \u2018C\u2019 Real Streets Only have been requested, resulting in segment lengths being \u2018Combined\u2019 and one or more nodes being omitted between this intersection and its predecessor in the list (COW Only). \u2018D\u2019 A dog-leg type gap exists along the \u2018on\u2019 street between this intersection and its predecessor \u2018N\u2019 A new stretch exists. For more information on the types of \u2018gaps\u2019 that can be returned by Function 3S, see Chapter VII.6 GENERATED RECORD FLAG Functions: 3, 3C Work Area Format: MSW and COW Length and Format: 1 byte/td> Description: This flag indicates that the geography defined by the input \u2018on\u2019 street and two cross streets is not a conventional street segment. There are several cases: a segment one of whose cross-features is a pseudo-street name (codes C, D); a street stretch formed by consolidating more than one consecutive LION segment (codes B, L, M, R, S and T); or a segment that is part of such a street stretch (types F, G). If the input data simultaneously satisfy the criteria for a Generated Record Flag value of C or D and for some other value, the flag contains the value other than C or D. \u2018B\u2019 Record has been generated by consolidating several LION segments to represent a stretch of a street where there is a node that is not at an intersection, such as a bending point (or a consecutive sequence of such nodes). \u2018C\u2019 Record generated because one or both nodes of segment lie on the City Limit (Bronx-Westchester or Queens-Nassau border), but segment itself lies entirely within the City. The cross street list for a node on the City Limit contains the special street code assigned to the pseudo-street name CITY LIMIT in the Bronx or Queens, as appropriate. \u2018D\u2019 Record has been generated for a dead end segment, i.e. a segment at least one of whose nodes either has no other segments incident at it, or has segments of non-street features only. The cross street list at such a node contains only the special street code assigned to the pseudo-street name DEAD END in the given borough. \u2018F\u2019 Record represents a segment that is part of a street stretch that either contains a bending point at which there are no cross streets, or the left side of which is the long blockface of a T-intersection or a consecutive sequence of T-intersections. \u2018G\u2019 Record represents a segment that is part of a street stretch, that either contains a bending point at which there are no cross streets, or the right side of which is the long blockface of a T-intersection or a consecutive sequence of T-intersections. \u2018L\u2019 Record has been generated to represent the long blockface on the left side of a T-intersection. \u2018M\u2019 Record has been generated by consolidating two or more LION segments to represent a stretch of a street containing a node or a consecutive sequence of nodes at which the \u2018on\u2019 feature intersects with no streets but intersects with more than one type of non-street feature. \u2018R\u2019 Record has been generated to represent the long blockface on the right side of a T-intersection. \u2018S\u2019 Record has been generated by consolidating two or more LION segments to represent a stretch of a street containing a node or a consecutive sequence of nodes at which the \u2018on\u2019 feature intersects with no streets but intersects with one or more shorelines. \u2018T\u2019 Record has been generated by consolidating two or more LION segments to represent a stretch of a street containing a node or a consecutive sequence of nodes at which the \u2018on\u2019 feature intersects with no streets but intersects with one or more train tracks. H HEALTH AREA Functions: 1, 1E, 2, 3, 3C, 1B Work Area Format: MSW and COW Length and Format: 4 bytes Description: Districts defined by the NYC Department of Health and used to report statistics on births, deaths, communicable diseases etc. Health Areas are aggregates of Census Tracts. HEALTH CENTER DISTRICT Functions: 1, 1E, 2 (COW only), 3 Extended, 3C Extended Work Area Format: MSW and COW Work Area Format: 2 bytes Description: Districts defined by the NYC Department of Health for administrative purposes. Health Center Districts are aggregates of Health Areas. HEZ - See HURRICANE EVACUATION ZONE HIGH HOUSE NUMBER - See HOUSE NUMBER HOUSE NUMBER a.k.a. ADDRESS NUMBER Field Names: HOUSE NUMBER (WA1 input field, Functions 1, 1A, 1B, 1E,AP); NORMALIZED HOUSE NUMBER (WA1 output field, Functions 1, 1A, 1B, 1E, AP); LOW HOUSE NUMBER HIGH HOUSE NUMBER (WA2 output fields, Functions 1, 1A, 1B, 1E, 3C,AP); LEFT LOW HOUSE NUMBER, LEFT HIGH HOUSE NUMBER, RIGHT LOW HOUSE NUMBER, RIGHT HIGH HOUSE NUMBER (WA2 output fields, Function 3) ALTERNATE LOW HOUSE NUMBER, ALTERNATE HIGH HOUSE NUMBER (WA2 output fields, Function 3C) UNDERLYING HOUSE NUMBER FOR VANITY ADDRESSES (WA2, 1 and 1E-MSW: Long WA2, 1, 1B, and 1EE-COW, AP? ) Functions: 1, 1A, 1E, 3, 3C, 1B COW only) Work Area Format: MSW and COW Length and Format: See Chapter V.2 . Description: If the field name indicates the house number is normalized, for MSW it is in HNI format, and for COW it is in HNS format; otherwise, it is in HND format (see Chapter V.2 ). HOUSE NUMBER JUSTIFICATION FLAG Functions: 1, 1E, 1A, D, DG, DN, 1B? Work Area Format: COW Length and Format 1 byte Description: Indicates whether the HOUSE NUMBERS IN DISPLAY format (HNDs) in the output area should be left-justified or right-justified. Code Value Meaning \u2018L\u2019 or Blank Left-justify Normalized House Numbers (default) \u2018R\u2019 Right-justify Normalized House Numbers HOUSE NUMBER NORMALIZATION LENGTH Functions: 1, 1E, 1A, 1B, D, DG, DN Work Area Format: COW Length and Format: 2 bytes, numeric Description: Indicates the length requested for the HOUSE NUMBERS IN DISPLAY format (HNDs) in the output area. Valid values are between 12 and 16. If the field is left blank, the default is 12. For more information, see Chapter V.2 . HURRICANE EVACUATION ZONE (HEZ) Function: 1/1E, 1/1E Extended, 1B Work Area Format: COW Length and Format: 2 bytes, alphanumeric, RJBF Description: Information used by Emergency Management (previously known as Office of Emergency Management (OEM)) in emergency situations. New York City\u2019s hurricane contingency plans are based on six evacuation zones: 1, 2, 3, 4, 5, 6. The value of 0 represents water polygons and the value of X indicates land that is not part of an evacuation zone. Value Description 0 Coastal Water polygon 1-6 Hurricane Evacuation Zone designation X Land not part of an evacuation zone Additional information may be found at http://www1.nyc.gov/site/em/ready/hurricane-evacuation.page I INSTRUCTIONAL DIVISION - See INSTRUCTIONAL REGION INTERIM ASSISTANCE ELIGIBILITY INDICATOR (IAEI) - a.k.a. CD Eligibility Flag INTERIM ASSISTANCE ELIGIBILITY INDICATOR (IAEI) - a.k.a. CD Eligibility Flag Functions: 1, 1E, 2 (COW only), 3, 3C, 1B Work Area Format: MSW and COW Length and Format: 1 byte Description: Indicates whether the input location is in a census tract that meets the U.S. Department of Housing and Urban Development (HUD) criteria to be eligible for Community Development Block Grant (CDBG) funding. A census tract is eligible for CDBG funding if at least 51.00% of the residents are low- and moderate-income persons (less than 80% of the Median Family Income) and 50% of its total floor area must be comprised of residential usage. All other census tracts are ineligible. In Release 19B, the \u2018CD Eligibility\u2019 values were updated to reflect more current data. Updated income data was provided by HUD and residential usage was calculated by the Department of City Planning (DCP) using PLUTO data (18v2.1). Code Value Meaning \u2018E\u2019 Input location is in a CD-eligible census tract \u2018I\u2019 Location is not in a CD-eligible census tract Blank Location is in a census tract, the CD-eligibility status of which is unknown to the Geosupport System.(Note: This is an error condition and should be reported). INTERSECTING STREETS - See LIST OF INTERSECTING STREETS INTERSECTION REPLICATION COUNTER Functions: 2 Work Area Format: MSW and COW Length and Format: 1 byte, numeric Description: The Intersection Replication Counter is non-blank only if the two streets intersect more than once, in which case this field contains the number of such intersections. INTERIOR LOT FLAG Functions: 1A, BL, BN Work Area Format: MSW and COW Length and Format: 1 byte Description: Code Value Meaning \u2018I\u2019 Tax lot is interior to physical block, i.e., it has no street frontages. Blank Tax lot has at least one street frontage INTERNAL LABEL POINT - See SPATIAL COORDINATES OF THE TAX LOT CENTROID IRREGULARLY-SHAPED LOT FLAG Functions: 1A, BL, BN Work Area Format: MSW and COW Length and Format: 1 byte Description: Code Value Meaning \u2018I\u2019 Tax lot is irregularly-shaped, i.e., non-rectangular Blank Tax lot is rectangular JOINT INTEREST AREA (JIA) - See COMMUNITY DISTRICT L LATITUDE, LONGITUDE Functions: 1/1E Extended, all variations of 1A/BL/BN (viz. Regular, Long and Extended), 1B, 2W, 3 Extended, 3C Extended Work Area Format: COW Length and Format: Latitude: 9 bytes Longitude: 11 bytes Description: Spatial coordinates based on the lines of latitude and longitude. Lines of latitude measure the north-south position between the poles with the equator defined as 0 degrees. Lines of longitude (or meridians) measure the east-west position, with the prime meridian running through Greenwich, England. For NYC, Latitude is always positive and Longitude is always negative. The latitude and longitude of a location are calculated based on the spatial coordinates (x,y) returned for that location. As a result, the latitude and longitude returned by the Address Processing functions (e.g. 1/1E Extended) will be somewhat different from the values returned by Tax Lot and Building processing functions (e.g. 1A/BL/BN). See also SPATIAL COORDINATES and SPATIAL COORDINATES OF THE TAX LOT CENTROID. LEFT 1990 CENSUS TRACT - See CENSUS TRACT. LEFT 2000 CENSUS BLOCK - See CENSUS BLOCK. LEFT 2000 CENSUS BLOCK SUFFIX - See CENSUS BLOCK SUFFIX. LEFT 2000 CENSUS TRACT - See CENSUS TRACT. LEFT 2010 CENSUS BLOCK - See CENSUS BLOCK. LEFT 2010 CENSUS BLOCK SUFFIX - See CENSUS BLOCK SUFFIX. LEFT 2010 CENSUS TRACT - See CENSUS TRACT. LEFT ASSEMBLY DISTRICT - See ASSEMBLY DISTRICT. LEFT BLOCKFACE ID - See BLOCKFACE ID. LEFT ELECTION DISTRICT - See ELECTION DISTRICT. LENGTH IN FEET FROM PREVIOUS NODE Functions: 3S Work Area Format: MSW and COW Length and Format: MSW: 3 bytes packed; COW: 5 bytes numeric RJZF Description: The length between two nodes. LGI - See LIST OF GEOGRAPHIC IDENTIFIERS LION KEY Functions: 1, 1E, 3, 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: 10 bytes. Numeric Description: The LION Key identifies a record in the CSCL file and relates to predecessor file known as LION. It consists of: BOROUGH CODE ( 1 byte) FACE CODE (4 bytes) SEQUENCE NUMBER (5 bytes) LION NODE - See NODE NUMBER LION NODE ID - See NODE NUMBER LION NODE NUMBER - See NODE NUMBER LION SEGMENT ID See SEGMENT ID LION SEQUENCE NUMBER - See SEQUENCE NUMBER LIST OF ADDRESS RANGES - See LIST OF GEOGRAPHIC IDENTIFIERS LIST OF BUILDINGS ON TAX LOT Functions: 1A and BL - Long WA2 only Work Area Format: MSW and COW Length and Format: 17,500 bytes, consisting of 2,500 slots for 7-byte BINs Description: List of the BUILDING IDENTIFICATION NUMBER (BIN) of each building on the tax lot. See Chapter VI.6 . LIST OF BUILDINGS ON TAX LOT Functions: 1A and BL - Long WA2 only Work Area Format: MSW and COW Length and Format: 17,500 bytes, consisting of 2,500 slots for 7-byte BINs Description: List of the BUILDING IDENTIFICATION NUMBER (BIN) of each building on the tax lot. See Chapter VI.6 . LIST OF CROSS STREET CODES Functions: 3S Work Area Format: MSW and COW Length and Format: MSW: 8 bytes, packed decimal, consisting of 2 slots for intersecting PB5SCs. COW: 40 bytes, numeric, consisting of 5 slots for intersecting B7SCs. Description: MSW: For each intersecting street, in general, this is the lowest and second lowest PB5SCs for the cross streets, as described below in COW. COW: For each intersecting street, this is a list of up to five B7SCs, starting, in general (see Note below), with the lowest B7SC, followed by the next lowest, followed by the remaining B7SCs in ascending order. The purpose of the ordering of the first two street codes is to facilitate the ability of users to form consistent keys for geographic retrieval of application data. Note 1: In order to provide the user with the most meaningful information, \u2018normal\u2019 streets will be listed first, followed by \u2018special\u2019 streets, such as Ramps and Exits. Railroads, Shorelines and Borough Boundaries will appear next, followed by Named Intersections, CITY LIMITs, DEAD ENDs and BENDs. This will occur even if the \u2018special\u2019 streets have lower street codes than the \u2018normal\u2019. Note 2: To avoid unnecessary listing of BENDs, Function 3S lists a BEND only if the angle of the bend is 60 degrees or more. (Prior to Release 16D, a bend was listed if the angle was 20 degrees or more.) Also, a bend is not included in the list of cross streets when another real street intersects there as well. Note 3: Since Function 3S returns B7SCs, it is now possible for two streets to have the same B5SCs and different B7SCs, e.g. in Brooklyn, at the intersection of Clinton Street with Livingston Street and Aitken Place, Livingston Street and Aitken Place have the same B5SC (3-56530) but different B7SCs (3-56530-01 and 3-56530-02 respectively). LIST OF CROSS STREETS Field Names: LIST OF CROSS STREETS AT LOW ADDRESS END LIST OF CROSS STREETS AT HIGH ADDRESS END Functions: 1/1E Regular, 1/1E Extended (COW), 3, 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: - MSW: 20 bytes, consisting of slots for up to five 4-byte PB5SCs. \u2018Empty\u2019 slots contain packed zeros. \u2022 COW (Regular): 30 bytes, consisting of slots for up to five 6-byte B5SCs. \u2018Empty\u2019 slots contain either numeric zeros or blanks. \u2022 COW (1/1E Extended): 40 bytes, consisting of slots for up to five 8-byte B7SCs. \u2018Empty\u2019 slots contain either numeric zeros or blanks. This list is in addition to the B5SC (30 bytes) list. Description: A list of PB5SCs for MSW and B5SCs (and B7SCs) for COW (and COW 1/1E Extended), for up to five streets incident upon a delimiting node (endpoint) of a blockface or street segment. The number of non-empty list entries is returned in the corresponding WA2 field NUMBER OF CROSS STREETS AT (LOW or HIGH) ADDRESS END. It is possible for the list to be entirely empty. If the node lies on a borough boundary, the list may contain streets from both boroughs. Subject to the space limitation, the list may include the pseudo-streets \u2018City Limit\u2019, \u2018Dead End\u2019 and \u2018Bend\u2019. The inclusion of \u2018Bend\u2019 in the list indicates that the node is a bending point of the \u2018on\u2019 street, not that it is a bending point of a cross street (although that may also be true). The purpose of the ordering of the first two street codes is to facilitate the ability of users to form consistent keys for geographic retrieval of application data. Special handling has been given to Railroads, Shorelines, Coincident Streets and streets where two street names having different B5SCs are both valid (a.k.a. Special Address \u2018Type B\u2019 situation) Note: As a result of this special handling, the first one or two street codes in the lists of intersecting streets may not always be the lowest two street codes. For example a railroad or shoreline would now be put last in the list, even if they have lower street codes than the other intersecting streets. Some examples follow: - Consider the situation of coincident street features, e.g. 3rd Avenue and Gowanus Expressway in Brooklyn. The Gowanus Expressway is above 3rd Avenue between approximately 18th Street and 65th Street. If a user issues a Function 3 call requesting information about the segment of 3rd Avenue between 19th and 20th Streets, Geosupport will recognize that 3rd Avenue and the Gowanus Expressway are coincident streets and will not return Gowanus Expressway as an intersecting street. Please note that Geosupport will also accept as input Gowanus Expressway between 19th and 20th Streets. With this input, 3rd Avenue will not be listed as a cross street at either end. If a user issues a Function 3S call, requesting the stretch on 3rd Avenue between 40th Street and 50th Street, Geosupport will recognize that 3rd Avenue and Gowanus Expressway are coincident streets and will not list them as intersecting. - Consider the situation where a railroad is determined to be one of the cross streets . An example exists in Queens at Kneeland Street between Queens Boulevard and Dead End. A Function 3 call will return QUEENS BOULEVARD and LONG ISLAND RAILROAD as cross streets at the low end. Even though the Long Island Railroad has a numerically smaller street code than Queens Boulevard, it is listed after Queens Boulevard. - Consider the situation where two street names, with different street codes, are valid for the same blockface. An example exists in Queens where 207th Street and Clearview Expressway are both valid between 39th Avenue and Boyce Avenue. o A Function 3 call will be accepted with either street name (viz. 207th Street or Clearview Expressway) as the on-street. LIST OF CROSS STREETS AT HIGH ADDRESS END - See LIST OF CROSS STREETS LIST OF CROSS STREETS AT LOW ADDRESS END - See LIST OF CROSS STREETS LIST OF GEOGRAPHIC IDENTIFIERS (LGI) Functions: 1A and BL - regular WA2, BN Work Area Format: MSW and COW Length and Format: 756 bytes total, consisting of space for 21 36-byte entries, each entry having fields for the following data items:/td> Low House Number of Address Range High House Number of Address Range B5SC DCP-Preferred LGC BIN Entry Type Code Side of Street Indicator. Description: The List of Geographic Identifiers (LGI) is intended to provide a comprehensive geographic profile of a tax lot by listing, so far as the information is known and space allows, all of the lot\u2019s buildings; all of the street addresses and non-addressable street frontages of each building; all of the lot\u2019s \u2018vacant frontages\u2019 (i.e., street frontages of the lot not associated with buildings); and any NAPs associated with the lot. The LGI contains space for up to 21 entries. The number of non-empty entries is indicated in the WA2 field NUMBER OF GEOGRAPHIC IDENTIFIERS. The types of entries that the LGI can contain are as follows: List of Geographic Identifiers - Possible Entry Types Entry Type Code Represents Description Blank Address range A real address range of a building on a given tax lot. There are values in the Low House Number, High House Number, B5SC, DCP-Preferred LGC, Side of Street Indicator and BIN fields. A single address is represented as an address range in which the low and high house numbers are identical. B NAUB A Non-Addressable Un-named Building (NAUB) (see Chapter VI.3 ). The Low and High House Number and Side of Street Indicator fields are blank. The B5SC and DCP-Preferred LGC fields usually contain the street code and LGC, correspondingly, of the street nearest to or most accessible to the NAUB, but they may be blank. The BIN field contains a meaningful value. Note: If the NAUB has frontages on more than one street, there are multiple type B entries to represent all of the NAUB\u2019s street frontages. F Vacant Street Frontage A street frontage of the tax lot at which there are no buildings (including NAUBs) and to which no pseudo-addresses have been assigned. The Low and High House Number, BIN and Side of Street Indicator fields are empty. There are values in the B5SC and DCP-Preferred LGC fields. G NAP of a Complex A Non-Addressable Place name (NAP) of a complex of buildings and/or other geographic features, usually on a large site or superblock (see Chapter III.6 ). The house number and BIN fields are empty. The B5SC, DCP-Preferred LGC, and Side of Street Indicator fields contain the values of these items assigned to the NAP. N NAP of a A NAP of a building or other geographic feature that is not part of Simplex a complex (see Chapter III.6 ). The house number fields are empty. The B5SC, DCP-Preferred LGC, and Side of Street Indicator fields contain the values of these items assigned to the given NAP. The BIN field is non-empty only if the NAP represents a building. Q Pseudo-Address Range A pseudo-address range assigned to a vacant street frontage of the tax lot. There are values in the Low House Number, High House Number, B5SC, DCP-Preferred LGC and Side of Street Indicator fields. A single address is represented as an address range in which the low and high house numbers are identical. The BIN field is empty R Real Street of a Vanity Address Entry indicates the street and the side of that street on which the building entrance having a vanity address is really located and for which no other address for that building exists. For a discussion of vanity addresses, see Chapter V.9 . In a type R entry, the Low and High House Number fields are empty, and there are non-empty values in the B5SC, DCP-Preferred LGC, Side of Street Indicator and BIN fields. Whenever the LGI contains a type R entry, it also contains a type V entry for the associated vanity address V Vanity Address A vanity address or address range. For a detailed discussion of vanity addresses, see Chapter V.9 . There are non-empty values in the Low House Number, High House Number, B5SC, DCP-Preferred LGC, Side of Street Indicator and BIN fields. A single address is represented as an address range in which the low and high house numbers are identical. Whenever the LGI contains a type V entry, it also contains an either an address range entry or a type R entry that indicates the street on which the associated building entrance is really located. W Blank-Wall Bldg Frontage A building frontage along a street that is not associated with any addresses, such as some building facades with no entrances. The Low and High House Number and Side of Street Indicator fields are blank. There are values in the B5SC and DCP-Preferred LGC fields. The BIN field contains a meaningful value. Note: Type W entries exist only for buildings that also have at least one real address range entry. If a building has no real address ranges, the building is a NAUB, and its street frontages, if any, are represented by type B entries rather than type W entries. X NAP of a Constituent Entity of a Complex A NAP of a constituent entity of a complex. (The NAP of the entire complex is represented by a separate entry of type G.) The house number fields are empty. The B5SC, DCP-Preferred LGC and Side of Street Indicator fields contain the values of these items assigned to the NAP. The BIN field is non-empty only if the NAP represents a building. The combination of fields in an LGI entry that contain information depends on the entry type, as indicated in the following table: List of Geographic Identifiers - Which Fields Contain Values By Entry Type Entry Type Code Entry Type Low & High House Numbers B5SC LGC Side of Street Indicator BIN blank Real Address Range \u2713 \u2713 \u2713 \u2713 \u2713 B NAUB (*) (*) \u2713 F Vacant Street Frontage \u2713 \u2713 G NAP of a complex \u2713 \u2713 \u2713 N NAP of a complex \u2713 \u2713 \u2713 (\\**) Q Pseudo-Address Range \u2713 \u2713 \u2713 \u2713 R Real Street of Vanity Address \u2713 \u2713 \u2713 \u2713 V Vanity Address \u2713 \u2713 \u2713 \u2713 \u2713 W Blank-Wall Building Fa\u00e7ade \u2713 \u2713 \u2713 X NAP of a constituent entity of a complex \u2713 \u2713 \u2713 (\\**) (*) NAUB entries may or may not contain B5SC and LGC values. An entry for a NAUB contains a B5SC value and an LGC value only if the GSS staff has determined that the NAUB fronts on, is adjacent to or is principally accessible from a particular street. (**) The BIN field is non-empty only if the NAP represents a building. The LGI\u2019s entries are ordered so that entries with non-empty BINs are listed first, grouped by BIN. Except for a special case (alternative borough for Marble Hill and Rikers Island - see Chapter V.7 ), if the input address is a real address, the first group of entries in the LGI are those for the BIN corresponding to the input address, and (except for alternative street records for Ruby Street - see Chapter V.8 ) the address range encompassing the input address is the very first entry in the LGI. After all the entries with non-empty BINs are listed, any entries with empty BINs, such as entries for pseudo-address ranges, are listed in no particular order as space allows. If the input address is a pseudo-address range, it may or may not appear in the LGI, depending on space and on the order in which the non-BIN entries happen to be listed. LIST OF GEOGRAPHIC IDENTIFIERS OVERFLOW FLAG - See LGI OVERFLOW FLAG LIST OF INTERSECTING STREETS \u2013 See also LIST OF CROSS STREETS Function: 2 Work Area Format: MSW and COW Length and Format: MSW: 20 bytes, consisting of slots for up to five 4-byte PB5SCs. \u2018Empty\u2019 slots contain packed zeros. COW: 30 bytes, consisting of slots for up to five 6-byte B5SCs. \u2018Empty\u2019 slots contain numeric zeros or blanks. Description: A list of PB5SCS for MSWs and B5SCs for COWs for up to five streets incident upon the intersection. The field NUMBER OF INTERSECTING STREETS contains the number of non-empty entries in the list. If the intersection lies on a borough boundary, the list may contain streets from both boroughs. Subject to the space limitation, the list may include the two input streets, and may include the pseudo-streets \u2018City Limit\u2019 and \u2018Dead End\u2019. The list never includes the pseudo-street \u2018Bend\u2019. The list always contains at least one entry (it contains precisely one entry in the case of a bending point of a street at which there are no other streets). The street codes of the input streets may, or may not, be included in the list (depending upon their numerical value.) Note, special handling has been given to Railroads, Coincident Street Features, etc. As a result of this special handling, the first one or two street codes in the list of intersecting streets may not always be the lowest two street codes. See LIST OF CROSS STREETS for further description and examples of the special handling. LIST OF SEGMENT IDS Functions: 3 and 3C Work Area Format: COW Length and Format: 500 bytes, consisting of a count of segment ids and 70 slots for 7-byte Segment IDs Description: This list is generated only if Auxiliary Segment Switch is set to \u2018Y\u2019. See Chapter VII.4 and Appendix13 . LIST OF STREET CODES Functions: 1*, 2, 3*, BB, BF Work Area Format: COW Length and Format: 80 bytes, consisting of 10 fields for B7SCs Description: List of borough and 7-byte street codes, corresponding to the LIST OF STREET NAMES. The number of street codes in the list is returned in the WA1 output field NUMBER OF STREET CODES AND STREET NAMES IN LIST. LIST OF STREET NAMES (WA1 output field) Functions: 1*, 2, 3*, BB, BF Work Area Format: MSW and COW Length and Format: 320 bytes, consisting of 10 fields for street names, each 32 bytes. Description: This field is used by several Geosupport features (see below) to return a list of street names. The number of street names in the list is returned in the WA1 output field NUMBER OF STREET NAMES IN LIST for MSWs, and in the WA1 output field NUMBER OF STREET CODES AND STREET NAMES IN LIST for COWs. The similar names feature uses the List of Street Names to return up to ten street names deemed \u2018similar\u2019 to a rejected input street name (see Chapter III.5 ). The browse functions , Functions BB and BF, use the List of Street Names to return up to ten normalized street names in alphabetical order as part of a street name browse (see Chapter III.7 ). The local street name validation feature uses the List of Street Names to return up to four locally valid alias street names corresponding to a street name rejected as locally invalid (see Chapter IV.5 ). The cross street names feature (see CROSS STREET NAMES FLAG) uses the List of Street Names to return street names corresponding to the street codes in the LIST OF CROSS STREETS (Functions 1, 1E, 3 and 3C) or the LIST OF INTERSECTING STREETS (Function 2). In the case of Functions 1, 1E, 3 and 3C, the first five 32-byte street name fields in the List of Street Names are used for the street names corresponding to the street codes in the LIST OF CROSS STREETS AT LOW ADDRESS END; the second five 32-byte street name fields in the List of Street Names are used for the street names corresponding to the street codes in the LIST OF CROSS STREETS AT HIGH ADDRESS END. The actual number of street names is found in Work Area 2 in the fields which provide the number of cross streets at each end of the street segment. In the case of Function 2, the first five 32-byte street name fields in the List of Street Names are used for the street names corresponding to the street codes in the LIST OF INTERSECTING STREETS. The actual number of street names is found in Work Area 2 in the field which provides the number of intersecting streets at the specified intersection. LOCATIONAL STATUS OF SEGMENT Functions: 3, 3C Work Area Format: MSW and COW Length and Format: 1 byte Description: Indicates locational status of segment per codes below. Code Meaning \u2018H\u2019 Segment internal to a block, but not a Dead End (A Land Hook) \u2018I\u2019 Dead End Segment \u2018X\u2019 Tract Boundary Segment (other than borough boundary) \u20181' Segment bordering Manhattan \u20182' Segment bordering Bronx \u20183' Segment bordering Brooklyn \u20184' Segment bordering Queens \u20185' Segment bordering Staten Island \u20189' Segment bordering City Limits LONGITUDE - See LATITUDE LOW HOUSE NUMBER - See HOUSE NUMBER MARBLE HILL/RIKERS ISLAND FLAG - See ALTERNATIVE BOROUGH FLAG M MODE SWITCH Functions: 1, 1E, 1A, 3, 3C, BL, BN Environment: NMF Only - Mode Switch of 'E' is supported only in a non-mainframe environment. Work Area Format: COW Only Length and Format: 1 byte Description: 'X' indicates request for Extended Work Area 2 for the supported functions. These extended work areas contain street names in addition to Street Codes. Users no longer have to make separate D, DG, or DN calls to get the street names. In addition, CSCL data is returned in the extended Work Area 2. See [Appendix 13](../appendix13/) for the Work Area layouts. Also, see Chapter II.7 . 'E' indicates request for Enhanced Work Area 2 for Functions 3 and 3C only. The enhanced Work Area 2 (WA2) returns all the information in the extended WA2 and also returns more B7SCs, instead of B5SCs. For example, Functions 3 and 3C return B7SCs in the list of cross streets at the low address end and the high address end of the segment. This gives the user easier access to a finer definition of the streets. Code Meaning \u2018X\u2019 Extended information in Extended WA2 requested \u2018E\u2019 Enhanced information in Enhanced WA2 requested. (Non-mainframe environment Functions 3 and 3C only.) Blank Extended / Enhanced information not requested (default) N NEIGHBORHOOD TABULATION AREA (NTA) CODE Field Names: NTA or NTA CODE Functions: 1, 1 Extended, 1E, 1E Extended, 1B, 3, 3 Extended, 3C, 3C Extended Work Area Format: COW Length and Format: 4 bytes alphanumeric Description: The Neighborhood Tabulation Areas (NTAs) are aggregations of census tracts that reflect the 2010 Census. The NTAs are assigned a 4-byte code and a 75-byte name. They are used by the Population Division of the Department of City Planning. See [Appendix 16](../appendix16/) for a description of the NTA\u2019s history and significance. The first two bytes of the NTA code are an alphabetic borough code as follows: Code Borough MN Manhattan BX Bronx BK Brooklyn QN Queens SI Staten Island The remaining two bytes are numeric and uniquely define the NTA. NODE ID - See NODE NUMBER NODE NUMBER (a.k.a. NODE ID) Field Names: FROM NODE FROM NODE ID TO NODE TO NODE ID Functions: 2, 3 (COW only), 3C (COW Only), 3S (COW Only), 1B (COW Only) Work Area Format: MSW and COW Length and Format: 7 bytes. Numeric Description: A node is an endpoint of a geographic feature segment represented in CSCL/LION. Most nodes are points where a feature bends or terminates or where two features intersect in CSCL/LION. Each node has a node ID assigned to it, which is unique in the entire city. Node ID assignments are permanent; if a node is deleted from CSCL, its node ID is retired and is never reassigned to a different node. A Node ID may be used to identify an intersection or the end points of a segment. An end point node is often referred to as a From Node or a To Node. NORMALIZED HOUSE NUMBER - See HOUSE NUMBER NTA - See NEIGHBORHOOD TABULATION AREA (NTA) CODE NTA CODE - See NEIGHBORHOOD TABULATION AREA (NTA) CODE NTA NAME - See also NEIGHBORHOOD TABULATION AREA (NTA) CODE Field Names: NTA NAME Functions: 1 Extended, 1E Extended, 1B, 3 Extended, 3C Extended Work Area Format: COW Length and Format: 75 bytes alphanumeric Description: See NEIGHBORHOOD TABULATION AREA (NTA) CODE NUMBER OF BUILDINGS ON TAX LOT Functions: 1A, BL - long WA2 only Work Area Format: MSW and COW Length and Format: 4 bytes numeric. Description: Indicates the number of entries in the LIST OF BUILDINGS. Maximum value is 2,500 NUMBER OF CROSS STREETS Field Names: NUMBER OF CROSS STREETS AT LOW ADDRESS END, NUMBER OF CROSS STREETS AT HIGH ADDRESS END Functions: 1, 1E, 3, 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: One byte, containing a numeric digit from 0 to 5. Description: Indicates the number of non-empty entries in the corresponding LIST OF CROSS STREETS. NUMBER OF CROSS STREETS AT HIGH ADDRESS END - See NUMBER OF CROSS STREETS NUMBER OF CROSS STREETS AT LOW ADDRESS END - See NUMBER OF CROSS STREETS NUMBER OF GEOGRAPHIC IDENTIFIERS Functions: 1A and BL - regular WA2 only, BN, AP Work Area Format: MSW and COW Length and Format: 2 bytes for MSW; 4 bytes for COW Description: Indicates the number of entries in the LIST OF GEOGRAPHIC IDENTIFIERS. For Function AP, the number is always \u20180001\u2019 NUMBER OF INTERSECTING STREETS Functions: 2 Work Area Format: MSW and COW Length and Format: One byte, containing a numeric digit from 1 to 5. Description: Indicates the number of non-empty entries in the LIST OF INTERSECTING STREETS. NUMBER OF PARKING LANES Functions: 1/1E Extended, 1B, 3 Extended, 3C Extended Work Area Format: COW Length and Format: 2 bytes, RJBF. Description: The number of lanes in a carriageway (roadway) that are reserved for parking of vehicles. The number of parking lanes were determined by DoITT\u2019s consultants working on the planimetric feature classes for NYC. NUMBER OF STREET CODES AND STREET NAMES IN LIST Functions: 1*, 2, 3*, BB, BF Work Area Format: COW Length and Format: 2 bytes, Numeric Description: Indicates the number of street names returned in the LIST OF STREET NAMES, corresponding to the number of street codes returned in the LIST OF STREET CODES.. NUMBER OF STREET FRONTAGES OF LOT Functions: 1A, BL, BN Work Area Format: MSW and COW Length and Format: 2 bytes, RJZF. Description: Indicates the number of streets on which the given lot has at least one frontage. NUMBER OF STREET NAMES IN LIST (WA1 output item) Functions: 1*, 2, 3*, BB, BF Work Area Format: MSW Length and Format: 2 bytes, packed decimal Description: Indicates the number of street names returned in the LIST OF STREET NAMES. NUMBER OF TOTAL LANES Functions: 1/1E Extended, 1B, 3 Extended, 3C Extended Work Area Format: COW Length and Format: 2 bytes, RJBF. Description: The total number of lanes in a carriageway (roadway) including travel lanes and parking lanes. The total number of lanes were determined by DoITT\u2019s consultants working on the planimetric feature classes for NYC. NUMBER OF TRAVEL LANES Functions: 1/1E Extended, 1B, 3 Extended, 3C Extended Work Area Format: COW Length and Format: 2 bytes, RJBF Description: The number of lanes in a carriageway (roadway) that are designated for the movement of vehicles traveling from one destination to another. The number of travel lanes were determined by DoITT\u2019s consultants working on the planimetric feature classes for NYC. P PARKING LANES - See NUMBER OF PARKING LANES PLATFORM INDICATOR - See WORK AREA FORMAT INDICATOR POLICE PATROL BOROUGH Functions: 1, 1X, 1E, 1EX, 2, 2W, 3, 3X, 3C, 3CX, 1B Work Area Format: COW Only Length and Format: 2 bytes Description: Police Patrol Boroughs are sub-borough geographic areas defined by the Police Department. They are composed of Police Precincts. Since the Police Department is supporting the Police Patrol Borough field, it is recommended that it be used.. Geosupport still returns the 1-byte POLICE PATROL BOROUGH COMMAND field to support those existing applications that access it. Code Meaning MS Manhattan South MN Manhattan North BX Bronx BS Brooklyn South BN Brooklyn North QN Queens North SI Staten Island QS Queens South POLICE PATROL BOROUGH COMMAND (See also POLICE PATROL BOROUGH) Functions: 1, 1E, 2, 3, 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: 1 byte Description: These are sub-borough geographic areas defined by the Police Department. They are composed of Police Precincts. Code Meaning 1 Manhattan South 2 Manhattan North 3 Bronx 4 Brooklyn South 5 Brooklyn North 6 Queens North 7 Staten Island 8 Queens South Note: It is recommended that you use the POLICE PATROL BOROUGH field (not the POLICE PATROL BOROUGH COMMAND field) since the Police Department is supporting the POLICE PATROL BOROUGH field. POLICE PRECINCT Functions: 1, 1E, 2, 3, 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: 3 bytes. RJZF. Description: Police Patrol Borough Commands are sub-divided into Police Precincts which are defined by the Police Department POLICE SECTOR Functions: 1/1E Extended, 1B, 2, 2W, 3 Extended, 3C Extended Work Area Format: COW Length and Format: 4 bytes. RJBF. Description: In order to support Neighborhood Policing, the NYC Police Department has divided each precinct into four or five fully-staffed Police Sectors. The Police Sectors correspond, as much as possible, to the boundaries of actual established neighborhoods. The Police Sector field consists of the Precinct Number followed by a letter, e.g. 114A. POLICE SERVICE AREA Functions: 1/1E Extended, 1B Work Area Format: COW Length and Format: 1 byte Description: The NYC Police Department Housing Bureau is responsible for the safety of residents, employees, and visitors in New York City Housing Authority developments. The Housing Bureau Police are stationed in Police Service Areas (PSAs), each of which provides services to a set of housing developments. Note that not all housing developments are assigned to a PSA. The Police Service Area field consists of one byte that designates a PSA, e.g. PSA 3 patrols housing developments in several precincts in Brooklyn North. When an address is not part of a housing development, the field is blank. PUBLIC USE MICRODATA AREA (PUMA) CODE - See PUMA CODE PUMA CODE Field Names: PUMA CODE Functions: 1 Extended, 1E Extended, 1B, 3 Extended, 3C Extended Work Area Format: COW Length and Format: 5 bytes, RJZF Description: PUMAs (Public Use Microdata Areas) are approximations of New York City's Community Districts which were developed for use with the Census Bureau's Public Use Microdata Samples (PUMS). In order to make the boundaries consistent with PUMAs, NTAs were created using whole census tracts, from the 2010 census, within PUMAs. For more information on the history and significance of NTAs and PUMAs, see Appendix 16 . See also NEIGHBORHOOD TABULATION AREA (NTA) CODE R REAL STREET ONLY FLAG Functions: 3S Work Area Format: COW Length and Format: 1 byte. Alphabetic Description: Code Value Meaning Blank All streets are returned R Real streets only (not Bends or Non-Street Features RIGHT 1990 CENSUS TRACT - See CENSUS TRACT. RIGHT 2000 CENSUS BLOCK - See CENSUS BLOCK. RIGHT 2000 CENSUS BLOCK SUFFIX - See CENSUS BLOCK SUFFIX. RIGHT 2000 CENSUS TRACT - See CENSUS TRACT. RIGHT 2010 CENSUS BLOCK - See CENSUS BLOCK. RIGHT 2010 CENSUS BLOCK SUFFIX - See CENSUS BLOCK SUFFIX. RIGHT 2010 CENSUS TRACT - See CENSUS TRACT. RIGHT ASSEMBLY DISTRICT - See ASSEMBLY DISTRICT. RIGHT BLOCKFACE ID - See BLOCKFACE ID. RIGHT ELECTION DISTRICT - See ELECTION DISTRICT. ROADBED REQUEST SWITCH Functions: 1 1, 1E, 3S, 1B (COW only) Work Area Format: MSW and COW Length and Format: 1 byte Description: Indicates request for Roadbed information for roads that are divided into two or more roadbeds. If Roadbed information is requested for a street that is not divided, Geosupport returns the generic information. For functions 1 and 1E, the Segment Type Code will indicate the type of information that is being returned. For more information on function 3S see Chapter VII.6 . Code Meaning \u2018R\u2019 Roadbed information requested Blank Generic (non-roadbed) information requested (default) RPAD BUILDING CLASSIFICATION CODE Functions: 1A, BL, BN, 1B (COW only) Work Area Format: MSW and COW Length and Format: 2 bytes Length and Format: 2 bytes Description: This is a set of land use/building classification codes defined by the Real Property Assessment Division (RPAD) of the Department of Finance. If a tax lot has more than one building or land use, RPAD assigns the building class code they deem to describe best the \u2018principal\u2019 building or the \u2018predominant\u2019 land use on the tax lot. The values and meanings of this set of codes can be obtained from the Department of Finance. RPAD CONDO IDENTIFICATION NUMBER Functions: 1A, BL, BN, 1B (COW only) Work Area Format: MSW and COW Length and Format: 4 bytes Description This is an identification number assigned by the Department of Finance to each condominium in the city. It identifies the condominium as a whole and not a specific condominium unit. RPAD SELF-CHECK CODE (RPAD SCC) FOR BBL Functions: 1A, BL, BN, 1B (COW only) Work Area Format: MSW and COW ANNOUNCEMENT: As of Geosupport Release 19C (on or about August 2019), the RPAD SCC fields will all contain blank values. In Release 19B the RPAD SCC for some BBLs may also be affected. See the background information below. Background information: The \u201cRPAD SCC\u201d values are derived from the Department of Finance\u2019s (DOF) RPAD file. DOF\u2019s new version of the RPAD file, now called the Property Master file, does not contain \u201cRPAD SCC\u201d values since DOF has phased them out. For Release 19B , Geosupport will continue to return existing \u201cRPAD SCC\u201d values based on the old RPAD file; however, with Release 19C , the \u201cRPAD SCC\u201d fields will all contain blank values. Description: For each BBL value, the Department of Finance has computed a Self-Check Code (SCC). This is a one-digit number computed from the BBL value using an algorithm chosen by DOF. The purpose of the SCC is to assist in validating key-entered BBLs. For more information on SCCs inquire to the information technology division of the Department of Finance. S SANBORN VOLUME AND PAGE (Deprecated) Functions: 1A, BL, BN, 2, 1B (COW only) Work Area Format: MSW and COW Length and Format: The Volume field is 3 bytes (2-digit volume number + 1-digit character suffix). The Page field is 4 bytes (3-digit page number + 1-digit character suffix). Description: Due to the lack of updates available to DCP, this field is deprecated. The Sanborn Map Company maintains a 79 volume atlas of New York City geography that is widely used by New York city agencies. The atlases contain approximately 6000 maps covering all five boroughs - SANITATION BULK ITEMS PICKUP Functions: 1/1E, 1/1E Extended, 1B Work Area Format: COW Length and Format: 5 bytes Description: This field contains the schedule for the Department of Sanitation (DSNY) pilot program of scheduled Bulk Items Pickup. Release 16D includes the implementation of scheduled collection of disposed Bulk Items for specific locations across the City (previously, disposed bulk items were collected in these areas on regular refuse collection. This field indicates which days of the week the Department of Sanitation will pick up recycling at the given address. See SANITATION ORGANICS RECYCLING PICKUP for the codes. SANITATION COLLECTION SCHEDULING SECTION AND SUBSECTION Functions: 1, 1E, 1B (COW only), 2 (COW only??) Work Area Format: MSW and COW Length and Format: 2 bytes Description: District Sections and Subsections defined by the Department of Sanitation for waste collection. SANITATION DISTRICT Work Area Format: MSW and COW Length and Format: 3 bytes. Numeric. The first byte is the Borough Code, and the second and third bytes are the District Number. Description: Districts defined by the Department of Sanitation for waste collection. SANITATION ORGANICS RECYCLING PICKUP Functions: 1, 1E, 1/1E Extended, 1B Work Area Format: COW Length and Format: 5 bytes Description: Indicates which days of the week the Department of Sanitation (DSNY) will pick up organics (compostable waste) recycling at the given address. Organics recycling is currently only available in pilot areas. In Release 16D, the pilot program was expanded to include more \u2018Large Buildings (+10 units)\u2019 (as defined by DSNY) Value Description M Monday T Tuesday W Wednesday TH Thursday F Friday S Saturday E \u2018E\u2019 is used in combination with a day of the week (as noted above) to indicate that collection occurs \u2018every\u2019 week on that day. Z Recycling is collected privately SANITATION RECYCLING PICKUP Functions: 1, 1E, 1B (COW only)?? Work Area Format: MSW and COW Length and Format: 3 bytes Description: Indicates which days of the week the Department of Sanitation will pick up recycling at the given address. See SANITATION ORGANICS RECYCLING PICKUP for the codes. SANITATION REGULAR PICKUP Functions: 1, 1E, 1B (COW only) Work Area Format: MSW and COW Length and Format: 5 bytes Description: Indicates which days of the week the Department of Sanitation will pick up non-recycling waste at the given address. See SANITATION ORGANICS RECYCLING PICKUP for the codes. SCHOOL DISTRICT (previously known as Community School District) Functions: 1, 1E, 2, 3, 3C, 1B (COW) Work Area Format: MSW and COW Length and Format: 2 bytes Description: School district code SEGMENT AZIMUTH Functions: 3, 3C Work Area Format: MSW and COW Length and Format: 3 bytes Description: This item represents the direction in which the segment lies on the earth\u2019s surface, expressed as an angle in degrees measured counterclockwise from due east. The segment is considered to be pointing in the direction of increasing addresses, and the azimuth value can range from 0 to 359 degrees, inclusive. For example, a segment pointing due east has an azimuth of 0; one pointing due north has an azimuth of 90; one pointing due west has an azimuth of 180; one pointing halfway between due west and due south (i.e., pointing due southwest) has an azimuth of 225. SEGMENT ID Functions: 1 and 1E (MSW: Long WA2 only), 1 and 1E (COW), 3, 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: 7 bytes. RJZF Description: Identifies, uniquely within the entire city, a geographic feature segment represented in the CSCL/LION file. SEGMENT LENGTH IN FEET Functions: 1, 1E, 3, 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: MSW: Fns 1 and 1E - 5 bytes numeric, Fns 3 and 3C - 3 bytes packed decimal COW: Fns 1, 1E, 3, 3C - 5 bytes numeric Description: Except for curved segments (see Curve Flag) , the Segment Length is computed from the Spatial Coordinates of the segment\u2019s endpoints, as digitized in the LION file. For curved segments, the Segment Length is computed by summing the lengths of the small straight line segments that approximate the curve in the GIS version of LION; this is a more accurate approximation to the true arc length of the curve than would be the segment\u2019s \u2018secant length\u2019, that is, the straight line distance between the curve\u2019s extreme endpoints. In the case of Functions 3 and 3C, if the input data define a street stretch encompassing more than one segment (because of a T-intersection or bend), the Segment Length returned is the sum of the lengths of the constituent segments of the stretch. Similarly for Functions 1 and 1E, if the input lies on a segment that is generated from multiple segments, the Segment Length returned is the sum of the lengths of the constituent segments. In all cases, the Segment Length has a very approximate level of accuracy only, and should not be used in applications requiring high precision. SEGMENT ORIENTATION Functions: 3, 3C Work Area Format: MSW and COW Length and Format: 1 byte character Description: This item is a set of codes grouping the possible azimuth values of a segment into eight categories. The categories are \"approximately\" due north, south, east and west, and the four quadrants of the rectangular coordinate system for segments that do not lie approximately due north, south, east or west. \"Approximately\" as used here means \"within 5 degrees\". In Manhattan, all orientation codes are defined with a 30\u2011degree clockwise shift (i.e., 30 is subtracted from the azimuth value) in order to conform to the conventional concept that the midtown streets and avenues lie due east\u2011west and due north\u2011south, respectively. For example, \"approximately due north\" means \"within 5 degrees of due north\"; for the boroughs other than Manhattan, this corresponds to the range of azimuth values from 85 to 95; in Manhattan, the corresponding azimuth value range is 55 to 65. There is a ninth orientation category, with a code value of \u2018U\u2019, meaning Geosupport could not determine the segment\u2019s orientation because of a problem with the segment\u2019s Spatial Coordinates . All occurrences of an orientation code of \u2018U\u2019 should be reported to Geographic Systems Section staff. Code Value Meaning Manhattan Other Boroughs U Orientation is undefined E Approximately due east 320-340 0-10 and 350-360 1 First quadrant, i.e. northeasterly 341-359 11-79 and 0-49 N Approximately due north 50-70 80-100 2 Second quadrant, i.e. northwesterly 71-139 101-169 W Approximately due west 140-160 170-190 3 Third quadrant, i.e. southwesterly 161-229 191-259 S Approximately due south 230-250 260-280 4 Fourth quadrant, i.e. southeasterly 251-319 281-349 SEGMENT TYPE CODE Functions: 1, 1E, 3, 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: 1 byte Description: Indicates type of segment Code Value Meaning \u2018U\u2019 Undivided \u2018G\u2019 Generic \u2018B\u2019 Both Generic and Roadbed \u2018R\u2019 Roadbed \u2018C\u2019 Connector \u2018E\u2019 Exit/Entrance Ramp \u2018T\u2019 Terminator \u2018F\u2019 Faux segment (used when a street or ramp physically ends at a roadbed, but connectivity needs to be maintained with the generic segment.) SEQUENCE NUMBER Functions: 1, 1E, 3, 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: 5 bytes Description: Identifies a CSCL/LION record uniquely within Face Code. Generally,Sequence Numbers are assigned in the geographic order in which the corresponding segments occur along the geographic feature identified by the given face code. The Borough Code, Face Code and Sequence Number concatenated form the LION key, which serves as a unique identifier for one CSCL/LION record. SIDE OF STREET INDICATOR Functions: 1, 1E, 1A - regular WA2, 3C Work Area Format: MSW and COW Length and Format: 1 byte character Description: This field indicates on which side of the street, left or right, the blockface containing the input address lies. Left and right are defined with respect to the direction of increasing addresses along the \u2018on\u2019 street. Code Value Meaning L Block face is on left side of street with respect to direction of increasing address R Generic SNOW PRIORITY - See DSNY SNOW PRIORITY SPATIAL COORDINATES (See also SPATIAL COORDINATES OF TAX LOT CENTROID) Functions: 1, 1B (blockface information), 1E, 2, 3 Extended, 3C Extended, AP (For Function 1A, BL, BN, 1B (property level information) see also SPATIAL COORDINATES OF TAX LOT CENTROID) Work Area Format: MSW and COW Length and Format: Spatial coordinates consist of two fields, an X Coordinate and a Y Coordinate, each 7 bytes RJZF. Description: Spatial coordinates are a pair of numbers that specify a location on the earth\u2019s surface. Geosupport returns spatial coordinates for an input address (Functions 1, 1B (blockface information), 1E, and AP), intersection (Function 2), and nodes at the end of a blockface (Functions 3 Extended and 3C Extended). Spatial coordinates are often used in conjunction with separate computer mapping and Geographic Information System (GIS) software to generate maps and for spatial analysis, although the Geosupport System does not itself provide users with such capabilities. Note: For Functions 1, 1B (blockface information) and 1E, the spatial coordinates that Geosupport returns are imprecise approximations of real-world locations, and are not appropriate for use in applications that require a high level of spatial accuracy. Spatial coordinates are expressed various geodetic coordinate systems, of which latitude/longitude is a well-known example. The coordinate system that Geosupport uses is known as the State Plane Coordinate (SPC) system. The SPC system is based upon the fact that, in a small enough geographic area, the earth\u2019s surface can be assumed to be flat without introducing a significant error. In the SPC system, each state of the U.S. is subdivided into zones small enough to model as planar areas. In each SPC zone, a Cartesian coordinate system is established, with the X and Y coordinate axes oriented due east and due north, respectively, and the origin selected to be a point well to the southwest of the entire zone. (The origin is so selected to insure that the X and Y coordinates of all points within the zone are positive values.) The SPC zone that New York City is in, and which Geosupport uses, is called the New York-Long Island zone, NAD 83. In the SPC system, one unit of X or Y represents one foot of distance on the ground. A major advantage of the SPC system over other map projection systems is the ease of calculating the distance between two points. In the case of Functions 1, 1B (blockface information) and 1E , if the street segment on which the input address lies is a straight line segment or an arc of a circle, Geosupport computes and returns output spatial coordinates using a complex algorithm, a detailed description of which is beyond the scope of this document. If, however, the input address lies on a irregularly curved geographic feature (see Curve Flag ), Functions 1, 1B (blockface information), and 1E return blanks in the spatial coordinate fields. Functions 1, 1B (blockface information), and 1E\u2019s spatial coordinates algorithm produces a point position based on how the input address is prorated with respect to the administrative address range allocated to the entire blockface. In addition, the computed point is positioned slightly set off from the segment, on the side of the street where the input address is located. This offset is graphically desirable and also insures that the point will fall within the interiors of the proper political and administrative district boundary polygons for the given address. The computed point is a rough approximation to the location of the input address, intended to be used only for thematic mapping and other purposes that do not require a high level of spatial accuracy. The spatial coordinates returned by Functions 1/1E/1B (blockface information) for NAPs and Vanity Addresses (see Chapter V.9 ) were an estimate calculated by Geosupport. As of Version 11.2, Geosupport will use the Citywide Street Centerline file (CSCL) X-Y Coordinates. The CSCL information guarantees that the X-Y coordinates fall within the actual location of the NAP or Vanity Address. In the case of Function 2 , the spatial coordinates returned are those of the LION node that corresponds to the input street intersection. Those coordinates represent an approximate center point of the intersection. In the case of Function 3 Extended and Function 3C Extended , the spatial coordinates returned are those of the nodes at the end of the blockface. Those coordinates represent an approximate center point of the intersection. In the case of Function AP , the spatial coordinates returned are those of the Address Point which is within 5 feet of the entrance(s) of the building. In the case of Functions 1A, BL, BN, 1B (property level information) ,the spatial coordinates returned are those of the Tax Lot Centroid. See SPATIAL COORDINATES OF THE TAX LOT CENTROID SPATIAL COORDINATES OF THE TAX LOT CENTROID Functions: 1A, BL, BN, 1B (COW only) Work Area Format: MSW and COW Length and Format: Spatial coordinates consist of two fields, an X Coordinate and a Y Coordinate, each 7 bytes RJZF. Description: Note: Internal Label Points and Annotation Points are no longer used They are replaced by Tax Lot Centroid. The Tax Lot Centroid is created in ESRI\u2019s ArcGIS software using the Department of Finance\u2019s Digital Tax Map (DTM). The coordinates associated with the Tax Lot Centroid are guaranteed to be within the property, unlike the coordinates returned by either Function 1 or Function 1E, where the Spatial Coordinates are an approximation based in the address range of the particular street the address is on. In addition, the Function 1/1E Spatial Coordinates always fall in the street bed and not within a tax lot, and most likely will not be adjacent to the tax lot the address is in. Additionally, when using Function 1A, the same coordinates will be returned no matter which of a tax lot\u2019s addresses is used as input. There are a few properties which do not have a Tax Lot Centroid; consequently, no coordinates will be returned for these properties. See SPATIAL COORDINATES for a description of the coordinate system (SPC) used by Geosupport. SPECIAL ADDRESS GENERATED RECORD FLAG (a.k.a. SAF FLAG or SPECIAL ADDRESS FLAG) Functions: 1, 1E, 1B (COW only) Work Area Format: MSW and COW Length and Format: 1 byte character Description: A non-blank value in this flag indicates one of a variety of special addressing situations. Code Value Meaning \u2018A\u2019 The address range returned in this work area is alternative to the address range that is stored in LION for this blockface. This case arises most commonly when the input address is an old (superseded) address on a blockface on which the buildings were re-numbered at some time in the past. For such an input address, the address range returned in this work area is the old address range, whereas the current address range is stored in LION. Another situation in which this flag is \u2018A\u2019 is when the given street segment has continuous parity address ranges on both sides of the street, such as when buildings are numbered consecutively around the arc of a cul-de-sac. \u2018B\u2019 The input street name or five-digit street code is different from that stored in LION for this blockface. This case arises when two street names having different B5SCs are both valid along a street or portion of a street. These are situations in which treating the two street names as aliases would result in an address range overlap. \u2018C\u2019 The input address pertains to Ruby Street, a street along the Brooklyn-Queens border that has a unique addressing situation. See ChapterV.8 . \u2018D\u2019 The input address involves a duplicate address situation. See Chapter V.6 . \u2018E\u2019 The input address is in one of the neighborhoods in which the name of the neighborhood can serve as an alternative street name for the streets in that neighborhood. Two Bronx neighborhoods, Edgewater Park and Harding Park, have this characteristic. \u2018G\u2019 The input name or street code corresponds to a non-addressable place name of a complex. A complex is a geographic feature that contains constituent entities that are separately geographically identifiable. Typical examples of complexes include airports, housing projects and university and hospital campuses. See Chapter III.6 . \u2018N\u2019 The input name or street code corresponds to a non-addressable place name of a \u2018stand-alone\u2019 geographic feature (a geographic feature that is neither a complex nor a constituent entity of a complex). Typical examples are individual named buildings, such as Empire State Building, Shea Stadium, Carnegie Hall. See Chapter III.6 . \u2018O\u2019 The blockface contains out-of-sequence and/or opposite-parity addresses. An out-of-sequence address contains a house number that is out of sequence with those of the immediately adjacent buildings. An opposite-parity address contains a house number that is of the opposite parity to the predominant parity on the blockface. See Chapter V.10 . \u2018P\u2019 The input address contains an addressable place name. Example: 2 Penn Plaza. See Chapter III.6 . \u2018S\u2019 The input address contains a house number suffix and is either the first or last address on this blockface. \u2018V\u2019 The input address is a \u2018vanity address\u2019, that is, an address in which the street name refers to a different street than the one on which the referenced building entrance is actually located. See Chapter V.9 . \u2018X\u2019 The input data specify a non-addressable place name of a constituent entity of a complex. Examples: AVERY FISHER HALL and NEW YORK STATE THEATER are names of constituent entities of the complex LINCOLN CENTER. See Chapter III.6 SPEED LIMIT Function: 1/1E Extended, 1B, 3/3C Extended Work Area Format: COW Length and Format: 2 bytes, blank if no data. Description: The Speed Limit field contains the speed limit, in miles per hour, of the paved area of the input location. Speed Limit data was provided by the NYC Department of Transportation and currently does not cover the entire city. Additional data will be made available in future releases. SPLIT ELECTION DISTRICT FLAG Function: 1E, 1B (COW only) Work Area Format: MSW and COW Length and Format: 1 byte Description: Code Value Meaning \u2018S\u2019 Block face is split among two or more election districts blank Block face lies entirely within an election district STATE SENATORIAL DISTRICT Function: 1E, 1B (COW only), 2 (COW only) Work Area Format: MSW and COW Length and Format: 2 bytes. Numeric. Description: A district of the upper house of the New York State legislature. Consists of an aggregation of Election Districts/td> STREET ATTRIBUTE INDICATOR (a.k.a. ATTRIBUTE BYTE) Functions: WA1 output field - 1, 1A, 1B, 1E, 1N, AP, D, DG, DN Work Area Format: MSW and COW Length and Format: 1 byte character Description: Indicates certain characteristics of selected streets Code Value Meaning \u2018A\u2019 Address Place Name \u2018B\u2019 Name of bridge \u2018C\u2019 Building Improvement District (BID) \u2018D\u2019 Duplicate Address Pseudo-Street Name (DAPS) \u2018E\u2019 Input street is entirely in Edgewater Park (a Bronx neighborhood that has special addressing characteristics). \u2018F\u2019 Input street is partly in Edgewater Park and partly outside of it. \u2018G\u2019 NAP of a complex. \u2018H\u2019 All house numbers on input street are hyphenated. \u2018I\u2019 Intersection Name \u2018J\u2019 Non-physical Boundary Feature \u2018M\u2019 House numbers on input street are of mixed hyphenation, i.e., some are hyphenated and some are not. \u2018N\u2019 Input street is a Non-Addressable Place Name (NAP) \u2018O\u2019 Shore Line \u2018P\u2019 Pseudo-street name \u2018R\u2019 Rail Line \u2018S\u2019 Front-Truncated Street Name \u2018T\u2019 Tunnel \u2018U\u2019 Misc. structure \u2018X\u2019 NAP Of a Constituent Entity of a Complex \u2018Z\u2019 Exit or Entrance Rampse Blank None of the above. In particular, all addresses on the input street are un-hyphenated STREET NAME NORMALIZATION FORMAT FLAG Functions: 1, 1A, 1E, 1N, 2, 3, 3C, 3S, D, DG, DN, 1B (COW only) Work Area Format: MSW and COW Length and Format: 1 byte. Description: Specifies the format in which Geosupport is to return output normalized street names. The default is to return street names in the sort format. Code Value Meaning blank Return normalized street names in the sort format \u2018C\u2019 Return normalized street names in the compact format \u2018S\u2019 Return normalized street names in the sort format STREET NAME NORMALIZATION LENGTH LIMIT (SNL) Functions: WA1 input item, Functions 1, 1A, 1E, 1N, 2, 3, 3C, 3S, D, DG, DN, 1B (COW only) Work Area Format: MSW and COW Length and Format: 2 bytes, blank or numeric, either LJBF or RJZF. Description: Specifies the maximum length in bytes within which Geosupport is to normalize street names. The minimum and maximum permissible SNL values are 4 and 32. The default that is in effect if the application does not specify an SNL value is 32 STREET WIDTH STREEET WIDTH MAXIMUM Functions: 1/1E Extended, 1B, 3 Extended, 3C Extended Work Area Format: COW Length and Format: Street Width: 3 bytes, RJBF Street Width Maximum, 3 bytes, RJBF Description: The width, in feet, of the paved area of the street. Street Width contains the width at the narrowest part of the street. Street Width Maximum contains the width at the widest part of the street. If the width is consistent along the street segment then both values are identical. T TAX BLOCK Functions: 1A, BL, BN, 1B (COW only) Work Area Format: MSW and COW Length and Format: 5 bytes Description: See Chapter VI.2 . TAX LOT Function: 1A, BL, BN, 1B (COW only) Work Area Format: MSW and COW Length and Format: 4 bytes Description: See Chapter VI.2 . TAX LOT CENTROID - See SPATIAL COORDINATES OF THE TAX LOT CENTROID TAX MAP SECTION Function: 1A, BL, BN, 1B (COW only) Work Area Format: MSW and COW Length and Format: 2 bytes Description: The Department of Finance real property tax maps are organized into sections; each section is organized into volumes; and each volume consists of pages. Tax Map Section values are unique within borough TAX MAP VOLUME Functions: 1A, BL, BN, 1B (COW only) Work Area Format: MSW and COW Length and Format: 2 bytes Description: See description at Tax Map Section . Tax Map Volume values are unique within Tax Map Section. TO NODE - See NODE NUMBER TO NODE ID - See NODE NUMBER TOTAL LANES - See NUMBER OF TOTAL LANES TRAFFIC DIRECTION Functions: 1/1E Extended, 1B, 3 Extended, 3C Extended Work Area Format: COW Length and Format: 1 byte Description: blank Non-street feature (or unknown if not a non-street feature) A One way street, traffic flows against the segment\u2019s directionality, i.e., from the segment\u2019s TO node to the FROM node P Pedestrian path, non-vehicular T Two\u2011way street W One way street, traffic flows with the segment\u2019s directionality, i.e., from the FROM node to the TO node TRAVEL LANES - See NUMBER OF TRAVEL LANES TRUCK ROUTE TYPE Functions: 1/1E Extended, 1B ,3 Extended, 3C Extended, 3 Enhanced, 3C Enhanced Environment: NMF Only - Truck Route Type is supported only in a non-mainframe environment. Work Area Format: COW Only Length and Format: 1 byte Description: This one-byte field indicates the type of truck route that is designated at the requested segment or block face. Value Truck Route Type 1 Limited Local Truck Route 2 Local Truck Route 3 Through Truck Route Blank Non-Designated Route (default) The Local Truck Route Network is designated for trucks with an origin and destination within a borough. This includes trucks that are traveling to make a delivery, or for loading or servicing. Trucks should only use Non-Designated routes at the beginning or end of a trip, when traveling between their origin/destination and a truck route. The Through Truck Route Network is primarily composed of major urban arterials and highways and must be used by trucks that have neither an origin or destination within the borough. Manhattan and Staten Island contain Limited Truck Zones with special time and size restrictions. Additional information may be found at the following link: Click here for the Department of Transportation (DOT) Link. Field name in non-mainframe environment: truck_route_type The following table indicates the position of the one-byte truck_route_type field in the non-mainframe environment COW Work Area 2. Function Position 1.1E Extended 761 1B 761 3 Extended 808 3C Extended 564 3 Enhanced 354 3C Enhanced 354 U UNDERLYING B7SC OF TRUE STREET - See B7SC OF \u201cTRUE\u201d STREET UNIT INFORMATION FIELDS Field Names: UNIT INPUT UNIT \u2013 SORT FORMAT UNIT \u2013 TYPE UNIT \u2013 IDENTIFIER UNIT \u2013 DISPLAY FORMAT Functions: 1* (COW only) Work Area Format: COW Length and Format: See Chapter V.15 Unit Information Feature Description: See Chapter V.15 Unit Information Feature USPS PREFERRED CITY NAME Functions: 1/1E Extended, 1B Work Area Format: COW Length and Format: 25 bytes Description: The USPS (United States Postal Service) Preferred City Name (e.g. Astoria, Jackson Heights) is of particular importance for Queens addresses. For Queens, the USPS Preferred City Name is based on the ZIP code associated with the input address. Unless there is a special ZIP code, the following holds true for the other boroughs. For Manhattan, the USPS Preferred City Name is New York. For all the other boroughs, the USPS Preferred City Name is the borough name, viz. Bronx, Brooklyn, and Staten Island. In the rare, and unexpected, instance where there is no city name available for a Queens location, then the city name will be set to a default of QUEENS and the following warning message will be issued: GRC 01, Reason Code Y: ZIP NOT IN CITY NAME TABLE. GENERIC CITY NAME RETURNED. NOTIFY DCP/GSS V VACANT LOT FLAG Work Area Format: MSW and COW Length and Format: 1 byte Description: Code Value Meaning \u2018V\u2019 Tax lot is currently vacant, i.e., it has no existing buildings Blank Tax lot has at least one existing building W WORK AREA FORMAT INDICATOR Functions: All Work Area Format: MSW and COW Length and Format: 1 byte Description: This indicator specifies which work area layouts are to be used in an API call. Note: This indicator is also known as the Platform Indicator. Code Meaning blank The IBM mainframe specific work areas (MSWs) are used. The MSWs contain packed decimal fields. In general, these work areas are the ones described throughout this manual \u2018C\u2019 The platform-independent work areas known as the Character-Only Work Areas (COWs) are used. These contain no packed decimal fields. For information on using COWs on the mainframe and the differences from the MSWs, see [Appendix 12](../appendix12/). For the work area layouts of the COWs, see [Appendix 13](../appendix13/). X XY COORDINATES - see SPATIAL COORDINATES X-Y COORDINATES - see SPATIAL COORDINATES ZIP CODE Functions: 1, 1A, 1E, 2, 3, 3C, 1B Work Area Format: MSW and COW Length and Format: 5 bytes. Numeric Description: U.S. Postal Service\u2019s 5-digit ZIP code ZIP code may also be used as input with functions 1, 1A, 1B, and 1E to identify the borough or Duplicate Address Pseudo-Street name (DAPS).","title":"Appendix 3: Data Item Dictionary"},{"location":"appendices/appendix03/#numeric","text":"1A/BL VERSION FLAG - See FUNCTION 1A/BL VERSION FLAG. 1990 CENSUS TRACT - See CENSUS TRACT. 2000 CENSUS BLOCK - See CENSUS BLOCK. 2000 CENSUS BLOCK SUFFIX - See CENSUS BLOCK SUFFIX. 2000 CENSUS TRACT - See CENSUS TRACT. 2010 CENSUS BLOCK - See CENSUS BLOCK. 2010 CENSUS BLOCK SUFFIX - See CENSUS BLOCK SUFFIX. 2010 CENSUS TRACT - See CENSUS TRACT.","title":"Numeric"},{"location":"appendices/appendix03/#a","text":"ALLEY/CROSS STREETS FLAG (ALX) Functions: 1, 1E Work Area Format: MSW and COW Length and Format: 1 byte Description: Indicates if the segment has been split by alleys, or if the cross streets named in the segment have been copied from a previous or subsequent segment because the segment itself has no cross streets. Code Value Meaning \u2018A\u2019 Split by Alley(s) \u2018X\u2019 Cross Streets Modified Blank Neither Split by Alleys or Cross Streets Modified ALTERNATE LOW AND HIGH HOUSE NUMBERS Functions: 3C Work Area Format: MSW and COW Length and Format: See HOUSE NUMBER Description: These two fields are non-blank only if this blockface has addresses of both parities (the parity of a number is its attribute of being odd or even). Such a blockface is said to have \u2018continuous parity\u2019. If the blockface has continuous parity, the Continuous Parity Indicator is non-blank, the Low and High House Number fields contain the address range for one parity, and the Alternate Low and High House Number fields contain the address range for the other parity. (Which parity is in which set of house number fields is unpredictable.) ALTERNATIVE BOROUGH FLAG Functions: 1, 1A, 1B, 1E, 2, 3, 3C, 3S (COW only), BL, BN Work Area Format: MSW and COW Length and Format: 1 byte Description: This flag indicates either that the input address is in Marble Hill or Rikers Island and the alternative (rather than the legal) borough was specified (see Chapter V.7 ), or that the input address is on Ruby Street in Brooklyn but it was specified using the alternative (Queens) street name 75 Street (see Chapter V.8). This field was also known as the Marble Hill / Rikers Island Flag. Code Value Meaning \u2018C\u2019 Ruby Street address specified using 75 Street \u2018M\u2019 Marble Hill address with Bronx specified \u2018R\u2019 Rikers Island address with Queens specified ALX FLAG - See ALLEY/CROSS STREETS FLAG ANNOTATION POINT - No longer used by Geosupport. See SPATIAL COORDINATES OF THE TAX LOT CENTROID ASSEMBLY DISTRICT Field Names: LEFT ASSEMBLY DISTRICT RIGHT ASSEMBLY DISTRICT Functions: 1E, 2 (COW only), 3 (COW only), 3C (COW only) Work Area Format: MSW and COW Length and Format: 2 bytes. RJZF Description: A district of the lower house of the New York State legislature. Consists of an aggregation of Election Districts ATOMIC POLYGON - Previously known as DYNAMIC BLOCK Functions: 1, 1B, 1E, 3(MSW: Long WA2), 3(COW), 3C Work Area Format: MSW and COW Length and Format: 3 bytes RJZF Description: An atomic polygon is an un-subdivided polygon . Atomic polygons are created based on the New York City CSCL (Citywide Street Centerline) database. Atomic polygons are numbered uniquely within census tract. ATTRIBUTE BYTE - See STREET ATTRIBUTE INDICATOR AUXILIARY SEGMENT SWITCH (auxseg or segaux) Functions: 3, 3C, 3 & 3C Extended Work Area Format: COW Length and Format: 1 byte character. Description: When this flag is set to \u2018Y\u2019, the list of all the Segment IDs that comprise the segment will be added to the end of Work Area 2 for Functions 3 or 3C. Code Value Meaning \u2018N\u2019 or Blank One Segment ID is returned in Work Area 2. \u2018Y\u2019 A list of all the segment IDs is added to the end of Word Area 2 for Function 3 or 3C.","title":"A"},{"location":"appendices/appendix03/#b","text":"B7SC OF \u201cTRUE\u201d STREET (a.k.a. B7SC OF \u201cUNDERLYING\u201d STREET) Functions: 1and 1E (MSW: Long WA2 only); 1, 1B and 1E (COW) Work Area Format: MSW and COW Length and Format: 8 bytes (B7SC) Description: This item typically applies to Addressable Place Names, Non-addressable Place Names and Vanity Addresses. It item contains the B7SC of the street segment upon which the address specified is actually located. This is the street segment that is identified by the field SEGMENT-ID and by the fields FACE CODE and SEQUENCE NUMBER. In most cases, the B5SC portion of this item is identical to the B5SC specified in the key. However, the two B5SCs differ when the SPECIAL ADDRESS GENERATED RECORD FLAG is either \u2018B\u2019, \u2018N\u2019, \u2018P\u2019, or \u2018V\u2019. BBL Functions: 1A, BL, BN, AP Work Area Format: MSW and COW Length and Format: 10 bytes in standard version, Numeric. (Note: the legacy version of Functions 1A and BL is no longer supported.) Standard: Field Length Position Comments Borough 1 1-1 Tax Block 5 2-6 RJZF Tax Lot 4 7-10 RJZF Description: The first 6 bytes of the standard BBL consists of the 1-byte borough code followed by the 5-byte tax block field, which contains the tax block value right-justified and zero-filled. The last 4 bytes of the standard BBL is the standard tax lot field, which contains the tax lot value right-justified and zero-filled. See Chapter VI.8 . The BBL (\u2018borough-block-and-lot\u2019) identifies a parcel of real property in New York City, called a tax lot. The BBL is composed of the concatenation of the Borough Code, Tax Block and Tax Lot. If the property is a condominium (indicated by the Condominium Flag), the WA2 BBL field contains the billing BBL of the condominium (see Chapter VI.4 ). BID - See BUSINESS IMPROVEMENT DISTRICT BIKE LANE BIKE LANE is being replaced by BIKE LANE 2. See also BIKE LANE 2 Functions: 1 Extended, 1B, 1E Extended, 3 Extended, 3C Extended Work Area Format: COW Length and Format: 1 byte Notice: As of Release 16D, Bike Lane has 11 codes, instead of 7. A new two-byte field, BIKE LANE 2, is being introduced. The original one-byte Bike Lane field still exists to give users a chance to update their applications. In the one-byte Bike Lane field, the value \u2018A\u2019 will appear when the new code is \u201810\u2019, and the value \u2018B\u2019 will appear when the new code is \u201811\u2019. We recommend that users update their applications to refer to the new Bike Lane-2 since the one-byte Bike Lane field will be deleted in a later release. Description: Defines which street segments are part of the bicycle network as defined by the Department of Transportation. Code Value Meaning 1 Class I: Separated Greenway 2 Class II: Striped Bike Lane 3 Class III: Signed Bicycle Route 4 Links: Connecting Segments 5 Class I, II: Combination of Class I and II 6 Class II, III: Combination of Class II and III 7 Stairs: Step streets, bridge stairs, etc. 8 Class I, III Combination of Class I and III 9 Class II, I Combination of Class II and I A Class III, I Combination of Class III and I B Class III, II Combination of Class III and II BIKE LANE 2 Functions: 1 Extended, 1B, 1E Extended, 3 Extended, 3C Extended Work Area Format: COW Length and Format: 2 bytes, RJBF Description: Defines which street segments are part of the bicycle network as defined by the Department of Transportation. Note: As of Geosupport Version 16.4, Bike Lane 2 is being introduced to replace Bike Lane The following table contains the values that can appear in the Bike Lane 2 field Code Value Meaning Description 1 Class I: Separated Greenway 2 Class II: Striped Bike Lane 3 Class III: Signed Bicycle Route 4 Links: Connecting Segments 5 Class I, II: Combination of Class I and II 6 Class II, III: Combination of Class II and III 7 Stairs: Step streets, bridge stairs, etc. 8 Class I, III Combination of Class I and III 9 Class II, I Combination of Class II and I 10 Class III, I Combination of Class III and I 11 Class III, II Combination of Class III and II BIKE TRAFFIC DIRECTION Functions: 1 Extended, 1B, 1E Extended, 3 Extended, 3C Extended Work Area Format: COW Length and Format: 2 bytes, RJBF Description: Defines the traffic direction of the bike lanes on a segment. The following table contains the values that can appear in the Bike Lane 2 field Code Value Meaning Description Blank No bike lane No bike lane exists at this segment FT FROM node to TO node Bike traffic flows with the segment\u2019s logical direction, i.e. from the FROM node to the TO node. TF TO node to FROM node Bike traffic flows against the segment\u2019s logical direction, i.e. from the TO node to the FROM node. TW Two-Way Bikes travel in both directions BIN - See BUILDING IDENTIFICATION NUMBER BLOCKFACE ID Field Names: LEFT BLOCKFACE ID RIGHT BLOCKFACE ID Functions: 1 Extended, 1B, 1E Extended, 3 Extended, 3C Extended Work Area Format: COW Length and Format: 10 bytes. RJZF Description: Left Blockface ID is a ten digit number identifying the block face on the left hand side of a segment. Correspondingly, Right Blockface ID identifies the block face on the right hand side of a segment. Block Face is defined as one continuous side of a physical block that is intersected on that side by two other physical through streets. Blockface IDs were established by DoITT\u2019s consultants working on the planimetric feature classes for NYC and are not maintained by the Department of City Planning. BOARD OF ELECTIONS PREFERRED LGC Functions: 1E Work Area Format: MSW and COW Length and Format: 2 bytes. RJZF Description: This item is the LGC (the sixth and seventh digits of the 10-digit street code) that corresponds to the NYC Board of Elections\u2019 preferred street name for a given location. BOROUGH CODE Functions: All functions Work Area Format: MSW and COW Length and Format: 1 byte. Numeric. Description: Code Value Meaning 1 Manhattan 2 Bronx 3 Brooklyn 4 Queens 5 Staten Island BOROUGH/BLOCK/LOT - See BBL BOROUGH/TAX BLOCK/TAX LOT - See BBL BROWSE FLAG Functions: 1, 1A, 1B, 1E, 1N, 2, 3, 3C, BB, BF Work Area Format: COW Length and Format: 1 byte. Alphabetic Description: Code Value Meaning Blank All streets or normalized input street P Primary streets F Principal streets R Preferred street Only Functions 1, 1A, 1B. 1E, 2, 3, and 3C. (Not 1N, BB, BF) See Chapter III.7 for use of Browse Flag with Functions BB and BF. See Chapter III.8 for use of Browse Flag with Functions 1, 1A, 1B, 1E, 1N, 2, 3, 3C. BUILDING IDENTIFICATION NUMBER (BIN) Functions: 1A, BL, BN, 1B (COW only) and AP (COW only) Work Area Format: MSW and COW Length and Format: 7 bytes. Numeric Description: Building Identification Number. A permanent BIN is a seven-digit numerical identifier unique to each building in the City of New York. The first digit is the Borough Code. There are also two types of temporary BINs; those maintained by the Dept. of Buildings (DOB) and those maintained by the Dept. of City Planning (DCP). The temporary BINs assigned by DOB contain the number \u20188\u2019 as the second digit, and the temporary BINs assigned by DCP contain a \u20189\u2019 in the same position. DCP is currently in the process of phasing out all of its temporary BINs. BUSINESS IMPROVEMENT DISTRICT (BID) Functions: 1A, 1B, BL, BN Work Area Format: MSW and COW Length and Format: 6 bytes, B5SC Description: The Business Improvement District (BID) field (which was requested by the Fire Department) consists of a borough and five-digit street code (B5SC). Function D may be used to obtain the 32-byte name of the BID. The \u2018Street Attribute Indicator\u2019 is set to \u2018C\u2019 for BIDs. An example of a Business Improvement District is \u20185 AVE BID\u2019 Note that a BID may not be used as input to Function 1, 1A, 1B, 1E, 2*, and 3*. CD - See COMMUNITY DISTRICT or COMMUNITY DEVELOPMENT\u2026 CD ELIGIBILITY FLAG - See INTERIM ASSISTANCE ELIGIBILITY INDICATOR","title":"B"},{"location":"appendices/appendix03/#c","text":"CENSUS BLOCK Field Names: 2000 CENSUS BLOCK, LEFT 2000 CENSUS BLOCK, RIGHT 2000 CENSUS BLOCK, 2010 CENSUS BLOCK LEFT 2010 CENSUS BLOCK, RIGHT 2010 CENSUS BLOCK Functions: 1 & 1E (MSW: for 2010 - Regular WA2, for 2000 - Long WA2 Only;), 1 & 1E(COW). 2, 3 (MSW: Long WA2 Only), 3(COW), 3C Work Area Format: MSW and COW Length and Format: 4 bytes, numeric Description: When appended by the CENSUS BLOCK SUFFIX, this area is the smallest geographic area defined by the U.S. Census Bureau for tabulating the census. Generally (but not always) corresponds to a physical city block. Each census block is numbered uniquely within its census tract. CENSUS BLOCK SUFFIX Field Names: 2000 CENSUS BLOCK SUFFIX, LEFT 2000 CENSUS BLOCK SUFFIX, RIGHT 2000 CENSUS BLOCK SUFFIX, 2010 CENSUS BLOCK SUFFIX, LEFT 2010 CENSUS BLOCK SUFFIX, RIGHT 2010 CENSUS BLOCK SUFFIX, Functions: 1&1E (MSW: for 2010 - Regular WA2, for 2000 - Long WA2 Only;), 1, 1B &1E(COW) 2, 3 (MSW: Long WA2 Only), 3(COW), 3C Work Area Format: MSW and COW Length and Format: 1 byte. Description: This suffix is defined by the U.S. Census Bureau. At the government\u2019s discretion, this field may, or may not, contain data. CENSUS TRACT Field Names: 1990 CENSUS TRACT, LEFT 1990 CENSUS TRACT, RIGHT 1990 CENSUS TRACT, 2000 CENSUS TRACT, LEFT 2000 CENSUS TRACT, RIGHT 2000 CENSUS TRACT 2010 CENSUS TRACT, LEFT 2010 CENSUS TRACT, RIGHT 2010 CENSUS TRACT Functions: 1, 1E, 1B, 2, 3 (MSW: 2010 - Regular WA2; 2000 - Long WA2 Only), 3(COW), 3C Work Area Format: MSW and COW Length and Format: 6 bytes, consisting of numeric 4-digit root followed by numeric 2-digit suffix. The root subfield is RJBF and the suffix subfield is RJZF if any. If the tract number contains no suffix, then the suffix subfield is blank. Description: Geographic area defined by the U.S. Census Bureau for the various decennial censuses. Census tracts for a particular census year are numbered uniquely within borough. CITY COUNCIL DISTRICT Functions: 1B (COW), 1E, 2(COW only) Work Area Format: MSW and COW Length and Format: 2 bytes. Description: A district represented by a member of the New York City Council. Consists of an aggregation of Election Districts. There are currently 51 City Council Districts. CIVIL COURT DISTRICT Functions: 1E, 1B (COW), 2(COW only) Work Area Format: MSW and COW Length and Format: 2 bytes. Description: A district from which a Civil Court judge is elected. Consists of an aggregation of Election Districts. COINCIDENT SEGMENT COUNT Functions: 1, 1E, 3, 3C Work Area Format: MSW and COW Length and Format: 1 byte, numeric Description: The Coincident Segment Count indicates the situation where one road is above another road. Most streets, such as Broadway in Manhattan have a value of \u20181\u2019 in the Coincident Segment Count. However, there are a few streets where the Coincident Segment Count is greater than one. An example of this is Third Avenue and the Gowanus Expressway in Brooklyn. The Gowanus Expressway is above Third Avenue from about 18th Street until 63rd Street. For these segments, the Coincident Segment Count is \u20182\u2019. COMMUNITY DEVELOPMENT BLOCK GRANT (CDBG) - See INTERIM ASSISTANCE ELIGIBILITY INDICATOR COMMUNITY DEVELOPMENT ELIGIBILITY FLAG - See INTERIM ASSISTANCE ELIGIBILITY INDICATOR COMMUNITY DISTRICT (CD) Functions: 1, 1E, 2, 3, 3C, 1B (COW) Work Area Format: MSW and COW Length and Format: 3 bytes. Numeric. The first byte is the Community District Borough Code, and the second and third bytes are the Community District Number, RJZF. Description: There are 59 community districts in the City of New York, as well as 12 Joint Interest Areas (JIAs). The JIAs are major parks and airports that are not contained within any CD. Examples are Central Park, Van Cortlandt Park, LaGuardia and JFK Airports. The JIAs are the numerically highest items in each borough. Code Value Meaning 101-112 Manhattan except Marble Hill 164 Central Park 201-212 Bronx except Rikers Island (Note: the Marble Hill section of Manhattan is in Bronx CDs 7 and 8) 226 Van Cortlandt Park 227 Bronx Park 228 Pelham Bay Park 301-318 Brooklyn 355 Prospect Park 356 Brooklyn Gateway National Recreational Area 401-414 Queens (Note: the Rikers Island section of the Bronx is in Queens CD 1) 480 LaGuardia Airport 481 Flushing Meadows - Corona Park 482 Forest Park 483 JFK International Airport 484 Queens Gateway National Recreational Area 501-503 Staten Island 595 Staten Island Gateway National Recreational Area COMMUNITY DISTRICT ELIGIBILITY FLAG - See INTERIM ASSISTANCE ELIGIBILITY INDICATOR COMMUNITY SCHOOL DISTRICT \u2013 see SCHOOL DISTRICT COMPACT FLAG - See STREET NAME NORMALIZATION FORMAT FLAG COMPASS DIRECTION Functions: 2, 3C, 3S Work Area Format: MSW and COW Length and Format: 1 byte. Description: In the case of Function 2, the compass direction identifies, for a pair of input streets that intersect at two distinct locations, which of those two intersections is to be processed. (See Chapter VII.2 ) In the case of Function 3C, the compass direction identifies which side of the street is to be processed. (See Section VII.5) In the case of Function 3S, if the \u2018on\u2019 street intersects the first cross street at two distinct locations, the compass direction identifies which of those two intersections is to be processed. (See Chapter VII.6 ) COMPASS DIRECTION FOR INTERSECTION KEY Functions: 2 Work Area Format: MSW and COW Length and Format: 1 byte. Description: If the first two entries in the LIST OF INTERSECTING STREETS are an instance of the two-node case (i.e., they intersect twice), this field contains a compass direction value identifying the intersection in terms of those two streets. If the two streets are not an instance of the two-node case, this field is blank. If both a \u2018longitudinal\u2019 compass direction (\u2018N\u2019 or \u2018S\u2019) and a \u2018latitudinal\u2019 compass direction (\u2018E\u2019 or \u2018W \u2019) are valid for this intersection, the longitudinal compass direction value appears in this field. COMPASS DIRECTION FOR 2nd INTERSECTION Functions: 3S Work Area Format: MSW and COW Length and Format: 1 byte. Description: If the \u2018on\u2019 street intersects the second cross street at two distinct locations, this compass direction identifies which of those two intersections is to be processed. (See Chapter VII.6 ) CONDOMINIUM FLAG Functions: 1A, BL, BN, 1B (COW), AP Work Area Format: MSW and COW Length and Format: 1 byte. Description: Code Value Meaning \u2018C\u2019 Property is a condominium Blank Property is not a condo. CONDOMINIUM IDENTIFICATION NUMBER Functions: 1A, BL, BN, 1B (COW), AP Work Area Format: MSW and COW Length and Format: 4 bytes Description: An identification number assigned by the Department of Finance to each condominium in the city. This field is blank for non-condominiums. CONGRESSIONAL DISTRICT Functions: 1E, 1B (COW), 2 (COW only) Work Area Format: MSW and COW Length and Format: 2 bytes. Description: A district of the U.S. House of Representatives. Consists of an aggregation of Election Districts. CONTINUOUS PARITY INDICATOR Functions: 1, 1E, 3, 3C, 1B (COW) Work Area Format: MSW and COW Length and Format: 1 byte Description: An \u2018address range\u2019 is a sequence of house numbers along an \u2018on\u2019 street between (and including) a Low House Number and a High House Number. Every address range has one of three possible parities: odd, even or continuous. An address range of odd parity consists of all odd house numbers along the \u2018on\u2019 street between the Low and High House Numbers. An even-parity range consists of all even house numbers between the Low and High House Numbers. A continuous-parity range consists of all house numbers (both even and odd) between the Low and High House Numbers. Most New York City blockfaces contain an address range that is either of even or odd parity. However, some blockfaces have a continuous-parity address range, usually where the opposite side of the street is non-addressable because it is a park, a body of water, etc. Some examples of the continuous parity case in Manhattan are Central Park West (the east side of the street runs along Central Park and is non-addressable, while the west side has both odd and even addresses); Riverside Drive; and the portion of Fifth Avenue that runs alongside Central Park. If a New York City blockface has a continuous parity address range, Geosupport represents this range as two separate ranges, an odd-parity range and an even-parity range. The practical effect of this depends on the Geosupport function. For Functions 1 and 1E, if an input address lies on a continuous-parity blockface, only the range (i.e., the Low and High House Numbers) whose parity is the same as that of the input address is returned in WA2. For Function 3, if an input street segment contains a continuous parity address range, both the odd and the even ranges are returned, in the WA2 fields called Left Low House Number and Left High House Number for the range of one parity, and in the fields Right Low and High House Numbers for the range of the other parity; note that in this case, in reality both the odd and the even ranges are on the same side of the street, even though they are returned in fields called \u2018left\u2019 and \u2018right\u2019. For Function 3C, if an input blockface is on a street segment containing a continuous parity address range (regardless of whether the input blockface is on the addressable or the non-addressable side of the segment), both the odd and the even ranges are returned, in the WA2 fields called Low House Number and High House Number for the range of one parity, and in the fields Alternate Low House Number and Alternate High House Number for the range of the other parity. The field Continuous Parity Indicator indicates, for Functions 1, 1E, 3 and 3C, whether the street segment containing or corresponding to the user input is of the continuous parity type, and if so, which side of the segment is addressable. Code Value Meaning Blank The street segment does not have a continuous parity address range \u2018L\u2019 or \u2018R\u2019 The street segment has continuous parity. In this case, the Continuous Parity Indicator indicates which side of the street segment, the left or the right, is addressable. (Left and right are specified with respect to the direction of increasing addresses along the segment) COOPERATIVE IDENTIFICATION NUMBER Functions: 1A, BL, BN, 1B (COW) Work Area Format: MSW and COW Length and Format: 4 bytes. Description: This is an identification number assigned by the Department of Finance to each cooperative in the city. This field is blank for non-coops. CORNER CODE Functions: 1A, BL, BN, 1B (COW) Work Area Format: MSW and COW Length and Format: 2 bytes Description: Code Value Meaning \u2018SE\u2019,\u2019SW\u2019,\u2019NE\u2019,\u2019NW\u2019 Tax lot occupies the indicated corner of the physical block \u2018CR\u2019 Tax lot occupies more than one corner Blank Tax lot occupies no corners COUNTY BOUNDARY INDICATOR Functions: 3, 3C Work Area Format: MSW and COW Length and Format: 1 byte Description: This field is non-blank when the street segment lies along a borough boundary. The value of this field indicates which side of the segment is out of borough. Code Value Meaning \u2018L\u2019 Left side of segment is out of borough \u2018R\u2019 Right side of segment is out of borough Blank Neither side is out of borough CROSS STREET NAMES FLAG (a.k.a. EXPANDED FORMAT FLAG) Functions: 1, 1E, 2, 3, 3C, 1B (COW) Work Area Format: MSW and COW Length and Format: 1 byte character. Description: When this flag is set to \u2018E\u2019, the LIST OF STREET NAMES is used to return street names corresponding to the street codes in the LIST OF CROSS STREETS (Functions 1, 1B, 1E, 3 and 3C) or in the LIST OF INTERSECTING STREETS (Function 2). See LIST OF STREET NAMES for related details. When possible, the BBL and BIN are returned in the output area of Work Area 1 for Functions 1, 1A, 1B, and 1E. The cross street names feature incurs processing overhead, and should only be used when necessary. Note that Function 1B returns the principal street codes and street names of the cross streets in the Blockface portion of Work Area 2. Therefore it is typically not necessary to set the Cross Street Names flag with Function 1B. Code Value Meaning Blank The names of cross or intersecting streets are not returned in the LIST OF STREET NAMES. The BBL an BIN are not returned in the output area of Work Area 1. \u2018E\u2019 The names of cross or intersecting streets are returned in the LIST OF STREET NAMES The BIN and BBL of the input address are returned in the output area of Work Area 1. CROSS STREET REVERSAL FLAG Functions: 3, 3C Work Area Format: MSW and COW Length and Format: 1 byte Description: This flag indicates the relationship between the order in which the user specified the input cross streets and the direction of increasing addresses along the \u2018on\u2019 street. Code Value Meaning Blank The direction from Street Name 2 to Street Name 3 (the two input cross street fields) conforms to the direction of increasing addresses \u2018R\u2019 The direction from Street Name 2 to Street Name 3 is opposite to the direction of increasing addresses CROSS SREETS See LIST OF CROSS STREETS (Functions 1, 1E, 3, 3C, 1B) See LIST OF INTERSECTING STREET (Function 2) See LIST OF CROSS STREET CODES (Function 3S) CURVE FLAG Functions: 1, 1E, 3, 3C, 1B (COW) Work Area Format: MSW and COW Length and Format: 1 byte character Description: This flag indicates whether the given geographic feature segment is in reality curved. If so, the curve may be an arc of a circle or an irregular curve. When the segment specified by the input data is an arc of a circle, Functions 1 and 1E return Spatial Coordinates that are positioned relative to this arc rather than to the segment\u2019s chord (the imaginary straight line joining the curved feature\u2019s endpoints). When the segment specified by the input data is an irregular curve, Functions 1 and 1E return blanks in the Spatial Coordinate fields (q.v.), and issue a warning with Reason Code value \u2018P\u2019. In the case of Functions 3 and 3C, if the input data define a street stretch encompassing more than one segment (because of a T-intersection or bend), the Curve Flag is set \u2018on\u2019 (non-blank) if at least one of the constituent segments of the stretch is curved. See also discussion of Segment Length. Code Value Meaning Blank Segment is not curved \u2018I\u2019 Segment is an irregular curve, i.e., it is curved but it is not an arc of a circle \u2018L\u2019 Segment is an arc of a circle on the left side of the line joining the segment\u2019s FROM and TO nodes \u2018R\u2019 Segment is an arc of a circle on the right side of the line joining the segment\u2019s FROM and TO nodes","title":"C"},{"location":"appendices/appendix03/#d","text":"DCP PREFERRED LGC Functions: 1, 1A and BL (regular WA2 only), 2, 3, 3C, BN Work Area Format: MSW and COW Length and Format: 2 bytes RJZF Description: Identifies the local group of street names designated by the Department of City Planning as \u2018preferred\u2019 for display purposes for a specific location on a street. DCP ZONING MAP Functions: 1A/BL/BN, 1A/BL/BN Extended, 1A/BL Long WA2, 1A/BL TPAD Long WA2, 1B Work Area Format: COW Length and Format: 3 bytes Description: The DCP Zoning Map field contains the DCP Zoning Map number. DEPARTMENT OF SANITATION SNOW PRIORITY CODE - See DSNY SNOW PRIORITY CODE DISTANCE BETWEEN DUPLICATE INTERSECTIONS Functions: 2 Work Area Format: MSW and COW Length and Format: 5 bytes numeric Description: When the two input streets intersect exactly twice, this field contains the distance, in feet, between those two intersections. DOGLEG FLAG Functions: 3 Work Area Format: MSW and COW Length and Format: 1 byte Description: A dogleg is a street configuration in which a street has a displacement or offset as it crosses another street. A non-blank value in the Dogleg Flag indicates that at least one of the cross streets forms a dogleg as it crosses the \u2018on\u2019 street, in such a way that at least one side of the \u2018on\u2019 street has a blockface encompassing more than one segment. When Function 3 returns a non-blank value in this flag, the work area represents the \u2018innermost\u2019 segment of the dogleg configuration. The Dogleg Flag value indicates which side or sides of the street has (or have) the long blockface(s). Code Meaning Blank Not a dogleg \u2018B\u2019 Both sides of the \u2018on\u2019 street have long blockfaces formed by doglegs. This can only occur if both cross streets form doglegs as they cross the \u2018on\u2019 street. \u2018L\u2019 The left side of the street has a long blockface formed by a dogleg \u2018R\u2019 The right side of the street has a long blockface formed by a dogleg A Function 3C call will return information on the long blockface when the user input data specifies a side of a street where there is a long blockface formed by a dogleg or doglegs. The Dogleg Flag will not be set in response to a function 3C call. DOT STREET LIGHT CONTRACTOR AREA Functions: 1, 1E, 2, 3, 3C, 1B (COW) Work Area Format: MSW and COW Length and Format: 1 byte Description: Code Meaning \u20181' Street lights serviced by Manhattan contractors \u20182' Street lights serviced by Bronx contractors \u20183' Street lights serviced by Brooklyn contractors \u20184' Street lights serviced by Queens contractors \u20185' Street lights serviced by Staten Island contractors \u2018X' Street light is located on the Brooklyn, Queens boundary \u2018N\u2019 Street light is located in one borough, but serviced by a different borough DSNY ... - See also SANITATION ... DSNY SNOW PRIORITY CODE Functions: 1/1E, 1/1E Extended, 1B, 3, 3 Extended, 3C, 3C Extended Work Area Format: COW Length and Format: 1 byte character Description: DSNY (Department of Sanitation) Snow Priority code is used during snow emergencies. It helps DSNY to determine the snow removal schedule, routes and resources needed. The DSNY (Department of Sanitation) Snow Priority indicates the priority of the street with respect to snow removal. New snow priority codes were assigned with Version 16.4 The snow priority codes are as follows: Code Value Meaning C Critical S Sector H Haulster V Non-DSNY Street (unchanged) The DSNY definition of the new codes is as follows: C - Critical Routes: These routes are comprised of highways (main beds, entrances, exits interchanges), arterial roadways, main travel thoroughfares (single lane and multi-lane), bus routes, that contain emergency services & first responder facilities (Hospitals, EMS, FDNY, NYPD) and schools. S - Sector Routes: Designed to encompass all streets that are not classified as Critical Streets and are wide enough to accommodate a full size DSNY collection truck with a plow attached. H - Haulster Routes: Designed to service dead ends and streets that cannot be serviced with a collection truck or salt spreader with a plow attached due to narrow street width or tight turning radius (either entering or exiting the street). Important Note: The old code values (i.e. prior to Version 16.4) are no longer in use. They were P (Primary), S (Secondary) and T (Tertiary) If a user application checks for specific Snow Priority Values, the application will need to be updated It is also important to note that the new Snow Priority values provided to DCP were for roadbed geography only. Snow Priority values will not be returned for generic geography, unless requested for a future release by DSNY. DYNAMIC BOCK - See ATOMIC POLYGON","title":"D"},{"location":"appendices/appendix03/#e","text":"s ELECTION DISTRICT (ED) Field Names: LEFT ELECTION DISTRICT RIGHT ELECTION DISTRICT Function: 1E, 3 (COW only), 3C (COW only), 1B (COW only) Work Area Format: MSW and COW Length and Format: 3 bytes Description: A set of districts defined by the NYC Board of Elections to conduct elections. There are approximately 6,000 Election Districts (EDs) in NYC. Each ED is numbered uniquely within its Assembly District. All of NYC\u2019s higher-level political districts, namely Assembly Districts, City Council Districts, Municipal Court Districts, Congressional Districts and State Senatorial Districts, are defined as aggregates of Eds. EXPANDED FORMAT FLAG - See CROSS STREET NAMES FLAG EXTENDED MODE SWITCH - See MODE SWTICH","title":"E"},{"location":"appendices/appendix03/#f","text":"FACE CODE Functions: 1, 1E, 3, 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: 4 bytes. Numeric Description: A Face Code is assigned to each linear geographic feature represented in the LION file. These consist of streets and certain non-street features, such as census boundaries, shorelines and railroad tracks. Face Codes serve as part of LION keys, which identify a unique LION record. Face Code values are assigned uniquely within borough. FEATURE TYPE CODE Functions: 1, 1E, 3, 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: 1 byte Description: Identifies the type of geographic feature represented by the work area Code Meaning blank Public street that exists physically, other than a type \u2018W\u2019 feature (see below) \u20181' Railroad \u20182' Shoreline \u20183' Census block boundary without physical existence \u20184' Other non-street feature \u20185' \u2018Paper street\u2019, i.e., a public street that is legally \u2018mapped\u2019 but does not exist physically \u20186' \u2018Private street that exists physically \u20187' Physically nonexistent district boundary, other than a type \u20183\u2019 feature (see above) \u20188' Physical Boundary such as a cemetery wall \u20189' Paper street\u2019 that coincides with a non-physical boundary such as a Census block \u2018C' CCO (Corporation Council Opinion). Street dedicated for public use (See Glossary) \u2018W' Path, non-vehicular, addressable Note: As of Release 16D, Physical Boundaries, such as cemetery walls, will no longer appear as cross streets in Functions 1/1E, 1B, 2, 3 and 3C FIRE BATTALION Functions: 1, 1E, 2, 3 (MSW: Long WA2), 3 (COW), 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: 2 bytes Description: An administrative fire district composed of Fire Companies/ FIRE COMPANY NUMBER Functions: 1, 1E, 2, 3 (MSW: Long WA2), 3 (COW), 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: 3 bytes. Numeric RJZF Description: The smallest kind of administrative fire district defined by the NYC Fire Department. There are three types, indicated by the Fire Company Type: engine companies, Squad and ladder companies. FIRE COMPANY NUMBER Functions: 1, 1E, 2, 3 (MSW: Long WA2), 3 (COW), 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: 1 byte Description: Fire companies are characterized by the type of apparatus they use to fight fires. Code Meaning \u2018E\u2019 Engine Company \u2018L\u2019 Ladder Company \u2018Q\u2019 Fire Squad Note: \u2018Q\u2019 may appear as \u2018SQ\u2019 on GOAT screens FIRE DIVISION Functions: 1, 1E, 2, 3 (MSW: Long WA2), 3 (COW), 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: 2 bytes Description: An administrative fire district composed of Fire Battalions. FROM NODE - See NODE NUMBER FROM NODE ID - See NODE NUMBER FUNCTION 1A/BL VERSION FLAG Functions: 1A, BL Work Area Format: MSW and COW Work Area Format: MSW and COW Length and Format: 1 byte Length and Format: Code Meaning Description: Code Meaning \u2018S\u2019 Standard version - Required for MSW \u2018L\u2019 Invalid - No Longer Supported Blank COW: Standard version MSW: Invalid","title":"F"},{"location":"appendices/appendix03/#g","text":"GAP FLAG Functions: 3S Work Area Format: MSW and COW Length and Format: 1 byte Description: Code Value Meaning \u2018E\u2019 Engine Company \u2018L\u2019 Ladder Company \u2018Q\u2019 Fire Squad Note: \u2018Q\u2019 may appear as \u2018SQ\u2019 on GOAT screens 1, 1E, 2, 3 (MSW: Long WA2), 3 (COW), 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: 2 bytes Description: An administrative fire district composed of Fire Battalions. FROM NODE - See NODE NUMBER FROM NODE ID - See NODE NUMBER FUNCTION 1A/BL VERSION FLAG Function: 1A, BL Work Area Format: MSW and COW Length and Format: 1 byte Description: Code Meaning \u2018S\u2019 Standard version - Required for MSW \u2018L\u2019 Invalid - No Longer Supported Blank COW: Standard version MSW: Invalid GAP FLAG Functions: 3S Work Area Format: MSW and COW Length and Format: 1 byte Description: Code Value Meaning Blank No gap, i.e., the \u2018on\u2019 street connects this intersection with its predecessor in list. The gap flag in the 1st entry in the list is always blank. \u2018G\u2019 A gap exists along the \u2018on\u2019 street between this intersection and its predecessor \u2018C\u2019 Real Streets Only have been requested, resulting in segment lengths being \u2018Combined\u2019 and one or more nodes being omitted between this intersection and its predecessor in the list (COW Only). \u2018D\u2019 A dog-leg type gap exists along the \u2018on\u2019 street between this intersection and its predecessor \u2018N\u2019 A new stretch exists. For more information on the types of \u2018gaps\u2019 that can be returned by Function 3S, see Chapter VII.6 GENERATED RECORD FLAG Functions: 3, 3C Work Area Format: MSW and COW Length and Format: 1 byte/td> Description: This flag indicates that the geography defined by the input \u2018on\u2019 street and two cross streets is not a conventional street segment. There are several cases: a segment one of whose cross-features is a pseudo-street name (codes C, D); a street stretch formed by consolidating more than one consecutive LION segment (codes B, L, M, R, S and T); or a segment that is part of such a street stretch (types F, G). If the input data simultaneously satisfy the criteria for a Generated Record Flag value of C or D and for some other value, the flag contains the value other than C or D. \u2018B\u2019 Record has been generated by consolidating several LION segments to represent a stretch of a street where there is a node that is not at an intersection, such as a bending point (or a consecutive sequence of such nodes). \u2018C\u2019 Record generated because one or both nodes of segment lie on the City Limit (Bronx-Westchester or Queens-Nassau border), but segment itself lies entirely within the City. The cross street list for a node on the City Limit contains the special street code assigned to the pseudo-street name CITY LIMIT in the Bronx or Queens, as appropriate. \u2018D\u2019 Record has been generated for a dead end segment, i.e. a segment at least one of whose nodes either has no other segments incident at it, or has segments of non-street features only. The cross street list at such a node contains only the special street code assigned to the pseudo-street name DEAD END in the given borough. \u2018F\u2019 Record represents a segment that is part of a street stretch that either contains a bending point at which there are no cross streets, or the left side of which is the long blockface of a T-intersection or a consecutive sequence of T-intersections. \u2018G\u2019 Record represents a segment that is part of a street stretch, that either contains a bending point at which there are no cross streets, or the right side of which is the long blockface of a T-intersection or a consecutive sequence of T-intersections. \u2018L\u2019 Record has been generated to represent the long blockface on the left side of a T-intersection. \u2018M\u2019 Record has been generated by consolidating two or more LION segments to represent a stretch of a street containing a node or a consecutive sequence of nodes at which the \u2018on\u2019 feature intersects with no streets but intersects with more than one type of non-street feature. \u2018R\u2019 Record has been generated to represent the long blockface on the right side of a T-intersection. \u2018S\u2019 Record has been generated by consolidating two or more LION segments to represent a stretch of a street containing a node or a consecutive sequence of nodes at which the \u2018on\u2019 feature intersects with no streets but intersects with one or more shorelines. \u2018T\u2019 Record has been generated by consolidating two or more LION segments to represent a stretch of a street containing a node or a consecutive sequence of nodes at which the \u2018on\u2019 feature intersects with no streets but intersects with one or more train tracks.","title":"G"},{"location":"appendices/appendix03/#h","text":"HEALTH AREA Functions: 1, 1E, 2, 3, 3C, 1B Work Area Format: MSW and COW Length and Format: 4 bytes Description: Districts defined by the NYC Department of Health and used to report statistics on births, deaths, communicable diseases etc. Health Areas are aggregates of Census Tracts. HEALTH CENTER DISTRICT Functions: 1, 1E, 2 (COW only), 3 Extended, 3C Extended Work Area Format: MSW and COW Work Area Format: 2 bytes Description: Districts defined by the NYC Department of Health for administrative purposes. Health Center Districts are aggregates of Health Areas. HEZ - See HURRICANE EVACUATION ZONE HIGH HOUSE NUMBER - See HOUSE NUMBER HOUSE NUMBER a.k.a. ADDRESS NUMBER Field Names: HOUSE NUMBER (WA1 input field, Functions 1, 1A, 1B, 1E,AP); NORMALIZED HOUSE NUMBER (WA1 output field, Functions 1, 1A, 1B, 1E, AP); LOW HOUSE NUMBER HIGH HOUSE NUMBER (WA2 output fields, Functions 1, 1A, 1B, 1E, 3C,AP); LEFT LOW HOUSE NUMBER, LEFT HIGH HOUSE NUMBER, RIGHT LOW HOUSE NUMBER, RIGHT HIGH HOUSE NUMBER (WA2 output fields, Function 3) ALTERNATE LOW HOUSE NUMBER, ALTERNATE HIGH HOUSE NUMBER (WA2 output fields, Function 3C) UNDERLYING HOUSE NUMBER FOR VANITY ADDRESSES (WA2, 1 and 1E-MSW: Long WA2, 1, 1B, and 1EE-COW, AP? ) Functions: 1, 1A, 1E, 3, 3C, 1B COW only) Work Area Format: MSW and COW Length and Format: See Chapter V.2 . Description: If the field name indicates the house number is normalized, for MSW it is in HNI format, and for COW it is in HNS format; otherwise, it is in HND format (see Chapter V.2 ). HOUSE NUMBER JUSTIFICATION FLAG Functions: 1, 1E, 1A, D, DG, DN, 1B? Work Area Format: COW Length and Format 1 byte Description: Indicates whether the HOUSE NUMBERS IN DISPLAY format (HNDs) in the output area should be left-justified or right-justified. Code Value Meaning \u2018L\u2019 or Blank Left-justify Normalized House Numbers (default) \u2018R\u2019 Right-justify Normalized House Numbers HOUSE NUMBER NORMALIZATION LENGTH Functions: 1, 1E, 1A, 1B, D, DG, DN Work Area Format: COW Length and Format: 2 bytes, numeric Description: Indicates the length requested for the HOUSE NUMBERS IN DISPLAY format (HNDs) in the output area. Valid values are between 12 and 16. If the field is left blank, the default is 12. For more information, see Chapter V.2 . HURRICANE EVACUATION ZONE (HEZ) Function: 1/1E, 1/1E Extended, 1B Work Area Format: COW Length and Format: 2 bytes, alphanumeric, RJBF Description: Information used by Emergency Management (previously known as Office of Emergency Management (OEM)) in emergency situations. New York City\u2019s hurricane contingency plans are based on six evacuation zones: 1, 2, 3, 4, 5, 6. The value of 0 represents water polygons and the value of X indicates land that is not part of an evacuation zone. Value Description 0 Coastal Water polygon 1-6 Hurricane Evacuation Zone designation X Land not part of an evacuation zone Additional information may be found at http://www1.nyc.gov/site/em/ready/hurricane-evacuation.page","title":"H"},{"location":"appendices/appendix03/#i","text":"INSTRUCTIONAL DIVISION - See INSTRUCTIONAL REGION INTERIM ASSISTANCE ELIGIBILITY INDICATOR (IAEI) - a.k.a. CD Eligibility Flag INTERIM ASSISTANCE ELIGIBILITY INDICATOR (IAEI) - a.k.a. CD Eligibility Flag Functions: 1, 1E, 2 (COW only), 3, 3C, 1B Work Area Format: MSW and COW Length and Format: 1 byte Description: Indicates whether the input location is in a census tract that meets the U.S. Department of Housing and Urban Development (HUD) criteria to be eligible for Community Development Block Grant (CDBG) funding. A census tract is eligible for CDBG funding if at least 51.00% of the residents are low- and moderate-income persons (less than 80% of the Median Family Income) and 50% of its total floor area must be comprised of residential usage. All other census tracts are ineligible. In Release 19B, the \u2018CD Eligibility\u2019 values were updated to reflect more current data. Updated income data was provided by HUD and residential usage was calculated by the Department of City Planning (DCP) using PLUTO data (18v2.1). Code Value Meaning \u2018E\u2019 Input location is in a CD-eligible census tract \u2018I\u2019 Location is not in a CD-eligible census tract Blank Location is in a census tract, the CD-eligibility status of which is unknown to the Geosupport System.(Note: This is an error condition and should be reported). INTERSECTING STREETS - See LIST OF INTERSECTING STREETS INTERSECTION REPLICATION COUNTER Functions: 2 Work Area Format: MSW and COW Length and Format: 1 byte, numeric Description: The Intersection Replication Counter is non-blank only if the two streets intersect more than once, in which case this field contains the number of such intersections. INTERIOR LOT FLAG Functions: 1A, BL, BN Work Area Format: MSW and COW Length and Format: 1 byte Description: Code Value Meaning \u2018I\u2019 Tax lot is interior to physical block, i.e., it has no street frontages. Blank Tax lot has at least one street frontage INTERNAL LABEL POINT - See SPATIAL COORDINATES OF THE TAX LOT CENTROID IRREGULARLY-SHAPED LOT FLAG Functions: 1A, BL, BN Work Area Format: MSW and COW Length and Format: 1 byte Description: Code Value Meaning \u2018I\u2019 Tax lot is irregularly-shaped, i.e., non-rectangular Blank Tax lot is rectangular JOINT INTEREST AREA (JIA) - See COMMUNITY DISTRICT","title":"I"},{"location":"appendices/appendix03/#l","text":"LATITUDE, LONGITUDE Functions: 1/1E Extended, all variations of 1A/BL/BN (viz. Regular, Long and Extended), 1B, 2W, 3 Extended, 3C Extended Work Area Format: COW Length and Format: Latitude: 9 bytes Longitude: 11 bytes Description: Spatial coordinates based on the lines of latitude and longitude. Lines of latitude measure the north-south position between the poles with the equator defined as 0 degrees. Lines of longitude (or meridians) measure the east-west position, with the prime meridian running through Greenwich, England. For NYC, Latitude is always positive and Longitude is always negative. The latitude and longitude of a location are calculated based on the spatial coordinates (x,y) returned for that location. As a result, the latitude and longitude returned by the Address Processing functions (e.g. 1/1E Extended) will be somewhat different from the values returned by Tax Lot and Building processing functions (e.g. 1A/BL/BN). See also SPATIAL COORDINATES and SPATIAL COORDINATES OF THE TAX LOT CENTROID. LEFT 1990 CENSUS TRACT - See CENSUS TRACT. LEFT 2000 CENSUS BLOCK - See CENSUS BLOCK. LEFT 2000 CENSUS BLOCK SUFFIX - See CENSUS BLOCK SUFFIX. LEFT 2000 CENSUS TRACT - See CENSUS TRACT. LEFT 2010 CENSUS BLOCK - See CENSUS BLOCK. LEFT 2010 CENSUS BLOCK SUFFIX - See CENSUS BLOCK SUFFIX. LEFT 2010 CENSUS TRACT - See CENSUS TRACT. LEFT ASSEMBLY DISTRICT - See ASSEMBLY DISTRICT. LEFT BLOCKFACE ID - See BLOCKFACE ID. LEFT ELECTION DISTRICT - See ELECTION DISTRICT. LENGTH IN FEET FROM PREVIOUS NODE Functions: 3S Work Area Format: MSW and COW Length and Format: MSW: 3 bytes packed; COW: 5 bytes numeric RJZF Description: The length between two nodes. LGI - See LIST OF GEOGRAPHIC IDENTIFIERS LION KEY Functions: 1, 1E, 3, 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: 10 bytes. Numeric Description: The LION Key identifies a record in the CSCL file and relates to predecessor file known as LION. It consists of: BOROUGH CODE ( 1 byte) FACE CODE (4 bytes) SEQUENCE NUMBER (5 bytes) LION NODE - See NODE NUMBER LION NODE ID - See NODE NUMBER LION NODE NUMBER - See NODE NUMBER LION SEGMENT ID See SEGMENT ID LION SEQUENCE NUMBER - See SEQUENCE NUMBER LIST OF ADDRESS RANGES - See LIST OF GEOGRAPHIC IDENTIFIERS LIST OF BUILDINGS ON TAX LOT Functions: 1A and BL - Long WA2 only Work Area Format: MSW and COW Length and Format: 17,500 bytes, consisting of 2,500 slots for 7-byte BINs Description: List of the BUILDING IDENTIFICATION NUMBER (BIN) of each building on the tax lot. See Chapter VI.6 . LIST OF BUILDINGS ON TAX LOT Functions: 1A and BL - Long WA2 only Work Area Format: MSW and COW Length and Format: 17,500 bytes, consisting of 2,500 slots for 7-byte BINs Description: List of the BUILDING IDENTIFICATION NUMBER (BIN) of each building on the tax lot. See Chapter VI.6 . LIST OF CROSS STREET CODES Functions: 3S Work Area Format: MSW and COW Length and Format: MSW: 8 bytes, packed decimal, consisting of 2 slots for intersecting PB5SCs. COW: 40 bytes, numeric, consisting of 5 slots for intersecting B7SCs. Description: MSW: For each intersecting street, in general, this is the lowest and second lowest PB5SCs for the cross streets, as described below in COW. COW: For each intersecting street, this is a list of up to five B7SCs, starting, in general (see Note below), with the lowest B7SC, followed by the next lowest, followed by the remaining B7SCs in ascending order. The purpose of the ordering of the first two street codes is to facilitate the ability of users to form consistent keys for geographic retrieval of application data. Note 1: In order to provide the user with the most meaningful information, \u2018normal\u2019 streets will be listed first, followed by \u2018special\u2019 streets, such as Ramps and Exits. Railroads, Shorelines and Borough Boundaries will appear next, followed by Named Intersections, CITY LIMITs, DEAD ENDs and BENDs. This will occur even if the \u2018special\u2019 streets have lower street codes than the \u2018normal\u2019. Note 2: To avoid unnecessary listing of BENDs, Function 3S lists a BEND only if the angle of the bend is 60 degrees or more. (Prior to Release 16D, a bend was listed if the angle was 20 degrees or more.) Also, a bend is not included in the list of cross streets when another real street intersects there as well. Note 3: Since Function 3S returns B7SCs, it is now possible for two streets to have the same B5SCs and different B7SCs, e.g. in Brooklyn, at the intersection of Clinton Street with Livingston Street and Aitken Place, Livingston Street and Aitken Place have the same B5SC (3-56530) but different B7SCs (3-56530-01 and 3-56530-02 respectively). LIST OF CROSS STREETS Field Names: LIST OF CROSS STREETS AT LOW ADDRESS END LIST OF CROSS STREETS AT HIGH ADDRESS END Functions: 1/1E Regular, 1/1E Extended (COW), 3, 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: - MSW: 20 bytes, consisting of slots for up to five 4-byte PB5SCs. \u2018Empty\u2019 slots contain packed zeros. \u2022 COW (Regular): 30 bytes, consisting of slots for up to five 6-byte B5SCs. \u2018Empty\u2019 slots contain either numeric zeros or blanks. \u2022 COW (1/1E Extended): 40 bytes, consisting of slots for up to five 8-byte B7SCs. \u2018Empty\u2019 slots contain either numeric zeros or blanks. This list is in addition to the B5SC (30 bytes) list. Description: A list of PB5SCs for MSW and B5SCs (and B7SCs) for COW (and COW 1/1E Extended), for up to five streets incident upon a delimiting node (endpoint) of a blockface or street segment. The number of non-empty list entries is returned in the corresponding WA2 field NUMBER OF CROSS STREETS AT (LOW or HIGH) ADDRESS END. It is possible for the list to be entirely empty. If the node lies on a borough boundary, the list may contain streets from both boroughs. Subject to the space limitation, the list may include the pseudo-streets \u2018City Limit\u2019, \u2018Dead End\u2019 and \u2018Bend\u2019. The inclusion of \u2018Bend\u2019 in the list indicates that the node is a bending point of the \u2018on\u2019 street, not that it is a bending point of a cross street (although that may also be true). The purpose of the ordering of the first two street codes is to facilitate the ability of users to form consistent keys for geographic retrieval of application data. Special handling has been given to Railroads, Shorelines, Coincident Streets and streets where two street names having different B5SCs are both valid (a.k.a. Special Address \u2018Type B\u2019 situation) Note: As a result of this special handling, the first one or two street codes in the lists of intersecting streets may not always be the lowest two street codes. For example a railroad or shoreline would now be put last in the list, even if they have lower street codes than the other intersecting streets. Some examples follow: - Consider the situation of coincident street features, e.g. 3rd Avenue and Gowanus Expressway in Brooklyn. The Gowanus Expressway is above 3rd Avenue between approximately 18th Street and 65th Street. If a user issues a Function 3 call requesting information about the segment of 3rd Avenue between 19th and 20th Streets, Geosupport will recognize that 3rd Avenue and the Gowanus Expressway are coincident streets and will not return Gowanus Expressway as an intersecting street. Please note that Geosupport will also accept as input Gowanus Expressway between 19th and 20th Streets. With this input, 3rd Avenue will not be listed as a cross street at either end. If a user issues a Function 3S call, requesting the stretch on 3rd Avenue between 40th Street and 50th Street, Geosupport will recognize that 3rd Avenue and Gowanus Expressway are coincident streets and will not list them as intersecting. - Consider the situation where a railroad is determined to be one of the cross streets . An example exists in Queens at Kneeland Street between Queens Boulevard and Dead End. A Function 3 call will return QUEENS BOULEVARD and LONG ISLAND RAILROAD as cross streets at the low end. Even though the Long Island Railroad has a numerically smaller street code than Queens Boulevard, it is listed after Queens Boulevard. - Consider the situation where two street names, with different street codes, are valid for the same blockface. An example exists in Queens where 207th Street and Clearview Expressway are both valid between 39th Avenue and Boyce Avenue. o A Function 3 call will be accepted with either street name (viz. 207th Street or Clearview Expressway) as the on-street. LIST OF CROSS STREETS AT HIGH ADDRESS END - See LIST OF CROSS STREETS LIST OF CROSS STREETS AT LOW ADDRESS END - See LIST OF CROSS STREETS LIST OF GEOGRAPHIC IDENTIFIERS (LGI) Functions: 1A and BL - regular WA2, BN Work Area Format: MSW and COW Length and Format: 756 bytes total, consisting of space for 21 36-byte entries, each entry having fields for the following data items:/td> Low House Number of Address Range High House Number of Address Range B5SC DCP-Preferred LGC BIN Entry Type Code Side of Street Indicator. Description: The List of Geographic Identifiers (LGI) is intended to provide a comprehensive geographic profile of a tax lot by listing, so far as the information is known and space allows, all of the lot\u2019s buildings; all of the street addresses and non-addressable street frontages of each building; all of the lot\u2019s \u2018vacant frontages\u2019 (i.e., street frontages of the lot not associated with buildings); and any NAPs associated with the lot. The LGI contains space for up to 21 entries. The number of non-empty entries is indicated in the WA2 field NUMBER OF GEOGRAPHIC IDENTIFIERS. The types of entries that the LGI can contain are as follows: List of Geographic Identifiers - Possible Entry Types Entry Type Code Represents Description Blank Address range A real address range of a building on a given tax lot. There are values in the Low House Number, High House Number, B5SC, DCP-Preferred LGC, Side of Street Indicator and BIN fields. A single address is represented as an address range in which the low and high house numbers are identical. B NAUB A Non-Addressable Un-named Building (NAUB) (see Chapter VI.3 ). The Low and High House Number and Side of Street Indicator fields are blank. The B5SC and DCP-Preferred LGC fields usually contain the street code and LGC, correspondingly, of the street nearest to or most accessible to the NAUB, but they may be blank. The BIN field contains a meaningful value. Note: If the NAUB has frontages on more than one street, there are multiple type B entries to represent all of the NAUB\u2019s street frontages. F Vacant Street Frontage A street frontage of the tax lot at which there are no buildings (including NAUBs) and to which no pseudo-addresses have been assigned. The Low and High House Number, BIN and Side of Street Indicator fields are empty. There are values in the B5SC and DCP-Preferred LGC fields. G NAP of a Complex A Non-Addressable Place name (NAP) of a complex of buildings and/or other geographic features, usually on a large site or superblock (see Chapter III.6 ). The house number and BIN fields are empty. The B5SC, DCP-Preferred LGC, and Side of Street Indicator fields contain the values of these items assigned to the NAP. N NAP of a A NAP of a building or other geographic feature that is not part of Simplex a complex (see Chapter III.6 ). The house number fields are empty. The B5SC, DCP-Preferred LGC, and Side of Street Indicator fields contain the values of these items assigned to the given NAP. The BIN field is non-empty only if the NAP represents a building. Q Pseudo-Address Range A pseudo-address range assigned to a vacant street frontage of the tax lot. There are values in the Low House Number, High House Number, B5SC, DCP-Preferred LGC and Side of Street Indicator fields. A single address is represented as an address range in which the low and high house numbers are identical. The BIN field is empty R Real Street of a Vanity Address Entry indicates the street and the side of that street on which the building entrance having a vanity address is really located and for which no other address for that building exists. For a discussion of vanity addresses, see Chapter V.9 . In a type R entry, the Low and High House Number fields are empty, and there are non-empty values in the B5SC, DCP-Preferred LGC, Side of Street Indicator and BIN fields. Whenever the LGI contains a type R entry, it also contains a type V entry for the associated vanity address V Vanity Address A vanity address or address range. For a detailed discussion of vanity addresses, see Chapter V.9 . There are non-empty values in the Low House Number, High House Number, B5SC, DCP-Preferred LGC, Side of Street Indicator and BIN fields. A single address is represented as an address range in which the low and high house numbers are identical. Whenever the LGI contains a type V entry, it also contains an either an address range entry or a type R entry that indicates the street on which the associated building entrance is really located. W Blank-Wall Bldg Frontage A building frontage along a street that is not associated with any addresses, such as some building facades with no entrances. The Low and High House Number and Side of Street Indicator fields are blank. There are values in the B5SC and DCP-Preferred LGC fields. The BIN field contains a meaningful value. Note: Type W entries exist only for buildings that also have at least one real address range entry. If a building has no real address ranges, the building is a NAUB, and its street frontages, if any, are represented by type B entries rather than type W entries. X NAP of a Constituent Entity of a Complex A NAP of a constituent entity of a complex. (The NAP of the entire complex is represented by a separate entry of type G.) The house number fields are empty. The B5SC, DCP-Preferred LGC and Side of Street Indicator fields contain the values of these items assigned to the NAP. The BIN field is non-empty only if the NAP represents a building. The combination of fields in an LGI entry that contain information depends on the entry type, as indicated in the following table: List of Geographic Identifiers - Which Fields Contain Values By Entry Type Entry Type Code Entry Type Low & High House Numbers B5SC LGC Side of Street Indicator BIN blank Real Address Range \u2713 \u2713 \u2713 \u2713 \u2713 B NAUB (*) (*) \u2713 F Vacant Street Frontage \u2713 \u2713 G NAP of a complex \u2713 \u2713 \u2713 N NAP of a complex \u2713 \u2713 \u2713 (\\**) Q Pseudo-Address Range \u2713 \u2713 \u2713 \u2713 R Real Street of Vanity Address \u2713 \u2713 \u2713 \u2713 V Vanity Address \u2713 \u2713 \u2713 \u2713 \u2713 W Blank-Wall Building Fa\u00e7ade \u2713 \u2713 \u2713 X NAP of a constituent entity of a complex \u2713 \u2713 \u2713 (\\**) (*) NAUB entries may or may not contain B5SC and LGC values. An entry for a NAUB contains a B5SC value and an LGC value only if the GSS staff has determined that the NAUB fronts on, is adjacent to or is principally accessible from a particular street. (**) The BIN field is non-empty only if the NAP represents a building. The LGI\u2019s entries are ordered so that entries with non-empty BINs are listed first, grouped by BIN. Except for a special case (alternative borough for Marble Hill and Rikers Island - see Chapter V.7 ), if the input address is a real address, the first group of entries in the LGI are those for the BIN corresponding to the input address, and (except for alternative street records for Ruby Street - see Chapter V.8 ) the address range encompassing the input address is the very first entry in the LGI. After all the entries with non-empty BINs are listed, any entries with empty BINs, such as entries for pseudo-address ranges, are listed in no particular order as space allows. If the input address is a pseudo-address range, it may or may not appear in the LGI, depending on space and on the order in which the non-BIN entries happen to be listed. LIST OF GEOGRAPHIC IDENTIFIERS OVERFLOW FLAG - See LGI OVERFLOW FLAG LIST OF INTERSECTING STREETS \u2013 See also LIST OF CROSS STREETS Function: 2 Work Area Format: MSW and COW Length and Format: MSW: 20 bytes, consisting of slots for up to five 4-byte PB5SCs. \u2018Empty\u2019 slots contain packed zeros. COW: 30 bytes, consisting of slots for up to five 6-byte B5SCs. \u2018Empty\u2019 slots contain numeric zeros or blanks. Description: A list of PB5SCS for MSWs and B5SCs for COWs for up to five streets incident upon the intersection. The field NUMBER OF INTERSECTING STREETS contains the number of non-empty entries in the list. If the intersection lies on a borough boundary, the list may contain streets from both boroughs. Subject to the space limitation, the list may include the two input streets, and may include the pseudo-streets \u2018City Limit\u2019 and \u2018Dead End\u2019. The list never includes the pseudo-street \u2018Bend\u2019. The list always contains at least one entry (it contains precisely one entry in the case of a bending point of a street at which there are no other streets). The street codes of the input streets may, or may not, be included in the list (depending upon their numerical value.) Note, special handling has been given to Railroads, Coincident Street Features, etc. As a result of this special handling, the first one or two street codes in the list of intersecting streets may not always be the lowest two street codes. See LIST OF CROSS STREETS for further description and examples of the special handling. LIST OF SEGMENT IDS Functions: 3 and 3C Work Area Format: COW Length and Format: 500 bytes, consisting of a count of segment ids and 70 slots for 7-byte Segment IDs Description: This list is generated only if Auxiliary Segment Switch is set to \u2018Y\u2019. See Chapter VII.4 and Appendix13 . LIST OF STREET CODES Functions: 1*, 2, 3*, BB, BF Work Area Format: COW Length and Format: 80 bytes, consisting of 10 fields for B7SCs Description: List of borough and 7-byte street codes, corresponding to the LIST OF STREET NAMES. The number of street codes in the list is returned in the WA1 output field NUMBER OF STREET CODES AND STREET NAMES IN LIST. LIST OF STREET NAMES (WA1 output field) Functions: 1*, 2, 3*, BB, BF Work Area Format: MSW and COW Length and Format: 320 bytes, consisting of 10 fields for street names, each 32 bytes. Description: This field is used by several Geosupport features (see below) to return a list of street names. The number of street names in the list is returned in the WA1 output field NUMBER OF STREET NAMES IN LIST for MSWs, and in the WA1 output field NUMBER OF STREET CODES AND STREET NAMES IN LIST for COWs. The similar names feature uses the List of Street Names to return up to ten street names deemed \u2018similar\u2019 to a rejected input street name (see Chapter III.5 ). The browse functions , Functions BB and BF, use the List of Street Names to return up to ten normalized street names in alphabetical order as part of a street name browse (see Chapter III.7 ). The local street name validation feature uses the List of Street Names to return up to four locally valid alias street names corresponding to a street name rejected as locally invalid (see Chapter IV.5 ). The cross street names feature (see CROSS STREET NAMES FLAG) uses the List of Street Names to return street names corresponding to the street codes in the LIST OF CROSS STREETS (Functions 1, 1E, 3 and 3C) or the LIST OF INTERSECTING STREETS (Function 2). In the case of Functions 1, 1E, 3 and 3C, the first five 32-byte street name fields in the List of Street Names are used for the street names corresponding to the street codes in the LIST OF CROSS STREETS AT LOW ADDRESS END; the second five 32-byte street name fields in the List of Street Names are used for the street names corresponding to the street codes in the LIST OF CROSS STREETS AT HIGH ADDRESS END. The actual number of street names is found in Work Area 2 in the fields which provide the number of cross streets at each end of the street segment. In the case of Function 2, the first five 32-byte street name fields in the List of Street Names are used for the street names corresponding to the street codes in the LIST OF INTERSECTING STREETS. The actual number of street names is found in Work Area 2 in the field which provides the number of intersecting streets at the specified intersection. LOCATIONAL STATUS OF SEGMENT Functions: 3, 3C Work Area Format: MSW and COW Length and Format: 1 byte Description: Indicates locational status of segment per codes below. Code Meaning \u2018H\u2019 Segment internal to a block, but not a Dead End (A Land Hook) \u2018I\u2019 Dead End Segment \u2018X\u2019 Tract Boundary Segment (other than borough boundary) \u20181' Segment bordering Manhattan \u20182' Segment bordering Bronx \u20183' Segment bordering Brooklyn \u20184' Segment bordering Queens \u20185' Segment bordering Staten Island \u20189' Segment bordering City Limits LONGITUDE - See LATITUDE LOW HOUSE NUMBER - See HOUSE NUMBER MARBLE HILL/RIKERS ISLAND FLAG - See ALTERNATIVE BOROUGH FLAG","title":"L"},{"location":"appendices/appendix03/#m","text":"MODE SWITCH Functions: 1, 1E, 1A, 3, 3C, BL, BN Environment: NMF Only - Mode Switch of 'E' is supported only in a non-mainframe environment. Work Area Format: COW Only Length and Format: 1 byte Description: 'X' indicates request for Extended Work Area 2 for the supported functions. These extended work areas contain street names in addition to Street Codes. Users no longer have to make separate D, DG, or DN calls to get the street names. In addition, CSCL data is returned in the extended Work Area 2. See [Appendix 13](../appendix13/) for the Work Area layouts. Also, see Chapter II.7 . 'E' indicates request for Enhanced Work Area 2 for Functions 3 and 3C only. The enhanced Work Area 2 (WA2) returns all the information in the extended WA2 and also returns more B7SCs, instead of B5SCs. For example, Functions 3 and 3C return B7SCs in the list of cross streets at the low address end and the high address end of the segment. This gives the user easier access to a finer definition of the streets. Code Meaning \u2018X\u2019 Extended information in Extended WA2 requested \u2018E\u2019 Enhanced information in Enhanced WA2 requested. (Non-mainframe environment Functions 3 and 3C only.) Blank Extended / Enhanced information not requested (default)","title":"M"},{"location":"appendices/appendix03/#n","text":"NEIGHBORHOOD TABULATION AREA (NTA) CODE Field Names: NTA or NTA CODE Functions: 1, 1 Extended, 1E, 1E Extended, 1B, 3, 3 Extended, 3C, 3C Extended Work Area Format: COW Length and Format: 4 bytes alphanumeric Description: The Neighborhood Tabulation Areas (NTAs) are aggregations of census tracts that reflect the 2010 Census. The NTAs are assigned a 4-byte code and a 75-byte name. They are used by the Population Division of the Department of City Planning. See [Appendix 16](../appendix16/) for a description of the NTA\u2019s history and significance. The first two bytes of the NTA code are an alphabetic borough code as follows: Code Borough MN Manhattan BX Bronx BK Brooklyn QN Queens SI Staten Island The remaining two bytes are numeric and uniquely define the NTA. NODE ID - See NODE NUMBER NODE NUMBER (a.k.a. NODE ID) Field Names: FROM NODE FROM NODE ID TO NODE TO NODE ID Functions: 2, 3 (COW only), 3C (COW Only), 3S (COW Only), 1B (COW Only) Work Area Format: MSW and COW Length and Format: 7 bytes. Numeric Description: A node is an endpoint of a geographic feature segment represented in CSCL/LION. Most nodes are points where a feature bends or terminates or where two features intersect in CSCL/LION. Each node has a node ID assigned to it, which is unique in the entire city. Node ID assignments are permanent; if a node is deleted from CSCL, its node ID is retired and is never reassigned to a different node. A Node ID may be used to identify an intersection or the end points of a segment. An end point node is often referred to as a From Node or a To Node. NORMALIZED HOUSE NUMBER - See HOUSE NUMBER NTA - See NEIGHBORHOOD TABULATION AREA (NTA) CODE NTA CODE - See NEIGHBORHOOD TABULATION AREA (NTA) CODE NTA NAME - See also NEIGHBORHOOD TABULATION AREA (NTA) CODE Field Names: NTA NAME Functions: 1 Extended, 1E Extended, 1B, 3 Extended, 3C Extended Work Area Format: COW Length and Format: 75 bytes alphanumeric Description: See NEIGHBORHOOD TABULATION AREA (NTA) CODE NUMBER OF BUILDINGS ON TAX LOT Functions: 1A, BL - long WA2 only Work Area Format: MSW and COW Length and Format: 4 bytes numeric. Description: Indicates the number of entries in the LIST OF BUILDINGS. Maximum value is 2,500 NUMBER OF CROSS STREETS Field Names: NUMBER OF CROSS STREETS AT LOW ADDRESS END, NUMBER OF CROSS STREETS AT HIGH ADDRESS END Functions: 1, 1E, 3, 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: One byte, containing a numeric digit from 0 to 5. Description: Indicates the number of non-empty entries in the corresponding LIST OF CROSS STREETS. NUMBER OF CROSS STREETS AT HIGH ADDRESS END - See NUMBER OF CROSS STREETS NUMBER OF CROSS STREETS AT LOW ADDRESS END - See NUMBER OF CROSS STREETS NUMBER OF GEOGRAPHIC IDENTIFIERS Functions: 1A and BL - regular WA2 only, BN, AP Work Area Format: MSW and COW Length and Format: 2 bytes for MSW; 4 bytes for COW Description: Indicates the number of entries in the LIST OF GEOGRAPHIC IDENTIFIERS. For Function AP, the number is always \u20180001\u2019 NUMBER OF INTERSECTING STREETS Functions: 2 Work Area Format: MSW and COW Length and Format: One byte, containing a numeric digit from 1 to 5. Description: Indicates the number of non-empty entries in the LIST OF INTERSECTING STREETS. NUMBER OF PARKING LANES Functions: 1/1E Extended, 1B, 3 Extended, 3C Extended Work Area Format: COW Length and Format: 2 bytes, RJBF. Description: The number of lanes in a carriageway (roadway) that are reserved for parking of vehicles. The number of parking lanes were determined by DoITT\u2019s consultants working on the planimetric feature classes for NYC. NUMBER OF STREET CODES AND STREET NAMES IN LIST Functions: 1*, 2, 3*, BB, BF Work Area Format: COW Length and Format: 2 bytes, Numeric Description: Indicates the number of street names returned in the LIST OF STREET NAMES, corresponding to the number of street codes returned in the LIST OF STREET CODES.. NUMBER OF STREET FRONTAGES OF LOT Functions: 1A, BL, BN Work Area Format: MSW and COW Length and Format: 2 bytes, RJZF. Description: Indicates the number of streets on which the given lot has at least one frontage. NUMBER OF STREET NAMES IN LIST (WA1 output item) Functions: 1*, 2, 3*, BB, BF Work Area Format: MSW Length and Format: 2 bytes, packed decimal Description: Indicates the number of street names returned in the LIST OF STREET NAMES. NUMBER OF TOTAL LANES Functions: 1/1E Extended, 1B, 3 Extended, 3C Extended Work Area Format: COW Length and Format: 2 bytes, RJBF. Description: The total number of lanes in a carriageway (roadway) including travel lanes and parking lanes. The total number of lanes were determined by DoITT\u2019s consultants working on the planimetric feature classes for NYC. NUMBER OF TRAVEL LANES Functions: 1/1E Extended, 1B, 3 Extended, 3C Extended Work Area Format: COW Length and Format: 2 bytes, RJBF Description: The number of lanes in a carriageway (roadway) that are designated for the movement of vehicles traveling from one destination to another. The number of travel lanes were determined by DoITT\u2019s consultants working on the planimetric feature classes for NYC.","title":"N"},{"location":"appendices/appendix03/#p","text":"PARKING LANES - See NUMBER OF PARKING LANES PLATFORM INDICATOR - See WORK AREA FORMAT INDICATOR POLICE PATROL BOROUGH Functions: 1, 1X, 1E, 1EX, 2, 2W, 3, 3X, 3C, 3CX, 1B Work Area Format: COW Only Length and Format: 2 bytes Description: Police Patrol Boroughs are sub-borough geographic areas defined by the Police Department. They are composed of Police Precincts. Since the Police Department is supporting the Police Patrol Borough field, it is recommended that it be used.. Geosupport still returns the 1-byte POLICE PATROL BOROUGH COMMAND field to support those existing applications that access it. Code Meaning MS Manhattan South MN Manhattan North BX Bronx BS Brooklyn South BN Brooklyn North QN Queens North SI Staten Island QS Queens South POLICE PATROL BOROUGH COMMAND (See also POLICE PATROL BOROUGH) Functions: 1, 1E, 2, 3, 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: 1 byte Description: These are sub-borough geographic areas defined by the Police Department. They are composed of Police Precincts. Code Meaning 1 Manhattan South 2 Manhattan North 3 Bronx 4 Brooklyn South 5 Brooklyn North 6 Queens North 7 Staten Island 8 Queens South Note: It is recommended that you use the POLICE PATROL BOROUGH field (not the POLICE PATROL BOROUGH COMMAND field) since the Police Department is supporting the POLICE PATROL BOROUGH field. POLICE PRECINCT Functions: 1, 1E, 2, 3, 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: 3 bytes. RJZF. Description: Police Patrol Borough Commands are sub-divided into Police Precincts which are defined by the Police Department POLICE SECTOR Functions: 1/1E Extended, 1B, 2, 2W, 3 Extended, 3C Extended Work Area Format: COW Length and Format: 4 bytes. RJBF. Description: In order to support Neighborhood Policing, the NYC Police Department has divided each precinct into four or five fully-staffed Police Sectors. The Police Sectors correspond, as much as possible, to the boundaries of actual established neighborhoods. The Police Sector field consists of the Precinct Number followed by a letter, e.g. 114A. POLICE SERVICE AREA Functions: 1/1E Extended, 1B Work Area Format: COW Length and Format: 1 byte Description: The NYC Police Department Housing Bureau is responsible for the safety of residents, employees, and visitors in New York City Housing Authority developments. The Housing Bureau Police are stationed in Police Service Areas (PSAs), each of which provides services to a set of housing developments. Note that not all housing developments are assigned to a PSA. The Police Service Area field consists of one byte that designates a PSA, e.g. PSA 3 patrols housing developments in several precincts in Brooklyn North. When an address is not part of a housing development, the field is blank. PUBLIC USE MICRODATA AREA (PUMA) CODE - See PUMA CODE PUMA CODE Field Names: PUMA CODE Functions: 1 Extended, 1E Extended, 1B, 3 Extended, 3C Extended Work Area Format: COW Length and Format: 5 bytes, RJZF Description: PUMAs (Public Use Microdata Areas) are approximations of New York City's Community Districts which were developed for use with the Census Bureau's Public Use Microdata Samples (PUMS). In order to make the boundaries consistent with PUMAs, NTAs were created using whole census tracts, from the 2010 census, within PUMAs. For more information on the history and significance of NTAs and PUMAs, see Appendix 16 . See also NEIGHBORHOOD TABULATION AREA (NTA) CODE","title":"P"},{"location":"appendices/appendix03/#r","text":"REAL STREET ONLY FLAG Functions: 3S Work Area Format: COW Length and Format: 1 byte. Alphabetic Description: Code Value Meaning Blank All streets are returned R Real streets only (not Bends or Non-Street Features RIGHT 1990 CENSUS TRACT - See CENSUS TRACT. RIGHT 2000 CENSUS BLOCK - See CENSUS BLOCK. RIGHT 2000 CENSUS BLOCK SUFFIX - See CENSUS BLOCK SUFFIX. RIGHT 2000 CENSUS TRACT - See CENSUS TRACT. RIGHT 2010 CENSUS BLOCK - See CENSUS BLOCK. RIGHT 2010 CENSUS BLOCK SUFFIX - See CENSUS BLOCK SUFFIX. RIGHT 2010 CENSUS TRACT - See CENSUS TRACT. RIGHT ASSEMBLY DISTRICT - See ASSEMBLY DISTRICT. RIGHT BLOCKFACE ID - See BLOCKFACE ID. RIGHT ELECTION DISTRICT - See ELECTION DISTRICT. ROADBED REQUEST SWITCH Functions: 1 1, 1E, 3S, 1B (COW only) Work Area Format: MSW and COW Length and Format: 1 byte Description: Indicates request for Roadbed information for roads that are divided into two or more roadbeds. If Roadbed information is requested for a street that is not divided, Geosupport returns the generic information. For functions 1 and 1E, the Segment Type Code will indicate the type of information that is being returned. For more information on function 3S see Chapter VII.6 . Code Meaning \u2018R\u2019 Roadbed information requested Blank Generic (non-roadbed) information requested (default) RPAD BUILDING CLASSIFICATION CODE Functions: 1A, BL, BN, 1B (COW only) Work Area Format: MSW and COW Length and Format: 2 bytes Length and Format: 2 bytes Description: This is a set of land use/building classification codes defined by the Real Property Assessment Division (RPAD) of the Department of Finance. If a tax lot has more than one building or land use, RPAD assigns the building class code they deem to describe best the \u2018principal\u2019 building or the \u2018predominant\u2019 land use on the tax lot. The values and meanings of this set of codes can be obtained from the Department of Finance. RPAD CONDO IDENTIFICATION NUMBER Functions: 1A, BL, BN, 1B (COW only) Work Area Format: MSW and COW Length and Format: 4 bytes Description This is an identification number assigned by the Department of Finance to each condominium in the city. It identifies the condominium as a whole and not a specific condominium unit. RPAD SELF-CHECK CODE (RPAD SCC) FOR BBL Functions: 1A, BL, BN, 1B (COW only) Work Area Format: MSW and COW ANNOUNCEMENT: As of Geosupport Release 19C (on or about August 2019), the RPAD SCC fields will all contain blank values. In Release 19B the RPAD SCC for some BBLs may also be affected. See the background information below. Background information: The \u201cRPAD SCC\u201d values are derived from the Department of Finance\u2019s (DOF) RPAD file. DOF\u2019s new version of the RPAD file, now called the Property Master file, does not contain \u201cRPAD SCC\u201d values since DOF has phased them out. For Release 19B , Geosupport will continue to return existing \u201cRPAD SCC\u201d values based on the old RPAD file; however, with Release 19C , the \u201cRPAD SCC\u201d fields will all contain blank values. Description: For each BBL value, the Department of Finance has computed a Self-Check Code (SCC). This is a one-digit number computed from the BBL value using an algorithm chosen by DOF. The purpose of the SCC is to assist in validating key-entered BBLs. For more information on SCCs inquire to the information technology division of the Department of Finance.","title":"R"},{"location":"appendices/appendix03/#s","text":"SANBORN VOLUME AND PAGE (Deprecated) Functions: 1A, BL, BN, 2, 1B (COW only) Work Area Format: MSW and COW Length and Format: The Volume field is 3 bytes (2-digit volume number + 1-digit character suffix). The Page field is 4 bytes (3-digit page number + 1-digit character suffix). Description: Due to the lack of updates available to DCP, this field is deprecated. The Sanborn Map Company maintains a 79 volume atlas of New York City geography that is widely used by New York city agencies. The atlases contain approximately 6000 maps covering all five boroughs - SANITATION BULK ITEMS PICKUP Functions: 1/1E, 1/1E Extended, 1B Work Area Format: COW Length and Format: 5 bytes Description: This field contains the schedule for the Department of Sanitation (DSNY) pilot program of scheduled Bulk Items Pickup. Release 16D includes the implementation of scheduled collection of disposed Bulk Items for specific locations across the City (previously, disposed bulk items were collected in these areas on regular refuse collection. This field indicates which days of the week the Department of Sanitation will pick up recycling at the given address. See SANITATION ORGANICS RECYCLING PICKUP for the codes. SANITATION COLLECTION SCHEDULING SECTION AND SUBSECTION Functions: 1, 1E, 1B (COW only), 2 (COW only??) Work Area Format: MSW and COW Length and Format: 2 bytes Description: District Sections and Subsections defined by the Department of Sanitation for waste collection. SANITATION DISTRICT Work Area Format: MSW and COW Length and Format: 3 bytes. Numeric. The first byte is the Borough Code, and the second and third bytes are the District Number. Description: Districts defined by the Department of Sanitation for waste collection. SANITATION ORGANICS RECYCLING PICKUP Functions: 1, 1E, 1/1E Extended, 1B Work Area Format: COW Length and Format: 5 bytes Description: Indicates which days of the week the Department of Sanitation (DSNY) will pick up organics (compostable waste) recycling at the given address. Organics recycling is currently only available in pilot areas. In Release 16D, the pilot program was expanded to include more \u2018Large Buildings (+10 units)\u2019 (as defined by DSNY) Value Description M Monday T Tuesday W Wednesday TH Thursday F Friday S Saturday E \u2018E\u2019 is used in combination with a day of the week (as noted above) to indicate that collection occurs \u2018every\u2019 week on that day. Z Recycling is collected privately SANITATION RECYCLING PICKUP Functions: 1, 1E, 1B (COW only)?? Work Area Format: MSW and COW Length and Format: 3 bytes Description: Indicates which days of the week the Department of Sanitation will pick up recycling at the given address. See SANITATION ORGANICS RECYCLING PICKUP for the codes. SANITATION REGULAR PICKUP Functions: 1, 1E, 1B (COW only) Work Area Format: MSW and COW Length and Format: 5 bytes Description: Indicates which days of the week the Department of Sanitation will pick up non-recycling waste at the given address. See SANITATION ORGANICS RECYCLING PICKUP for the codes. SCHOOL DISTRICT (previously known as Community School District) Functions: 1, 1E, 2, 3, 3C, 1B (COW) Work Area Format: MSW and COW Length and Format: 2 bytes Description: School district code SEGMENT AZIMUTH Functions: 3, 3C Work Area Format: MSW and COW Length and Format: 3 bytes Description: This item represents the direction in which the segment lies on the earth\u2019s surface, expressed as an angle in degrees measured counterclockwise from due east. The segment is considered to be pointing in the direction of increasing addresses, and the azimuth value can range from 0 to 359 degrees, inclusive. For example, a segment pointing due east has an azimuth of 0; one pointing due north has an azimuth of 90; one pointing due west has an azimuth of 180; one pointing halfway between due west and due south (i.e., pointing due southwest) has an azimuth of 225. SEGMENT ID Functions: 1 and 1E (MSW: Long WA2 only), 1 and 1E (COW), 3, 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: 7 bytes. RJZF Description: Identifies, uniquely within the entire city, a geographic feature segment represented in the CSCL/LION file. SEGMENT LENGTH IN FEET Functions: 1, 1E, 3, 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: MSW: Fns 1 and 1E - 5 bytes numeric, Fns 3 and 3C - 3 bytes packed decimal COW: Fns 1, 1E, 3, 3C - 5 bytes numeric Description: Except for curved segments (see Curve Flag) , the Segment Length is computed from the Spatial Coordinates of the segment\u2019s endpoints, as digitized in the LION file. For curved segments, the Segment Length is computed by summing the lengths of the small straight line segments that approximate the curve in the GIS version of LION; this is a more accurate approximation to the true arc length of the curve than would be the segment\u2019s \u2018secant length\u2019, that is, the straight line distance between the curve\u2019s extreme endpoints. In the case of Functions 3 and 3C, if the input data define a street stretch encompassing more than one segment (because of a T-intersection or bend), the Segment Length returned is the sum of the lengths of the constituent segments of the stretch. Similarly for Functions 1 and 1E, if the input lies on a segment that is generated from multiple segments, the Segment Length returned is the sum of the lengths of the constituent segments. In all cases, the Segment Length has a very approximate level of accuracy only, and should not be used in applications requiring high precision. SEGMENT ORIENTATION Functions: 3, 3C Work Area Format: MSW and COW Length and Format: 1 byte character Description: This item is a set of codes grouping the possible azimuth values of a segment into eight categories. The categories are \"approximately\" due north, south, east and west, and the four quadrants of the rectangular coordinate system for segments that do not lie approximately due north, south, east or west. \"Approximately\" as used here means \"within 5 degrees\". In Manhattan, all orientation codes are defined with a 30\u2011degree clockwise shift (i.e., 30 is subtracted from the azimuth value) in order to conform to the conventional concept that the midtown streets and avenues lie due east\u2011west and due north\u2011south, respectively. For example, \"approximately due north\" means \"within 5 degrees of due north\"; for the boroughs other than Manhattan, this corresponds to the range of azimuth values from 85 to 95; in Manhattan, the corresponding azimuth value range is 55 to 65. There is a ninth orientation category, with a code value of \u2018U\u2019, meaning Geosupport could not determine the segment\u2019s orientation because of a problem with the segment\u2019s Spatial Coordinates . All occurrences of an orientation code of \u2018U\u2019 should be reported to Geographic Systems Section staff. Code Value Meaning Manhattan Other Boroughs U Orientation is undefined E Approximately due east 320-340 0-10 and 350-360 1 First quadrant, i.e. northeasterly 341-359 11-79 and 0-49 N Approximately due north 50-70 80-100 2 Second quadrant, i.e. northwesterly 71-139 101-169 W Approximately due west 140-160 170-190 3 Third quadrant, i.e. southwesterly 161-229 191-259 S Approximately due south 230-250 260-280 4 Fourth quadrant, i.e. southeasterly 251-319 281-349 SEGMENT TYPE CODE Functions: 1, 1E, 3, 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: 1 byte Description: Indicates type of segment Code Value Meaning \u2018U\u2019 Undivided \u2018G\u2019 Generic \u2018B\u2019 Both Generic and Roadbed \u2018R\u2019 Roadbed \u2018C\u2019 Connector \u2018E\u2019 Exit/Entrance Ramp \u2018T\u2019 Terminator \u2018F\u2019 Faux segment (used when a street or ramp physically ends at a roadbed, but connectivity needs to be maintained with the generic segment.) SEQUENCE NUMBER Functions: 1, 1E, 3, 3C, 1B (COW only) Work Area Format: MSW and COW Length and Format: 5 bytes Description: Identifies a CSCL/LION record uniquely within Face Code. Generally,Sequence Numbers are assigned in the geographic order in which the corresponding segments occur along the geographic feature identified by the given face code. The Borough Code, Face Code and Sequence Number concatenated form the LION key, which serves as a unique identifier for one CSCL/LION record. SIDE OF STREET INDICATOR Functions: 1, 1E, 1A - regular WA2, 3C Work Area Format: MSW and COW Length and Format: 1 byte character Description: This field indicates on which side of the street, left or right, the blockface containing the input address lies. Left and right are defined with respect to the direction of increasing addresses along the \u2018on\u2019 street. Code Value Meaning L Block face is on left side of street with respect to direction of increasing address R Generic SNOW PRIORITY - See DSNY SNOW PRIORITY SPATIAL COORDINATES (See also SPATIAL COORDINATES OF TAX LOT CENTROID) Functions: 1, 1B (blockface information), 1E, 2, 3 Extended, 3C Extended, AP (For Function 1A, BL, BN, 1B (property level information) see also SPATIAL COORDINATES OF TAX LOT CENTROID) Work Area Format: MSW and COW Length and Format: Spatial coordinates consist of two fields, an X Coordinate and a Y Coordinate, each 7 bytes RJZF. Description: Spatial coordinates are a pair of numbers that specify a location on the earth\u2019s surface. Geosupport returns spatial coordinates for an input address (Functions 1, 1B (blockface information), 1E, and AP), intersection (Function 2), and nodes at the end of a blockface (Functions 3 Extended and 3C Extended). Spatial coordinates are often used in conjunction with separate computer mapping and Geographic Information System (GIS) software to generate maps and for spatial analysis, although the Geosupport System does not itself provide users with such capabilities. Note: For Functions 1, 1B (blockface information) and 1E, the spatial coordinates that Geosupport returns are imprecise approximations of real-world locations, and are not appropriate for use in applications that require a high level of spatial accuracy. Spatial coordinates are expressed various geodetic coordinate systems, of which latitude/longitude is a well-known example. The coordinate system that Geosupport uses is known as the State Plane Coordinate (SPC) system. The SPC system is based upon the fact that, in a small enough geographic area, the earth\u2019s surface can be assumed to be flat without introducing a significant error. In the SPC system, each state of the U.S. is subdivided into zones small enough to model as planar areas. In each SPC zone, a Cartesian coordinate system is established, with the X and Y coordinate axes oriented due east and due north, respectively, and the origin selected to be a point well to the southwest of the entire zone. (The origin is so selected to insure that the X and Y coordinates of all points within the zone are positive values.) The SPC zone that New York City is in, and which Geosupport uses, is called the New York-Long Island zone, NAD 83. In the SPC system, one unit of X or Y represents one foot of distance on the ground. A major advantage of the SPC system over other map projection systems is the ease of calculating the distance between two points. In the case of Functions 1, 1B (blockface information) and 1E , if the street segment on which the input address lies is a straight line segment or an arc of a circle, Geosupport computes and returns output spatial coordinates using a complex algorithm, a detailed description of which is beyond the scope of this document. If, however, the input address lies on a irregularly curved geographic feature (see Curve Flag ), Functions 1, 1B (blockface information), and 1E return blanks in the spatial coordinate fields. Functions 1, 1B (blockface information), and 1E\u2019s spatial coordinates algorithm produces a point position based on how the input address is prorated with respect to the administrative address range allocated to the entire blockface. In addition, the computed point is positioned slightly set off from the segment, on the side of the street where the input address is located. This offset is graphically desirable and also insures that the point will fall within the interiors of the proper political and administrative district boundary polygons for the given address. The computed point is a rough approximation to the location of the input address, intended to be used only for thematic mapping and other purposes that do not require a high level of spatial accuracy. The spatial coordinates returned by Functions 1/1E/1B (blockface information) for NAPs and Vanity Addresses (see Chapter V.9 ) were an estimate calculated by Geosupport. As of Version 11.2, Geosupport will use the Citywide Street Centerline file (CSCL) X-Y Coordinates. The CSCL information guarantees that the X-Y coordinates fall within the actual location of the NAP or Vanity Address. In the case of Function 2 , the spatial coordinates returned are those of the LION node that corresponds to the input street intersection. Those coordinates represent an approximate center point of the intersection. In the case of Function 3 Extended and Function 3C Extended , the spatial coordinates returned are those of the nodes at the end of the blockface. Those coordinates represent an approximate center point of the intersection. In the case of Function AP , the spatial coordinates returned are those of the Address Point which is within 5 feet of the entrance(s) of the building. In the case of Functions 1A, BL, BN, 1B (property level information) ,the spatial coordinates returned are those of the Tax Lot Centroid. See SPATIAL COORDINATES OF THE TAX LOT CENTROID SPATIAL COORDINATES OF THE TAX LOT CENTROID Functions: 1A, BL, BN, 1B (COW only) Work Area Format: MSW and COW Length and Format: Spatial coordinates consist of two fields, an X Coordinate and a Y Coordinate, each 7 bytes RJZF. Description: Note: Internal Label Points and Annotation Points are no longer used They are replaced by Tax Lot Centroid. The Tax Lot Centroid is created in ESRI\u2019s ArcGIS software using the Department of Finance\u2019s Digital Tax Map (DTM). The coordinates associated with the Tax Lot Centroid are guaranteed to be within the property, unlike the coordinates returned by either Function 1 or Function 1E, where the Spatial Coordinates are an approximation based in the address range of the particular street the address is on. In addition, the Function 1/1E Spatial Coordinates always fall in the street bed and not within a tax lot, and most likely will not be adjacent to the tax lot the address is in. Additionally, when using Function 1A, the same coordinates will be returned no matter which of a tax lot\u2019s addresses is used as input. There are a few properties which do not have a Tax Lot Centroid; consequently, no coordinates will be returned for these properties. See SPATIAL COORDINATES for a description of the coordinate system (SPC) used by Geosupport. SPECIAL ADDRESS GENERATED RECORD FLAG (a.k.a. SAF FLAG or SPECIAL ADDRESS FLAG) Functions: 1, 1E, 1B (COW only) Work Area Format: MSW and COW Length and Format: 1 byte character Description: A non-blank value in this flag indicates one of a variety of special addressing situations. Code Value Meaning \u2018A\u2019 The address range returned in this work area is alternative to the address range that is stored in LION for this blockface. This case arises most commonly when the input address is an old (superseded) address on a blockface on which the buildings were re-numbered at some time in the past. For such an input address, the address range returned in this work area is the old address range, whereas the current address range is stored in LION. Another situation in which this flag is \u2018A\u2019 is when the given street segment has continuous parity address ranges on both sides of the street, such as when buildings are numbered consecutively around the arc of a cul-de-sac. \u2018B\u2019 The input street name or five-digit street code is different from that stored in LION for this blockface. This case arises when two street names having different B5SCs are both valid along a street or portion of a street. These are situations in which treating the two street names as aliases would result in an address range overlap. \u2018C\u2019 The input address pertains to Ruby Street, a street along the Brooklyn-Queens border that has a unique addressing situation. See ChapterV.8 . \u2018D\u2019 The input address involves a duplicate address situation. See Chapter V.6 . \u2018E\u2019 The input address is in one of the neighborhoods in which the name of the neighborhood can serve as an alternative street name for the streets in that neighborhood. Two Bronx neighborhoods, Edgewater Park and Harding Park, have this characteristic. \u2018G\u2019 The input name or street code corresponds to a non-addressable place name of a complex. A complex is a geographic feature that contains constituent entities that are separately geographically identifiable. Typical examples of complexes include airports, housing projects and university and hospital campuses. See Chapter III.6 . \u2018N\u2019 The input name or street code corresponds to a non-addressable place name of a \u2018stand-alone\u2019 geographic feature (a geographic feature that is neither a complex nor a constituent entity of a complex). Typical examples are individual named buildings, such as Empire State Building, Shea Stadium, Carnegie Hall. See Chapter III.6 . \u2018O\u2019 The blockface contains out-of-sequence and/or opposite-parity addresses. An out-of-sequence address contains a house number that is out of sequence with those of the immediately adjacent buildings. An opposite-parity address contains a house number that is of the opposite parity to the predominant parity on the blockface. See Chapter V.10 . \u2018P\u2019 The input address contains an addressable place name. Example: 2 Penn Plaza. See Chapter III.6 . \u2018S\u2019 The input address contains a house number suffix and is either the first or last address on this blockface. \u2018V\u2019 The input address is a \u2018vanity address\u2019, that is, an address in which the street name refers to a different street than the one on which the referenced building entrance is actually located. See Chapter V.9 . \u2018X\u2019 The input data specify a non-addressable place name of a constituent entity of a complex. Examples: AVERY FISHER HALL and NEW YORK STATE THEATER are names of constituent entities of the complex LINCOLN CENTER. See Chapter III.6 SPEED LIMIT Function: 1/1E Extended, 1B, 3/3C Extended Work Area Format: COW Length and Format: 2 bytes, blank if no data. Description: The Speed Limit field contains the speed limit, in miles per hour, of the paved area of the input location. Speed Limit data was provided by the NYC Department of Transportation and currently does not cover the entire city. Additional data will be made available in future releases. SPLIT ELECTION DISTRICT FLAG Function: 1E, 1B (COW only) Work Area Format: MSW and COW Length and Format: 1 byte Description: Code Value Meaning \u2018S\u2019 Block face is split among two or more election districts blank Block face lies entirely within an election district STATE SENATORIAL DISTRICT Function: 1E, 1B (COW only), 2 (COW only) Work Area Format: MSW and COW Length and Format: 2 bytes. Numeric. Description: A district of the upper house of the New York State legislature. Consists of an aggregation of Election Districts/td> STREET ATTRIBUTE INDICATOR (a.k.a. ATTRIBUTE BYTE) Functions: WA1 output field - 1, 1A, 1B, 1E, 1N, AP, D, DG, DN Work Area Format: MSW and COW Length and Format: 1 byte character Description: Indicates certain characteristics of selected streets Code Value Meaning \u2018A\u2019 Address Place Name \u2018B\u2019 Name of bridge \u2018C\u2019 Building Improvement District (BID) \u2018D\u2019 Duplicate Address Pseudo-Street Name (DAPS) \u2018E\u2019 Input street is entirely in Edgewater Park (a Bronx neighborhood that has special addressing characteristics). \u2018F\u2019 Input street is partly in Edgewater Park and partly outside of it. \u2018G\u2019 NAP of a complex. \u2018H\u2019 All house numbers on input street are hyphenated. \u2018I\u2019 Intersection Name \u2018J\u2019 Non-physical Boundary Feature \u2018M\u2019 House numbers on input street are of mixed hyphenation, i.e., some are hyphenated and some are not. \u2018N\u2019 Input street is a Non-Addressable Place Name (NAP) \u2018O\u2019 Shore Line \u2018P\u2019 Pseudo-street name \u2018R\u2019 Rail Line \u2018S\u2019 Front-Truncated Street Name \u2018T\u2019 Tunnel \u2018U\u2019 Misc. structure \u2018X\u2019 NAP Of a Constituent Entity of a Complex \u2018Z\u2019 Exit or Entrance Rampse Blank None of the above. In particular, all addresses on the input street are un-hyphenated STREET NAME NORMALIZATION FORMAT FLAG Functions: 1, 1A, 1E, 1N, 2, 3, 3C, 3S, D, DG, DN, 1B (COW only) Work Area Format: MSW and COW Length and Format: 1 byte. Description: Specifies the format in which Geosupport is to return output normalized street names. The default is to return street names in the sort format. Code Value Meaning blank Return normalized street names in the sort format \u2018C\u2019 Return normalized street names in the compact format \u2018S\u2019 Return normalized street names in the sort format STREET NAME NORMALIZATION LENGTH LIMIT (SNL) Functions: WA1 input item, Functions 1, 1A, 1E, 1N, 2, 3, 3C, 3S, D, DG, DN, 1B (COW only) Work Area Format: MSW and COW Length and Format: 2 bytes, blank or numeric, either LJBF or RJZF. Description: Specifies the maximum length in bytes within which Geosupport is to normalize street names. The minimum and maximum permissible SNL values are 4 and 32. The default that is in effect if the application does not specify an SNL value is 32 STREET WIDTH STREEET WIDTH MAXIMUM Functions: 1/1E Extended, 1B, 3 Extended, 3C Extended Work Area Format: COW Length and Format: Street Width: 3 bytes, RJBF Street Width Maximum, 3 bytes, RJBF Description: The width, in feet, of the paved area of the street. Street Width contains the width at the narrowest part of the street. Street Width Maximum contains the width at the widest part of the street. If the width is consistent along the street segment then both values are identical.","title":"S"},{"location":"appendices/appendix03/#t","text":"TAX BLOCK Functions: 1A, BL, BN, 1B (COW only) Work Area Format: MSW and COW Length and Format: 5 bytes Description: See Chapter VI.2 . TAX LOT Function: 1A, BL, BN, 1B (COW only) Work Area Format: MSW and COW Length and Format: 4 bytes Description: See Chapter VI.2 . TAX LOT CENTROID - See SPATIAL COORDINATES OF THE TAX LOT CENTROID TAX MAP SECTION Function: 1A, BL, BN, 1B (COW only) Work Area Format: MSW and COW Length and Format: 2 bytes Description: The Department of Finance real property tax maps are organized into sections; each section is organized into volumes; and each volume consists of pages. Tax Map Section values are unique within borough TAX MAP VOLUME Functions: 1A, BL, BN, 1B (COW only) Work Area Format: MSW and COW Length and Format: 2 bytes Description: See description at Tax Map Section . Tax Map Volume values are unique within Tax Map Section. TO NODE - See NODE NUMBER TO NODE ID - See NODE NUMBER TOTAL LANES - See NUMBER OF TOTAL LANES TRAFFIC DIRECTION Functions: 1/1E Extended, 1B, 3 Extended, 3C Extended Work Area Format: COW Length and Format: 1 byte Description: blank Non-street feature (or unknown if not a non-street feature) A One way street, traffic flows against the segment\u2019s directionality, i.e., from the segment\u2019s TO node to the FROM node P Pedestrian path, non-vehicular T Two\u2011way street W One way street, traffic flows with the segment\u2019s directionality, i.e., from the FROM node to the TO node TRAVEL LANES - See NUMBER OF TRAVEL LANES TRUCK ROUTE TYPE Functions: 1/1E Extended, 1B ,3 Extended, 3C Extended, 3 Enhanced, 3C Enhanced Environment: NMF Only - Truck Route Type is supported only in a non-mainframe environment. Work Area Format: COW Only Length and Format: 1 byte Description: This one-byte field indicates the type of truck route that is designated at the requested segment or block face. Value Truck Route Type 1 Limited Local Truck Route 2 Local Truck Route 3 Through Truck Route Blank Non-Designated Route (default) The Local Truck Route Network is designated for trucks with an origin and destination within a borough. This includes trucks that are traveling to make a delivery, or for loading or servicing. Trucks should only use Non-Designated routes at the beginning or end of a trip, when traveling between their origin/destination and a truck route. The Through Truck Route Network is primarily composed of major urban arterials and highways and must be used by trucks that have neither an origin or destination within the borough. Manhattan and Staten Island contain Limited Truck Zones with special time and size restrictions. Additional information may be found at the following link: Click here for the Department of Transportation (DOT) Link. Field name in non-mainframe environment: truck_route_type The following table indicates the position of the one-byte truck_route_type field in the non-mainframe environment COW Work Area 2. Function Position 1.1E Extended 761 1B 761 3 Extended 808 3C Extended 564 3 Enhanced 354 3C Enhanced 354","title":"T"},{"location":"appendices/appendix03/#u","text":"UNDERLYING B7SC OF TRUE STREET - See B7SC OF \u201cTRUE\u201d STREET UNIT INFORMATION FIELDS Field Names: UNIT INPUT UNIT \u2013 SORT FORMAT UNIT \u2013 TYPE UNIT \u2013 IDENTIFIER UNIT \u2013 DISPLAY FORMAT Functions: 1* (COW only) Work Area Format: COW Length and Format: See Chapter V.15 Unit Information Feature Description: See Chapter V.15 Unit Information Feature USPS PREFERRED CITY NAME Functions: 1/1E Extended, 1B Work Area Format: COW Length and Format: 25 bytes Description: The USPS (United States Postal Service) Preferred City Name (e.g. Astoria, Jackson Heights) is of particular importance for Queens addresses. For Queens, the USPS Preferred City Name is based on the ZIP code associated with the input address. Unless there is a special ZIP code, the following holds true for the other boroughs. For Manhattan, the USPS Preferred City Name is New York. For all the other boroughs, the USPS Preferred City Name is the borough name, viz. Bronx, Brooklyn, and Staten Island. In the rare, and unexpected, instance where there is no city name available for a Queens location, then the city name will be set to a default of QUEENS and the following warning message will be issued: GRC 01, Reason Code Y: ZIP NOT IN CITY NAME TABLE. GENERIC CITY NAME RETURNED. NOTIFY DCP/GSS","title":"U"},{"location":"appendices/appendix03/#v","text":"VACANT LOT FLAG Work Area Format: MSW and COW Length and Format: 1 byte Description: Code Value Meaning \u2018V\u2019 Tax lot is currently vacant, i.e., it has no existing buildings Blank Tax lot has at least one existing building","title":"V"},{"location":"appendices/appendix03/#w","text":"WORK AREA FORMAT INDICATOR Functions: All Work Area Format: MSW and COW Length and Format: 1 byte Description: This indicator specifies which work area layouts are to be used in an API call. Note: This indicator is also known as the Platform Indicator. Code Meaning blank The IBM mainframe specific work areas (MSWs) are used. The MSWs contain packed decimal fields. In general, these work areas are the ones described throughout this manual \u2018C\u2019 The platform-independent work areas known as the Character-Only Work Areas (COWs) are used. These contain no packed decimal fields. For information on using COWs on the mainframe and the differences from the MSWs, see [Appendix 12](../appendix12/). For the work area layouts of the COWs, see [Appendix 13](../appendix13/).","title":"W"},{"location":"appendices/appendix03/#x","text":"XY COORDINATES - see SPATIAL COORDINATES X-Y COORDINATES - see SPATIAL COORDINATES ZIP CODE Functions: 1, 1A, 1E, 2, 3, 3C, 1B Work Area Format: MSW and COW Length and Format: 5 bytes. Numeric Description: U.S. Postal Service\u2019s 5-digit ZIP code ZIP code may also be used as input with functions 1, 1A, 1B, and 1E to identify the borough or Duplicate Address Pseudo-Street name (DAPS).","title":"X"},{"location":"appendices/appendix04/","text":"APPENDIX 4: GEOSUPPORT RETURN CODES, REASON CODES AND MESSAGES This appendix consists of a table listing all of the Geosupport Return Codes (GRCs), Reason Codes and Messages, and the Geosupport function(s) that can elicit each of them. The table is current as of the Geosupport software version indicated in the table heading. See Chapter II.2 for a detailed discussion of application reject handling using GRCs, Reason Codes and Messages. In the table, an asterisk in the second byte position of a function code is a 'wildcard', signifying all function codes that begin with the character that is in the first byte position. For example, '3 * ' signifies all function codes that begin with '3'(namely, as of this writing, Functions 3, 3C and 3S). An asterisk in the second position of a function code is used as a shorthand notation to represent all function codes having the indicated value in the first position, as follows 1 = 1, 1A, 1B, 1E, 1N, AP 3 = 3, 3C, 3S B = BB, BF, BL, BN D = D, DG, DN Typically, any function listed with an asterisk also includes the various forms of the function, e.g. Extended, Long, Auxiliary Segments etc. GEOSUPPORT SYSTEM RETURN CODES, REASON CODES AND MESSAGES (As of Geosupport Software Version 20.1 - unchanged since V17.1) GRC REASON CODE FUNCTIONS * = wildcard MESSAGE (LITERAL TEXT IN UPPERCASE, < Variable values in angled brackets>, [Comments in Square Brackets & Mixed Case]) 00 All [Processing was unconditionally successful-no message issued] 01 [GRC 01s are warnings] 1 1,1A,1B, 1E,AP ADDR NUMBER ALTERED: RANGE ASSUMED. USING DIGITS BEFORE DASH ONLY ADDR NUMBER ALTERED: USING DIGITS BEFORE DASH ONLY 2 1,1A,1B,1E,AP ADDR NUMBER ALTERED: HYPHEN INSERTED 3 1,1A,1B,1E,AP ADDR NUMBER ALTERED: HYPHEN DELETED 4 BB,BF YOU HAVE REACHED THE < FIRST or LAST> STREET NAME IN THE BOROUGH OF < boro. name> 5 1,1A,1B,1E INPUT IS A COMPLEX. OUTPUT DATA MAY PERTAIN TO ONLY PART OF THE COMPLEX 6 1,1A,1B,1E OUTPUT STREET NAME/CODE DIFFER FROM INPUT [Browse Flag P/F/R and Ruby Street/Sapphire Street processing] 7 1,1A,1B,1E OUTPUT STREET NAME/CODE DIFFER FROM INPUT. ADDR NUMBER ALTERED: RANGE ASSUMED OUTPUT STREET NAME/CODE DIFFER FROM INPUT. ADDR NUMBER ALTERED: HYPHEN INSERTED OUTPUT STREET NAME/CODE DIFFER FROM INPUT. ADDR NUMBER ALTERED: HYPHEN DELETED 8 1A,1B INPUT ADDRESS IS A PSEUDO-ADDRESS 9 1A,1B INPUT ADDRESS IS PSEUDO-ADDRESS. ADDR NUMBER ALTERED: ADDRESS RANGE ASSUMED INPUT ADDRESS IS PSEUDO-ADDRESS. ADDR NUMBER ALTERED: HYPHEN INSERTED INPUT ADDRESS IS PSEUDO-ADDRESS. ADDR NUMBER ALTERED: HYPHEN DELETED A 1A,1B,BL LOT HAS MORE ITEMS THAN LISTED B 1A,1B LOT HAS MORE ITEMS THAN LISTED. ADDR NUMBER ALTERED: ADDR RANGE ASSUMED LOT HAS MORE ITEMS THAN LISTED. ADDR NUMBER ALTERED: HYPHEN INSERTED LOT HAS MORE ITEMS THAN LISTED. ADDR NUMBER ALTERED: HYPHEN DELETED C 1,1A,1B,1E,2,3 * IN MARBLE HILL \u2013 LEGAL BORO IS MANHATTAN IN MARBLE HILL - LEGAL BORO IS MANHATTAN. ADDR NUMBER ALTERED: RANGE ASSUMED IN MARBLE HILL - LEGAL BORO IS MANHATTAN. ADDR NUMBER ALTERED: HYPHEN INSERTED IN MARBLE HILL - LEGAL BORO IS MANHATTAN. ADDR NUMBER ALTERED: HYPHEN DELETED ON RIKERS ISL - LEGAL BORO IS THE BRONX ON RIKERS ISL - LEGAL BORO IS THE BRONX. ADDR NUMBER ALTERED: RANGE ASSUMED ON RIKERS ISL - LEGAL BORO IS THE BRONX. ADDR NUMBER ALTERED: HYPHEN INSERTED ON RIKERS ISL - LEGAL BORO IS THE BRONX. ADDR NUMBER ALTERED: HYPHEN DELETED D 1 * ,2,3 * ,AP PARTIAL STREET NAME USED TO MEET SNL REQUIREMENT E 1B,1E OUTPUT ADDRESS RANGE IS SPLIT BY ELECTION DISTRICT BOUNDARY F BN THIS BIN IS TEMPORARY AND WILL BE REPLACED IN THE FUTURE G 1,1A,1B,1E ADDR NUMBER ALTERED: RANGE ASSUMED. NOTE: INCONSISTENT ODD/EVEN ADDR RANGE H 2,3S THESE STREETS INTERSECT ONCE-COMPASS DIRECTION IGNORED I 1,1A,1B,1E INPUT IS NON-ADDRESSABLE PLACE NAME (NAP) - ADDRESS NUMBER IGNORED INPUT IS NAP WITH INVALID ADDRESS NUMBER. ADDRESS NUMBER IGNORED J[not implemented] 1,1A,1B,1E,2,3 * < Full street name including EAST or WEST as first word> ASSUMED [An input Bronx or Manhattan street name is missing EAST or WEST as its first word, and the intended full street name is unambiguous] J(cont.) 2,3 * < Full street name> AND ASSUMED [Two input Bronx or Manhattan street names are missing EAST or WEST as their first words, and the intended names are unambiguous] 3 * < ALL THREE STREET NAMES ASSUMED [Three input Bronx or Manhattan street names are missing EAST or WEST as their first words, and the intended names are unambiguous] K 1,1A,1B,1E,AP EMBEDDED BLANK IN ADDRESS NUMBER HAS BEEN REPLACED WITH A HYPHEN L or R 3,3C < LEFT or RIGHT> SIDE OF SEGMENT IS IN < BROOKLYN or QUEENS> or < LEFT or RIGHT> SIDE OF SEGMENT IS IN < NASSAU or WESTCHESTER> - NO INFO RETURNED FOR THAT SIDE M 1,1A,1B,1E INPUT ADDRESS NUMBER IS ZERO N 1,1A,1B,1E, 2,3 * ,D * STREET NAME(S) AND STREET CODE(S) BOTH SPECIFIED AS INPUT - < CODE(S) or NAMES> IGNORED O 1,1A,1B,1E CAUTION: < BLOCK FACE or ADDRESS RANGE> CONTAINS OUT-OF-SEQUENCE AND/OR OPPOSITE PARITY ADDRESSES P 1,1B,1E IRREGULARLY CURVED STREET SEGMENT - SPATIAL COORDINATES RETURNED AS BLANKS Q 3 THESE STREETS INVOLVE A \u2018DOGLEG\u2019 - SHORTEST STRETCH PROVIDED S 1,1A,1B,1E,AP < HNI or HNS> AND DISPLAY ADDRESS NUMBER BOTH SPECIFIED AS INPUT- < HNI or HNS> IGNORED T 2 NON-INTERSECTION NAME IGNORED U 3 STRETCH HAS MORE ITEMS THAN LISTED V 1,1B,1E < Normalized input address number> < Norm\u2019d input street name> IS ON < LEFT or RIGHT> SIDE OF < True street name> [This warning is issued for vanity addresses, addressable place names, NAPs other than complexes (for which an underlying address is not available), and certain alternative addresses known as type \u2018B\u2019 addresses.] or < Address number> < True street name> IS THE UNDERLYING ADDRESS OF < Normalized input NAP> [This warning is issued for NAPs other than complexes, for which an underlying address is available.] W 1,1A,1B, 1E,AP,2,3 * INPUT STREET NAME HAS BEEN MODIFIED [a. MSW: Extraneous data were deleted from the end of a free-form address. COW: Same as MSW above, except that, in addition, the first 14 bytes of the extraneous data on a free-form address were processed as if they were in the UNIT input field (if there was no other data in the Unit input field).] [b. Neighborhood name was deleted from Duplicate Address Pseudo-Street Name (DAPS) for Functions 2, 3 * .] X 1E,1B THERE ARE NO POLITICAL DISTRICTS ASSIGNED TO THIS LOCATION Y 1/1E Ext 1B COW Only ZIP NOT IN CITY NAME TABLE. GENERIC CITY NAME RETURNED. NOTIFY DCP/GSS Z 1A,1B,BL,BN A BILLING BBL HAS NOT YET BEEN ASSIGNED TO THIS CONDOMINIUM $ 1 * COW Only UNIT IDENTIFIER HAS BEEN TRUNCATED [This warning is generated only when the Unit Input field is used.] * 1A,1B BL,BN COW Only TPAD Warning will appear in message field. [See list of TPAD Warning messages and Reason Code Qualifiers /TPAD Conflict Flag after this table.] [GRCs greater than 01 are rejects or errors] 02 2 STREETS INTERSECT TWICE- < number of feet> FT BETWEEN INTERSECTIONS. COMPASS DIRECTION REQ'D 03 BLANK 2 MSW Only STREETS INTERSECT MORE THAN TWICE-CAN ONLY BE PROCESSED BY COW FUNCTION CALL [Reason Code value is blank] A 2 COW Only STREETS INTERSECT MORE THAN TWICE\u2013USE FUNCTION 2W TO FIND RELATED NODES B 2 COW Only STREETS INTERSECT MORE THAN TWICE \u2013 USE NODE AS INPUT 04 1A,BL MSW Only 1A/BL VERSION SWITCH INVALID - MUST BE S. ONLY STANDARD IS SUPPORTED 05 3S FOR FUNCTION 3S, ONLY FIRST BOROUGH CODE IS PERMITTED 07 1,1A,1B,1E FOR A NAME OF A COMPLEX, 5-DIGIT STREET CODE INPUT IS NOT PERMITTED 08 All but B * INVALID STREET NAME NORMALIZATION FORMAT FLAG - MUST BE BLANK, C OR S 09 3C < Compass direction> SIDE OF STREET SEGMENT IS NOT IN < borough name> 10 All but B * INVALID SNL VALUE - MUST BE BETWEEN 4 AND 32 INCLUSIVE 11 0 1 * ,2,3 * , AP NOT RECOGNIZED. THERE ARE NO SIMILAR NAMES 12 2 INTERSECTION NAME NOT FOUND 13 1 1,1A,1B,1E,AP ADDRESS NBR < value> CONTAINS AN INVALID CHARACTER < character> IN POSITION < position number> 2 1,1A,1B,1E,AP ADDRESS NBR < value> HAS MORE THAN 3 DIGITS AFTER DASH 3 1,1A,1B,1E,AP ADDRESS NBR < value> HAS TOO MANY DASHES 4 1,1A,1B,1E,AP ADDRESS NBR < value> HAS NO DIGITS AFTER THE DASH 6 1,1A,1B,1E,AP ADDRESS NBR HAS TOO MANY DIGITS (MORE THAN 5) 7 1,1A,1B,1E,AP ADDRESS NBR < value> IS NOT COMPLETE AS ENTERED 8 1,1A,1B,1E,AP ADDRESS NBR < value> PORTION AFTER HYPHEN EXCEEDS ALLOWABLE MAXIMUM 9 1,1A,1B,1E,AP,D * ADDRESS NBR < hse nr value> INVALID INTERNAL FORMAT A 1,1A,1B,1E,AP,D * ADDRESS NBR < value> HAS AN UNKNOWN OR INVALID SUFFIX/ENDING B 1,1A,1B,1E,AP INPUT CONTAINS NO ADDRESS NUMBER C 1,1A,1B,1E,AP ADDRESS NBR < value> HAS AN EMBEDDED BLANK D 1,1A,1B,1E,AP ADDRESS NBR HAS INVALID FORMAT FOR EDGEWATER PARK E 1,1A,1B,1E,AP THIS STREET HAS HYPHENATED ADDRESS NBRS ONLY. TRY < address nbr with hyphen ins erted to left of last two digits> OR < address nbr with hyphen inserted to left of last three digits> F 1,1A,1B,1E,AP THIS STREET HAS UNHYPHENATED ADDRESS NBRS ONLY. TRY < digits of address number to left of dash only> OR < digits to left and right of dash concatenated without the dash> G 1,1A,1B,1E,AP ADDRESS NUMBER HAS INVALID HYPHENATION FOR THIS STREET [Input address number is an unhyphenated 2-digit number, but the input street has hyphenated address numbers only.] 14 BLANK 3S INPUT DOES NOT DEFINE A STREET STRETCH, SINCE INPUT INTERSECTIONS ARE IDENTICAL A 3S INPUT DOES NOT DEFINE A STREET STRETCH [e.g. On-street has a different 5-digit street code than the underlying street] 15 All but B * STREET NAME CANNOT BE NORMALIZED 16 1 * ,AP STREET NAME IS MISSING 17 All BOROUGH CODE IS MISSING 18 BL TAX BLOCK NOT NUMERIC 19 BL TAX LOT NOT NUMERIC 20 BN BUILDING IDENTIFICATION NUMBER (BIN) IS MISSING 21 BN BUILDING IDENTIFICATION NUMBER (BIN) NOT FOUND 22 BN INVALID BIN FORMAT: NON-NUMERIC, FIRST DIGIT NOT 1-5 OR REST OF DIGITS ALL ZERO 23 BN TEMPORARY DEPARTMENT OF BUILDINGS BIN: EXISTS ONLY IN D.O.B FILES 24 3 * ON STREET IS MISSING 25 2,3 * CROSS STREET 1 IS MISSING 26 2,3 * CROSS STREET 2 IS MISSING 27 All INVALID WORK AREA FORMAT INDICATOR - MUST BE C OR BLANK 28 1,1A,1B,1E,AP A PARTIAL STREET NAME MAY NOT BE USED IN A FREE-FORM ADDRESS 29 1,1A,1B,1E,AP,3 * INTERSECTION < INTERSECTION NAME> MAY NOT SERVE AS ON-STREET 30 2 < STREET NAME> IS NOT PART OF < INTERSECTION NAME> 31 1 1A,BL COW Only MODE SWITCH OF X NOT VALID WITH LONG-WORK-AREA-2 SET TO L 32 2,2W COW Only INVALID NODE \u2013 NON-NUMERIC OR EMBEDDED BLANKS FOUND 33 2,2W COW Only ACCESS BY NODE FAILED \u2013 NODE NOT FOUND 38 3S < Compass direction value> IS AN INVALID COMPASS DIRECTION VALUE FOR < FIRST or SECOND> INPUT INTERSECTION 39 2,3C INVALID COMPASS DIRECTION VALUE - MUST BE N, S, E OR W 40 2,3C COMPASS DIRECTION VALUE IS INVALID FOR THIS INPUT LOCATION 41 1,1A,1B,1E,AP THIS STREET HAS NO ADDRESSES 42 blank 1,1A,1B,1E,AP ADDRESS NUMBER OUT OF RANGE 1 1,1A,1B,1E,AP ADDRESS NUMBER OUT OF RANGE. CORRECT DIGITS OR INSERT HYPHEN AS < AB-CD> OR < A-BCD> [where input was of the form ABCD] 2 1,1A,1B,1E,AP ADDRESS NUMBER OUT OF RANGE. CORRECT DIGITS OR TRY < AB> OR < ABCD> [where input was of the form AB-CD] 44 3C INPUT DOES NOT DEFINE A BLOCK FACE 45 3 INPUT DOES NOT DEFINE A STREET SEGMENT 46 3,3C STREET COMBINATION NOT UNIQUE [The input is ambiguous, i.e., it describes more than one valid street segment.] 47 1,1A,1B,1E COW Only INVALID HNL VALUE - MUST BE BETWEEN 12 AND 16 INCLUSIVE 48 1,1A,1B,1E COW Only INVALID HOUSE NUMBER JUSTIFICATION VALUE - MUST BE L, R OR BLANK 49 1,1A,1B,1E COW Only ADDRESS NUMBER CANNOT BE NORMALIZED WITHIN REQUESTED HNL 50 1 thru 4 1,1A,1B,1E,2,3 * ,AP < Input street name> IS AN INVALID STREET NAME FOR THIS LOCATION [The Reason Code indicates the number of valid street names returned in the Similar Names List.] 55 2,3 * NON-ADDRESSABLE PLACE NAME PROCESSING IS NOT AVAILABLE FOR THIS FUNCTION 56 1E ADDRESS IS SPLIT AMONG MULTIPLE ELECTION DISTRICTS. ADDRESS NBR SUFFIX REQUIRED [The input address is associated with more than one Election District (ED). Function 1E requires an address number suffix to be included with this address to identify a portion of the building specific to one ED.] 57 3S INPUT INCLUDES ROADBED NAME, BUT ROADBED REQUEST SWITCH IS OFF 58 1,1A,1B,1E,AP NON-ADDRESSABLE PLACE NAME, BRIDGE, TUNNEL OR MISC STRUCTURE NOT FOUND 59 1 * ,2,3 * , AP STREET NAME CANNOT BE NORMALIZED WITHIN REQUESTED SNL 61 3S STREET STRETCH NOT FOUND 62 2,3S < Street name> & < other street name> DO NOT INTERSECT 63 2 thru 4 2 INPUT STREET NAMES DO NOT FORM A UNIQUE INTERSECTION [Issued when there is more than one possibility for an assumed front- truncated street name (where EAST or WEST is added at the beginning of the name). Reason Code indicates the number of possible names. The possible names are returned in the List of Street Names in WA1.] 64 1,1A,1B,1E,2,3 * ,AP,D * STREET CODE NOT FOUND 65 All INVALID ROADBED REQUEST SWITCH. MUST BE R OR BLANK 66 3S < Street name> & < other street name> INTERSECT MORE THAN TWICE-CANNOT BE PROCESSED 67 A-Z All ERROR ACCESSING GEOSUPPORT FILE: . NOTIFY SYSTEM SUPPORT [This can be an installation error or a system error. Notify System Support.] 68 3S < Street name> & < other street name> INTERSECT TWICE-COMPASS DIRECTION REQ\u2019D 69 A 3,3C COW Only INVALID AUXSEG REQUEST SWITCH. MUST BE Y, N OR BLANK B 1A,1B, BL,BN COW Only INVALID TPAD REQUEST SWITCH. MUST BE Y, N OR BLANK C 1,1E,1A,3,3C,AP BL,BN COW Only INVALID MODE SWITCH VALUE. MUST BE X OR BLANK D All COW Only INVALID WTO SWITCH VALUE. MUST BE Y, N, OR BLANK 70 A All but 3,3C COW Only AUXSEG REQUEST SWITCH NOT VALID FOR THIS FUNCTION B All but 1A,1B,BL,BN COW Only TPAD REQUEST SWITCH NOT VALID FOR THIS FUNCTION C All but 1,1E,1A,3,3C,AP,BL,BN COW Only MODE SWITCH OF X (EXTENDED) NOT VALID FOR THIS FUNCTION 71 1,1A,1B,1E.AP INPUT ZIP CODE IS NOT A NEW YORK CITY ZIP CODE 72 1,1A,1B,1E,AP INPUT ZIP CODE IS NOT ALL NUMERIC 73 1A,BL MSW Only LEGACY VERSION OF FUNCTIONS 1A AND BL IS DISCONTINUED. SEE TECH BULLETIN 05-1 74 2,3 * ADDRESSABLE PLACE NAME PROCESSING IS NOT AVAILABLE FOR THIS FUNCTION 75 1,1A,1B,1E DUPLICATE ADDRESS-USE < pseudo-streetname1> OR < pseudo-streetname2> 76 All but 1,1B,1E,3S ROADBED REQUEST SWITCH NOT IMPLEMENTED FOR THIS FUNCTION 77 BL TAX LOT NOT FOUND 78 All COW Only INVALID BROWSE FLAG VALUE. MUST BE P, F, R, OR BLANK 79 3S,BL,BN,D * COW Only BROWSE FLAG NOT VALID FOR THIS REQUEST 57 3S INPUT INCLUDES ROADBED NAME, BUT ROADBED REQUEST SWITCH IS OFF 80 1,1A,1B,1E,2,3 * BUSINESS IMPROVEMENT DISTRICT (BID) IS NOT VALID AS INPUT FOR THIS FUNCTION 88 Blank All GEOSUPPORT ERROR. EMAIL GSS_FEEDBACK@PLANNING.NYC.GOV AND REPORT 88-[An internal Geosupport problem, not a user error.] 1-9,A-Z All GEOSUPPORT ERROR. EMAIL GSS_FEEDBACK@PLANNING.NYC.GOV AND REPORT 88- < value > ERROR [where is the reason code.] [An internal Geosupport problem, not a user error.] 89 2,3C,3S,BN LONG WORK-AREA-2 OPTION IS INVALID FOR THIS FUNCTION 1,1B,1E,3 COW Only 90 1,1A,1E,3,BL LONG WORK-AREA-2 FLAG MUST BE L OR BLANK 96 All FUNCTIONALITY UNDER CONSTRUCTION 97 BB,BF INPUT IS BEYOND THE LAST STREET NAME IN THE BOROUGH OF 98 All NO INPUT DATA RECEIVED 99 All INVALID BOROUGH CODE. MUST BE 1, 2, 3, 4 OR 5 EE 1 1 * ,2,3 * ,AP < Street name > NOT RECOGNIZED. IS IT < similar street name >? [Issued when there is precisely one similar name.] 2 thru 9, A 1 * ,2,3 * ,AP < Street name > NOT RECOGNIZED. THERE ARE < number > SIMILAR NAMES [Issued when there is more than one similar name. Reason Code indicates number of similar names. Reason Code \u2018A\u2019 signifies 10 similar names. The similar names are returned in WA1.] ?? N/A INVALID FUNCTION CODE 1 1B,AP MSW Only INVALID FUNCTION CODE- AVAILABLE IN COW FORMAT ONLY TPAD WARNING MESSAGES and TPAD Conflict Flag / REASON CODE QUALIFIERS in ( ) \"TPAD BBL USED, NO EXISTING PAD BBL\"; (2) \"TPAD BBL USED, PAD PSEUDO-ADDRESS ON DIFFERENT BBL THAN TPAD NB BIN\"; (3) \"TPAD BBL USED, EXISTING PAD BIN OF INPUT ADDR ON DIFF BBL THAN TPAD NB BIN\"; (4) \"TPAD BBL USED, PAD BIN OF INPUT ADDR W/DM-5 ON DIFF BBL THAN TPAD NB BIN\"; (6) \"TPAD BBL USED, PAD BIN OF INPUT ADDR W/DM-6 ON DIFF BBL THAN TPAD NB BIN\"; (7) \"PAD BBL USED, TPAD NB BIN WITH NB-0 ON DIFFERENT BBL THAN PAD BIN\"; (8) \"PAD BBL USED, TPAD NB BIN WITH NB-1 ON DIFFERENT BBL THAN PAD BIN\"; (9) \"PAD BBL USED, TPAD NB BIN WITH NB-2 ON DIFFERENT BBL THAN PAD BIN\"; (A) \"PAD BBL USED, TPAD NB BIN WITH NB-3 ON DIFFERENT BBL THAN PAD BIN\"; (B) \"TPAD DATA FOUND, TPAD ADDRESS OVERLAPS PAD ADDRESS\"; (C) \"ADDRESS FOUND IN TPAD, NOT FOUND IN PAD\"; (D) \"BIN FOUND IN TPAD, NOT FOUND IN PAD\"; (E)","title":"Appendix 4: Geosupport Return Codes, Reason Codes And Messages"},{"location":"appendices/appendix04/#tpad-warning-messages-and-tpad-conflict-flag-reason-code-qualifiers-in","text":"\"TPAD BBL USED, NO EXISTING PAD BBL\"; (2) \"TPAD BBL USED, PAD PSEUDO-ADDRESS ON DIFFERENT BBL THAN TPAD NB BIN\"; (3) \"TPAD BBL USED, EXISTING PAD BIN OF INPUT ADDR ON DIFF BBL THAN TPAD NB BIN\"; (4) \"TPAD BBL USED, PAD BIN OF INPUT ADDR W/DM-5 ON DIFF BBL THAN TPAD NB BIN\"; (6) \"TPAD BBL USED, PAD BIN OF INPUT ADDR W/DM-6 ON DIFF BBL THAN TPAD NB BIN\"; (7) \"PAD BBL USED, TPAD NB BIN WITH NB-0 ON DIFFERENT BBL THAN PAD BIN\"; (8) \"PAD BBL USED, TPAD NB BIN WITH NB-1 ON DIFFERENT BBL THAN PAD BIN\"; (9) \"PAD BBL USED, TPAD NB BIN WITH NB-2 ON DIFFERENT BBL THAN PAD BIN\"; (A) \"PAD BBL USED, TPAD NB BIN WITH NB-3 ON DIFFERENT BBL THAN PAD BIN\"; (B) \"TPAD DATA FOUND, TPAD ADDRESS OVERLAPS PAD ADDRESS\"; (C) \"ADDRESS FOUND IN TPAD, NOT FOUND IN PAD\"; (D) \"BIN FOUND IN TPAD, NOT FOUND IN PAD\"; (E)","title":" TPAD WARNING MESSAGES and TPAD Conflict Flag / REASON CODE QUALIFIERS in ( ) "},{"location":"appendices/appendix05/","text":"APPENDIX 5: GEOSUPPORT COPY FILES (MSW) As of January 1, 2020 DCP no longer supports Mainframe Specific Workareas (MSW). This appendix contains printouts of the Geosupport MSW COPY files for COBOL, Assembler, PL/1, C and NATURAL. (For C, COPY files take the form of header files. For NATURAL, COPY files take the form of Local Data Areas.) The Geosupport COPY files contain source code layouts of the Geosupport work areas. These files are stored in a COPY library that can be accessed by user application programs at compile time. Each supported programming language has an appropriate declarative statement for referencing COPY files at compile time. The Geosupport COPY files are listed below. GEOSUPPORT SYSTEM COPY FILES (MSW) - - - - - - - - - - - - - COPY File Name - - - - - - - - - - - - - - MSW WORK AREA LENGTH(bytes) COBOL ASSEMBLER PL/1 C NATURAL WA1 All 884 W1COB W1BAL W1PL1 WAC GEOLW1 WA2 1 (regular WA2), 1E (regular WA2), 2, 3 (regular WA2), 3C 200 W2COB W2BAL W2PL1 WAC GEOLW2 WA2 1 (long WA2), 1E (long WA2), 3 (long WA2) 300 W2COBL W2BALL W2PL1L WAC GEOLW2L WA2 1A&BL (regular WA2),BN (\\*) 939 W2COB1A W2BAL1A W2PL11A WAC GEOLW21A WA2 1A&BL (long WA2) (\\**) 17,683 W2COB1AL W2BAL1AL W2PL11AL WAC GEOLW2AL WA2 3S 4,224 W2COB3S W2BAL3S W2PL13S WAC GEOLW23S (*) Functions 1A, BL and BN share a single regular WA2 layout. (**) Functions 1A and BL share a single long WA2 layout. (Function BN does not have the long WA2 option.) See Chapter VIII.4 for a detailed discussion of the Geosupport COPY feature. COBOL COPY Files (MSW) W1COB COPY File ******************************************************************** 00000100 ***** THIS IS GEOSUPPORT SYSTEM COPY FILE W1COB, CONTAINING ***** 00000200 ***** LAYOUT OF WORK AREA 1. COPYLIB2 04/07/98 ***** 00000300 ******************************************************************** 00000400 ***** INPUT FIELDS ***** 00000500 ******************************************************************** 00000600 05 GEO-WA1-IN-FUNCTION-CODE. 00000700 10 GEO-WA1-IN-FUNCTION-1 PIC X. 00000800 10 GEO-WA1-IN-FUNCTION-2 PIC X. 00000900 05 GEO-WA1-IN-BORO PIC X. 00001000 ** NOTE GEO-WA1-IN-HOUSENUM - HIGH HSE# INPUT IF FUNC 5 00001100 05 GEO-WA1-IN-HOUSENUM PIC X(12). 00001200 ** NOTE GEO-WA1-IN-HOUSENUM-INTERNAL - HIGH HSE# INPUT IF FUN5 00001300 05 GEO-WA1-IN-HOUSENUM-INTERNAL PIC X(6). 00001400 05 GEO-WA1-IN-STREET-1 PIC X(32). 00001500 05 GEO-WA1-IN-STREET-2 PIC X(32). 00001600 05 GEO-WA1-IN-STREET-3 PIC X(32). 00001700 05 GEO-WA1-IN-COMPASS PIC X. 00001802 05 GEO-WA1-IN-COMPASS2 PIC X. 00001904 05 GEO-WA1-IN-STREETCODE-1 PIC S9(6) COMP-3. 00002104 05 GEO-WA1-IN-STREETCODE-2 PIC S9(6) COMP-3. 00002204 05 GEO-WA1-IN-STREETCODE-3 PIC S9(6) COMP-3. 00002304 05 GEO-WA1-IN-ROADBED-REQ-SWITCH PIC X. 00002508 05 GEO-WA1-IN-BORO-2 PIC X. 00002604 05 GEO-WA1-IN-BORO-3 PIC X. 00002704 05 GEO-WA1-IN-SNL PIC X(2). 00002804 05 GEO-WA1-IN-10SC-1 PIC X(11). 00002904 05 GEO-WA1-IN-10SC-2 PIC X(11). 00003004 05 GEO-WA1-IN-10SC-3 PIC X(11). 00003104 05 GEO-WA1-IN-ZIPIN PIC X(5). 00003309 05 GEO-WA1-IN-BBL. 00003404 10 GEO-WA1-IN-BL-BORO PIC X. 00003504 10 GEO-WA1-IN-BLOCKNUM PIC X(5). 00003604 10 GEO-WA1-IN-LOTNUM PIC X(4). 00003704 05 FILLER PIC X. 00003804 05 GEO-WA1-IN-BIN PIC X(7). 00004004 **************************************************************** 00004104 ** NOTE: TO REQUEST COMPACT NAMES OPTION, SET ** 00004204 ** GEO-WA1-IN-COMPACT-NAME-FLAG TO \"C\". ** 00004304 ** NOTE: TO REQUEST THE LONG WORKAREA 2, SET ** 00004404 ** GEO-WA1-IN-LONG-WORKAREA2-FLAG TO \"L\". AT PRESENT, ** 00004504 ** ONLY FUNCTION 3 HAS THE LONG WA2 OPTION. ** 00004604 ** NOTE: IF APPLICATION IS RUNNING ON A NON-IBM MAIN FRAME, ** 00004704 ** SET GEO-WA1-IN-NON-IBM-MAIN-FRAME EQUAL TO \"X\" ** 00004804 ** NOTE: FOR FUNCTIONS 1A AND BL, TO REQUEST THE STANDARD ** 00004904 ** WORKAREA2 FORMAT, SET GEO-WA1-IN-1ABL-VERSION TO \"S\" ** 00005004 ** NOTE: TO REQUEST THE LEGACY WORKAREA2 FORMAT, ** 00005104 ** SET GEO-WA1-IN-1ABL-VERSION TO \" \" OR \"L\". ** 00005204 **************************************************************** 00005704 05 GEO-WA1-IN-COMPACT-NAME-FLAG PIC X. 00005804 05 GEO-WA1-IN-LONG-WORKAREA2-FLAG PIC X. 00005904 05 GEO-WA1-IN-LOW-HOUSENUM PIC X(12). 00006004 05 GEO-WA1-IN-LOW-HSENUM-INTERNAL PIC X(6). 00006104 05 GEO-WA1-IN-NON-IBM-MAIN-FRAME PIC X(1). 00006204 05 GEO-WA1-IN-1ABL-VERSION PIC X(1). 00006304 05 GEO-WA1-IN-XSTREET-FLAG PIC X(1). 00006404 05 GEO-WA1-IN-NONEED-STNAME-FLAG PIC X(1). 00006504 05 FILLER PIC X(3). 00006604 ******************************************************************** 00006704 ***** OUTPUT FIELDS ***** 00006804 ******************************************************************** 00006904 05 GEO-WA1-OUT-LOW-HOUSENUM PIC X(12). 00007004 05 GEO-WA1-OUT-BORONAME PIC X(9). 00007104 05 GEO-WA1-OUT-STREET-1 PIC X(32). 00007204 05 GEO-WA1-OUT-STREET-2 PIC X(32). 00007304 05 GEO-WA1-OUT-STREET-3 PIC X(32). 00007404 05 GEO-WA1-OUT-HOUSENUM PIC X(12). 00007504 05 GEO-WA1-OUT-HOUSENUM-INTERNAL PIC X(6). 00007604 05 GEO-WA1-OUT-HOUSE-INT-FORMAT REDEFINES 00007704 GEO-WA1-OUT-HOUSENUM-INTERNAL. 00007804 10 GEO-WA1-OUT-HOUSE-INT-PACKED PIC X(5). 00007904 10 GEO-WA1-OUT-HOUSE-INT-SUFFIX PIC X. 00008004 05 FILLER PIC X(7). 00008104 05 GEO-WA1-OUT-PB5SC-1 PIC S9(6) COMP-3. 00008204 05 GEO-WA1-OUT-PB-5SC-1 REDEFINES GEO-WA1-OUT-PB5SC-1. 00008304 10 FILLER PIC X(1). 00008404 10 GEO-WA1-OUT-STREETCODE-1-KEY PIC S9(5) COMP-3. 00008504 05 FILLER PIC X(2). 00008604 05 GEO-WA1-OUT-PB5SC-2 PIC S9(6) COMP-3. 00008704 05 GEO-WA1-OUT-PB-5SC-2 REDEFINES GEO-WA1-OUT-PB5SC-2. 00008804 10 FILLER PIC X(1). 00008904 10 GEO-WA1-OUT-STREETCODE-2-KEY PIC S9(5) COMP-3. 00009004 05 FILLER PIC X(2). 00009104 05 GEO-WA1-OUT-PB5SC-3 PIC S9(6) COMP-3. 00009204 05 GEO-WA1-OUT-PB-5SC-3 REDEFINES GEO-WA1-OUT-PB5SC-3. 00009304 10 FILLER PIC X(1). 00009404 10 GEO-WA1-OUT-STREETCODE-3-KEY PIC S9(5) COMP-3. 00009504 05 FILLER PIC X(3). 00009604 05 GEO-WA1-BROWSE PIC X(40). 00009704 05 GEO-WA1-OUT-10SC-1 PIC X(11). 00009804 05 GEO-WA1-OUT-10SC-2 PIC X(11). 00009904 05 GEO-WA1-OUT-10SC-3 PIC X(11). 00010004 05 GEO-WA1-OUT-CUI PIC X(5). 00010104 ** NOTE: GEO-WA1-OUT-CUI NOT IMPLEMENTED ** 00010204 05 GEO-WA1-OUT-BBL. 00010304 10 GEO-WA1-OUT-BL-BORO PIC X. 00010404 10 GEO-WA1-OUT-BLOCKNUM PIC X(5). 00010504 10 GEO-WA1-OUT-LOTNUM PIC X(4). 00010604 05 FILLER PIC X. 00010704 05 GEO-WA1-OUT-BIN PIC X(7). 00010806 05 GEO-WA1-OUT-SND-ATTR PIC X. 00011304 05 GEO-WA1-OUT-REASON-CODE PIC X. 00011404 05 FILLER PIC X(2). 00011504 05 GEO-WA1-OUT-RETURN-CODE. 00011604 10 GEO-WA1-OUT-RC-1 PIC X. 00011704 10 GEO-WA1-OUT-RC-2 PIC X. 00011804 05 GEO-WA1-OUT-ERROR-MESSAGE PIC X(80). 00011904 05 GEO-WA1-OUT-NUM-SIMILAR-NAMES PIC S999 COMP-3. 00012004 05 GEO-WA1-OUT-SIMILAR-NAMES PIC X(32) 00012104 OCCURS 10 TIMES. 00013002 W2COB COPY File ****************************************************************** 00010040 *** THIS IS GEOSUPPORT SYSTEM COPY FILE W2COB, CONTAINING THE *** 00020040 *** LAYOUT OF WORK AREA 2 FOR FUNCTIONS: 1, 1E, 2, 2C, 3, 3C, *** 00030040 *** 5. PLEASE NOTE THAT FUNCTIONS 2 AND 2C SHARE A SINGLE WORK*** 00040040 *** AREA 2 LAYOUT. 04/03/01 *** 00050040 ****************************************************************** 00060040 *** LAST MODIFIED 06/08/10 *** 00070040 ****************************************************************** 00080040 05 GEO-WA2-FUNCTION1. 00090040 10 FILLER PIC X(21). 00100040 10 GEO-WA2-FN1-CONT-PARITY PIC X. 00110040 10 GEO-WA2-FN1-LOW-HOUSENUM-INT. 00120040 15 GEO-WA2-FN1-LOW-HOUSENUM PIC X(5). 00130040 15 GEO-WA2-FN1-LOW-HOUSENUMSFX PIC X. 00140040 00150040 10 GEO-WA2-FN1-HI-HOUSENUM-INT. 00160040 15 GEO-WA2-FN1-HI-HOUSENUM PIC X(5). 00170040 15 GEO-WA2-FN1-HI-HOUSENUMSFX PIC X. 00180040 00190040 10 GEO-WA2-FN1-ALX PIC X. 00200040 10 GEO-WA2-FN1-NUM-X-ST-LOW-END PIC X. 00210040 10 GEO-WA2-FN1-LOW-PBSC PIC S9(7) COMP-3 00220040 OCCURS 5 TIMES. 00230040 10 GEO-WA2-FN1-NUM-X-ST-HI-END PIC X. 00240040 10 GEO-WA2-FN1-HI-PBSC PIC S9(7) COMP-3 00250040 OCCURS 5 TIMES. 00260040 10 GEO-WA2-FN1-COMDIST. 00270040 15 GEO-WA2-FN1-COMDIST-BORO PIC X. 00280040 15 GEO-WA2-FN1-COMDIST-NUMBER PIC X(2). 00290040 10 GEO-WA2-FN1-ZIP PIC X(5). 00300040 10 GEO-WA2-FN1-SLA PIC X. 00310040 10 GEO-WA2-FN1-HCD PIC X(2). 00320047 10 GEO-WA2-FN1-SOS PIC X. 00330040 10 GEO-WA2-FN1-CONT-PARITY-IND PIC X. 00340040 10 GEO-WA2-FN1-2010-CENS-TRCT PIC X(6). 00350042 10 GEO-WA2-FN1-2010-CENS-BLK PIC X(4). 00360042 10 GEO-WA2-FN1-2010-CENS-BLK-SFX PIC X. 00370042 10 FILLER PIC X(3). 00380040 10 GEO-WA2-FN1-HEALTHAREA PIC X(4). 00390047 10 GEO-WA2-FN1-SANI-REC PIC X(3). 00400040 10 GEO-WA2-FN1-FEATURE-TYPE PIC X. 00410040 10 GEO-WA2-FN1-RESDCP PIC X. 00420040 10 GEO-WA2-FN1-CURVE-FLAG PIC X. 00430040 10 GEO-WA2-FN1-POLICEDIST. 00440040 15 GEO-WA2-FN1-POL-PATR-BORO-CMD PIC X. 00450040 15 GEO-WA2-FN1-POL-PRECINCT PIC X(3). 00460040 10 GEO-WA2-FN1-SCHOOLDIST PIC X(2). 00470040 10 FILLER PIC X(14). 00480040 10 GEO-WA2-FN1-COINCIDENT-CNT PIC X. 00490040 10 GEO-WA2-FN1-SEGMENT-TYPE PIC X. 00500040 10 GEO-WA2-FN1-SANIDIST. 00510040 15 GEO-WA2-FN1-SANIDIST-BORO PIC X. 00520040 15 GEO-WA2-FN1-SANIDIST-NUMBER PIC X(2). 00530040 10 GEO-WA2-FN1-SANITATION-SUBSEC PIC X(2). 00540040 ** NOTE:10 GEO-WA2-FN1-FIRESEC ==> FIRE DIVISION ** 00550040 10 GEO-WA2-FN1-FIRESEC PIC X(2). 00560040 10 GEO-WA2-FN1-FIREBAT PIC X(2). 00570040 10 GEO-WA2-FN1-FIRECO. 00580040 15 GEO-WA2-FN1-FIRECO-TYPE PIC X. 00590040 15 GEO-WA2-FN1-FIRECO-NUM PIC X(3). 00600040 10 GEO-WA2-FN1-SPECIAL-ADDR-FLAG PIC X. 00610040 10 GEO-WA2-FN1-MARBLE-RIKER-FLAG PIC X. 00620040 10 GEO-WA2-FN1-SPLIT-SCHOOL-FILL PIC X. 00630044 10 GEO-WA2-FN1-PREFERRED-LGC PIC X(2). 00640040 10 GEO-WA2-FN1-LIONFACECODE PIC X(4). 00650040 10 GEO-WA2-FN1-LIONSEQ PIC X(5). 00660040 10 GEO-WA2-FN1-1990-CENSUSTRACT PIC X(6). 00670040 10 FILLER PIC X(4). 00680040 10 GEO-WA2-FN1-DYN-BLOCK PIC X(3). 00690040 10 GEO-WA2-FN1-XCOORD PIC X(7). 00700040 10 GEO-WA2-FN1-YCOORD PIC X(7). 00710040 10 GEO-WA2-FN1-SEGMENTLENGTH PIC X(5). 00720040 10 GEO-WA2-FN1-SANI-REG PIC X(5). 00730040 05 GEO-WA2-FUNCTION2 REDEFINES GEO-WA2-FUNCTION1. 00740040 10 FILLER PIC X(21). 00750040 10 GEO-WA2-FN2-DUPINTERFLAG PIC X. 00760040 10 FILLER PIC X(9). 00770040 10 GEO-WA2-FN2-PREFERRED-LGC1 PIC X(2). 00780040 10 GEO-WA2-FN2-PREFERRED-LGC2 PIC X(2). 00790040 10 GEO-WA2-FN2-NUM-OF-INTERSECTS PIC X. 00800040 10 GEO-WA2-FN2-INTERSECT-PBSC PIC 9(7) COMP-3 00810040 OCCURS 5 TIMES. 00820040 10 GEO-WA2-FN2-COMPDIR PIC X. 00830040 10 GEO-WA2-FN2-LEVEL-LIST OCCURS 5 TIMES. 00840040 15 GEO-WA2-FN2-LEVEL-CODES 00850040 OCCURS 2 TIMES PIC X. 00860040 *** NEXT LINE WAS PREVIOUSLY INSTRUC-DIV 00870040 10 FILLER PIC X(2). 00880040 ** NOTE:10 GEO-WA2-FN2-FIRESEC ==> FIRE DIVISION ** 00890040 10 GEO-WA2-FN2-FIRESEC PIC X(2). 00900040 10 GEO-WA2-FN2-FIREBAT PIC X(2). 00910040 10 GEO-WA2-FN2-FIRECO. 00920040 15 GEO-WA2-FN2-FIRECO-TYPE PIC X. 00930040 15 GEO-WA2-FN2-FIRECO-NUM PIC X(3). 00940040 10 GEO-WA2-FN2-COMDIST. 00950040 15 GEO-WA2-FN2-COMDIST-BORO PIC X. 00960040 15 GEO-WA2-FN2-COMDIST-NUMBER PIC X(2). 00970040 10 GEO-WA2-FN2-ZIP PIC X(5). 00980040 10 GEO-WA2-FN2-SLA PIC X. 00990040 10 GEO-WA2-FN2-2010-CENS-TRCT PIC X(6). 01000042 10 FILLER PIC X(3). 01010040 10 GEO-WA2-FN2-HEALTHAREA PIC X(4). 01020047 10 FILLER PIC X(9). 01030040 10 GEO-WA2-FN2-NODE-NUM PIC X(7). 01040040 10 GEO-WA2-FN2-XCOORD PIC X(7). 01050040 10 GEO-WA2-FN2-YCOORD PIC X(7). 01060040 10 FILLER PIC X(4). 01070040 10 GEO-WA2-FN2-POLICEDIST. 01080040 15 GEO-WA2-FN2-POL-PATR-BORO-CMD PIC X. 01090040 15 GEO-WA2-FN2-POL-PRECINCT PIC X(3). 01100040 10 GEO-WA2-FN2-SCHOOLDIST PIC X(2). 01110040 10 GEO-WA2-FN2-MARBLE-RIKER-FLAG PIC X. 01120040 10 GEO-WA2-FN2-1990-CENSUSTRACT PIC X(6). 01130040 10 GEO-WA2-FN2-SANBORN1-BVOLPAGE. 01140040 15 GEO-WA2-FN2-SANBORN1-BORO PIC X. 01150040 15 GEO-WA2-FN2-SANBORN1-VOL-NUM PIC X(3). 01160040 15 GEO-WA2-FN2-SANBORN1-PAGE-NUM PIC X(4). 01170040 10 GEO-WA2-FN2-SANBORN2-BVOLPAGE. 01180040 15 GEO-WA2-FN2-SANBORN2-BORO PIC X. 01190040 15 GEO-WA2-FN2-SANBORN2-VOL-NUM PIC X(3). 01200040 15 GEO-WA2-FN2-SANBORN2-PAGE-NUM PIC X(4). 01210040 10 GEO-WA2-FN2-DUP-INT-DISTANCE PIC X(5). 01220040 10 GEO-WA2-FN2-2000-CENS-TRACT PIC X(6). 01240043 10 FILLER PIC X(27). 01250040 05 GEO-WA2-FUNCTION3 REDEFINES GEO-WA2-FUNCTION1. 01260040 10 FILLER PIC X(21). 01270040 10 GEO-WA2-FN3-DUP-KEY-FLAG PIC X. 01280040 10 GEO-WA2-FN3-CURVE-FLAG PIC X. 01290040 10 GEO-WA2-FN3-LOCATION-STATUS PIC X. 01300040 10 GEO-WA2-FN3-COUNTY-BOUNDARY PIC X. 01310040 10 GEO-WA2-FN3-COINCIDENT-CNT PIC X. 01320040 10 FILLER PIC X(3). 01330040 10 GEO-WA2-FN3-PREFERRED-LGC1 PIC X(2). 01340040 10 GEO-WA2-FN3-PREFERRED-LGC2 PIC X(2). 01350040 10 GEO-WA2-FN3-PREFERRED-LGC3 PIC X(2). 01360040 10 GEO-WA2-FN3-NUM-X-ST-LOW-END PIC X. 01370040 10 GEO-WA2-FN3-LOW-PBSC PIC S9(7) COMP-3 01380040 OCCURS 5 TIMES. 01390040 10 GEO-WA2-FN3-NUM-X-ST-HI-END PIC X. 01400040 10 GEO-WA2-FN3-HI-PBSC PIC S9(7) COMP-3 01410040 OCCURS 5 TIMES. 01420040 10 GEO-WA2-FN3-SLA PIC X. 01430040 10 GEO-WA2-FN3-REVERSALFLAG PIC X. 01440040 10 GEO-WA2-FN3-LEFT-COMDIST. 01450040 15 GEO-WA2-FN3-LEFT-COMDIST-BORO PIC X. 01460040 15 GEO-WA2-FN3-LEFT-COMDIST-NUM PIC X(2). 01470040 10 GEO-WA2-FN3-RIGHT-COMDIST. 01480040 15 GEO-WA2-FN3-RIGHT-COMDIST-BORO PIC X. 01490040 15 GEO-WA2-FN3-RIGHT-COMDIST-NUM PIC X(2). 01500040 10 GEO-WA2-FN3-LEFT-ZIP PIC X(5). 01510040 10 GEO-WA2-FN3-RIGHT-ZIP PIC X(5). 01520040 10 FILLER PIC X(18). 01530040 10 GEO-WA2-FN3-LEFT-HEALTHAREA PIC X(4). 01540047 10 GEO-WA2-FN3-RIGHT-HEALTHAREA PIC X(4). 01550047 *** NEXT LINE WAS PREVIOUSLY LEFT-INSTRUC-DIV 01560040 10 FILLER PIC X(2). 01570040 *** NEXT LINE WAS PREVIOUSLY RIGHT-INSTRUC-DIV 01580040 10 FILLER PIC X(2). 01590040 10 GEO-WA2-FN3-LEFT-LOW-HOUSENUM PIC X(7). 01600040 10 GEO-WA2-FN3-LEFT-HI-HOUSENUM PIC X(7). 01610040 10 GEO-WA2-FN3-RIGHT-LOW-HOUSENUM PIC X(7). 01620040 10 GEO-WA2-FN3-RIGHT-HI-HOUSENUM PIC X(7). 01630040 10 GEO-WA2-FN3-CONT-PARITY-IND PIC X. 01640040 10 GEO-WA2-FN3-LIONFACECODE PIC X(4). 01650040 10 GEO-WA2-FN3-LIONSEQ PIC X(5). 01660040 10 GEO-WA2-FN3-GENRECFLAG PIC X. 01670040 10 GEO-WA2-FN3-SEGMENTLENGTH PIC S9(5) COMP-3. 01680040 10 GEO-WA2-FN3-SEGMENTSLOPE PIC X(3). 01690040 10 GEO-WA2-FN3-SEGMENTORIENT PIC X. 01700040 10 FILLER PIC X(4). 01710040 10 GEO-WA2-FN3-RESDCP PIC X(2). 01720040 10 GEO-WA2-FN3-DOG-LEG PIC X. 01730040 10 GEO-WA2-FN3-FEATURE-TYPE PIC X. 01740040 10 GEO-WA2-FN3-LEFT-POLDIST. 01750040 15 GEO-WA2-FN3-L-POL-PATR-BOR-CMD PIC X. 01760040 15 GEO-WA2-FN3-L-POL-PRECINCT PIC X(3). 01770040 10 GEO-WA2-FN3-RIGHT-POLDIST. 01780040 15 GEO-WA2-FN3-R-POL-PATR-BOR-CMD PIC X. 01790040 15 GEO-WA2-FN3-R-POL-PRECINCT PIC X(3). 01800040 10 GEO-WA2-FN3-LEFT-SCHLDIST PIC X(2). 01810040 10 GEO-WA2-FN3-RIGHT-SCHLDIST PIC X(2). 01820040 10 GEO-WA2-FN3-MARBLE-RIKER-FLAG PIC X. 01830040 10 GEO-WA2-FN3-SEG-ID PIC X(7). 01840040 10 GEO-WA2-FN3-SEGMENT-TYPE PIC X. 01850040 05 GEO-WA2-FUNCTION3C REDEFINES GEO-WA2-FUNCTION1. 01860040 10 GEO-WA2-FN3C-ACCESS-KEY PIC X(21). 01870040 10 GEO-WA2-FN3C-CURVE-FLAG PIC X. 01880040 10 GEO-WA2-FN3C-SEGMENT-TYPE PIC X. 01890040 10 GEO-WA2-FN3C-LOCATION-STATUS PIC X. 01900040 10 GEO-WA2-FN3C-COUNTY-BOUNDARY PIC X. 01910040 10 GEO-WA2-FN3C-COINCIDENT-CNT PIC X. 01920040 10 FILLER PIC X(3). 01930040 10 GEO-WA2-FN3C-PREFERRED-LGC1 PIC X(2). 01940040 10 GEO-WA2-FN3C-PREFERRED-LGC2 PIC X(2). 01950040 10 GEO-WA2-FN3C-PREFERRED-LGC3 PIC X(2). 01960040 10 GEO-WA2-FN3C-NUM-X-ST-LOW-END PIC X. 01970040 10 GEO-WA2-FN3C-LOW-PBSC PIC S9(7) COMP-3 01980040 OCCURS 5 TIMES. 01990040 10 GEO-WA2-FN3C-NUM-X-ST-HI-END PIC X. 02000040 10 GEO-WA2-FN3C-HI-PBSC PIC S9(7) COMP-3 02010040 OCCURS 5 TIMES. 02020040 10 GEO-WA2-FN3C-COMDIST. 02030040 15 GEO-WA2-FN3C-COMDIST-BORO PIC X. 02040040 15 GEO-WA2-FN3C-COMDIST-NUMBER PIC X(2). 02050040 10 GEO-WA2-FN3C-ZIP PIC X(5). 02060040 10 GEO-WA2-FN3C-SLA PIC X. 02070040 10 GEO-WA2-FN3C-2000-CENS-TRACT PIC X(6). 02090043 10 FILLER PIC X. 02100040 10 GEO-WA2-FN3C-2010-CENS-TRCT PIC X(6). 02110042 10 GEO-WA2-FN3C-2010-CENS-BLK PIC X(4). 02120042 10 GEO-WA2-FN3C-2010-CENS-BLK-SFX PIC X. 02130042 10 GEO-WA2-FN3C-HEALTHAREA PIC X(4). 02140047 10 GEO-WA2-FN3C-REVERSALFLAG PIC X. 02150040 10 GEO-WA2-FN3C-SOS PIC X. 02160040 ** NOTE:10 GEO-WA2-FN3C-FIRESEC ==> FIRE DIVISION ** 02170040 10 GEO-WA2-FN3C-FIRESEC PIC X(2). 02180040 10 GEO-WA2-FN3C-FIREBAT PIC X(2). 02190040 10 GEO-WA2-FN3C-FIRECO. 02200040 15 GEO-WA2-FN3C-FIRECO-TYPE PIC X. 02210040 15 GEO-WA2-FN3C-FIRECO-NUM PIC X(3). 02220040 10 GEO-WA2-FN3C-SEG-ID PIC X(7). 02230040 10 GEO-WA2-FN3C-LOW-HOUSENUM PIC X(7). 02240040 10 GEO-WA2-FN3C-HI-HOUSENUM PIC X(7). 02250040 10 GEO-WA2-FN3C-LOW-HOUSENUM2 PIC X(7). 02260040 10 GEO-WA2-FN3C-HI-HOUSENUM2 PIC X(7). 02270040 * HOUSENUM2 ONLY PRESENT IF ODD & EVEN RANGES ARE ON 02280040 * SAME SIDE OF STREET. 02290040 10 GEO-WA2-FN3C-CONT-PARITY-IND PIC X. 02300040 10 GEO-WA2-FN3C-LIONFACECODE PIC X(4). 02310040 10 GEO-WA2-FN3C-LIONSEQ PIC X(5). 02320040 10 GEO-WA2-FN3C-GENRECFLAG PIC X. 02330040 10 GEO-WA2-FN3C-SEGMENTLENGTH PIC S9(5) COMP-3. 02340040 10 GEO-WA2-FN3C-SEGMENTSLOPE PIC X(3). 02350040 10 GEO-WA2-FN3C-SEGMENTORIENT PIC X. 02360040 *** NEXT LINE WAS PREVIOUSLY INSTRUC-DIV 02370040 10 FILLER PIC XX. 02380040 10 GEO-WA2-FN3C-RESDCP PIC X. 02390040 10 GEO-WA2-FN3C-FEATURE-TYPE PIC X. 02400040 10 GEO-WA2-FN3C-POLICEDIST. 02410040 15 GEO-WA2-FN3C-POL-PATR-BORO-CMD PIC X. 02420040 15 GEO-WA2-FN3C-POL-PRECINCT PIC X(3). 02430040 10 GEO-WA2-FN3C-SCHOOLDIST PIC X(2). 02440040 10 GEO-WA2-FN3C-MARBLE-RIKER-FLAG PIC X. 02450040 10 GEO-WA2-FN3C-1990-CENSUSTRACT PIC X(6). 02460040 10 FILLER PIC X(4). 02470040 10 GEO-WA2-FN3C-DYN-BLOCK PIC X(3). 02480040 10 GEO-WA2-FN3C-2000-CENS-BLOCK PIC X(4). 02500043 10 GEO-WA2-FN3C-2000-CENS-BLK-SUF PIC X. 02510043 05 GEO-WA2-FUNCTION1E REDEFINES GEO-WA2-FUNCTION1. 02520040 10 FILLER PIC X(21). 02530040 10 GEO-WA2-FN1E-CONT-PARITY PIC X. 02540040 10 GEO-WA2-FN1E-LOW-HOUSENUM-INT. 02550040 15 GEO-WA2-FN1E-LOW-HOUSENUM PIC X(5). 02560040 15 GEO-WA2-FN1E-LOW-HSENUMSFX PIC X. 02570040 10 GEO-WA2-FN1E-HI-HOUSENUM-INT. 02580040 15 GEO-WA2-FN1E-HI-HOUSENUM PIC X(5). 02590040 15 GEO-WA2-FN1E-HI-HSENUMSFX PIC X. 02600040 10 FILLER PIC X. 02610040 10 GEO-WA2-FN1E-NUM-X-ST-LOW-END PIC X. 02620040 10 GEO-WA2-FN1E-LOW-PBSC PIC S9(7) COMP-3 02630040 OCCURS 5 TIMES. 02640040 10 GEO-WA2-FN1E-NUM-X-ST-HI-END PIC X. 02650040 10 GEO-WA2-FN1E-HI-PBSC PIC S9(7) COMP-3 02660040 OCCURS 5 TIMES. 02670040 10 GEO-WA2-FN1E-COMDIST. 02680040 15 GEO-WA2-FN1E-COMDIST-BORO PIC X. 02690040 15 GEO-WA2-FN1E-COMDIST-NUMBER PIC X(2). 02700040 10 GEO-WA2-FN1E-ZIP PIC X(5). 02710040 10 GEO-WA2-FN1E-SLA PIC X. 02720040 10 GEO-WA2-FN1E-HCD PIC X(2). 02730047 10 GEO-WA2-FN1E-SOS PIC X. 02740040 10 GEO-WA2-FN1E-CONT-PARITY-IND PIC X. 02750040 10 GEO-WA2-FN1E-2010-CENS-TRCT PIC X(6). 02760042 10 GEO-WA2-FN1E-2010-CENS-BLK PIC X(4). 02770042 10 GEO-WA2-FN1E-2010-CENS-BLK-SFX PIC X. 02780042 10 FILLER PIC X(3). 02790040 10 GEO-WA2-FN1E-HEALTHAREA PIC X(4). 02800047 10 GEO-WA2-FN1E-SANI-REC PIC X(3). 02810040 10 GEO-WA2-FN1E-FEATURE-TYPE PIC X. 02820040 10 GEO-WA2-FN1E-RESDCP PIC X. 02830040 10 GEO-WA2-FN1E-CURVE-FLAG PIC X. 02840040 10 GEO-WA2-FN1E-POLICEDIST. 02850040 15 GEO-WA2-FN1E-POL-PATR-BORO-CMD PIC X. 02860040 15 GEO-WA2-FN1E-POL-PRECINCT PIC X(3). 02870040 10 GEO-WA2-FN1E-SCHOOLDIST PIC X(2). 02880040 10 GEO-WA2-FN1E-ELECTDIST PIC X(3). 02890040 10 GEO-WA2-FN1E-ASSEMDIST PIC X(2). 02900040 10 GEO-WA2-FN1E-SPLIT-ED-FLAG PIC X. 02910040 10 GEO-WA2-FN1E-CONGDIST PIC X(2). 02920040 10 GEO-WA2-FN1E-SENATEDIST PIC X(2). 02930040 10 GEO-WA2-FN1E-COURTDIST PIC X(2). 02940040 10 GEO-WA2-FN1E-COUNCILDIST PIC X(2). 02950040 10 GEO-WA2-FN1E-COINCIDENT-CNT PIC X. 02960040 10 FILLER PIC X. 02970040 10 GEO-WA2-FN1E-SANIDIST. 02980040 15 GEO-WA2-FN1E-SANIDIST-BORO PIC X. 02990040 15 GEO-WA2-FN1E-SANIDIST-NUMBER PIC X(2). 03000040 10 GEO-WA2-FN1E-SANITATION-SUBSEC PIC X(2). 03010040 ** NOTE:10 GEO-WA2-FN1E-FIRESEC ==> FIRE DIVISION ** 03020040 10 GEO-WA2-FN1E-FIRESEC PIC X(2). 03030040 10 GEO-WA2-FN1E-FIREBAT PIC X(2). 03040040 10 GEO-WA2-FN1E-FIRECO. 03050040 15 GEO-WA2-FN1E-FIRECO-TYPE PIC X. 03060040 15 GEO-WA2-FN1E-FIRECO-NUM PIC X(3). 03070040 10 GEO-WA2-FN1E-SPECIAL-ADDR-FLAG PIC X. 03080040 10 GEO-WA2-FN1E-MARBLE-RIKER-FLAG PIC X. 03090040 10 GEO-WA2-FN1E-SPLIT-SCHOOL-FILL PIC X. 03100044 10 GEO-WA2-FN1E-PREFERRED-LGC PIC X(2). 03110040 10 GEO-WA2-FN1E-LIONFACECODE PIC X(4). 03120040 10 GEO-WA2-FN1E-LIONSEQ PIC X(5). 03130040 10 GEO-WA2-FN1E-1990-CENSUSTRACT PIC X(6). 03140040 10 FILLER PIC X(4). 03150040 10 GEO-WA2-FN1E-DYN-BLOCK PIC X(3). 03160040 10 GEO-WA2-FN1E-XCOORD PIC X(7). 03170040 10 GEO-WA2-FN1E-YCOORD PIC X(7). 03180040 10 GEO-WA2-FN1E-SEGMENTLENGTH PIC X(5). 03190040 10 GEO-WA2-FN1E-SANI-REG PIC X(5). 03200040 05 GEO-WA2-FUNCTION5 REDEFINES GEO-WA2-FUNCTION1. 03210040 10 GEO-WA2-FN5-ADDR-MATCHING-KEY PIC X(28). 03220040 10 FILLER PIC X(172). 03230040 W2COBL COPY File ****************************************************************** 00010021 *** THIS IS GEOSUPPORT SYSTEM COPY FILE W2COBL, CONTAINING *** 00020021 *** THE LAYOUT OF THE OPTIONAL LONG WORK AREA 2 FOR FUNCTIONS * 00030021 *** 1/1E AND 3. THIS WORK AREA SHOULD BE USED ONLY WHEN *** 00040021 *** FUNCTION 1/1E,3 ARE CALLED WITH THE \"LONG\" WORK AREA2 *** 00050021 *** APRIL 3 2001 *** 00060021 ****************************************************************** 00070021 *** LAST MODIFIED 06/08/10 *** 00080021 ****************************************************************** 00090021 05 GEO-WA2-1L-FUNCTION1. 00100021 10 FILLER PIC X(21). 00110021 10 GEO-WA2-1L-CONT-PARITY PIC X. 00120021 10 GEO-WA2-1L-LOW-HOUSENUM-INT. 00130021 15 GEO-WA2-1L-LOW-HOUSENUM PIC X(5). 00140021 15 GEO-WA2-1L-LOW-HOUSENUMSFX PIC X. 00150021 10 GEO-WA2-1L-HI-HOUSENUM-INT. 00160021 15 GEO-WA2-1L-HI-HOUSENUM PIC X(5). 00170021 15 GEO-WA2-1L-HI-HOUSENUMSFX PIC X. 00180021 10 GEO-WA2-1L-ALX PIC X. 00190021 10 GEO-WA2-1L-NUM-X-ST-LOW-END PIC X. 00200021 10 GEO-WA2-1L-LOW-PBSC PIC S9(7) COMP-3 00210021 OCCURS 5 TIMES. 00220021 10 GEO-WA2-1L-NUM-X-ST-HI-END PIC X. 00230021 10 GEO-WA2-1L-HI-PBSC PIC S9(7) COMP-3 00240021 OCCURS 5 TIMES. 00250021 10 GEO-WA2-1L-COMDIST. 00260021 15 GEO-WA2-1L-COMDIST-BORO PIC X(1). 00270021 15 GEO-WA2-1L-COMDIST-NUMBER PIC X(2). 00280021 10 GEO-WA2-1L-ZIP PIC X(5). 00290021 10 GEO-WA2-1L-SLA PIC X. 00300021 10 GEO-WA2-1L-HCD PIC X(2). 00310028 10 GEO-WA2-1L-SOS PIC X. 00320021 10 GEO-WA2-1L-CONT-PARITY-IND PIC X. 00330021 10 GEO-WA2-1L-2010-CENS-TRCT PIC X(6). 00340023 10 GEO-WA2-1L-2010-CENS-BLK PIC X(4). 00350023 10 GEO-WA2-1L-2010-CENS-BLK-SFX PIC X. 00360023 10 FILLER PIC X(3). 00370021 10 GEO-WA2-1L-HEALTHAREA PIC X(4). 00380028 10 GEO-WA2-1L-SANI-REC PIC X(3). 00390021 10 GEO-WA2-1L-FEATURE-TYPE PIC X(1). 00400021 10 GEO-WA2-1L-RESDCP PIC X(1). 00410021 10 GEO-WA2-1L-CURVE-FLAG PIC X(1). 00420021 10 GEO-WA2-1L-POLICEDIST. 00430021 15 GEO-WA2-1L-POL-PATR-BORO-CMD PIC X(1). 00440021 15 GEO-WA2-1L-POL-PRECINCT PIC X(3). 00450021 10 GEO-WA2-1L-SCHOOLDIST PIC X(2). 00460021 10 FILLER PIC X(14). 00470021 10 GEO-WA2-1L-COINCIDENT-CNT PIC X. 00480021 10 GEO-WA2-1L-SEGMENT-TYPE PIC X. 00490021 10 GEO-WA2-1L-SANIDIST. 00500021 15 GEO-WA2-1L-SANIDIST-BORO PIC X(1). 00510021 15 GEO-WA2-1L-SANIDIST-NUMBER PIC X(2). 00520021 10 GEO-WA2-1L-SANITATION-SUBSEC PIC X(2). 00530021 ** NOTE:10 GEO-WA2-1L-FIRESEC ==> FIRE DIVISION ** 00540021 10 GEO-WA2-1L-FIRESEC PIC X(2). 00550021 10 GEO-WA2-1L-FIREBAT PIC X(2). 00560021 10 GEO-WA2-1L-FIRECO. 00570021 15 GEO-WA2-1L-FIRECO-TYPE PIC X(1). 00580021 15 GEO-WA2-1L-FIRECO-NUM PIC X(3). 00590021 10 GEO-WA2-1L-SPECIAL-ADDR-FLAG PIC X(1). 00600021 10 GEO-WA2-1L-MARBLE-RIKER-FLAG PIC X(1). 00610021 10 GEO-WA2-1L-SPLIT-SCHOOL-FILL PIC X. 00620025 10 GEO-WA2-1L-PREFERRED-LGC PIC X(2). 00630021 10 GEO-WA2-1L-LIONFACECODE PIC X(4). 00640021 10 GEO-WA2-1L-LIONSEQ PIC X(5). 00650021 10 GEO-WA2-1L-1990-CENSUSTRACT PIC X(6). 00660021 10 FILLER PIC X(4). 00670021 10 GEO-WA2-1L-DYN-BLOCK PIC X(3). 00680021 10 GEO-WA2-1L-XCOORD PIC X(7). 00690021 10 GEO-WA2-1L-YCOORD PIC X(7). 00700021 10 GEO-WA2-1L-SEGMENTLENGTH PIC X(5). 00710021 10 GEO-WA2-1L-SANI-REG PIC X(5). 00720021 10 GEO-WA2-1L-SEG-ID PIC X(7). 00730021 10 GEO-WA2-1L-TRUE-B7SC PIC X(8). 00740021 10 GEO-WA2-1L-TRUE-HNI PIC X(6). 00750021 10 GEO-WA2-1L-2000-CENS-TRACT PIC X(6). 00770024 10 GEO-WA2-1L-2000-CENS-BLOCK PIC X(4). 00780024 10 GEO-WA2-1L-2000-CENS-BLK-SUF PIC X. 00790024 10 FILLER PIC X(68). 00800021 05 GEO-WA2-1EL-FUNCTION1E REDEFINES GEO-WA2-1L-FUNCTION1. 00810021 10 FILLER PIC X(21). 00820021 10 GEO-WA2-1EL-CONT-PARITY PIC X. 00830021 10 GEO-WA2-1EL-LOW-HOUSENUM-INT. 00840021 15 GEO-WA2-1EL-LOW-HOUSENUM PIC X(5). 00850021 15 GEO-WA2-1EL-LOW-HOUSENUMSFX PIC X. 00860021 10 GEO-WA2-1EL-HI-HOUSENUM-INT. 00870021 15 GEO-WA2-1EL-HI-HOUSENUM PIC X(5). 00880021 15 GEO-WA2-1EL-HI-HOUSENUMSFX PIC X. 00890021 10 FILLER PIC X. 00900021 10 GEO-WA2-1EL-NUM-X-ST-LOW-END PIC X. 00910021 10 GEO-WA2-1EL-LOW-PBSC PIC S9(7) COMP-3 00920021 OCCURS 5 TIMES. 00930021 10 GEO-WA2-1EL-NUM-X-ST-HI-END PIC X. 00940021 10 GEO-WA2-1EL-HI-PBSC PIC S9(7) COMP-3 00950021 OCCURS 5 TIMES. 00960021 10 GEO-WA2-1EL-COMDIST. 00970021 15 GEO-WA2-1EL-COMDIST-BORO PIC X(1). 00980021 15 GEO-WA2-1EL-COMDIST-NUMBER PIC X(2). 00990021 10 GEO-WA2-1EL-ZIP PIC X(5). 01000021 10 GEO-WA2-1EL-SLA PIC X. 01010021 10 GEO-WA2-1EL-HCD PIC X(2). 01020028 10 GEO-WA2-1EL-SOS PIC X. 01030021 10 GEO-WA2-1EL-CONT-PARITY-IND PIC X. 01040021 10 GEO-WA2-1EL-2010-CENS-TRCT PIC X(6). 01050023 10 GEO-WA2-1EL-2010-CENS-BLK PIC X(4). 01060023 10 GEO-WA2-1EL-2010-CENS-BLK-SFX PIC X. 01070023 10 FILLER PIC X(3). 01080021 10 GEO-WA2-1EL-HEALTHAREA PIC X(4). 01090028 10 GEO-WA2-1EL-SANI-REC PIC X(3). 01100021 10 GEO-WA2-1EL-FEATURE-TYPE PIC X(1). 01110021 10 GEO-WA2-1EL-RESDCP PIC X(1). 01120021 10 GEO-WA2-1EL-CURVE-FLAG PIC X(1). 01130021 10 GEO-WA2-1EL-POLICEDIST. 01140021 15 GEO-WA2-1EL-POL-PATR-BORO-CMD PIC X(1). 01150021 15 GEO-WA2-1EL-POL-PRECINCT PIC X(3). 01160021 10 GEO-WA2-1EL-SCHOOLDIST PIC X(2). 01170021 10 GEO-WA2-1EL-ELECTDIST PIC X(3). 01180021 10 GEO-WA2-1EL-ASSEMDIST PIC X(2). 01190021 10 GEO-WA2-1EL-SPLIT-ED-FLAG PIC X(1). 01200021 10 GEO-WA2-1EL-CONGDIST PIC X(2). 01210021 10 GEO-WA2-1EL-SENATEDIST PIC X(2). 01220021 10 GEO-WA2-1EL-COURTDIST PIC X(2). 01230021 10 GEO-WA2-1EL-COUNCILDIST PIC X(2). 01240021 10 GEO-WA2-1EL-COINCIDENT-CNT PIC X. 01250021 10 FILLER PIC X. 01260021 10 GEO-WA2-1EL-SANIDIST. 01270021 15 GEO-WA2-1EL-SANIDIST-BORO PIC X(1). 01280021 15 GEO-WA2-1EL-SANIDIST-NUMBER PIC X(2). 01290021 10 GEO-WA2-1EL-SANITATION-SUBSEC PIC X(2). 01300021 ** NOTE:10 GEO-WA2-1EL-FIRESEC==> FIRE DIVISION ** 01310021 10 GEO-WA2-1EL-FIRESEC PIC X(2). 01320021 10 GEO-WA2-1EL-FIREBAT PIC X(2). 01330021 10 GEO-WA2-1EL-FIRECO. 01340021 15 GEO-WA2-1EL-FIRECO-TYPE PIC X(1). 01350021 15 GEO-WA2-1EL-FIRECO-NUM PIC X(3). 01360021 10 GEO-WA2-1EL-SPECIAL-ADDR-FLAG PIC X(1). 01370021 10 GEO-WA2-1EL-MARBLE-RIKER-FLAG PIC X(1). 01380021 10 GEO-WA2-1EL-SPLIT-SCHOOL-FILL PIC X. 01390025 10 GEO-WA2-1EL-PREFERRED-LGC PIC X(2). 01400021 10 GEO-WA2-1EL-LIONFACECODE PIC X(4). 01410021 10 GEO-WA2-1EL-LIONSEQ PIC X(5). 01420021 10 GEO-WA2-1EL-1990-CENSUSTRACT PIC X(6). 01430021 10 FILLER PIC X(4). 01440021 10 GEO-WA2-1EL-DYN-BLOCK PIC X(3). 01450021 10 GEO-WA2-1EL-XCOORD PIC X(7). 01460021 10 GEO-WA2-1EL-YCOORD PIC X(7). 01470021 10 GEO-WA2-1EL-SEGMENTLENGTH PIC X(5). 01480021 10 GEO-WA2-1EL-SANI-REG PIC X(5). 01490021 10 GEO-WA2-1EL-SEG-ID PIC X(7). 01500021 10 GEO-WA2-1EL-TRUE-B7SC PIC X(8). 01510021 10 GEO-WA2-1EL-TRUE-HNI PIC X(6). 01520021 10 GEO-WA2-1EL-2000-CENS-TRACT PIC X(6). 01540024 10 GEO-WA2-1EL-2000-CENS-BLOCK PIC X(4). 01550024 10 GEO-WA2-1EL-2000-CENS-BLK-SUF PIC X. 01560024 10 FILLER PIC X(68). 01570021 05 GEO-WA2-3L-FUNCTION3 REDEFINES GEO-WA2-1L-FUNCTION1. 01580021 10 FILLER PIC X(21). 01590021 10 GEO-WA2-3L-DUP-KEY-FLAG PIC X. 01600021 10 GEO-WA2-3L-CURVE-FLAG PIC X. 01610021 10 GEO-WA2-3L-LOCATION-STATUS PIC X. 01620021 10 GEO-WA2-3L-COUNTY-BOUNDARY PIC X. 01630021 10 GEO-WA2-3L-COINCIDENT-CNT PIC X. 01640021 10 FILLER PIC X(3). 01650021 10 GEO-WA2-3L-PREFERRED-LGC1 PIC X(2). 01660021 10 GEO-WA2-3L-PREFERRED-LGC2 PIC X(2). 01670021 10 GEO-WA2-3L-PREFERRED-LGC3 PIC X(2). 01680021 10 GEO-WA2-3L-NUM-X-ST-LOW-END PIC X. 01690021 10 GEO-WA2-3L-LOW-PBSC PIC S9(7) COMP-3 01700021 OCCURS 5 TIMES. 01710021 10 GEO-WA2-3L-NUM-X-ST-HI-END PIC X. 01720021 10 GEO-WA2-3L-HI-PBSC PIC S9(7) COMP-3 01730021 OCCURS 5 TIMES. 01740021 10 GEO-WA2-3L-SLA PIC X. 01750021 10 GEO-WA2-3L-REVERSALFLAG PIC X. 01760021 10 GEO-WA2-3L-LEFT-COMDIST. 01770021 15 GEO-WA2-3L-LEFT-COMDIST-BORO PIC X(1). 01780021 15 GEO-WA2-3L-LEFT-COMDIST-NUM PIC X(2). 01790021 10 GEO-WA2-3L-RIGHT-COMDIST. 01800021 15 GEO-WA2-3L-RIGHT-COMDIST-BORO PIC X(1). 01810021 15 GEO-WA2-3L-RIGHT-COMDIST-NUM PIC X(2). 01820021 10 GEO-WA2-3L-LEFT-ZIP PIC X(5). 01830021 10 GEO-WA2-3L-RIGHT-ZIP PIC X(5). 01840021 10 FILLER PIC X(18). 01850021 10 GEO-WA2-3L-LEFT-HEALTHAREA PIC X(4). 01860028 10 GEO-WA2-3L-RIGHT-HEALTHAREA PIC X(4). 01870028 *** NEXT LINE WAS PREVIOUSLY LEFT-INSTRUC-DIV 01880021 10 FILLER PIC X(2). 01890021 *** NEXT LINE WAS PREVIOUSLY RIGHT-INSTRUC-DIV 01900021 10 FILLER PIC X(2). 01910021 10 GEO-WA2-3L-LEFT-LOW-HOUSENUM PIC X(7). 01920021 10 GEO-WA2-3L-LEFT-HI-HOUSENUM PIC X(7). 01930021 10 GEO-WA2-3L-RIGHT-LOW-HOUSENUM PIC X(7). 01940021 10 GEO-WA2-3L-RIGHT-HI-HOUSENUM PIC X(7). 01950021 10 GEO-WA2-3L-CONT-PARITY-IND PIC X. 01960021 10 GEO-WA2-3L-LIONFACECODE PIC X(4). 01970021 10 GEO-WA2-3L-LIONSEQ PIC X(5). 01980021 10 GEO-WA2-3L-GENRECFLAG PIC X. 01990021 10 GEO-WA2-3L-SEGMENTLENGTH PIC S9(5) COMP-3. 02000021 10 GEO-WA2-3L-SEGMENTSLOPE PIC X(3). 02010021 10 GEO-WA2-3L-SEGMENTORIENT PIC X. 02020021 10 FILLER PIC X(4). 02030021 10 GEO-WA2-3L-RESDCP PIC X(2). 02040021 10 GEO-WA2-3L-DOG-LEG PIC X. 02050021 10 GEO-WA2-3L-FEATURE-TYPE PIC X(1). 02060021 10 GEO-WA2-3L-LEFT-POLDIST. 02070021 15 GEO-WA2-3L-L-POL-PATR-BOR-CMD PIC X(1). 02080021 15 GEO-WA2-3L-L-POL-PRECINCT PIC X(3). 02090021 10 GEO-WA2-3L-RIGHT-POLDIST. 02100021 15 GEO-WA2-3L-R-POL-PATR-BOR-CMD PIC X(1). 02110021 15 GEO-WA2-3L-R-POL-PRECINCT PIC X(3). 02120021 10 GEO-WA2-3L-LEFT-SCHLDIST PIC X(2). 02130021 10 GEO-WA2-3L-RIGHT-SCHLDIST PIC X(2). 02140021 10 GEO-WA2-3L-MARBLE-RIKER-FLAG PIC X(1). 02150021 10 GEO-WA2-3L-SEG-ID PIC X(7). 02160021 10 GEO-WA2-3L-SEGMENT-TYPE PIC X. 02170021 ************************************************************* 02180021 ** THE PORTION OF THIS WORK AREA ABOVE THIS POINT IS ** 02190021 ** IDENTICAL TO THE STANDARD WORK AREA 2 FOR FUNCTION 3. ** 02200021 ** THE PORTION BELOW THIS POINT IS PRESENT ONLY FOR THE ** 02210021 ** LONG WORK AREA 2 OPTION. ** 02220021 ************************************************************* 02230021 10 GEO-WA2-3L-L-1990-CENSUSTRACT PIC X(6) . 02240021 10 FILLER PIC X(4). 02250021 10 GEO-WA2-3L-L-DYN-BLOCK PIC X(3). 02260021 10 GEO-WA2-3L-R-1990-CENSUSTRACT PIC X(6). 02270021 10 FILLER PIC X(4). 02280021 10 GEO-WA2-3L-R-DYN-BLOCK PIC X(3). 02290021 ** NOTE:10 GEO-WA2-3L-L-FIRESEC ==> FIRE DIV ** 02300021 ** NOTE:10 GEO-WA2-3L-R-FIRESEC ==> FIRE DIV ** 02310021 10 GEO-WA2-3L-L-FIRESEC PIC X(2). 02320021 10 GEO-WA2-3L-L-FIREBAT PIC X(2). 02330021 10 GEO-WA2-3L-L-FIRECO. 02340021 15 GEO-WA2-3L-L-FIRECO-TYPE PIC X(1). 02350021 15 GEO-WA2-3L-L-FIRECO-NUM PIC X(3). 02360021 10 GEO-WA2-3L-R-FIRESEC PIC X(2). 02370021 10 GEO-WA2-3L-R-FIREBAT PIC X(2). 02380021 10 GEO-WA2-3L-R-FIRECO. 02390021 15 GEO-WA2-3L-R-FIRECO-TYPE PIC X(1). 02400021 15 GEO-WA2-3L-R-FIRECO-NUM PIC X(3). 02410021 10 GEO-WA2-3L-L-2010-CENS-TRCT PIC X(6). 02420023 10 GEO-WA2-3L-L-2010-CENS-BLK PIC X(4). 02430023 10 GEO-WA2-3L-L-2010-CENS-BLK-SFX PIC X. 02440023 10 GEO-WA2-3L-R-2010-CENS-TRCT PIC X(6). 02450023 10 GEO-WA2-3L-R-2010-CENS-BLK PIC X(4). 02460023 10 GEO-WA2-3L-R-2010-CENS-BLK-SFX PIC X. 02470023 10 GEO-WA2-3L-FROM-NODE PIC X(7). 02480021 10 GEO-WA2-3L-TO-NODE PIC X(7). 02490021 10 GEO-WA2-3L-L-2000-CENS-TRACT PIC X(6). 02510024 10 GEO-WA2-3L-L-2000-CENS-BLOCK PIC X(4). 02520024 10 GEO-WA2-3L-L-2000-CENS-BLK-SUF PIC X. 02530024 10 GEO-WA2-3L-R-2000-CENS-TRACT PIC X(6). 02540024 10 GEO-WA2-3L-R-2000-CENS-BLOCK PIC X(4). 02550024 10 GEO-WA2-3L-R-2000-CENS-BLK-SUF PIC X. 02560024 W2COB1A COPY File ***************************************************************** 00000100 ** THIS IS GEOSUPPORT SYSTEM COPY FILE W2COB1A, CONTAINING ** 00000200 ** THE LAYOUT OF WORK AREA 2 FOR FUNCTIONS 1A AND BL WHICH ** 00000300 ** SHARE A SINGLE WORK AREA 2 LAYOUT. 10/18/96 ** 00000400 ***************************************************************** 00000500 * NEW FORMAT * 00000600 05 GEO-WA2-1A-ACCESS-KEY PIC X(21). 00000700 05 GEO-WA2-1A-CONT-PARITY PIC X. 00000800 05 GEO-WA2-1A-LOW-HOUSENUM PIC X(6). 00000900 05 GEO-WA2-1A-ALTKEY-1. 00001000 10 GEO-WA2-1A-ALTKEY-1-BORO PIC X. 00001100 10 GEO-WA2-1A-ALTKEY-1-TAXBLOCK PIC X(5). 00001200 10 GEO-WA2-1A-ALTKEY-1-TAXLOT PIC X(4). 00001300 05 FILLER PIC X. 00001400 05 GEO-WA2-1A-SCC PIC X. 00001500 05 FILLER PIC X. 00001600 05 GEO-WA2-1A-GENERAL-LOT-INFO. 00001700 10 GEO-WA2-1A-RPAD-BLDG-CLASS PIC X(2). 00001800 10 GEO-WA2-1A-CORNER-CODE PIC X(2). 00001900 10 GEO-WA2-1A-NUM-OF-STRUCTURES PIC X(2). 00002000 10 GEO-WA2-1A-NUM-OF-BLOCKFACES PIC X(2). 00002100 10 GEO-WA2-1A-INTERIOR-FLAG PIC X. 00002200 10 GEO-WA2-1A-VACANT-FLAG PIC X. 00002300 10 GEO-WA2-1A-IRREG-FLAG PIC X. 00002400 05 GEO-WA2-1A-ALT-BORO-FLAG PIC X. 00002500 05 FILLER PIC X. 00002600 05 GEO-WA2-1A-STROLL-KEY PIC X(13). 00002700 05 GEO-WA2-1A-OVERFLOW-FLAG PIC X(1). 00002801 05 FILLER-DCP PIC X(1). 00002900 05 GEO-WA2-1A-BLDG-ID-NUM PIC X(7). 00003000 05 GEO-WA2-1A-CONDO-LOT-FLAG PIC X. 00003100 05 GEO-WA2-1A-RPAD-COND-NUM PIC X(4). 00003200 05 GEO-WA2-1A-CONDO-LOW-BBL PIC X(10). 00003300 05 FILLER PIC X. 00003400 05 GEO-WA2-1A-CONDO-BILLING-BBL PIC X(10). 00003500 05 FILLER PIC X. 00003600 05 GEO-WA2-1A-CONDO-BILL-BBL-SCC PIC X. 00003700 05 GEO-WA2-1A-CONDO-HIGH-BBL PIC X(10). 00003800 05 FILLER PIC X. 00003900 05 GEO-WA2-1A-SANBORN-BVOLPAGE. 00004000 10 GEO-WA2-1A-SANBORN-BORO PIC X(1). 00004100 10 GEO-WA2-1A-SANBORN-VOL-PAGE. 00004200 15 GEO-WA2-1A-SANBORN-VOL-NUM PIC X(3). 00004300 15 GEO-WA2-1A-SANBORN-PAGE-NUM PIC X(4). 00004400 05 GEO-WA2-1A-COMMERC-DIST PIC X(5). 00004500 05 GEO-WA2-1A-CO-OP-NBR PIC X(4). 00004602 05 FILLER PIC X(4). 00004703 05 GEO-WA2-1A-TOT-NBR-BLDG PIC X(4). 00004802 05 GEO-WA2-1A-DOF-MAP-BOROUGH PIC X. 00004904 05 GEO-WA2-1A-TAX-MAP-NBR PIC X(4). 00005004 05 FILLER-FOR-TAX-MAP-PAGE PIC X(4). 00005105 05 GEO-WA2-1A-X-COORD PIC X(7). 00005205 05 GEO-WA2-1A-Y-COORD PIC X(7). 00005305 05 GEO-WA2-1A-BID PIC X(6). 00005406 05 FILLER PIC X(2). 00005506 05 GEO-WA2-1A-FILLER-LGCS PIC X(8). 00005607 05 FILLER PIC X(2). 00005706 05 GEO-WA2-1A-NUM-OF-ADDR-FOR-LOT PIC X(2). 00005806 05 GEO-WA2-1A-LIST-OF-ADDRESSES OCCURS 21 TIMES. 00005906 10 GEO-WA2-1A-LIST-LOW-HOUSENUM PIC X(6). 00006006 10 FILLER PIC X(3). 00006106 10 GEO-WA2-1A-LIST-HI-HOUSENUM PIC X(6). 00006206 10 FILLER PIC X(3). 00006306 10 GEO-WA2-1A-LIST-STREETCODE PIC X(8). 00006406 10 GEO-WA2-1A-LIST-BIN PIC X(7). 00006506 10 GEO-WA2-1A-ADDR-TYPE PIC X. 00006606 10 FILLER PIC X. 00006706 10 GEO-WA2-1A-LIST-SOS PIC X. 00007002 W2COB1AL COPY File ***************************************************************** 00000100 ** THIS IS GEOSUPPORT SYSTEM COPY FILE W2COB1AL, CONTAINING ** 00000200 ** THE LAYOUT OF LONG WORK AREA 2 FOR FUNCTIONS 1A AND BL ** 00000300 ** WHICH SHARE A SINGLE WORK AREA 2 LAYOUT. 11/06/97 ** 00000400 ***************************************************************** 00000500 * 1A/BL LONG WORK AREA 2 * 00000600 05 GEO-WA2-1AL-ACCESS-KEY PIC X(21). 00000700 05 GEO-WA2-1AL-CONT-PARITY PIC X. 00000800 05 GEO-WA2-1AL-LOW-HOUSENUM PIC X(6). 00000900 05 GEO-WA2-1AL-ALTKEY-1. 00001000 10 GEO-WA2-1AL-ALTKEY-1-BORO PIC X. 00001100 10 GEO-WA2-1AL-ALTKEY-1-TAXBLOCK PIC X(5). 00001200 10 GEO-WA2-1AL-ALTKEY-1-TAXLOT PIC X(4). 00001300 05 FILLER PIC X. 00001400 05 GEO-WA2-1AL-SCC PIC X. 00001500 05 FILLER PIC X. 00001600 05 GEO-WA2-1AL-GENERAL-LOT-INFO. 00001700 10 GEO-WA2-1AL-RPAD-BLDG-CLASS PIC X(2). 00001800 10 GEO-WA2-1AL-CORNER-CODE PIC X(2). 00001900 10 GEO-WA2-1AL-NUM-OF-STRUCTURES PIC X(2). 00002000 10 GEO-WA2-1AL-NUM-OF-BLOCKFACES PIC X(2). 00002100 10 GEO-WA2-1AL-INTERIOR-FLAG PIC X. 00002200 10 GEO-WA2-1AL-VACANT-FLAG PIC X. 00002300 10 GEO-WA2-1AL-IRREG-FLAG PIC X. 00002400 05 GEO-WA2-1AL-ALT-BORO-FLAG PIC X. 00002500 05 FILLER PIC X. 00002600 05 GEO-WA2-1AL-STROLL-KEY PIC X(13). 00002700 05 FILLER PIC X(1). 00002800 05 FILLER-DCP PIC X(1). 00002900 05 GEO-WA2-1AL-BLDG-ID-NUM PIC X(7). 00003000 05 GEO-WA2-1AL-CONDO-LOT-FLAG PIC X. 00003100 05 GEO-WA2-1AL-RPAD-COND-NUM PIC X(4). 00003200 05 GEO-WA2-1AL-CONDO-LOW-BBL PIC X(10). 00003300 05 FILLER PIC X. 00003400 05 GEO-WA2-1AL-CONDO-BILLING-BBL PIC X(10). 00003500 05 FILLER PIC X. 00003600 05 GEO-WA2-1AL-CONDO-BILL-BBL-SCC PIC X. 00003700 05 GEO-WA2-1AL-CONDO-HIGH-BBL PIC X(10). 00003800 05 FILLER PIC X. 00003900 05 GEO-WA2-1AL-SANBORN-BVOLPAGE. 00004000 10 GEO-WA2-1AL-SANBORN-BORO PIC X(1). 00004100 10 GEO-WA2-1AL-SANBORN-VOL-PAGE. 00004200 15 GEO-WA2-1AL-SANBORN-VOL-NUM PIC X(3). 00004300 15 GEO-WA2-1AL-SANBORN-PAGE-NUM PIC X(4). 00004400 05 GEO-WA2-1AL-COMMERC-DIST PIC X(5). 00004500 05 GEO-WA2-1AL-CO-OP-NBR PIC X(4). 00004604 05 FILLER PIC X(4). 00004705 05 GEO-WA2-1AL-TOT-NBR-BLDG PIC X(4). 00004804 05 GEO-WA2-1AL-DOF-MAP-BORO PIC X. 00004907 05 GEO-WA2-1AL-DOF-MAP-SECVOL PIC X(4). 00005007 ******* GEO-WA2-1AL-DOF-MAP-PAGE NOT IMPLEMENTED 00005107 05 GEO-WA2-1AL-DOF-MAP-PAGE PIC X(4). 00005207 05 GEO-WA2-1AL-X-COORD PIC X(7). 00005308 05 GEO-WA2-1AL-Y-COORD PIC X(7). 00005408 05 GEO-WA2-1AL-BID PIC X(6). 00005509 05 FILLER PIC X(2). 00005609 05 GEO-WA2-1AL-FILLER-LGCS PIC X(8). 00005709 05 GEO-WA2-1AL-NUM-OF-BINS PIC X(4). 00005809 05 GEO-WA2-1AL-BINS PIC X(7) 00005909 OCCURS 2500 TIMES. 00006004 W2COB3S COPY File ****************************************************************** 00010000 *** THIS IS GEOSUPPORT SYSTEM COPY FILE W2COB3S, CONTAINING ** 00020000 *** THE LAYOUT OF WORK AREA 2 FOR FUNCTION 3S. 9/22/93 ** 00030000 ****************************************************************** 00040000 05 GEO-WA2-3S-ACCESS-KEY PIC X(21). 00050000 05 GEO-WA2-3S-NUM-OF-INTERSECTS PIC X(3). 00060000 05 GEO-WA2-3S-LIST-OFINTERSECTS OCCURS 350 TIMES. 00070000 10 GEO-WA2-3S-SMALLEST-PBSC PIC S9(7) COMP-3. 00080000 10 GEO-WA2-3S-2ND-SMALLEST-PBSC PIC S9(7) COMP-3. 00090000 10 GEO-WA2-3S-DISTANCE PIC S9(5) COMP-3. 00100000 10 GEO-WA2-3S-GAP-FLAG PIC X. 00110000 ASSEMBLER COPY FILES (MSW) W1BAL COPY File \\*/********************************************************************/ 00000100 \\*/***** THIS IS GEOSUPPORT INFORMATION SYSTEM COPY FILE W1BAL, \\***/ 00000200 \\*/***** CONTAINING THE LAYOUT OF WORK AREA 1. \\***/ 00000300 \\*/********************************************************************/ 00000400 \\*/***** Last Updated - 17 October 2006 \\***/ 00000410 \\*/********************************************************************/ 00000420 W1BAL DS 0H 00000500 \\*/**************************** 00000600 \\*/***** INPUT FIELDS ******* 00000700 \\*/**************************** 00000800 W1IFUNC DS 0CL2 FUNCTION CODE 00000900 W1IFUNC1 DS CL1 FUNCTION CODE, BYTE 1 00001000 W1IFUNC2 DS CL1 FUNCTION CODE, BYTE 2 00001100 W1IBORO DS 0CL1 00001200 W1IBORO1 DS CL1 BORO CODE (1=MN;2=BX;3=BK;4=QN;5=SI) 00001300 W1IHSE# DS CL12 UNFORMATED HSNUM FOR FUNCTION: 1; 1A; 1E. 00001400 W1IHSE#P DS CL6 HOUSE NUM (INTERNAL FORMAT FOR FUNC D) 00001500 W1ISTRT1 DS CL32 STREET NAME 1 00001600 W1ISTRT2 DS CL32 STREET NAME 2 00001700 W1ISTRT3 DS CL32 STREET NAME 3 00001800 W1ICOMP DS CL1 COMPASS DIRECTION (TYPES 2, 3C & 3S) 00001900 W1ICOMP2 DS CL1 COMPASS DIRECTION (TYPE 3S) 00001950 W1ICDE1 DS PL4 PB5SC FOR STREET 1 00002000 W1ICDE2 DS PL4 PB5SC FOR STREET 2 00002100 W1ICDE3 DS PL4 PB5SC FOR STREET 3 00002200 W1IRBRQS DS CL1 ROADBED REQUEST SWITCH 00002300 W1IBORO2 DS CL1 BORO CODE OF CROSS ST. 1 00002400 W1IBORO3 DS CL1 BORO CODE OF CROSS ST. 2 00002500 W1ISNL DS CL2 LENGTH STREET NAME IS TO BE NORMALIZED TO 00002600 W1I10SC1 DS CL11 BORO + 10 BYTE STREET CODE FOR CROSS STREET 1 00002700 W1I10SC2 DS CL11 BORO + 10 BYTE STREET CODE FOR CROSS STREET 2 00002800 W1I10SC3 DS CL11 BORO + 10 BYTE STREET CODE FOR CROSS STREET 3 00002900 W1IZIPIN DS CL5 INPUT ZIP CODE 00003000 W1IBBL DS 0CL10 BORO,BLOCK,LOT FOR \"BL\" FUNCTION 00003100 W1IBLBOR DS CL1 BORO FOR FUNCTION \"BL\" 00003200 W1IBLOCK DS CL5 TAX BLOCK - FOR FUNCTION \"BL\" 00003300 W1ILOT DS CL4 TAX LOT - FOR FUNCTION \"BL\" 00003400 DS CL1 FILLER 00003410 W1IBIN DS CL7 BUILDING ID NUMBER 00003500 W1ICMPCT DS CL1 'C' IF STREET NAMES ARE TO BE COMPACTED 00003600 W1ILONG3 DS CL1 'L' IF LONG WORKAREA 2 FOR FUNC 3 DESIRED 00003700 W1ILHSE DS CL12 UNFORMATED LOW HSNUM FOR FUNCTION: 1; 1A; 1E. 00003800 W1ILHSEP DS CL6 LOW HOUSE NUM (INTERNAL FORMAT FOR FUNC D) 00003900 W1INIBMF DS CL1 NON-IBM MAIN FRAMME FLAG 00004000 W1I1ABLV DS CL1 Set to \"S\" for St'd Func. 1A & BL WORKAREA 00004100 \\* Set to \"L\" or \" \" for Legacy 1A & BL Workarea 00004200 W1IXSTF DS CL1 CROSS STREET NAME FLAG 00004300 DS CL4 FILLER 00004400 \\*/***************************** 00004500 \\*/***** OUTPUT FIELDS ******* 00004600 \\*/***************************** 00004700 W1OLHSE DS CL12 LOW HOUSE NUMBER IN DISPLAY FORMAT W1OBORO DS CL9 BORO NAME 00004800 W1OSTRT1 DS CL32 STREET 1 NAME, NORMALIZED 00004900 W1OSTRT2 DS CL32 STREET 2 NAME, NORMALIZED 00005000 W1OSTRT3 DS CL32 STREET 3 NAME, NORMALIZED 00005100 W1OHSE# DS CL12 HOUSE NUMBER, NORMALIZED, DISPLAY FORMAT 00005200 W1OHSE#P DS CL6 HOUSE NUMBER (INTERNAL FORMAT) 00005300 DS CL7 FILLER 00005400 W1OPB51K DS 0PL4 Packed Borough and Street Code 1 00005500 W1OBOR1K DS XL1 Packed unsigned Borough Code 00005600 W1OCDE1K DS PL3 STREET CODE 1 (KEY) 00005700 DS PL2 Filler 00005800 W1OPB52K DS 0PL4 Packed Borough and Street Code 2 00005900 W1OBOR2K DS XL1 Packed unsigned Borough Code 00006000 W1OCDE2K DS PL3 STREET CODE 2 (KEY) 00006100 DS PL2 Filler 00006200 W1OPB53K DS 0PL4 Packed Borough and Street Code 3 00006300 W1OBOR3K DS XL1 Packed unsigned Borough Code 00006400 W1OCDE3K DS PL3 STREET CODE 3 (KEY) 00006500 W1OATTR DS CL3 Attribute Bytes - Internal Use Only 00006600 W1BROWSE DS CL40 10 PB5SC'S FOR FUNCTION: BB; BF. 00006700 W1O10SC1 DS CL11 BORO + 10 BYTE STREET CODE FOR CROSS STREET 1 00006800 W1O10SC2 DS CL11 BORO + 10 BYTE STREET CODE FOR CROSS STREET 2 00006900 W1O10SC3 DS CL11 BORO + 10 BYTE STREET CODE FOR CROSS STREET 2 00007000 W1OCONDO DS CL5 CONDO UNIT ID NUMBER - NOT IMPLEMENTED 00007100 W1OBBL DS 0CL10 OUTPUT BORO,BLOCK,LOT FOR FUNCTION \"BL\" 00007200 W1OBLBOR DS CL1 BORO FOR FUNCTION \"BL\" 00007300 W1OBLOCK DS CL5 TAX BLOCK - FOR FUNCTION \"BL\" 00007400 W1OLOT DS CL4 TAX LOT - FOR FUNCTION \"BL\" 00007500 DS CL1 FILLER 00007510 W1OBIN DS CL7 BUILDING IDENTIFICATION Number 00007600 W1OINTU1 DS CL1 INTERNAL USE ONLY - ATTR BYTE W1OREASN DS CL1 REASON CODE 00007900 W1OINTR0 DS CL1 INTERNAL USE ONLY - RETURN CODE 00008000 W1OINTRC DS CL1 INTERNAL USE ONLY - RETURN CODE 00008100 W1ORC DS 0CL2 RETURN CODE 00008200 W1ORC1 DS CL1 RETURN CODE, BYTE 1 00008300 W1ORC2 DS CL1 RETURN CODE, BYTE 2 00008400 W1OERROR DS CL80 ERROR MESSAGE 00008500 W1O#SIM DS PL2 NUMBER OF SIMILAR NAMES 00008600 W1ONAMES DS 10CL32 UP TO 10 SIMILAR NAMES 00008700 W1END EQU * 00008800 W1LENGTH EQU W1END-W1BAL LENGTH OF W1BAL 00008900 W2BAL COPY File \\*/********************************************************************/ 00010000 \\*/***** THIS IS GEOSUPPORT INFORMATION SYSTEM COPY FILE W2BAL, \\***/ 00020000 \\*/***** CONTAINING THE LAYOUT OF WORK AREA 2 FOR FUNCTIONS \\***/ 00030000 \\*/***** 1, 1E, 2, 2C, 3, 3C. PLEASE NOTE THAT FUNCTIONS 2 AND 2C \\***/ 00040000 \\*/***** SHARE A SINGLE WORK AREA 2 LAYOUT. \\***/ 00050000 \\*/********************************************************************/ 00060000 \\*/***** LAST MODIFIED JANUARY 2012 \\***/ 00070044 \\*/********************************************************************/ 00080012 W2BAL DS 0H 00090000 W2ACCKEY DS CL21 ACCESS KEY 00100000 W2LAYOUT DS 0CL179 00110002 W2F1CPAR DS CL1 CONTINUOUS PARITY INDICATOR 00120002 W2F1LHNI DS 0CL6 LOW HOUSE NUMBER 00130000 W2F1HSEL DS CL5 LOW HOUSE NUMBER ON BLOCK FACE 00140000 W2F1SFXL DS CL1 LOW HOUSE NUMBER SUFFIX 00150013 W2F1HHNI DS 0CL6 HIGH HOUSE NUMBER 00160000 W2F1HSEH DS CL5 HIGH HOUSE NUMBER ON BLOCK FACE 00170000 W2F1SFXH DS CL1 HI HOUSE NUMBER SUFFIX 00180013 W2F1ALX DS CL1 A=ALLEYS INTERSECT SEGMENT 00190025 \\* X=CROSS STREETS MODIFIED 00191025 W2F1#STL DS CL1 NUMBER OF CROSS STREETS AT LOW END 00200000 W2F1CDEL DS CL20 UP TO FIVE PB5SC'S FOR LOW END 00210000 W2F1#STH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 00220000 W2F1CDEH DS CL20 UP TO FIVE PB5SC'S FOR HIGH END 00230000 W2F1CD DS 0CL3 COMMUNITY DISTRICT 00240000 W2F1CDB DS CL1 COMMUNITY DISTRICT BORO 00250000 W2F1CDN DS CL2 COMMUNITY DISTRICT NUMBER 00260000 W2F1ZIP DS CL5 ZIP CODE 00270000 W2F1SLA DS CL1 STREET LIGHT AREA 00280000 W2F1HCD DS CL2 HEALTH CODE DISTRICT 00290045 W2F1SOS DS CL1 SIDE OF STREET INDICATOR 00300000 W2F1PAR DS CL1 CONTINUOUS PARITY INDICATOR 00310000 W2F1CT10 DS CL6 2010 CENSUS TRACT 00320037 W2F1CB10 DS CL4 2010 CENSUS BLOCK 00350037 W2F1CBS1 DS CL1 2010 CENSUS BLOCK SUFFIX NOT IMPLEMENTED 00351042 DS CL3 FILLER 00352032 W2F1HA DS CL4 HEALTH AREA 00360045 W2F1SREC DS CL3 SANITATION RECYCLE PICK-UP 00370007 W2F1FEAT DS CL1 FEATURE TYPE CODE 00380023 RES1 DS CL1 RESERVED FOR DCP/GSS USE 00400000 ORG RES1 00401030 W2F1ELCD DS CL1 COMMUNITY DEVELOPMENT ELIGIBILITY 00402031 W2F1CURV DS CL1 CURVE FLAG 00410014 W2F1POL DS 0CL4 POLICE DISTRICT 00420000 W2F1PBC DS CL1 POLICE PATROL BORO COMMAND 00430000 W2F1POP DS CL3 POLICE PRECINCT 00440000 W2F1SCH DS CL2 SCHOOL DISTRICT 00450000 DS CL14 RESERVED FOR POLITICAL INFORMATION 00460028 W2F1CSC DS CL1 COINCIDENT SEGMENT COUNT 00460128 W2F1STC DS CL1 SEGMENT TYPE CODE 00461026 W2F1SAND DS CL3 SANITATION DISTRICT 00470002 W2F1SANT DS CL2 SANITATION DEPT SUBSECTION 00480000 W2F1FS DS CL2 FIRE DIVISION 00490001 W2F1FB DS CL2 FIRE BATTALION 00500000 W2F1FC DS 0CL4 FIRE COMPANY 00510000 W2F1FCT DS CL1 FIRE COMPANY TYPE 00520000 W2F1FCN DS CL3 FIRE COMPANY NUMBER 00530000 W2F1SPAD DS CL1 SPECIAL ADDRESS FLAG 00540000 W2F1MHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 00550000 W2F1FILS DS CL1 FILLER-WAS SPLIT SCHOOL DISTRICT FLAG 00560039 W2F1LGC DS CL2 LOGICAL GROUP CODE (PREFERRED) 00570000 W2F1FACE DS CL4 LION FACE CODE 00580000 W2F1SEQ DS CL5 LION SEQUENCE NUMBER 00590000 W2F1CT90 DS CL6 1990 CENSUS TRACT 00600000 DS CL4 FILLER 00610015 W2F1CPB DS CL3 DYNAMIC BLOCK/ATOMIC POLYGON 00640038 W2F1XCOR DS CL7 X COORDINATE 00650000 W2F1YCOR DS CL7 Y COORDINATE 00660000 W2F1SEGL DS CL5 SEGMENT LEGNTH 00670000 W2F1SREG DS CL5 SANITATION REGULAR PICK-UP 00680012 \\* 00690000 ******************************************************************** 00700000 ORG W2F1SCH+2 PATCH FOR FUNCTION 1E FIELDS 00710000 ******************************************************************** 00720000 \\* 00730000 W2F1EED DS CL3 ELECTION DISTRICT 00740000 W2F1EAD DS CL2 ASSEMBLY DISTRICT 00750000 W2F1ESED DS CL1 SPLIT E.D. FLAG 00760000 W2F1ECON DS CL2 CONGRESSIONAL DISTRICT 00770000 W2F1ESEN DS CL2 SENATORIAL DISTRICT 00780000 W2F1ECIV DS CL2 CIVIL COURT DISTRICT 00790000 W2F1ECOU DS CL2 CITY COUNCIL DISTRICT 00800000 DS CL18 00810000 W2F1ELGC DS CL2 LOGICAL GROUP CODE (PREFERRED) 00820000 \\* 00830000 ******************************************************************** 00840000 ORG W2LAYOUT RESET LOCATION COUNTER FOR FUNCTION 2 00850000 ******************************************************************** 00860000 \\* 00870000 W2F2DUPI DS CL1 DUPLICATE INTERSECT FLAG 00880000 DS CL9 FILLER 00890000 W2F2LGC1 DS CL2 STREET 1 PREFERRED LGC 00900013 W2F2LGC2 DS CL2 STREET 2 PREFERRED LGC 00910013 W2F2#INT DS CL1 NUMBER OF INTERSECTING STREETS 00920000 W2F2CODE DS CL20 INTERSECTING PB5SC'S 00930000 W2F2CDIR DS CL1 COMPASS DIRECTION OF TWO LOWEST STREETS 00940011 W2F2LEVC DS CL10 LEVEL CODES ASSOCIATED WITH CROSS STREETS 00941022 DS CL2 WAS INSTRUCTIONAL DIVISION 00950046 W2F2FS DS CL2 FIRE DIVISION 00960003 W2F2FB DS CL2 FIRE BATTALION 00970000 W2F2FC DS 0CL4 FIRE COMPANY 00980000 W2F2FCT DS CL1 FIRE COMPANY TYPE 00990000 W2F2FCN DS CL3 FIRE COMPANY NUMBER 01000000 W2F2CD DS 0CL3 COMMUNITY DISTRICT 01010000 W2F2CDB DS CL1 COMMUNITY DISTRICT BORO 01020000 W2F2CDN DS CL2 COMMUNITY DISTRICT NUMBER 01030000 W2F2ZIP DS CL5 ZIP CODE 01040000 W2F2SLA DS CL1 STREET LIGHT AREA 01050000 W2F2CT10 DS CL6 2010 CENSUS TRACT 01060037 DS CL3 FILLER 01080000 W2F2HA DS CL4 HEALTH AREA 01090045 DS CL9 FILLER 01100010 W2F2NDNB DS CL7 LION NODE NUMBER 01110010 W2F2XCOR DS CL7 X COORDINATE 01120000 W2F2YCOR DS CL7 Y COORDINATE 01130000 DS CL4 FILLER 01150013 W2F2POL DS 0CL4 POLICE DISTRICT 01160000 W2F2PBC DS CL1 POLICE PATROL BORO COMMAND 01170000 W2F2POP DS CL3 POLICE PRECINCT 01180000 W2F2SCH DS CL2 SCHOOL DISTRICT 01190000 W2F2MHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 01200000 W2F2CT90 DS CL6 1990 CENSUS TRACT 01210000 W2F2SVP1 DS 0CL8 FIRST SANBORN BOROUGH, PAGE, VOLUME 01220003 W2F2SB1 DS CL1 FIRST SANBORN BOROUGH CODE 01230003 W2F2SP1 DS CL3 FIRST SANBORN PAGE 01240003 W2F2SV1 DS CL4 FIRST SANBORN VOLUME 01250003 W2F2SVP2 DS 0CL8 SECOND SANBORN BOROUGH, PAGE, VOLUME 01260003 W2F2SB2 DS CL1 SECOND SANBORN BOROUGH CODE 01270003 W2F2SP2 DS CL3 SECOND SANBORN PAGE 01280003 W2F2SV2 DS CL4 SECOND SANBORN VOLUME 01290003 W2F2DID DS CL5 DUPLICATE INTERSECTION DISTANCE 01291034 W2F2T00 DS CL6 2000 CENSUS TRACT 01292040 DS CL27 FILLER 01300034 \\* 01310000 ******************************************************************** 01320000 ORG W2LAYOUT RESET LOCATION COUNTER FOR FUNCTION 3 01330000 ******************************************************************** 01340000 \\* 01350000 W2F3DUPF DS CL1 DUPLICATE KEY FLAG 01360013 W2F3CURV DS CL1 CURVE FLAG 01361014 W2F3LST DS CL1 LOCATIONAL STATUS 01362018 W2F3CBI DS CL1 COUNTY BOUNDARY INDICATOR 01363017 W2F3CSC DS CL1 COINCIDENT SEGMENT COUNT 01364028 DS CL3 01370028 W2F3LGC1 DS CL2 STREET 1 PREFERRED LGC 01380013 W2F3LGC2 DS CL2 STREET 2 PREFERRED LGC 01390013 W2F3LGC3 DS CL2 STREET 3 PREFERRED LGC 01400013 W2F3#STL DS CL1 NUMBER OF CROSS STREETS AT LOW END 01410000 W2F3CDEL DS CL20 CROSS STREET PB5SC'S AT LOW END 01420000 W2F3#STH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 01430000 W2F3CDEH DS CL20 CROSS STREET PB5SC'S AT HIGH END 01440000 W2F3SLA DS CL1 STREET LIGHT AREA 01450000 W2F3REVF DS CL1 REVERSAL FLAG 01460000 W2F3CDL DS 0CL3 LEFT COMMUNITY DISTRICT 01470000 W2F3CDBL DS CL1 LEFT COMMUNITY DISTRICT BORO 01480006 W2F3CDNL DS CL2 LEFT COMMUNITY DISTRICT NUMBER 01490006 W2F3CDR DS 0CL3 RIGHT COMMUNITY DISTRICT 01500000 W2F3CDBR DS CL1 RIGHT COMMUNITY DISTRICT BORO 01510006 W2F3CDNR DS CL2 RIGHT COMMUNITY DISTRICT NUMBER 01520006 W2F3ZIPL DS CL5 LEFT ZIP CODE 01530000 W2F3ZIPR DS CL5 RIGHT ZIP CODE 01540000 DS CL18 FILLER - FORMER 1980 CENSUS GEOGRAPHY 01541015 W2F3HAL DS CL4 LEFT HEALTH AREA 01610045 W2F3HAR DS CL4 RIGHT HEALTH AREA 01620045 DS CL2 WAS LEFT INSTRUCTIONAL DIVISION 01630046 DS CL2 WAS RIGHT INSTRUCTIONAL DIVISION 01631046 W2F3LO#L DS CL7 LEFT LOW HOUSE NUMBER 01640000 W2F3HI#L DS CL7 LEFT HIGH HOUSE NUMBER 01650000 W2F3LO#R DS CL7 RIGHT LOW HOUSE NUMBER 01660000 W2F3HI#R DS CL7 RIGHT HIGH HOUSE NUMBER 01670000 W2F3PAR DS CL1 CONTINUOUS PARITY INDICATOR 01680000 W2F3FACE DS CL4 LION FACE CODE 01690000 W2F3SEQ DS CL5 LION SEQUENCE NUMBER 01700000 W2F3GEN DS CL1 GENERATED RECORD FLAG 01710000 W2F3SEGL DS PL3 SEGMENT LENGTH IN FEET 01720000 W2F3SLOP DS CL3 SEGMENT SLOPE IN DEGREES 01730000 W2F3ORNT DS CL1 SEGMENT ORIENTATION 01740000 DS CL4 FILLER 01750013 RES2 DS CL2 RESERVED FOR DCP/GSS USE 01770000 ORG RES2 01770130 W2F3ELCD DS CL2 COMMUNITY DEVELOPMENT ELIGIBILITY 01770231 W2F3DGLG DS CL1 DOG LEG FLAG 01771015 W2F3FEAT DS CL1 FEATURE TYPE CODE 01780024 W2F3POLL DS 0CL4 LEFT POLICE DISTRICT 01790000 W2F3PBCL DS CL1 LEFT POLICE PATROL BORO COMMAND 01800000 W2F3POPL DS CL3 LEFT POLICE PRECINCT 01810000 W2F3POLR DS 0CL4 RIGHT POLICE DISTRICT 01820000 W2F3PBCR DS CL1 RIGHT POLICE PATROL BORO COMMAND 01830000 W2F3POPR DS CL3 RIGHT POLICE PRECINCT 01840000 W2F3SCHL DS CL2 LEFT SCHOOL DISTRICT 01850000 W2F3SCHR DS CL2 RIGHT SCHOOL DISTRICT 01860000 W2F3MHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 01870000 W2F3SEGT DS CL7 SEGMENT IDENTIFIER 01871015 W2F3STC DS CL1 SEGMENT TYPE CODE 01880026 \\* 01890000 ******************************************************************** 01900000 ORG W2LAYOUT RESET LOCATION COUNTER FOR FUNCTION 3C 01910000 ******************************************************************** 01920000 \\* 01930000 W23CCURV DS CL1 CURVE FLAG 01931014 W23CSTC DS CL1 SEGMENT TYPE CODE 01932026 W23CLST DS CL1 LOCATIONAL STATUS 01933018 W23CCBI DS CL1 COUNTY BOUNDARY INDICATOR 01934017 W23CCSC DS CL1 COINCIDENT SEGMENT COUNT 01935028 DS CL3 FILLER 01940028 W23CLGC1 DS CL2 STREET 1 PREFERRED LGC 01950013 W23CLGC2 DS CL2 STREET 2 PREFERRED LGC 01960013 W23CLGC3 DS CL2 STREET 3 PREFERRED LGC 01970013 W23C#STL DS CL1 NUMBER OF CROSS STREETS AT LOW END 01980000 W23CCDEL DS CL20 UP TO FIVE PB5SC'S FOR LOW END 01990000 W23C#STH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 02000000 W23CCDEH DS CL20 UP TO FIVE PB5SC'S FOR HIGH END 02010000 W23CCD DS 0CL3 COMMUNITY DISTRICT 02020000 W23CCDB DS CL1 COMMUNITY DISTRICT BORO 02030000 W23CCDN DS CL2 COMMUNITY DISTRICT NUMBER 02040000 W23CZIP DS CL5 ZIP CODE 02050000 W23CSLA DS CL1 STREET LIGHT AREA 02060000 W23CT00 DS CL6 2000 CENSUS TRACT - 02070040 DS CL1 FILLER 02080034 W23CCT10 DS CL6 2010 CENSUS TRACT 02100037 W23CCB10 DS CL4 2010 CENSUS BLOCK 02110037 W23CCBS1 DS CL1 2010 CENSUS BLOCK SUFFIX NOT IMPLEMENTED 02111042 W23CHA DS CL4 HEALTH AREA 02120045 W23CREVF DS CL1 CROSS STREET REVERSAL FLAG 02130005 W23CSOS DS CL1 SIDE OF STREET INDICATOR 02140005 W23CFS DS CL2 FIRE DIVISION 02150003 W23CFB DS CL2 FIRE BATTALION 02160000 W23CFC DS 0CL4 FIRE COMPANY 02170000 W23CFCT DS CL1 FIRE COMPANY TYPE 02180000 W23CFCN DS CL3 FIRE COMPANY NUMBER 02190000 W23CSEGT DS CL7 SEGMENT IDENTIFIER 02200015 W23CHSEL DS CL7 LOW HOUSE NUMBER 02210000 W23CHSEH DS CL7 HIGH HOUSE NUMBER 02220000 W23CHS2L DS CL7 2ND LOW HSE # - USED IF ODD & EVEN RANGES 02230000 W23CHS2H DS CL7 2ND HI HSE # ARE ON SAME SIDE OF STREET 02240000 W23CPAR DS CL1 CONTINUOUS PARITY INDICATOR 02250000 W23CFACE DS CL4 LION FACE CODE 02260000 W23CSEQ DS CL5 LION SEQUENCE NUMBER 02270000 W23CGEN DS CL1 GENERATED RECORD FLAG 02280000 W23CSEGL DS PL3 SEGMENT LENGTH IN FEET 02290000 W23CSLOP DS CL3 SEGMENT SLOPE IN DEGREES 02300000 W23CORNT DS CL1 SEGMENT ORIENTATION 02310000 DS CL2 WAS INSTRUCTIONAL DIVISION 02320046 RES3 DS CL1 RESERVED FOR DCP/GSS USE 02330000 ORG RES3 02331030 W23CELCD DS CL1 COMMUNITY DEVELOPMENT ELIGIBILITY 02332031 W23CFEAT DS CL1 FEATURE TYPE CODE 02340024 W23CPOL DS 0CL4 POLICE DISTRICT 02350000 W23CPBC DS CL1 POLICE PATROL BORO COMMAND 02360000 W23CPOP DS CL3 POLICE PRECINCT 02370000 W23CSCH DS CL2 SCHOOL DISTRICT 02380000 W23CMHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 02390000 W23CCT90 DS CL6 1990 CENSUS TRACT 02400000 DS CL4 FILLER 02410015 W23CCPB DS CL3 DYNAMIC BLOCK/ATOMIC POLYGON 02440038 W23CB00 DS CL4 2000 CENSUS BLOCK 02441040 W23CS00 DS CL1 2000 CENSUS BLOCK SUFFIX 02442040 \\* 02460000 ******************************************************************** 02470000 ORG W2BAL RESET LOCATION COUNTER FOR FUNCTION 5 02480000 ******************************************************************** 02490000 \\* 02500000 W2F5AMK DS CL28 ACCESS MATCHING KEY 02510000 DS CL172 FILLER 02520000 W2END EQU * 02530000 W2LENGTH EQU W2END-W2BAL LENGTH OF W2BAL 02540000 W2BALL COPY File \\*/********************************************************************/ 00000100 \\*/***** THIS IS GEOSUPPORT INFORMATION SYSTEM COPY FILE W2BALL, \\***/ 00000200 \\*/***** CONTAINING THE LAYOUT OF THE OPTIONAL LONG WORK AREA 2 \\***/ 00000300 \\*/***** FOR FUNCTIONS 1 AND 3. \\***/ 00000400 \\*/********************************************************************/ 00000500 \\*/***** LAST UPDATED JANUARY 2012 \\***/ 00000603 \\*/********************************************************************/ 00000702 W2BALL DS 0H 00000802 W2LACKEY DS CL21 ACCESS KEY 00100000 W21LCPAR DS CL1 CONTINUOUS PARITY INDICATOR 00120002 W21LLHNI DS 0CL6 LOW HOUSE NUMBER 00130000 W21LHSEL DS CL5 LOW HOUSE NUMBER ON BLOCK FACE 00140000 W21LSFXL DS CL1 LOW HOUSE NUMBER SUFFIX 00150013 W21LHHNI DS 0CL6 HIGH HOUSE NUMBER 00160000 W21LHSEH DS CL5 HIGH HOUSE NUMBER ON BLOCK FACE 00170000 W21LSFXH DS CL1 HI HOUSE NUMBER SUFFIX 00180013 W21LALX DS CL1 A=ALLEYS INTERSECT SEGMENT 00190000 * X=CROSS STREETS MODIFIED W21L#STL DS CL1 NUMBER OF CROSS STREETS AT LOW END 00200000 W21LCDEL DS CL20 UP TO FIVE PB5SC'S FOR LOW END 00210000 W21L#STH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 00220000 W21LCDEH DS CL20 UP TO FIVE PB5SC'S FOR HIGH END 00230000 W21LCD DS 0CL3 COMMUNITY DISTRICT 00240000 W21LCDB DS CL1 COMMUNITY DISTRICT BORO 00250000 W21LCDN DS CL2 COMMUNITY DISTRICT NUMBER 00260000 W21LZIP DS CL5 ZIP CODE 00270000 W21LSLA DS CL1 STREET LIGHT AREA 00280000 W21LHCD DS CL2 HEALTH CODE DISTRICT 00290000 W21LSOS DS CL1 SIDE OF STREET INDICATOR 00300000 W21LPAR DS CL1 CONTINUOUS PARITY INDICATOR 00310000 W21LCT10 DS CL6 2010 CENSUS TRACT 00320015 W21LCB10 DS CL4 2010 CENSUS BLOCK 00350015 W21LCBS1 DS CL1 2010 CENSUS BLOCK SUFFIX 00351015 DS CL3 FILLER 00352015 W21LHA DS CL4 HEALTH AREA 00360000 W21LSREC DS CL3 SANITATION RECYCLE PICK-UP 00370007 W21LFEAT DS CL1 FEATURE TYPE CODE 00380007 RES1L DS CL1 RESERVED FOR DCP/GSS USE 00400000 ORG RES1L W21LELCD DS CL1 COMMUNITY DEVELOPMENT ELIGIBILITY W21LCURV DS CL1 CURVE FLAG 00410014 W21LPOL DS 0CL4 POLICE DISTRICT 00420000 W21LPBC DS CL1 POLICE PATROL BORO COMMAND 00430000 W21LPOP DS CL3 POLICE PRECINCT 00440000 W21LSCH DS CL2 SCHOOL DISTRICT 00450000 DS CL14 RESERVED FOR POLITICAL INFORMATION 00460013 W21LCSC DS CL1 COINCIDENT SEGMENT COUNT W21LSTC DS CL1 SEGMENT TYPE CODE W21LSAND DS CL3 SANITATION DISTRICT 00470002 W21LSANT DS CL2 SANITATION DEPT SUBSECTION 00480000 W21LFS DS CL2 FIRE DIVISION 00490001 W21LFB DS CL2 FIRE BATTALION 00500000 W21LFC DS 0CL4 FIRE COMPANY 00510000 W21LFCT DS CL1 FIRE COMPANY TYPE 00520000 W21LFCN DS CL3 FIRE COMPANY NUMBER 00530000 W21LSPAD DS CL1 SPECIAL ADDRESS FLAG 00540000 W21LMHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 00550000 W21LFILS DS CL1 FILLER-WAS SPLIT SCHOOL DISTRICT FLAG 00560000 W21LLGC DS CL2 LOGICAL GROUP CODE (PREFERRED) 00570000 W21LFACE DS CL4 LION FACE CODE 00580000 W21LSEQ DS CL5 LION SEQUENCE NUMBER 00590000 W21LCT90 DS CL6 1990 CENSUS TRACT 00600000 DS CL4 FILLER 00610015 W21LCPB DS CL3 DYNAMIC BLOCK/ATOMIC POLYGON 00640000 W21LXCOR DS CL7 X COORDINATE 00650000 W21LYCOR DS CL7 Y COORDINATE 00660000 W21LSEGL DS CL5 SEGMENT LEGNTH 00670000 W21LSREG DS CL5 SANITATION REGULAR PICK-UP 00680012 W21LSEGT DS CL7 SEGMENT IDENTIFIER W21LB7SC DS CL8 \"TRUE\" BOROUGH AND 7 DIGIT STREET CODE W21LHNI DS CL6 UNDERLYING HOUSE NUMBER W21LT00 DS CL6 2000 CENSUS TRACT 00320015 W21LB00 DS CL4 2000 CENSUS BLOCK 00350015 W21LS00 DS CL1 2000 CENSUS BLOCK SUFFIX 00351015 DS CL68 FILLER - FUTURE USE \\* 00690000 ******************************************************************** 00700000 ORG W21LSCH+2 PATCH FOR FUNCTION 1E FIELDS 00710000 ******************************************************************** 00720000 \\* 00730000 W21LEED DS CL3 ELECTION DISTRICT 00740000 W21LEAD DS CL2 ASSEMBLY DISTRICT 00750000 W21LESED DS CL1 SPLIT E.D. FLAG 00760000 W21LECON DS CL2 CONGRESSIONAL DISTRICT 00770000 W21LESEN DS CL2 SENATORIAL DISTRICT 00780000 W21LECIV DS CL2 CIVIL COURT DISTRICT 00790000 W21LECOU DS CL2 CITY COUNCIL DISTRICT 00800000 DS CL18 00810000 W21LELGC DS CL2 LOGICAL GROUP CODE (PREFERRED) 00820000 \\* 00830000 ******************************************************************** 00840000 ORG W2LACKEY RESET LOCATION COUNTER FOR FUNCTION 3 00850000 ******************************************************************** 00860000 \\* 00870000 DS CL21 00000902 W23LDUPF DS CL1 DUPLICATE KEY FLAG 00001002 W23LCURV DS CL1 CURVE FLAG 00001103 W23LLST DS CL1 LOCATION STATUS OF SEGMENT W23LCBI DS CL1 COUNTY BOUNDARY INDICATOR W23LCSC DS CL1 COINCIDENT SEGMENT COUNT DS CL3 00001203 W23LLGC1 DS CL2 STREET 1 PREFERRED LGC 00001302 W23LLGC2 DS CL2 STREET 2 PREFERRED LGC 00001402 W23LLGC3 DS CL2 STREET 3 PREFERRED LGC 00001502 W23L#STL DS CL1 NUMBER OF CROSS STREETS AT LOW END 00001602 W23LCDEL DS CL20 CROSS STREET PB5SC'S AT LOW END 00001702 W23L#STH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 00001802 W23LCDEH DS CL20 CROSS STREET PB5SC'S AT HIGH END 00001902 W23LSLA DS CL1 STREET LIGHT AREA 00002002 W23LREVF DS CL1 REVERSAL FLAG 00002102 W23LCDL DS 0CL3 LEFT COMMUNITY DISTRICT 00002202 W23LCDBL DS CL1 LEFT COMMUNITY DISTRICT BORO 00002302 W23LCDNL DS CL2 LEFT COMMUNITY DISTRICT NUMBER 00002402 W23LCDR DS 0CL3 RIGHT COMMUNITY DISTRICT 00002502 W23LCDBR DS CL1 RIGHT COMMUNITY DISTRICT BORO 00002602 W23LCDNR DS CL2 RIGHT COMMUNITY DISTRICT NUMBER 00002702 W23LZIPL DS CL5 LEFT ZIP CODE 00002802 W23LZIPR DS CL5 RIGHT ZIP CODE 00002902 DS CL18 W23LHAL DS CL4 LEFT HEALTH AREA 00003602 W23LHAR DS CL4 RIGHT HEALTH AREA 00003702 DS CL2 WAS LEFT INSTRUCTIONAL DIVISION 00003802 DS CL2 WAS RIGHT INSTRUCTIONAL DIVISION W23LLO#L DS CL7 LEFT LOW HOUSE NUMBER 00003902 W23LHI#L DS CL7 LEFT HIGH HOUSE NUMBER 00004002 W23LLO#R DS CL7 RIGHT LOW HOUSE NUMBER 00004102 W23LHI#R DS CL7 RIGHT HIGH HOUSE NUMBER 00004202 W23LPAR DS CL1 CONTINUOUS PARITY INDICATOR 00004302 W23LFACE DS CL4 LION FACE CODE 00004402 W23LSEQ DS CL5 LION SEQUENCE NUMBER 00004502 W23LGEN DS CL1 GENERATED RECORD FLAG 00004602 W23LSEGL DS PL3 SEGMENT LENGTH IN FEET 00004702 W23LSLOP DS CL3 SEGMENT SLOPE IN DEGREES 00004802 W23LORNT DS CL1 SEGMENT ORIENTATION 00004902 DS CL4 FILLER 00005002 RESL1 DS CL2 RESERVED FOR DCP/GSS USE 00005102 ORG RESL1 W23LELCD DS CL2 COMMUNITY DEVELOPMENT ELIGIBILITY W23LDGLG DS CL1 DOG LEG FLAG W23LFEAT DS CL1 FEATURE TYPE CODE 00005202 W23LPOLL DS 0CL4 LEFT POLICE DISTRICT 00005302 W23LPBCL DS CL1 LEFT POLICE PATROL BORO COMMAND 00005402 W23LPOPL DS CL3 LEFT POLICE PRECINCT 00005502 W23LPOLR DS 0CL4 RIGHT POLICE DISTRICT 00005602 W23LPBCR DS CL1 RIGHT POLICE PATROL BORO COMMAND 00005702 W23LPOPR DS CL3 RIGHT POLICE PRECINCT 00005802 W23LSCHL DS CL2 LEFT SCHOOL DISTRICT 00005902 W23LSCHR DS CL2 RIGHT SCHOOL DISTRICT 00006002 W23LMHRI DS CL1 MARBLE HILL / RIKERS ISLAND 00006102 W23LSEGT DS CL7 SEGMENT IDENTIFIER W23LSTC DS CL1 SEGMENT TYPE CODE 00006202 W23LT90L DS CL6 1990 LEFT CENSUS TRACT 00006302 DS CL4 FILLER W23LCPBL DS CL3 CURRENT LEFT DYNAMIC BLOCK/ATOMIC POLYGON 00006702 W23LT90R DS CL6 1990 RIGHT CENSUS TRACT 00006802 DS CL4 FILLER W23LCPBR DS CL3 CURRENT RIGHT DYNAMIC BLOCK/ATOMIC POLYGON 00007202 W23LFSL DS CL2 LEFT FIRE DIVISION 00007302 W23LFBL DS CL2 LEFT FIRE BATTALION 00007402 W23LFCL DS 0CL4 LEFT FIRE COMPANY 00007502 W23LFCTL DS CL1 LEFT FIRE COMPANY TYPE 00007602 W23LFCNL DS CL3 LEFT FIRE COMPANY NUMBER 00007702 W23LFSR DS CL2 RIGHT FIRE DIVISION 00007802 W23LFBR DS CL2 RIGHT FIRE BATTALION 00007902 W23LFCR DS 0CL4 RIGHT FIRE COMPANY 00008002 W23LFCTR DS CL1 RIGHT FIRE COMPANY TYPE 00008102 W23LFCNR DS CL3 RIGHT FIRE COMPANY NUMBER 00008202 W23LT10L DS CL6 LEFT 2010 CENSUS TRACT W23LB10L DS CL4 LEFT 2010 CENSUS BLOCK W23LBS1L DS CL1 LEFT 2010 CENSUS BLOCK SUFFIX W23LT10R DS CL6 RIGHT 2010 CENSUS TRACT W23LB10R DS CL4 RIGHT 2010 CENSUS BLOCK W23LBS1R DS CL1 RIGHT 2010 CENSUS BLOCK SUFFIX W23FNODE DS CL7 FROM NODE W23TNODE DS CL7 TO NODE W23L00TL DS CL6 LEFT 2000 CENSUS TRACT W23L00BL DS CL4 LEFT 2000 CENSUS BLOCK W23L00SL DS CL1 LEFT 2000 CENSUS BLOCK SUFFIX W23L00TR DS CL6 RIGHT 2000 CENSUS TRACT W23L00BR DS CL4 RIGHT 2000 CENSUS BLOCK W23L00SR DS CL1 RIGHT 2000 CENSUS BLOCK SUFFIX W23LEND EQU * 00008402 W23LLEN EQU W23LEND-W2BALL LENGTH OF W2BALL 00008502 W2BAL1A COPY File \\*/********************************************************************/ 00000100 \\*/***** THIS IS GEOSUPPORT INFORMATION SYSTEM COPY FILE W2BAL1A, \\***/ 00000200 \\*/***** CONTAINING THE LAYOUT OF WORK AREA 2 FOR FUNCTION \\***/ 00000300 \\*/***** 1A, BL AND BN WHICH SHARE A SINGLE WORK AREA 2 LAYOUT. \\***/ 00000408 \\*/********************************************************************/ 00000500 \\*/***** LAST UPDATED 5 MARCH 2009 \\***/ 00000608 \\*/********************************************************************/ 00000703 W2BAL1A DS 0H 00000803 DS CL21 00000903 W21ACPAR DS CL1 CONTINUOUS PARITY INDICATOR 00001003 W21AHSEL DS CL6 LOW HOUSE NUMBER ON BLOCK 00001103 W21AALT1 DS 0CL10 ALTERNATE KEY 00001203 W21ABOR1 DS CL1 ALTERNATE KEY - BORO 00001303 W21ATXB1 DS CL5 ALTERNATE KEY - TAX BLOCK 00001403 W21ATXL1 DS CL4 ALTERNATE KEY - TAX LOT 00001503 DS CL1 FILLER 00001603 W21ARSCC DS CL1 RPAD SCC 00001703 DS CL1 FILLER 00001803 W21AGLI DS 0CL11 GENERAL LOT INFO 00001903 W21ARBLC DS CL2 RPAD BUILDING CLASSIFICATION 00002003 W21ACORC DS CL2 CORNER CODE 00002103 W21A#STC DS CL2 TOTAL NUMBER STRUCTURES 00002203 W21A#BFA DS CL2 TOTAL NUMBER BLOCKFACES 00002303 W21AINTF DS CL1 INTERIOR LOT FLAG 00002403 W21AVACF DS CL1 VACANT LOT FLAG 00002503 W21AIRLF DS CL1 IRREGULARLY-SHAPED LOT FLAG 00002603 W21AMHRI DS 0CL1 MARBLE HILL/RIKERS ISLAND FLAG 00002703 W21AABFL DS CL1 ALTERNATE BORO FLAG 00002803 DS CL1 STROLLING FLAG (W21ASTRF) 00002903 W21ASTRK DS CL13 STROLLING KEY 00003003 W21AOVFL DS CL1 ADDRESS RANGE LIST OVERFLOW FLAG 00003103 W21ARFIU DS CL1 RESERVED FOR INTERNAL USE 00003203 W21ABIN DS CL7 BUILDING IDENTIFICATION NUMBER (BIN) 00003303 W21ACONF DS CL1 CONDO LOT FLAG 00003403 W21ARCO# DS CL4 RPAD CONDO NUMBER 00003503 W21ACLBL DS CL10 CONDO LOW BBL 00003603 DS CL1 FILLER 00003703 W21ACBBL DS CL10 CONDO BILLING BBL 00003803 DS CL1 FILLER 00003903 W21ACBBS DS CL1 CONDO BILLING BBL SCC 00004003 W21ACHBL DS CL10 CONDO HIGH BBL 00004103 DS CL1 FILLER 00004203 W21ASBVP DS CL8 SANDBORN BOROUGH/VOLUME/PAGE 00004303 W21ABUSA DS CL5 BUSINESS AREA 00004403 W21ACOOP DS CL4 COOP ID NUMBER 00004503 DS CL4 FILLER 00004605 W21ANBST DS CL4 ACTUAL TOTAL NBR OF BLDGS ON LOT 00004704 W21ATAXB DS CL1 TAX MAP BOROUGH 00004805 W21ATAXM DS CL4 TAX MAP NBR - SECTION AND VOLUME 00004905 DS CL4 RESERVED FOR TAX MAP PAGE NUMBER 00005005 W21AXCO DS CL7 X COORDINATE OF ANNOTATION POINT 00005107 W21AYCO DS CL7 Y COORDINATE OF ANNOTATION POINT 00005207 W21ABID DS CL6 BUSINESS IMPROVEMENT DISTRICT 00005308 DS CL2 FILLER 00005408 W21AINT DS CL10 INTERNAL USE 00005508 W21A#ADR DS CL2 TOTAL ADDRESSES FOR LOT 00005603 W21ALIST DS 0CL756 LIST OF ADDRESSES, MAXIMUM OF 21 00005703 W21ALOW# DS CL6 LOW HOUSE NUMBER 00005803 DS CL3 FILLER 00005903 W21AHI# DS CL6 HIGH HOUSE NUMBER 00006003 DS CL3 FILLER 00006103 W21ACODE DS CL8 STREET CODE 00006203 W21ALBIN DS CL7 LIST BIN 00006303 W21AATYP DS CL1 ADDRESS TYPE 00006403 DS CL1 FILLER 00006503 W21ALSOS DS CL1 LIST SOS 00006603 * STORAGE IS RESERVED FOR THE REMAINING 20 ADDRESS STRUCTURES. 00006703 * EACH STRUCTURE IS IDENTICAL TO THE ONE DEFINED ABOVE. 00006803 DS CL720 REMAINING ADDRESSES 00006903 W21AEND EQU * 00007003 W21ALEN EQU W21AEND-W2BAL1A LENGTH OF W2BAL1A 00008003 W2BAL1AL COPY File \\*/********************************************************************/ 00000100 \\*/***** THIS IS GEOSUPPORT INFORMATION SYSTEM COPY FILE W2BAL1AL, \\***/ 00000200 \\*/***** CONTAINING THE LONG LAYOUT OF WORK AREA 2 FOR FUNCTION \\***/ 00000300 \\*/***** 1A, BL and BN WHICH SHARE A SINGLE WORK AREA 2 LAYOUT. \\***/ 00000416 \\*/********************************************************************/ 00000500 \\*/***** Last Updated 5 March 2009 \\***/ 00000616 \\*/********************************************************************/ 00000710 W2BAL1AL DS 0H 00000810 DS CL21 00000910 W21ALCPA DS CL1 CONTINUOUS PARITY INDICATOR 00001010 W21ALHSE DS CL6 LOW HOUSE NUMBER ON BLOCK 00001110 W21ALALT DS 0CL10 ALTERNATE KEY 00001210 W21ALBOR DS CL1 ALTERNATE KEY - BORO 00001310 W21ALTXB DS CL5 ALTERNATE KEY - TAX BLOCK 00001410 W21ALTXL DS CL4 ALTERNATE KEY - TAX LOT 00001510 DS CL1 FILLER 00001610 W21ALRSC DS CL1 RPAD SCC 00001710 DS CL1 FILLER 00001810 W21ALGLI DS 0CL11 GENERAL LOT INFO 00001910 W21ALRBL DS CL2 RPAD BUILDING CLASSIFICATION 00002010 W21ALCOR DS CL2 CORNER CODE 00002110 W21AL#ST DS CL2 TOTAL NUMBER STRUCTURES 00002210 W21AL#BF DS CL2 TOTAL NUMBER BLOCKFACES 00002310 W21ALINT DS CL1 INTERIOR LOT FLAG 00002410 W21ALVAC DS CL1 VACANT LOT FLAG 00002510 W21ALIRL DS CL1 IRREGULARLY-SHAPED LOT FLAG 00002610 W21ALMHR DS 0CL1 Marble Hill/Rikers Island Flag 00002710 W21ALABF DS CL1 ALTERNATE BORO FLAG 00002810 DS CL1 STROLLING FLAG (W21ALSTRF) 00002910 W21ALSTR DS CL13 STROLLING KEY 00003010 DS CL1 FILLER 00003110 W21ALRFI DS CL1 RESERVED FOR INTERNAL USE 00003210 W21ALNGB DS CL7 BUILDING IDENTIFICATION NUMBER (BIN) 00003310 W21ALCON DS CL1 CONDO LOT FLAG 00003410 W21ALRCO DS CL4 RPAD CONDO NUMBER 00003510 W21ALCLB DS CL10 CONDO LOW BBL 00003610 DS CL1 FILLER 00003710 W21ALCBB DS CL10 CONDO BILLING BBL 00003810 DS CL1 FILLER 00003910 W21ALCBS DS CL1 CONDO BILLING BBL SCC 00004010 W21ALCHB DS CL10 CONDO HIGH BBL 00004110 DS CL1 FILLER 00004210 W21ALSBV DS CL8 SANDBORN BOROUGH/VOLUME/PAGE 00004310 W21ALBUS DS CL5 BUSINESS AREA 00004410 W21ALCOO DS CL4 COOP ID NUMBER 00004510 DS CL4 00004613 W21ALNBS DS CL4 Actual Nbr of Bldgs on Lot 00004711 W21ALTMB DS CL1 TAX MAP BOROUGH 00004814 W21ALTAX DS CL4 Tax Map NBR - Section and Volume 00004913 DS CL4 RESERVED FOR TAX PAGE NUMBER 00005013 W21ALXCO DS CL7 X COORDINATE OF ANNOTATION POINT 00005115 W21ALYCO DS CL7 Y COORDINATE OF ANNOTATION POINT 00005215 W21ALBID DS CL6 Business Improvement District 00005316 DS CL2 FILLER 00005416 W21ALINU DS CL8 Internal Use Only 00005517 W21AL#BN DS CL4 TOTAL Number of BINS for Lot 00005610 W21ALLST DS 2500CL7 LIST OF BINS, MAXIMUM OF 2500 00005709 W21ALEND EQU * 00005802 W21ALLEN EQU W21ALEND-W2BAL1AL Length of W2BAL1AL 00006002 W2BAL3S COPY File \\*/********************************************************************/ 00000100 \\*/***** THIS IS GEOSUPPORT INFORMATION SYSTEM COPY FILE W2BAL3S, \\***/ 00000200 \\*/***** CONTAINING THE LAYOUT OF WORK AREA 2 FOR FUNCTION 3S. \\***/ 00000300 \\*/********************************************************************/ 00000400 W2BAL3S DS 0H 00000500 W23SAKEY DS CL21 ACCESS KEY 00000600 W23S#INT DS CL3 NUMBER OF INTERSECTIONS ON STRETCH 00000700 W23SINT DS 0CL12 INTERSECTION LAYOUT 00000800 W23SCDE1 DS PL4 NUMERICALLY SMALLEST PB5SC 00000900 W23SCDE2 DS PL4 NUMERICALLY 2ND SMALLEST PB5SC 00001000 W23SDIST DS PL3 DISTANCE IN FEET FROM PREVIOUS INTERSECT. 00001100 W23SGAPF DS CL1 GAP FLAG (\"G\" IF NO SEGMENT CONNECTS THIS 00001200 \\* INTERSECTION TO THE PREVIOUS ONE) 00001300 \\* 00001400 \\* THE MAXIMUM NUMBER OF INTERSECTIONS IS 350. THE LAYOUT OF EACH 00001500 \\* INTERSECTION IS IDENTICAL TO THE 12 BYTES DEFINED BY \"W23SINT\". 00001600 \\* RATHER THAN DEFINE 349 MORE INTERSECTIONS, WE ALLOCATE THE STORAGE 00001700 \\* NECESSSARY SHOULD THE MAXIMUM NUMBER OF INTERSECTIONS BY FOUND. 00001800 \\* ALL INTERSECTIONS BUT THE FIRST ONE MUST BE REFERENCED BY 00001900 \\* DISPLACEMENT. 00002000 \\* 00002100 W23SREST DS CL4188 REMAINING INTERSECTIONS 00002200 W23SEND EQU * 00002300 W23SLEN EQU W23SEND-W2BAL3S LENGTH OF W2BAL3S 00002400 PL/1 COPY Files (MSW) W1PL1 COPY File /******************************************************************/ 00000100 /*** THIS IS GEOSUPPORT SYSTEM COPY FILE W1PL1, CONTAINING THE \\***/ 00000200 /\\*** LAYOUT OF WORK AREA 1. COPYLIB2 04/07/98 \\***/ 00000300 /\\******************************************************************/ 00000400 DCL PW1 POINTER; 00000500 DCL 00000600 1 W1PL1, 00000700 /*******************************************************/ 00000802 /***** INPUT FIELDS *****/ 00000902 /*******************************************************/ 00001002 2 GEO_WA1_IN_FUNCTION_CODE, 00001100 3 GEO_WA1_IN_FUNCTION_1 CHAR(1), 00001200 3 GEO_WA1_IN_FUNCTION_2 CHAR(1), 00001300 2 GEO_WA1_IN_BORO CHAR(1), 00001400 2 GEO_WA1_IN_HOUSENUM CHAR(12),/\\*HIGH HSE# INPUT*/ 00001500 2 GEO_WA1_IN_HOUSENUM_INTERNAL CHAR(6), /\\*IF FUNCTION 5 \\*/ 00001600 2 GEO_WA1_IN_STREET_1 CHAR(32), 00001700 2 GEO_WA1_IN_STREET_2 CHAR(32), 00001800 2 GEO_WA1_IN_STREET_3 CHAR(32), 00001900 2 GEO_WA1_IN_COMPASS CHAR(01), 00002008 2 GEO_WA1_IN_COMPASS2 CHAR(01), 00002110 2 GEO_WA1_IN_STREETCODE_1 FIXED DEC(6), 00002200 2 GEO_WA1_IN_STREETCODE_2 FIXED DEC(6), 00002300 2 GEO_WA1_IN_STREETCODE_3 FIXED DEC(6), 00002400 2 GEO_WA1_IN_ROADBED_REQ_SWITCH CHAR(1), 00002514 2 GEO_WA1_IN_BORO_2 CHAR(1), 00002600 2 GEO_WA1_IN_BORO_3 CHAR(1), 00002700 2 GEO_WA1_IN_SNL CHAR(2), 00002800 2 GEO_WA1_IN_10SC_1 CHAR(11), 00002900 2 GEO_WA1_IN_10SC_2 CHAR(11), 00003000 2 GEO_WA1_IN_10SC_3 CHAR(11), 00003100 2 GEO_WA1_IN_ZIPIN CHAR(5), 00003215 2 GEO_WA1_IN_BBL, 00003300 3 GEO_WA1_IN_BL_BORO CHAR(1), 00003400 3 GEO_WA1_IN_BLOCKNUM CHAR(5), 00003500 3 GEO_WA1_IN_LOTNUM CHAR(4), 00003600 2 FILLER_W1_010 CHAR(1), 00003700 2 GEO_WA1_IN_BIN CHAR(7), 00003802 /************************************************************/ 00003903 /*******------ USAGE NOTES FOR SELECTED FIELDS -------*******/ 00004004 /************************************************************/ 00004103 /** GEO_WA1_IN_COMPACT_NAME_FLAG: SET TO \"C\" TO REQUEST \\**/ 00004203 /** COMPACT NAMES OPTION. \\**/ 00004303 /** GEO_WA1_IN_LONG_WORKAREA2_FLAG: SET TO \"L\" TO REQUEST \\**/ 00004403 /** THE LONG WORKAREA 2. AT PRESENT, ONLY FUNCTIONS \\**/ 00004503 /** 1A AND 3 HAVE THE LONG WA2 OPTION. \\**/ 00004603 /** GEO_WA1_IN_NON_IBM_MAIN_FRAME: SET TO \"X\" IF \\**/ 00004703 /** APPLICATION IS RUNNING ON A NON-IBM MAIN FRAME. \\**/ 00004803 /** GEO_WA1_IN_1ABL_VERSION: SET TO \"L\" OR \" \" TO REQUEST \\**/ 00004903 /** THE LEGACY WORKAREA2 FORMAT FOR FUNCTION 1A OR BL. \\**/ 00005003 /** GEO_WA1_IN_1ABL_VERSION: SET TO \"S\" TO REQUEST THE \\**/ 00005103 /** STANDARD WORKAREA2 FORMAT FOR FUNCTION 1A OR BL. \\**/ 00005203 /************************************************************/ 00005903 2 GEO_WA1_IN_COMPACT_NAME_FLAG CHAR(1), 00006000 2 GEO_WA1_IN_LONG_WORKAREA2_FLAG CHAR(1), 00006100 2 GEO_WA1_IN_LOW_HOUSENUM CHAR(12), 00006200 2 GEO_WA1_IN_LOW_HSENUM_INTERNAL CHAR(6), 00006300 2 GEO_WA1_IN_NON_IBM_MAIN_FRAME CHAR(1), 00006400 2 GEO_WA1_IN_1ABL_VERSION CHAR(1), 00006500 2 GEO_WA1_IN_XSTREET_FLAG CHAR(1), 00006610 2 FILLER_W1_100 CHAR(04), 00006809 /*******************************************************/ 00006902 /***** OUTPUT FIELDS *****/ 00007002 /*******************************************************/ 00007102 2 GEO_WA1_OUT_LOW_HOUSENUM CHAR(12), 00007209 2 GEO_WA1_OUT_BORONAME CHAR(9), 00007300 2 GEO_WA1_OUT_STREET_1 CHAR(32), 00007400 2 GEO_WA1_OUT_STREET_2 CHAR(32), 00007500 2 GEO_WA1_OUT_STREET_3 CHAR(32), 00007600 2 GEO_WA1_OUT_HOUSENUM CHAR(12), /\\*HI-HND*/ 00007709 2 GEO_WA1_OUT_HOUSENUM_INTERNAL CHAR(6), 00007800 2 FILLER_W1_200 CHAR(7), 00007900 2 GEO_WA1_OUT_PB5SC_1 FIXED DEC(6), 00008006 2 FILLER_W1_210 CHAR(2), 00008300 2 GEO_WA1_OUT_PB5SC_2 FIXED DEC(6), 00008406 2 FILLER_W1_220 CHAR(2), 00008800 2 GEO_WA1_OUT_PB5SC_3 FIXED DEC(6), 00008906 2 GEO_WA1_OUT_STREET_ATTR(3) CHAR(1), 00009312 2 GEO_WA1_BROWSE CHAR(40), 00009400 2 GEO_WA1_OUT_10SC_1 CHAR(11), 00009500 2 GEO_WA1_OUT_10SC_2 CHAR(11), 00009600 2 GEO_WA1_OUT_10SC_3 CHAR(11), 00009700 2 GEO_WA1_OUT_CUI CHAR(5), /\\*NOT IMPLEMENTED*/ 00009800 2 GEO_WA1_OUT_BBL, 00009900 3 GEO_WA1_OUT_BL_BORO CHAR(1), 00010000 3 GEO_WA1_OUT_BLOCKNUM CHAR(5), 00010100 3 GEO_WA1_OUT_LOTNUM CHAR(4), 00010200 2 FILLER_W1_240 CHAR(1), 00010300 2 GEO_WA1_OUT_BIN CHAR(7), 00010411 2 GEO_WA1_OUT_SND_ATTR CHAR(1), /\\*DCP/GSS USE*/ 00010705 2 GEO_WA1_OUT_REASON_CODE CHAR(1), 00010800 2 FILLER_W1_400 CHAR(2), 00010900 2 GEO_WA1_OUT_RETURN_CODE, 00011007 3 GEO_WA1_OUT_RC_1 CHAR(1), 00011107 3 GEO_WA1_OUT_RC_2 CHAR(1), 00011207 2 GEO_WA1_OUT_ERROR_MESSAGE CHAR(80), 00011400 2 GEO_WA1_OUT_NUM_SIMILAR_NAMES FIXED DEC(3), 00011500 2 GEO_WA1_OUT_SIMILAR_NAMES(10) CHAR(32); 00011600 00011702 /**************************************************************/ 00011801 00011902 DCL 1 GEO_WA1_OUT_PB_5SC_1 00012006 BASED (ADDR(GEO_WA1_OUT_PB5SC_1)), 00012106 3 GEO_WA1_OUT_PACKBORO_NOSIGN_1 CHAR(1), 00012206 3 GEO_WA1_OUT_STREETCODE_1_KEY FIXED DEC(5), 00012306 1 GEO_WA1_OUT_PB_5SC_2 00012406 BASED (ADDR(GEO_WA1_OUT_PB5SC_2)), 00012506 3 GEO_WA1_OUT_PACKBORO_NOSIGN_2 CHAR(1), 00012606 3 GEO_WA1_OUT_STREETCODE_2_KEY FIXED DEC(5), 00012706 1 GEO_WA1_OUT_PB_5SC_3 00012806 BASED (ADDR(GEO_WA1_OUT_PB5SC_3)), 00012906 3 GEO_WA1_OUT_PACKBORO_NOSIGN_3 CHAR(1), 00013006 3 GEO_WA1_OUT_STREETCODE_3_KEY FIXED DEC(5); 00013106 00013202 /**************************************************************/ 00013301 00013402 DCL GEO_WA1_OUT_GRC CHAR(02) 00013507 BASED(ADDR(GEO_WA1_OUT_RETURN_CODE)); 00013607 00013902 /**************************************************************/ 00014001 00014102 DCL 1 WORK1PL1 BASED(PW1) CHAR(884); 00014201 00014302 /**************************************************************/ 00014401 00014502 PW1=ADDR(W1PL1); 00015000 W2PL1 COPY File /******************************************************************/ 00000100 /*** THIS IS GEOSUPPORT SYSTEM COPY FILE W2PL1, CONTAINING THE \\***/ 00000300 /*** LAYOUT OF WORK AREA 2 FOR FUNCTIONS: 1, 1E, 2, 2C, 3, 3C, \\***/ 00000400 /*** 5. PLEASE NOTE THAT FUNCTIONS 2 AND 2C SHARE A SINGLE \\***/ 00000500 /*** WORK AREA 2 LAYOUT. 12/30/97 \\***/ 00000600 /*** LAST UPDATED JANUARY 2012 \\***/ 00000749 /******************************************************************/ 00000800 DCL PW2 POINTER; 00000900 00001001 DCL 1 W2PL1 CHAR(200) INIT(' '); 00001101 00001201 DCL 00001300 1 GEO_WA2_FUNCTION1 BASED(PW2), 00001400 2 GEO_WA2_FN1_ACCESS_KEY CHAR(21), 00001500 2 GEO_WA2_FN1_CONT_PARITY CHAR(1), 00001600 2 GEO_WA2_FN1_LOW_HOUSENUM_INT CHAR(6), 00001700 2 GEO_WA2_FN1_HI_HOUSENUM_INT CHAR(6), 00001800 2 GEO_WA2_FN1_ALX CHAR(1), 00001931 2 GEO_WA2_FN1_NUM_X_ST_LOW_END CHAR(1), 00002000 2 GEO_WA2_FN1_LOW_PBSC(5) FIXED DEC(7), 00002100 2 GEO_WA2_FN1_NUM_X_ST_HI_END CHAR(1), 00002200 2 GEO_WA2_FN1_HI_PBSC(5) FIXED DEC(7), 00002300 2 GEO_WA2_FN1_COMMUN_DIST, 00002400 3 GEO_WA2_FN1_COMDIST_BORO CHAR(1), 00002500 3 GEO_WA2_FN1_COMDIST_NUMBER CHAR(2), 00002600 2 GEO_WA2_FN1_ZIP CHAR(5), 00002700 2 GEO_WA2_FN1_SLA CHAR(1), 00002800 2 GEO_WA2_FN1_HCD CHAR(2), 00002951 2 GEO_WA2_FN1_SOS CHAR(1), 00003150 2 GEO_WA2_FN1_CONT_PARITY_IND CHAR(1), 00003250 2 GEO_WA2_FN1_2010_CENSUS_TRACT CHAR(6), 00003350 2 GEO_WA2_FN1_2010_CENSUS_BLOCK CHAR(4), 00003450 2 GEO_WA2_FN1_2010_CENSUS_BLK_SF CHAR(1), /\\*NOT IMPLEMENTED*/00003550 2 GEO_WA2_FN1_FILLER_INDV CHAR(1), 00003650 2 FILLER_W2_260 CHAR(2), 00003750 2 GEO_WA2_FN1_HEALTHAREA CHAR(4), 00003851 2 GEO_WA2_FN1_SANI_REC CHAR(3), 00003950 2 GEO_WA2_FN1_FEATURE_TYPE CHAR(1), 00004050 2 GEO_WA2_FN1_RESDCP /\\*RESERVED FOR*/ CHAR(1), /\\*DCP/GSS USE*/ 00004150 2 GEO_WA2_FN1_CURVE_FLAG CHAR(1), 00004250 2 GEO_WA2_FN1_POLICE_DIST, 00004350 3 GEO_WA2_FN1_POL_PAT_B_CMD CHAR(1), 00004450 3 GEO_WA2_FN1_POL_PRECINCT CHAR(3), 00004550 2 GEO_WA2_FN1_SCHOOLDIST CHAR(2), 00004650 2 FILLER_W2_250 CHAR(14), /\\*1E POL DIST*/ 00004750 2 GEO_WA2_FN1_COINCIDENT_SEG_CTR CHAR(1), 00004850 2 GEO_WA2_FN1_SEGMENT_TYPE CHAR(1), 00004950 2 GEO_WA2_FN1_SANI_DIST, 00005050 3 GEO_WA2_FN1_SANIDIST_BORO CHAR(1), 00005150 3 GEO_WA2_FN1_SANIDIST_NUMBER CHAR(2), 00005250 2 GEO_WA2_FN1_SANITATION_SUBSEC CHAR(2), 00005350 2 GEO_WA2_FN1_FIRESEC /\\*FIRE DIV*/ CHAR(2), 00005450 2 GEO_WA2_FN1_FIREBAT CHAR(2), 00005550 2 GEO_WA2_FN1_FIRECO, 00005650 3 GEO_WA2_FN1_FIRECO_TYPE CHAR(1), 00005750 3 GEO_WA2_FN1_FIRECO_NUM CHAR(3), 00005850 2 GEO_WA2_FN1_SPECIAL_ADDR_FLAG CHAR(1), 00005950 2 GEO_WA2_FN1_MARBLE_RIKERS_FLAG CHAR(1), 00006050 2 GEO_WA2_FN1_SPLIT_SCHOOL_FILL CHAR(1), 00006150 2 GEO_WA2_FN1_PREFERRED_LGC CHAR(2), 00006250 2 GEO_WA2_FN1_LIONFACECODE CHAR(4), 00006350 2 GEO_WA2_FN1_LIONSEQ CHAR(5), 00006450 2 GEO_WA2_FN1_1990_CENSUSTRACT CHAR(6), 00006550 2 FILLER_W2_260B CHAR(4), 00006650 2 GEO_WA2_FN1_DYN_BLOCK CHAR(3), /\\*ATOMIC POLYGON*/ 00006750 2 GEO_WA2_FN1_XCOORD CHAR(7), 00006850 2 GEO_WA2_FN1_YCOORD CHAR(7), 00006950 2 GEO_WA2_FN1_SEGMENTLENGTH CHAR(5), 00007050 2 GEO_WA2_FN1_SANI_REG CHAR(5); 00007150 00007250 /********************************************************************/ 00007350 00007450 DCL 1 GEO_WA2_FN1_LOW_HOUSE_NUM 00007550 BASED(ADDR(GEO_WA2_FN1_LOW_HOUSENUM_INT)), 00007650 3 GEO_WA2_FN1_LOW_HOUSENUM CHAR(5), 00007750 3 GEO_WA2_FN1_LOW_HOUSENUMSFX CHAR(1); 00007850 00008001 DCL 1 GEO_WA2_FN1_HI_HOUSE_NUM 00008100 BASED(ADDR(GEO_WA2_FN1_HI_HOUSENUM_INT)), 00008200 3 GEO_WA2_FN1_HI_HOUSENUM CHAR(5), 00008300 3 GEO_WA2_FN1_HI_HOUSENUMSFX CHAR(1); 00008425 00008501 DCL 1 GEO_WA2_FN1_COMDIST CHAR(3) 00008600 BASED(ADDR(GEO_WA2_FN1_COMMUN_DIST)); 00008700 00008801 DCL 1 GEO_WA2_FN1_SANIDIST CHAR(3) 00008900 BASED(ADDR(GEO_WA2_FN1_SANI_DIST)); 00009000 00009101 DCL 1 GEO_WA2_FN1_POLICEDIST CHAR(4) 00009200 BASED(ADDR(GEO_WA2_FN1_POLICE_DIST)); 00009300 00009401 /********************************************************************/ 00009801 00009901 DCL 00010000 1 GEO_WA2_FUNCTION2 BASED(PW2), 00010100 2 GEO_WA2_FN2_ACCESS_KEY CHAR(21), 00010200 2 GEO_WA2_FN2_DUPINTERFLAG CHAR(1), 00010300 2 FILLER_W2_270 CHAR(9), 00010400 2 GEO_WA2_FN2_PREFERRED_LGC1 CHAR(2), 00010500 2 GEO_WA2_FN2_PREFERRED_LGC2 CHAR(2), 00010600 2 GEO_WA2_FN2_NUM_OF_INTERSECTS CHAR(1), 00010700 2 GEO_WA2_FN2_INTERSECT_PBSC(5) FIXED DEC(7), 00010800 2 GEO_WA2_FN2_COMPDIR CHAR(01), 00010906 2 GEO_WA2_FN2_LEVEL_CODES(5,2) CHAR(01), 00011020 2 GEO_WA2_FN2_FILLER_INDV CHAR(02), 00011134 2 GEO_WA2_FN2_FIRESEC /\\*FIRE DIV*/ CHAR(2), 00011200 2 GEO_WA2_FN2_FIREBAT CHAR(2), 00011300 2 GEO_WA2_FN2_FIRECO, 00011400 3 GEO_WA2_FN2_FIRECO_TYPE CHAR(1), 00011500 3 GEO_WA2_FN2_FIRECO_NUM CHAR(3), 00011600 2 GEO_WA2_FN2_COMMUN_DIST, 00011700 3 GEO_WA2_FN2_COMDIST_BORO CHAR(1), 00011800 3 GEO_WA2_FN2_COMDIST_NUMBER CHAR(2), 00011900 2 GEO_WA2_FN2_ZIP CHAR(5), 00012000 2 GEO_WA2_FN2_SLA CHAR(1), 00012100 2 GEO_WA2_FN2_2010_CENSUS_TRACT CHAR(6), 00012241 2 FILLER_W2_290 CHAR(3), 00012300 2 GEO_WA2_FN2_HEALTHAREA CHAR(4), 00012451 2 FILLER_W2_300 CHAR(9), 00012504 2 GEO_WA2_FN2_LIONNODENUM CHAR(7), 00012605 2 GEO_WA2_FN2_XCOORD CHAR(7), 00013000 2 GEO_WA2_FN2_YCOORD CHAR(7), 00013100 2 FILLER_W2_320 CHAR(4), 00013300 2 GEO_WA2_FN2_POLICE_DIST, 00013400 3 GEO_WA2_FN2_POL_PAT_B_CMD CHAR(1), 00013500 3 GEO_WA2_FN2_POL_PRECINCT CHAR(3), 00013600 2 GEO_WA2_FN2_SCHOOLDIST CHAR(2), 00013700 2 GEO_WA2_FN2_MARBLE_RIKERS_FLAG CHAR(1), 00013800 2 GEO_WA2_FN2_1990_CENSUSTRACT CHAR(6), 00013900 2 GEO_WA2_FN2_SANBORN1_BORO CHAR(1), 00014000 2 GEO_WA2_FN2_SANBORN1_VOL_PAGE, 00014100 3 GEO_WA2_FN2_SANBORN1_VOL_NUM CHAR(3), 00014200 3 GEO_WA2_FN2_SANBORN1_PAGE_NUM CHAR(4), 00014300 2 GEO_WA2_FN2_SANBORN2_BORO CHAR(1), 00014400 2 GEO_WA2_FN2_SANBORN2_VOL_PAGE, 00014500 3 GEO_WA2_FN2_SANBORN2_VOL_NUM CHAR(3), 00014600 3 GEO_WA2_FN2_SANBORN2_PAGE_NUM CHAR(4), 00014700 2 GEO_WA2_FN2_DUP_INTRSCT_DISTNCE CHAR(5), 00014837 2 GEO_WA2_FN2_2000_CENS_TRACT CHAR(6), 00014944 2 FILLER_W2_330 CHAR(27); 00015038 00015101 /********************************************************************/ 00015201 00015301 DCL 1 GEO_WA2_FN2_COMDIST CHAR(3) 00015400 BASED(ADDR(GEO_WA2_FN2_COMMUN_DIST)); 00015500 00015601 DCL 1 GEO_WA2_FN2_POLICEDIST CHAR(4) 00015700 BASED(ADDR(GEO_WA2_FN2_POLICE_DIST)); 00015800 00015901 DCL 1 GEO_WA2_FN2_SANBORN1_BVOLPAGE CHAR(8) 00016000 BASED(ADDR(GEO_WA2_FN2_SANBORN1_BORO)), 00016100 1 GEO_WA2_FN2_SANBORN2_BVOLPAGE CHAR(8) 00016200 BASED(ADDR(GEO_WA2_FN2_SANBORN2_BORO)); 00016300 00016401 /********************************************************************/ 00016501 00016601 DCL 00016700 1 GEO_WA2_FUNCTION3 BASED(PW2), 00016800 2 GEO_WA2_FN3_ACCESS_KEY CHAR(21), 00016900 2 GEO_WA2_FN3_DUP_KEY_FLAG CHAR(1), 00017023 2 GEO_WA2_FN3_CURVE_FLAG CHAR(1), 00017108 2 GEO_WA2_FN3_LOCATION_STATUS CHAR(1), 00017216 2 GEO_WA2_FN3_COUNTY_BOUNDARY CHAR(1), 00017316 2 GEO_WA2_FN3_COINCIDENT_SEG_CTR CHAR(1), 00017432 2 FILLER_W2_340 CHAR(3), 00017532 2 GEO_WA2_FN3_PREFERRED_LGC1 CHAR(2), 00017632 2 GEO_WA2_FN3_PREFERRED_LGC2 CHAR(2), 00017732 2 GEO_WA2_FN3_PREFERRED_LGC3 CHAR(2), 00017832 2 GEO_WA2_FN3_NUM_X_ST_LOW_END CHAR(1), 00017932 2 GEO_WA2_FN3_LOW_PBSC(5) FIXED DEC(7), 00018032 2 GEO_WA2_FN3_NUM_X_ST_HI_END CHAR(1), 00018132 2 GEO_WA2_FN3_HI_PBSC(5) FIXED DEC(7), 00018232 2 GEO_WA2_FN3_SLA CHAR(1), 00018332 2 GEO_WA2_FN3_REVERSALFLAG CHAR(1), 00018432 2 GEO_WA2_FN3_LEFT_COMMUN_DIST, 00018532 3 GEO_WA2_FN3_LEFT_COMDIST_BORO CHAR(1), 00018632 3 GEO_WA2_FN3_LEFT_COMDIST_NUM CHAR(2), 00018732 2 GEO_WA2_FN3_RIGHT_COMMUN_DIST, 00018832 3 GEO_WA2_FN3_RIGHT_COMDIST_BORO CHAR(1), 00018932 3 GEO_WA2_FN3_RIGHT_COMDIST_NUM CHAR(2), 00019032 2 GEO_WA2_FN3_LEFT_ZIP CHAR(5), 00019132 2 GEO_WA2_FN3_RIGHT_ZIP CHAR(5), 00019232 2 FILLER_WA2_350A CHAR(18), 00019332 2 GEO_WA2_FN3_LEFT_HEALTHAREA CHAR(4), 00019451 2 GEO_WA2_FN3_RIGHT_HEALTHAREA CHAR(4), 00019551 2 GEO_WA2_FN3_LEFT_FILLER_INDV CHAR(2), 00019634 2 GEO_WA2_FN3_RIGHT_FILLER_INDV CHAR(2), 00019734 2 GEO_WA2_FN3_LEFT_LOW_HOUSENUM CHAR(7), 00019800 2 GEO_WA2_FN3_LEFT_HI_HOUSENUM CHAR(7), 00019900 2 GEO_WA2_FN3_RIGHT_LOW_HOUSENUM CHAR(7), 00020000 2 GEO_WA2_FN3_RIGHT_HI_HOUSENUM CHAR(7), 00020100 2 GEO_WA2_FN3_CONT_PARITY_IND CHAR(1), 00020200 2 GEO_WA2_FN3_LIONFACECODE CHAR(4), 00020300 2 GEO_WA2_FN3_LIONSEQ CHAR(5), 00020400 2 GEO_WA2_FN3_GENRECFLAG CHAR(1), 00020500 2 GEO_WA2_FN3_SEGMENTLENGTH FIXED DEC(5), 00020600 2 GEO_WA2_FN3_SEGMENTSLOPE CHAR(3), 00020700 2 GEO_WA2_FN3_SEGMENTORIENT CHAR(1), 00020800 2 FILLER_W2_355 CHAR(4), 00020900 2 GEO_WA2_FN3_RESDCP /\\*RESERVED FOR \\*/ CHAR(2), /\\*DCP/GSS USE*/ 00021000 2 GEO_WA2_FN3_DOG_LEG CHAR(1), 00021111 2 GEO_WA2_FN3_FEATURE_TYPE CHAR(1), 00021221 2 GEO_WA2_FN3_LEFT_POLICE_DIST, 00021300 3 GEO_WA2_FN3_LEFT_POL_PAT_B_CMD CHAR(1), 00021400 3 GEO_WA2_FN3_LEFT_POL_PRECINCT CHAR(3), 00021500 2 GEO_WA2_FN3_RIGHT_POLICE_DIST, 00021600 3 GEO_WA2_FN3_RIGHT_POL_PAT_B_CMD CHAR(1), 00021700 3 GEO_WA2_FN3_RIGHT_POL_PRECINCT CHAR(3), 00021800 2 GEO_WA2_FN3_LEFT_SCHLDIST CHAR(2), 00021900 2 GEO_WA2_FN3_RIGHT_SCHLDIST CHAR(2), 00022000 2 GEO_WA2_FN3_MARBLE_RIKERS_FLAG CHAR(1), 00022100 2 GEO_WA2_FN3_SEGMENT_ID CHAR(7), 00022211 2 GEO_WA2_FN3_SEGMENT_TYPE CHAR(1); 00022329 00022501 /********************************************************************/ 00022601 00022701 DCL 1 GEO_WA2_FN3_LEFT_COMDIST CHAR(3) 00022800 BASED(ADDR(GEO_WA2_FN3_LEFT_COMMUN_DIST)); 00022900 00023001 DCL 1 GEO_WA2_FN3_RIGHT_COMDIST CHAR(3) 00023100 BASED(ADDR(GEO_WA2_FN3_RIGHT_COMMUN_DIST)); 00023200 00023301 DCL 1 GEO_WA2_FN3_LEFT_POLICEDIST CHAR(4) 00023400 BASED(ADDR(GEO_WA2_FN3_LEFT_POLICE_DIST)); 00023500 00023601 DCL 1 GEO_WA2_FN3_RIGHT_POLICEDIST CHAR(4) 00023700 BASED(ADDR(GEO_WA2_FN3_RIGHT_POLICE_DIST)); 00023800 00023901 DCL 00024000 1 GEO_WA2_FUNCTION3C BASED(PW2), 00024100 2 GEO_WA2_FN3C_ACCESS_KEY CHAR(21), 00024200 2 GEO_WA2_FN3C_CURVE_FLAG CHAR(1), 00024308 2 GEO_WA2_FN3C_SEGMENT_TYPE CHAR(1), 00024430 2 GEO_WA2_FN3C_LOCATION_STATUS CHAR(1), 00024630 2 GEO_WA2_FN3C_COUNTY_BOUNDARY CHAR(1), 00024730 2 GEO_WA2_FN3C_COINCIDENT_SEG_CTR CHAR(1), 00024832 2 FILLER_W2_380 CHAR(3), 00024932 2 GEO_WA2_FN3C_PREFERRED_LGC1 CHAR(2), 00025032 2 GEO_WA2_FN3C_PREFERRED_LGC2 CHAR(2), 00025132 2 GEO_WA2_FN3C_PREFERRED_LGC3 CHAR(2), 00025232 2 GEO_WA2_FN3C_NUM_X_ST_LOW_END CHAR(1), 00025332 2 GEO_WA2_FN3C_LOW_PBSC(5) FIXED DEC(7), 00025432 2 GEO_WA2_FN3C_NUM_X_ST_HI_END CHAR(1), 00025532 2 GEO_WA2_FN3C_HI_PBSC(5) FIXED DEC(7), 00025632 2 GEO_WA2_FN3C_COMMUN_DIST, 00025732 3 GEO_WA2_FN3C_COMDIST_BORO CHAR(1), 00025832 3 GEO_WA2_FN3C_COMDIST_NUMBER CHAR(2), 00025932 2 GEO_WA2_FN3C_ZIP CHAR(5), 00026032 2 GEO_WA2_FN3C_SLA CHAR(1), 00026132 2 GEO_WA2_FN3C_2000_CENS_TRACT CHAR(6), 00026244 2 FILLER_W2_390 CHAR(1), 00026338 2 GEO_WA2_FN3C_2010_CENSUS_TRACT CHAR(6), 00026441 2 GEO_WA2_FN3C_2010_CENSUS_BLOCK CHAR(4), 00026541 2 GEO_WA2_FN3C_2010_CENSUS_BLK_SF CHAR(1), /\\*NOTIMPLEMENTED*/ 00026647 2 GEO_WA2_FN3C_HEALTHAREA CHAR(4), 00026751 2 GEO_WA2_FN3C_REVERSALFLAG CHAR(1), 00026835 2 GEO_WA2_FN3C_SOS CHAR(1), 00026935 2 GEO_WA2_FN3C_FIRESEC /\\*FIRE DIV*/ CHAR(2), 00027035 2 GEO_WA2_FN3C_FIREBAT CHAR(2), 00027135 2 GEO_WA2_FN3C_FIRECO, 00027235 3 GEO_WA2_FN3C_FIRECO_TYPE CHAR(1), 00027335 3 GEO_WA2_FN3C_FIRECO_NUM CHAR(3), 00027435 2 GEO_WA2_FN3C_SEGMENT_ID CHAR(7), 00027535 2 GEO_WA2_FN3C_LOW_HOUSENUM CHAR(7), 00027635 2 GEO_WA2_FN3C_HI_HOUSENUM CHAR(7), 00027735 2 GEO_WA2_FN3C_LOW_HOUSENUM2 CHAR(7), 00027835 2 GEO_WA2_FN3C_HI_HOUSENUM2 CHAR(7), 00027935 /* 2 HOUSENUM2 ONLY PRESENT IF ODD & EVEN RANGES ARE ON \\*/ 00028035 /* 2 SAME SIDE OF STREET \\*/ 00028135 2 GEO_WA2_FN3C_CONT_PARITY_IND CHAR(1), 00028235 2 GEO_WA2_FN3C_LIONFACECODE CHAR(4), 00028335 2 GEO_WA2_FN3C_LIONSEQ CHAR(5), 00028435 2 GEO_WA2_FN3C_GENRECFLAG CHAR(1), 00028535 2 GEO_WA2_FN3C_SEGMENTLENGTH FIXED DEC(5), 00028635 2 GEO_WA2_FN3C_SEGMENTSLOPE CHAR(3), 00028735 2 GEO_WA2_FN3C_SEGMENTORIENT CHAR(1), 00028835 2 GEO_WA2_FN3C_FILLER_INDV CHAR(2), 00028935 2 GEO_WA2_FN3C_RESDCP /\\*RESERVED FOR*/ CHAR(1), /\\*DCP/GSS USE*/ 00029035 2 GEO_WA2_FN3C_FEATURE_TYPE CHAR(1), 00029135 2 GEO_WA2_FN3C_POLICE_DIST, 00029235 3 GEO_WA2_FN3C_POL_PAT_B_CMD CHAR(1), 00029335 3 GEO_WA2_FN3C_POL_PRECINCT CHAR(3), 00029435 2 GEO_WA2_FN3C_SCHOOLDIST CHAR(2), 00029535 2 GEO_WA2_FN3C_MARBLE_RIKERS_FLAG CHAR(1), 00029635 2 GEO_WA2_FN3C_1990_CENSUSTRACT CHAR(6), 00029735 2 FILLER_W2_410B CHAR(4), 00029835 2 GEO_WA2_FN3C_DYN_BLOCK CHAR(3), /\\*ATOMIC POLYGON*/ 00029942 2 GEO_WA2_FN3C_2000_CENS_BLOCK CHAR(4), 00030044 2 GEO_WA2_FN3C_2000_CENS_BL_SFX CHAR(1); 00030144 00030335 /********************************************************************/ 00030435 00030535 DCL 1 GEO_WA2_FN3C_COMDIST CHAR(3) 00030635 BASED(ADDR(GEO_WA2_FN3C_COMMUN_DIST)); 00030735 DCL 1 GEO_WA2_FN3C_POLICEDIST CHAR(4) 00030835 BASED(ADDR(GEO_WA2_FN3C_POLICE_DIST)); 00030935 00031035 /********************************************************************/ 00031135 00031235 DCL 00031335 1 GEO_WA2_FUNCTION1E BASED(PW2), 00031435 2 GEO_WA2_FN1E_ACCESS_KEY CHAR(21), 00031535 2 GEO_WA2_FN1E_CONT_PARITY CHAR(1), 00031635 2 GEO_WA2_FN1E_LOW_HOUSENUM_INT CHAR(6), 00031735 2 GEO_WA2_FN1E_HI_HOUSENUM_INT CHAR(6), 00031835 2 FILLER_W2_435 CHAR(1), 00031935 2 GEO_WA2_FN1E_NUM_X_ST_LOW_END CHAR(1), 00032035 2 GEO_WA2_FN1E_LOW_PBSC(5) FIXED DEC(7), 00032135 2 GEO_WA2_FN1E_NUM_X_ST_HI_END CHAR(1), 00032235 2 GEO_WA2_FN1E_HI_PBSC(5) FIXED DEC(7), 00032335 2 GEO_WA2_FN1E_COMMUN_DIST, 00032435 3 GEO_WA2_FN1E_COMDIST_BORO CHAR(1), 00032535 3 GEO_WA2_FN1E_COMDIST_NUMBER CHAR(2), 00032635 2 GEO_WA2_FN1E_ZIP CHAR(5), 00032735 2 GEO_WA2_FN1E_SLA CHAR(1), 00032835 2 GEO_WA2_FN1E_HCD CHAR(2), 00032951 2 GEO_WA2_FN1E_SOS CHAR(1), 00033150 2 GEO_WA2_FN1E_CONT_PARITY_IND CHAR(1), 00033250 2 GEO_WA2_FN1E_2010_CENSUS_TRACT CHAR(6), 00033350 2 GEO_WA2_FN1E_2010_CENSUS_BLOCK CHAR(4), 00033450 2 GEO_WA2_FN1E_2010_CENSUS_BLK_SF CHAR(1), /\\*NOTIMPLEMENTED*/ 00033550 2 GEO_WA2_FN1E_FILLER_INDV CHAR(1), 00033650 2 FILLER_W2_440 CHAR(2), 00033750 2 GEO_WA2_FN1E_HEALTHAREA CHAR(4), 00033851 2 GEO_WA2_FN1E_SANI_REC CHAR(3), 00033950 2 GEO_WA2_FN1E_FEATURE_TYPE CHAR(1), 00034050 2 GEO_WA2_FN1E_RESDCP /\\*RESERVED FOR*/ CHAR(1), /\\*DCP/GSS USE*/ 00034150 2 GEO_WA2_FN1E_CURVE_FLAG CHAR(1), 00034250 2 GEO_WA2_FN1E_POLICE_DIST, 00034350 3 GEO_WA2_FN1E_POL_PAT_B_CMD CHAR(1), 00034450 3 GEO_WA2_FN1E_POL_PRECINCT CHAR(3), 00034550 2 GEO_WA2_FN1E_SCHOOLDIST CHAR(2), 00034650 2 GEO_WA2_FN1E_ELECTDIST CHAR(3), 00034750 2 GEO_WA2_FN1E_ASSEMDIST CHAR(2), 00034850 2 GEO_WA2_FN1E_SPLIT_ED_FLAG CHAR(1), 00034950 2 GEO_WA2_FN1E_CONGDIST CHAR(2), 00035050 2 GEO_WA2_FN1E_SENATEDIST CHAR(2), 00035150 2 GEO_WA2_FN1E_COURTDIST CHAR(2), 00035250 2 GEO_WA2_FN1E_COUNCILDIST CHAR(2), 00035350 2 GEO_WA2_FN1E_COINCIDENT_SEG_CTR CHAR(1), 00035450 2 GEO_WA2_FN1E_SEGMENT_TYPE_CODE CHAR(1), 00035550 2 GEO_WA2_FN1E_SANI_DIST, 00035650 3 GEO_WA2_FN1E_SANIDIST_BORO CHAR(1), 00035750 3 GEO_WA2_FN1E_SANIDIST_NUMBER CHAR(2), 00035850 2 GEO_WA2_FN1E_SANITATION_SUBSEC CHAR(2), 00035950 2 GEO_WA2_FN1E_FIRESEC /\\*FIRE DIV*/ CHAR(2), 00036050 2 GEO_WA2_FN1E_FIREBAT CHAR(2), 00036150 2 GEO_WA2_FN1E_FIRECO, 00036250 3 GEO_WA2_FN1E_FIRECO_TYPE CHAR(1), 00036350 3 GEO_WA2_FN1E_FIRECO_NUM CHAR(3), 00036450 2 GEO_WA2_FN1E_SPECIAL_ADDR__FLAG CHAR(1), 00036550 2 GEO_WA2_FN1E_MARBLE_RIKERS_FLAG CHAR(1), 00036650 2 GEO_WA2_FN1E_SPLIT_SCHOOL_FILL CHAR(1), 00036750 2 GEO_WA2_FN1E_PREFERRED_LGC CHAR(2), 00036850 2 GEO_WA2_FN1E_LIONFACECODE CHAR(4), 00036950 2 GEO_WA2_FN1E_LIONSEQ CHAR(5), 00037050 2 GEO_WA2_FN1E_1990_CENSUSTRACT CHAR(6), 00037150 2 FILLER_W2_480B CHAR(4), 00037250 2 GEO_WA2_FN1E_DYN_BLOCK CHAR(3), /\\*ATOMIC POLYGON*/ 00037350 2 GEO_WA2_FN1E_XCOORD CHAR(7), 00037450 2 GEO_WA2_FN1E_YCOORD CHAR(7), 00037550 2 GEO_WA2_FN1E_SEGMENTLENGTH CHAR(5), 00037650 2 GEO_WA2_FN1E_SANI_REG CHAR(5); 00037750 00037850 /********************************************************************/ 00037950 00038050 DCL 1 GEO_WA2_FN1E_LOW_HOUSE_NUM 00038150 BASED(ADDR(GEO_WA2_FN1E_LOW_HOUSENUM_INT)), 00038250 3 GEO_WA2_FN1E_LOW_HOUSENUM CHAR(5), 00038350 3 GEO_WA2_FN1E_LOW_HOUSENUMSFX CHAR(1); 00038450 00038550 DCL 1 GEO_WA2_FN1E_HI_HOUSE_NUM 00038650 BASED(ADDR(GEO_WA2_FN1E_HI_HOUSENUM_INT)), 00038750 3 GEO_WA2_FN1E_HI_HOUSENUM CHAR(5), 00038850 3 GEO_WA2_FN1E_HI_HOUSENUMSFX CHAR(1); 00038950 00039050 DCL 1 GEO_WA2_FN1E_COMDIST CHAR(3) 00039150 BASED(ADDR(GEO_WA2_FN1E_COMMUN_DIST)); 00039250 00039350 DCL 1 GEO_WA2_FN1E_SANIDIST CHAR(3) 00039450 BASED(ADDR(GEO_WA2_FN1E_SANI_DIST)); 00039550 00039650 DCL 1 GEO_WA2_FN1E_POLICEDIST CHAR(4) 00039750 BASED(ADDR(GEO_WA2_FN1E_POLICE_DIST)); 00039850 00039950 /********************************************************************/ 00040050 00040150 DCL 00040250 1 GEO_WA2_FUNCTION5 BASED(PW2), 00040350 2 GEO_WA2_FN5_ADDR_MATCHING_KEY CHAR(28), 00040450 2 FILLER_W2_210 CHAR(172); 00040550 00041000 /********************************************************************/ 00042001 00043001 PW2=ADDR(W2PL1); 00050000 W2PL1L COPY File /********************************************************************/ 00000100 /*** THIS IS GEOSUPPORT SYSTEM COPY FILE W2PL1L, CONTAINING \\***/ 00000200 /*** THE LAYOUT OF THE OPTIONAL LONG WORK AREA 2 FOR \\***/ 00000300 /*** FUNCTION 1,1E, & 3. THIS WORK AREA SHOULD BE USED ONLY WHEN \\***/ 00000400 /*** FUNCTION IS CALLED WITH THE \"LONG\" WORK AREA2 OPTION. \\***/ 00000500 /*** 07/23/2001 \\***/ 00000600 /*** LAST MODIFIED JANUARY 2012 \\***/ 00000739 /********************************************************************/ 00000824 DCL PW2L POINTER; 00000924 DCL 1 W2PL1L CHAR(300) INIT(' '); 00001024 DCL 00001124 1 GEO_WA2_1L_FUNCTION1 BASED(PW2L), 00001224 2 GEO_WA2_1L_ACCESS_KEY CHAR(21), 00001324 2 GEO_WA2_1L_CONT_PARITY CHAR(1), 00001424 2 GEO_WA2_1L_LOW_HOUSENUM_INT CHAR(6), 00001524 2 GEO_WA2_1L_HI_HOUSENUM_INT CHAR(6), 00001624 2 GEO_WA2_1L_ALX CHAR(1), 00001724 2 GEO_WA2_1L_NUM_X_ST_LOW_END CHAR(1), 00001824 2 GEO_WA2_1L_LOW_PBSC(5) FIXED DEC(7), 00001924 2 GEO_WA2_1L_NUM_X_ST_HI_END CHAR(1), 00002024 2 GEO_WA2_1L_HI_PBSC(5) FIXED DEC(7), 00002124 2 GEO_WA2_1L_COMMUN_DIST, 00002224 3 GEO_WA2_1L_COMDIST_BORO CHAR(1), 00002324 3 GEO_WA2_1L_COMDIST_NUMBER CHAR(2), 00002424 2 GEO_WA2_1L_ZIP CHAR(5), 00002524 2 GEO_WA2_1L_SLA CHAR(1), 00002624 2 GEO_WA2_1L_HCD CHAR(2), 00002740 2 GEO_WA2_1L_SOS CHAR(1), 00002939 2 GEO_WA2_1L_CONT_PARITY_IND CHAR(1), 00003039 2 GEO_WA2_1L_2010_CENSUS_TRACT CHAR(6), 00003139 2 GEO_WA2_1L_2010_CENSUS_BLOCK CHAR(4), 00003239 2 GEO_WA2_1L_2010_CENSUS_BLK_SF CHAR(1), /\\*NOTIMPLEMENTED*/ 00003339 2 GEO_WA2_1L_FILLER_INDV CHAR(1), 00003439 2 FILLER_W2_230 CHAR(2), 00003539 2 GEO_WA2_1L_HEALTHAREA CHAR(4), 00003640 2 GEO_WA2_1L_SANI_REC CHAR(3), 00003739 2 GEO_WA2_1L_FEATURE_TYPE CHAR(1), 00003839 2 GEO_WA2_1L_RESDCP /\\*RESERVED FOR*/ CHAR(1), /\\*DCP/GSS USE*/ 00003939 2 GEO_WA2_1L_CURVE_FLAG CHAR(1), 00004039 2 GEO_WA2_1L_POLICE_DIST, 00004139 3 GEO_WA2_1L_POL_PAT_B_CMD CHAR(1), 00004239 3 GEO_WA2_1L_POL_PRECINCT CHAR(3), 00004339 2 GEO_WA2_1L_SCHOOLDIST CHAR(2), 00004439 2 FILLER_W2_250 CHAR(14), /\\*1E POL DIST*/ 00004539 2 GEO_WA2_1L_COINCIDENT_SEG_CTR CHAR(1), 00004620 2 GEO_WA2_1L_SEGMENT_TYPE CHAR(1), 00004720 2 GEO_WA2_1L_SANI_DIST, 00004820 3 GEO_WA2_1L_SANIDIST_BORO CHAR(1), 00004920 3 GEO_WA2_1L_SANIDIST_NUMBER CHAR(2), 00005020 2 GEO_WA2_1L_SANITATION_SUBSEC CHAR(2), 00005120 2 GEO_WA2_1L_FIRESEC /\\*FIRE DIV*/ CHAR(2), 00005220 2 GEO_WA2_1L_FIREBAT CHAR(2), 00005320 2 GEO_WA2_1L_FIRECO, 00005420 3 GEO_WA2_1L_FIRECO_TYPE CHAR(1), 00005520 3 GEO_WA2_1L_FIRECO_NUM CHAR(3), 00005620 2 GEO_WA2_1L_SPECIAL_ADDR_FLAG CHAR(1), 00005720 2 GEO_WA2_1L_MARBLE_RIKERS_FLAG CHAR(1), 00005820 2 GEO_WA2_1L_SPLIT_SCHOOL_FILL CHAR(1), 00005938 2 GEO_WA2_1L_PREFERRED_LGC CHAR(2), 00006020 2 GEO_WA2_1L_LIONFACECODE CHAR(4), 00006120 2 GEO_WA2_1L_LIONSEQ CHAR(5), 00006220 2 GEO_WA2_1L_1990_CENSUSTRACT CHAR(6), 00006320 2 FILLER_W2_260B CHAR(4), 00006423 2 GEO_WA2_1L_DYN_BLOCK CHAR(3), /\\*ATOMIC POLYGON*/ 00006534 2 GEO_WA2_1L_XCOORD CHAR(7), 00006620 2 GEO_WA2_1L_YCOORD CHAR(7), 00006720 2 GEO_WA2_1L_SEGMENTLENGTH CHAR(5), 00006820 2 GEO_WA2_1L_SANI_REG CHAR(5), 00006920 2 GEO_WA2_1L_SEGMENT_ID CHAR(7), 00007020 2 GEO_WA2_1L_REAL_B7SC CHAR(08), 00007120 2 GEO_WA2_1L_UNDERLY_HOUSENUM_INT CHAR(6), 00007223 2 GEO_WA2_1L_2000_CENS_TRACT CHAR(6), 00007336 2 GEO_WA2_1L_2000_CENS_BLOCK CHAR(4), 00007436 2 GEO_WA2_1L_2000_CENS_BLK_SUF CHAR(1), 00007536 2 FILLER_W2_260C CHAR(68); 00007629 00007723 /********************************************************************/ 00007823 00007923 DCL 1 GEO_WA2_1L_LOW_HOUSE_NUM 00008023 BASED(ADDR(GEO_WA2_1L_LOW_HOUSENUM_INT)), 00008123 3 GEO_WA2_1L_LOW_HOUSENUM CHAR(5), 00008223 3 GEO_WA2_1L_LOW_HOUSENUMSFX CHAR(1); 00008323 00008423 DCL 1 GEO_WA2_1L_HI_HOUSE_NUM 00008523 BASED(ADDR(GEO_WA2_1L_HI_HOUSENUM_INT)), 00008623 3 GEO_WA2_1L_HI_HOUSENUM CHAR(5), 00008723 3 GEO_WA2_1L_HI_HOUSENUMSFX CHAR(1); 00008823 00008923 DCL 1 GEO_WA2_1L_UNDERLY_HOUSE_NUM 00009023 BASED(ADDR(GEO_WA2_1L_UNDERLY_HOUSENUM_INT)), 00009123 3 GEO_WA2_1L_UNDERLY_HOUSENUM CHAR(5), 00009223 3 GEO_WA2_1L_UNDERLY_HOUSENUMSFX CHAR(1); 00009323 00009423 DCL 1 GEO_WA2_1L_COMDIST CHAR(3) 00009523 BASED(ADDR(GEO_WA2_1L_COMMUN_DIST)); 00009623 00009723 DCL 1 GEO_WA2_1L_SANIDIST CHAR(3) 00009823 BASED(ADDR(GEO_WA2_1L_SANI_DIST)); 00009923 00010023 DCL 1 GEO_WA2_1L_POLICEDIST CHAR(4) 00010123 BASED(ADDR(GEO_WA2_1L_POLICE_DIST)); 00010223 00010323 /********************************************************************/ 00010423 00010523 DCL 00010623 1 GEO_WA2_1EL_FUNCTION1E BASED(PW2L), 00010723 2 GEO_WA2_1EL_ACCESS_KEY CHAR(21), 00010823 2 GEO_WA2_1EL_CONT_PARITY CHAR(1), 00010923 2 GEO_WA2_1EL_LOW_HOUSENUM_INT CHAR(6), 00011023 2 GEO_WA2_1EL_HI_HOUSENUM_INT CHAR(6), 00011123 2 GEO_WA2_1EL_ALX CHAR(1), 00011223 2 GEO_WA2_1EL_NUM_X_ST_LOW_END CHAR(1), 00011323 2 GEO_WA2_1EL_LOW_PBSC(5) FIXED DEC(7), 00011423 2 GEO_WA2_1EL_NUM_X_ST_HI_END CHAR(1), 00011523 2 GEO_WA2_1EL_HI_PBSC(5) FIXED DEC(7), 00011623 2 GEO_WA2_1EL_COMMUN_DIST, 00011723 3 GEO_WA2_1EL_COMDIST_BORO CHAR(1), 00011823 3 GEO_WA2_1EL_COMDIST_NUMBER CHAR(2), 00011923 2 GEO_WA2_1EL_ZIP CHAR(5), 00012023 2 GEO_WA2_1EL_SLA CHAR(1), 00012123 2 GEO_WA2_1EL_HCD CHAR(2), 00012240 2 GEO_WA2_1EL_SOS CHAR(1), 00012439 2 GEO_WA2_1EL_CONT_PARITY_IND CHAR(1), 00012539 2 GEO_WA2_1EL_2010_CENSUS_TRACT CHAR(6), 00012639 2 GEO_WA2_1EL_2010_CENSUS_BLOCK CHAR(4), 00012739 2 GEO_WA2_1EL_2010_CENSUS_BLK_SF CHAR(1), /\\*NOTIMPLEMENTED*/ 00012839 2 GEO_WA2_1EL_FILLER_INDV CHAR(1), 00012939 2 FILLER_W2_240 CHAR(2), 00013039 2 GEO_WA2_1EL_HEALTHAREA CHAR(4), 00013140 2 GEO_WA2_1EL_SANI_REC CHAR(3), 00013239 2 GEO_WA2_1EL_FEATURE_TYPE CHAR(1), 00013339 2 GEO_WA2_1EL_RESDCP /\\*RESERVED FOR*/ CHAR(1), /\\*DCP/GSS USE*/ 00013439 2 GEO_WA2_1EL_CURVE_FLAG CHAR(1), 00013539 2 GEO_WA2_1EL_POLICE_DIST, 00013639 3 GEO_WA2_1EL_POL_PAT_B_CMD CHAR(1), 00013739 3 GEO_WA2_1EL_POL_PRECINCT CHAR(3), 00013839 2 GEO_WA2_1EL_SCHOOLDIST CHAR(2), 00013939 2 GEO_WA2_1EL_ELECTDIST CHAR(3), 00014039 2 GEO_WA2_1EL_ASSEMDIST CHAR(2), 00014139 2 GEO_WA2_1EL_SPLIT_ED_FLAG CHAR(1), 00014239 2 GEO_WA2_1EL_CONGDIST CHAR(2), 00014339 2 GEO_WA2_1EL_SENATEDIST CHAR(2), 00014439 2 GEO_WA2_1EL_COURTDIST CHAR(2), 00014539 2 GEO_WA2_1EL_COUNCILDIST CHAR(2), 00014639 2 GEO_WA2_1EL_COINCIDENT_SEG_CTR CHAR(1), 00014739 2 GEO_WA2_1EL_SEGMENT_TYPE_CODE CHAR(1), 00014839 2 GEO_WA2_1EL_SANI_DIST, 00014939 3 GEO_WA2_1EL_SANIDIST_BORO CHAR(1), 00015039 3 GEO_WA2_1EL_SANIDIST_NUMBER CHAR(2), 00015139 2 GEO_WA2_1EL_SANITATION_SUBSEC CHAR(2), 00015239 2 GEO_WA2_1EL_FIRESEC /\\*FIRE DIV*/ CHAR(2), 00015339 2 GEO_WA2_1EL_FIREBAT CHAR(2), 00015439 2 GEO_WA2_1EL_FIRECO, 00015539 3 GEO_WA2_1EL_FIRECO_TYPE CHAR(1), 00015639 3 GEO_WA2_1EL_FIRECO_NUM CHAR(3), 00015739 2 GEO_WA2_1EL_SPECIAL_ADDR__FLAG CHAR(1), 00015839 2 GEO_WA2_1EL_MARBLE_RIKERS_FLAG CHAR(1), 00015939 2 GEO_WA2_1EL_SPLIT_SCHOOL_FILL CHAR(1), 00016039 2 GEO_WA2_1EL_PREFERRED_LGC CHAR(2), 00016139 2 GEO_WA2_1EL_LIONFACECODE CHAR(4), 00016239 2 GEO_WA2_1EL_LIONSEQ CHAR(5), 00016339 2 GEO_WA2_1EL_1990_CENSUSTRACT CHAR(6), 00016439 2 FILLER_W2_480B CHAR(4), 00016539 2 GEO_WA2_1EL_DYN_BLOCK CHAR(3), /\\*ATOMIC POLYGON*/ 00016639 2 GEO_WA2_1EL_XCOORD CHAR(7), 00016739 2 GEO_WA2_1EL_YCOORD CHAR(7), 00016839 2 GEO_WA2_1EL_SEGMENTLENGTH CHAR(5), 00016939 2 GEO_WA2_1EL_SANI_REG CHAR(5), 00017039 2 GEO_WA2_1EL_SEGMENT_ID CHAR(7), 00017139 2 GEO_WA2_1EL_TRUE_B7SC CHAR(8), 00017239 2 GEO_WA2_1EL_UNDER_HOUSENUM_INT CHAR(6), 00017339 2 GEO_WA2_1EL_2000_CENS_TRACT CHAR(6), 00017439 2 GEO_WA2_1EL_2000_CENS_BLOCK CHAR(4), 00017539 2 GEO_WA2_1EL_2000_CENS_BLK_SUF CHAR(1), 00017639 2 FILLER_W2_480 CHAR(68); 00017739 00017839 /********************************************************************/ 00017939 00018039 DCL 1 GEO_WA2_1EL_LOW_HOUSE_NUM 00018139 BASED(ADDR(GEO_WA2_1EL_LOW_HOUSENUM_INT)), 00018239 3 GEO_WA2_1EL_LOW_HOUSENUM CHAR(5), 00018339 3 GEO_WA2_1EL_LOW_HOUSENUMSFX CHAR(1); 00018439 00018539 DCL 1 GEO_WA2_1EL_HI_HOUSE_NUM 00018639 BASED(ADDR(GEO_WA2_1EL_HI_HOUSENUM_INT)), 00018739 3 GEO_WA2_1EL_HI_HOUSENUM CHAR(5), 00018839 3 GEO_WA2_1EL_HI_HOUSENUMSFX CHAR(1); 00018939 00019039 DCL 1 GEO_WA2_1EL_UNDER_HOUSE_NUM 00019139 BASED(ADDR(GEO_WA2_1EL_UNDER_HOUSENUM_INT)), 00019239 3 GEO_WA2_1EL_UNDER_HOUSENUM CHAR(5), 00019339 3 GEO_WA2_1EL_UNDER_HOUSENUMSFX CHAR(1); 00019439 00019539 DCL 1 GEO_WA2_1EL_COMDIST CHAR(3) 00019639 BASED(ADDR(GEO_WA2_1EL_COMMUN_DIST)); 00019739 00019839 DCL 1 GEO_WA2_1EL_SANIDIST CHAR(3) 00019939 BASED(ADDR(GEO_WA2_1EL_SANI_DIST)); 00020039 00020139 DCL 1 GEO_WA2_1EL_POLICEDIST CHAR(4) 00020239 BASED(ADDR(GEO_WA2_1EL_POLICE_DIST)); 00020339 00020439 /********************************************************************/ 00020539 00020639 DCL 00020739 1 GEO_WA2_FUNCTION3L BASED(PW2L), 00020839 2 GEO_WA2_3L_ACCESS_KEY CHAR(21), 00020939 2 GEO_WA2_3L_DUP_KEY_FLAG CHAR(1), 00021039 2 GEO_WA2_3L_CURVE_FLAG CHAR(1), 00021139 2 GEO_WA2_3L_LOCATION_STATUS CHAR(1), 00021239 2 GEO_WA2_3L_COUNTY_BOUNDARY CHAR(1), 00021339 2 GEO_WA2_3L_COINCIDENT_SEG_CTR CHAR(1), 00021439 2 FILLER_W340 CHAR(3), 00021539 2 GEO_WA2_3L_PREFERRED_LGC1 CHAR(2), 00021639 2 GEO_WA2_3L_PREFERRED_LGC2 CHAR(2), 00021739 2 GEO_WA2_3L_PREFERRED_LGC3 CHAR(2), 00021839 2 GEO_WA2_3L_NUM_X_ST_LOW_END CHAR(1), 00021939 2 GEO_WA2_3L_LOW_PBSC(5) FIXED DEC(7), 00022039 2 GEO_WA2_3L_NUM_X_ST_HI_END CHAR(1), 00022139 2 GEO_WA2_3L_HI_PBSC(5) FIXED DEC(7), 00022239 2 GEO_WA2_3L_SLA CHAR(1), 00022339 2 GEO_WA2_3L_REVERSALFLAG CHAR(1), 00022439 2 GEO_WA2_3L_LEFT_COMMUN_DIST, 00022539 3 GEO_WA2_3L_LEFT_COMDIST_BORO CHAR(1), 00022639 3 GEO_WA2_3L_LEFT_COMDIST_NUMBER CHAR(2), 00022739 2 GEO_WA2_3L_RIGHT_COMMUN_DIST, 00022839 3 GEO_WA2_3L_RIGHT_COMDIST_BORO CHAR(1), 00022939 3 GEO_WA2_3L_RIGHT_COMDIST_NUMBER CHAR(2), 00023039 2 GEO_WA2_3L_LEFT_ZIP CHAR(5), 00023139 2 GEO_WA2_3L_RIGHT_ZIP CHAR(5), 00023239 2 FILLER_W340B CHAR(18), 00023339 2 GEO_WA2_3L_LEFT_HEALTHAREA CHAR(4), 00023440 2 GEO_WA2_3L_RIGHT_HEALTHAREA CHAR(4), 00023540 2 GEO_WA2_3L_LEFT_FILLER_INDV CHAR(2), 00023639 2 GEO_WA2_3L_RIGHT_FILLER_INDV CHAR(2), 00023739 2 GEO_WA2_3L_LEFT_LOW_HOUSENUM CHAR(7), 00023839 2 GEO_WA2_3L_LEFT_HI_HOUSENUM CHAR(7), 00023939 2 GEO_WA2_3L_RIGHT_LOW_HOUSENUM CHAR(7), 00024039 2 GEO_WA2_3L_RIGHT_HI_HOUSENUM CHAR(7), 00024139 2 GEO_WA2_3L_CONT_PARITY_IND CHAR(1), 00024239 2 GEO_WA2_3L_LIONFACECODE CHAR(4), 00024339 2 GEO_WA2_3L_LIONSEQ CHAR(5), 00024439 2 GEO_WA2_3L_GENRECFLAG CHAR(1), 00024539 2 GEO_WA2_3L_SEGMENTLENGTH FIXED DEC(5), 00024639 2 GEO_WA2_3L_SEGMENTSLOPE CHAR(3), 00024739 2 GEO_WA2_3L_SEGMENTORIENT CHAR(1), 00024839 2 FILLER_W355 CHAR(4), 00024939 2 GEO_WA2_3L_RESDCP CHAR(2), 00025039 2 GEO_WA2_3L_DOG_LEG CHAR(1), 00025139 2 GEO_WA2_3L_FEATURE_TYPE CHAR(1), 00025239 2 GEO_WA2_3L_LEFT_POLICE_DIST, 00025339 3 GEO_WA2_3L_LEFT_POL_PAT_B_CMD CHAR(1), 00025439 3 GEO_WA2_3L_LEFT_POL_PRECINCT CHAR(3), 00025539 2 GEO_WA2_3L_RIGHT_POLICE_DIST, 00025639 3 GEO_WA2_3L_RIGHT_POL_PAT_B_CMD CHAR(1), 00025739 3 GEO_WA2_3L_RIGHT_POL_PRECINCT CHAR(3), 00025839 2 GEO_WA2_3L_LEFT_SCHLDIST CHAR(2), 00025939 2 GEO_WA2_3L_RIGHT_SCHLDIST CHAR(2), 00026039 2 GEO_WA2_3L_MARBLE_RIKERS_FLAG CHAR(1), 00026139 2 GEO_WA2_3L_SEGMENT_ID CHAR(7), 00026239 2 GEO_WA2_3L_SEGMENT_TYPE CHAR(1), 00026339 /*************************************************************/ 00026439 /** THE PORTION OF THIS WORK AREA ABOVE THIS POINT IS \\**/ 00026539 /** IDENTICAL TO THE STANDARD WORK AREA 2 FOR FUNCTION 3. \\**/ 00026639 /** THE PORTION BELOW THIS POINT IS PRESENT ONLY FOR THE \\**/ 00026739 /** LONG WORK AREA 2 OPTION. \\**/ 00026839 /*************************************************************/ 00026939 2 GEO_WA2_3L_L_1990_CENSUSTRACT CHAR(6), 00027039 2 FILLER_W370B CHAR(4), 00027139 2 GEO_WA2_L_3L_DYN_BLOCK CHAR(3),/\\*ATOMIC POLYGON*/ 00027239 2 GEO_WA2_3L_R_1990_CENSUSTRACT CHAR(6), 00027339 2 FILLER_W370C CHAR(4), 00027439 2 GEO_WA2_R_3L_DYN_BLOCK CHAR(3),/\\*ATOMIC POLYGON*/ 00027539 2 GEO_WA2_3L_LEFT_FIRESEC CHAR(2),/\\*FIRE DIV*/ 00027639 2 GEO_WA2_3L_LEFT_FIREBAT CHAR(2), 00027739 2 GEO_WA2_3L_LEFT_FIRECO, 00027839 3 GEO_WA2_3L_LEFT_FIRECO_TYPE CHAR(1), 00027939 3 GEO_WA2_3L_LEFT_FIRECO_NUM CHAR(3), 00028039 2 GEO_WA2_3L_RIGHT_FIRESEC CHAR(2),/\\*FIRE DIV*/ 00028139 2 GEO_WA2_3L_RIGHT_FIREBAT CHAR(2), 00028239 2 GEO_WA2_3L_RIGHT_FIRECO, 00028339 3 GEO_WA2_3L_RIGHT_FIRECO_TYPE CHAR(1), 00028439 3 GEO_WA2_3L_RIGHT_FIRECO_NUM CHAR(3), 00028539 2 GEO_WA2_3L_L_2010_CENSUS_TRACT CHAR(6), 00028639 2 GEO_WA2_3L_L_2010_CENSUS_BLOCK CHAR(4), 00028739 2 GEO_WA2_3L_L_2010_CENSUS_BLK_SF CHAR(1), /\\*NOTIMPLEMENTED*/ 00028839 2 GEO_WA2_3L_R_2010_CENSUS_TRACT CHAR(6), 00028939 2 GEO_WA2_3L_R_2010_CENSUS_BLOCK CHAR(4), 00029039 2 GEO_WA2_3L_R_2010_CENSUS_BLK_SF CHAR(1), /\\*NOTIMPLEMENTED*/ 00029139 2 GEO_WA2_3L_FROM_NODE CHAR(7), 00029239 2 GEO_WA2_3L_TO_NODE CHAR(7), 00029339 2 GEO_WA2_3L_L_2000_CENS_TRACT CHAR(6), 00029439 2 GEO_WA2_3L_L_2000_CENS_BLOCK CHAR(4), 00029539 2 GEO_WA2_3L_L_2000_CENS_BL_SUF CHAR(1), 00029639 2 GEO_WA2_3L_R_2000_CENS_TRACT CHAR(6), 00029739 2 GEO_WA2_3L_R_2000_CENS_BLOCK CHAR(4), 00029839 2 GEO_WA2_3L_R_2000_CENS_BL_SUF CHAR(1); 00029939 DCL 1 GEO_WA2_3L_LEFT_COMDIST CHAR(3) 00030025 BASED(ADDR(GEO_WA2_3L_LEFT_COMMUN_DIST)); 00030125 DCL 1 GEO_WA2_3L_RIGHT_COMDIST CHAR(3) 00030225 BASED(ADDR(GEO_WA2_3L_RIGHT_COMMUN_DIST)); 00030325 DCL 1 GEO_WA2_3L_LEFT_POLICEDIST CHAR(4) 00030425 BASED(ADDR(GEO_WA2_3L_LEFT_POLICE_DIST)); 00030525 DCL 1 GEO_WA2_3L_RIGHT_POLICEDIST CHAR(4) 00030625 BASED(ADDR(GEO_WA2_3L_RIGHT_POLICE_DIST)); 00030725 PW2L=ADDR(W2PL1L); 00030825 00031025 /********************************************************************/ 00040012 W2PL11A COPY File /********************************************************************/ 00000100 /*** THIS IS GEOSUPPORT SYSTEM COPY FILE W2PL11A, CONTAINING THE \\***/ 00000200 /*** LAYOUT OF WORK AREA 2 FOR FUNCTIONS 1A AND BL WHICH SHARE \\***/ 00000300 /*** A SINGLE WORK AREA 2 LAYOUT. 11/28/00 \\***/ 00000403 /********************************************************************/ 00000500 00000600 /* STANDARD FORMAT \\*/ 00000701 00000800 DCL 00000900 1 W2PL11A, 00001000 2 GEO_WA2_1A_ACCESS_KEY CHAR(21), 00001100 2 GEO_WA2_1A_CONT_PARITY CHAR(1), 00001200 2 GEO_WA2_1A_LOW_HOUSENUM CHAR(6), 00001300 2 GEO_WA2_1A_ALTKEY_1, 00001400 3 GEO_WA2_1A_ALTKEY_1_BORO CHAR(1), 00001500 3 GEO_WA2_1A_ALTKEY_1_TAXBLOCK CHAR(5), 00001600 3 GEO_WA2_1A_ALTKEY_1_TAXLOT CHAR(4), 00001700 2 GEO_WA2_1A_FILLER_230 CHAR(1), 00001800 2 GEO_WA2_1A_SCC CHAR(1), 00001900 2 GEO_WA2_1A_FILLER_240 CHAR(1), 00002000 2 GEO_WA2_1A_GENERAL_LOT_INFO, 00002100 3 GEO_WA2_1A_RPAD_BLDG_CLASS CHAR(2), 00002200 3 GEO_WA2_1A_CORNER_CODE CHAR(2), 00002300 3 GEO_WA2_1A_NUM_OF_STRUCTURES CHAR(2), 00002400 3 GEO_WA2_1A_NUM_OF_BLOCKFACES CHAR(2), 00002500 3 GEO_WA2_1A_INTERIOR_FLAG CHAR(1), 00002600 3 GEO_WA2_1A_VACANT_FLAG CHAR(1), 00002700 3 GEO_WA2_1A_IRREG_LOT_FLAG CHAR(1), 00002800 2 GEO_WA2_1A_ALT_BORO_FLAG CHAR(1), 00002900 2 GEO_WA2_1A_FILLER_245 CHAR(1), 00003000 2 GEO_WA2_1A_STROLL_KEY CHAR(13), 00003100 2 GEO_WA2_1A_OVERFLOW_FLAG CHAR(1), 00003202 2 GEO_WA2_1A_FILLER_251 CHAR(1), /\\*USED FOR DCP*/ 00003300 2 GEO_WA2_1A_BIN CHAR(7), 00003400 2 GEO_WA2_1A_CONDO_FLAG CHAR(1), 00003500 2 GEO_WA2_1A_RPAD_CONDO_ID_NUM CHAR(4), 00003600 2 GEO_WA2_1A_CONDO_LOW_BBL CHAR(10), 00003700 2 GEO_WA2_1A_FILLER_260 CHAR(1), 00003800 2 GEO_WA2_1A_CONDO_BILL_BBL CHAR(10), 00003900 2 GEO_WA2_1A_FILLER_270 CHAR(1), 00004000 2 GEO_WA2_1A_CONDO_BILL_BBL_SCC CHAR(1), 00004100 2 GEO_WA2_1A_CONDO_HIGH_BBL CHAR(10), 00004200 2 GEO_WA2_1A_FILLER_275 CHAR(1), 00004300 2 GEO_WA2_1A_SANBORN_BORO CHAR(1), 00004400 2 GEO_WA2_1A_SANBORN_VOL_PAGE, 00004500 3 GEO_WA2_1A_SANBORN_VOL_NUM CHAR(3), 00004600 3 GEO_WA2_1A_SANBORN_PAGE_NUM CHAR(4), 00004700 2 GEO_WA2_1A_COMMERC_DIST CHAR(5), 00004800 2 GEO_WA2_1A_COOP_NUM CHAR(4), 00004904 2 GEO_WA2_1A_FILLER_276 CHAR(4), 00005007 2 GEO_WA2_1A_ACTUAL_NUM_OF_STRUCT CHAR(4), 00005106 2 GEO_WA2_1A_DOF_MAP_BORO CHAR(1), 00005207 2 GEO_WA2_1A_DOF_MAP_SECVOL CHAR(4), 00005307 2 GEO_WA2_1A_DOF_MAP_PAGE CHAR(4), 00005407 2 GEO_WA2_1A_X_COORD CHAR(7), 00005508 2 GEO_WA2_1A_Y_COORD CHAR(7), 00005608 2 GEO_WA2_1A_BID CHAR(6), 00005809 2 GEO_WA2_1A_FILLER_280 CHAR(2), 00005909 2 GEO_WA2_1A_FILLER_LGCS CHAR(8), 00006010 2 GEO_WA2_1A_FILLER_280A CHAR(2), 00006109 2 GEO_WA2_1A_NUM_OF_ADDR_FOR_LOT CHAR(2), 00006209 2 GEO_WA2_1A_LIST_OF_ADDRESSES(21), 00006309 3 GEO_WA2_1A_LIST_LOW_HOUSENUM CHAR(6), 00006409 3 GEO_WA2_1A_FILLER_290 CHAR(3), 00006509 3 GEO_WA2_1A_LIST_HI_HOUSENUM CHAR(6), 00006609 3 GEO_WA2_1A_FILLER_300 CHAR(3), 00006709 3 GEO_WA2_1A_LIST_STREETCODE CHAR(8), 00006809 3 GEO_WA2_1A_LIST_BIN CHAR(7), 00006909 3 GEO_WA2_1A_ADDR_TYPE CHAR(1), 00007009 3 GEO_WA2_1A_FILLER_310 CHAR(1), 00007109 3 GEO_WA2_1A_LIST_SOS CHAR(1); 00007209 DCL GEO_WA2_1A_SANBORN_BVOLPAGE CHAR(8) 00007309 BASED(ADDR(GEO_WA2_1A_SANBORN_BORO)); 00008009 W2PL11AL COPY File /********************************************************************/ 00000100 /*** THIS IS GEOSUPPORT SYSTEM COPY FILE W2PL11AL, CONTAINING THE***/ 00000200 /*** LAYOUT OF LONG WORK AREA 2 FOR FUNCTIONS 1A AND BL WHICH \\***/ 00000300 /*** SHARE A SINGLE WORK AREA 2 LAYOUT. 11/28/00 \\***/ 00000402 /********************************************************************/ 00000500 00000600 /* 1A/BL LONG WORK AREA 2 \\*/ 00000700 00000800 DCL 00000900 1 W2PL11AL, 00001000 2 GEO_WA2_1AL_ACCESS_KEY CHAR(21), 00001100 2 GEO_WA2_1AL_CONT_PARITY CHAR(1), 00001200 2 GEO_WA2_1AL_LOW_HOUSENUM CHAR(6), 00001300 2 GEO_WA2_1AL_ALTKEY_1, 00001400 3 GEO_WA2_1AL_ALTKEY_1_BORO CHAR(1), 00001500 3 GEO_WA2_1AL_ALTKEY_1_TAXBLOCK CHAR(5), 00001600 3 GEO_WA2_1AL_ALTKEY_1_TAXLOT CHAR(4), 00001700 2 GEO_WA2_1AL_FILLER_230 CHAR(1), 00001800 2 GEO_WA2_1AL_SCC CHAR(1), 00001900 2 GEO_WA2_1AL_FILLER_240 CHAR(1), 00002000 2 GEO_WA2_1AL_GENERAL_LOT_INFO, 00002100 3 GEO_WA2_1AL_RPAD_BLDG_CLASS CHAR(2), 00002200 3 GEO_WA2_1AL_CORNER_CODE CHAR(2), 00002300 3 GEO_WA2_1AL_NUM_OF_STRUCTURES CHAR(2), 00002400 3 GEO_WA2_1AL_NUM_OF_BLOCKFACES CHAR(2), 00002500 3 GEO_WA2_1AL_INTERIOR_FLAG CHAR(1), 00002600 3 GEO_WA2_1AL_VACANT_FLAG CHAR(1), 00002700 3 GEO_WA2_1AL_IRREG_LOT_FLAG CHAR(1), 00002800 2 GEO_WA2_1AL_ALT_BORO_FLAG CHAR(1), 00002900 2 GEO_WA2_1AL_FILLER_245 CHAR(1), 00003000 2 GEO_WA2_1AL_STROLL_KEY CHAR(13), 00003100 2 GEO_WA2_1AL_FILLER_250 CHAR(1), 00003200 2 GEO_WA2_1AL_FILLER_251 CHAR(1), /\\*USED FOR DCP*/ 00003300 2 GEO_WA2_1AL_BIN CHAR(7), 00003400 2 GEO_WA2_1AL_CONDO_FLAG CHAR(1), 00003500 2 GEO_WA2_1AL_RPAD_CONDO_ID_NUM CHAR(4), 00003600 2 GEO_WA2_1AL_CONDO_LOW_BBL CHAR(10), 00003700 2 GEO_WA2_1AL_FILLER_260 CHAR(1), 00003800 2 GEO_WA2_1AL_CONDO_BILL_BBL CHAR(10), 00003900 2 GEO_WA2_1AL_FILLER_270 CHAR(1), 00004000 2 GEO_WA2_1AL_CONDO_BILL_BBL_SCC CHAR(1), 00004100 2 GEO_WA2_1AL_CONDO_HIGH_BBL CHAR(10), 00004200 2 GEO_WA2_1AL_FILLER_275 CHAR(1), 00004300 2 GEO_WA2_1AL_SANBORN_BORO CHAR(1), 00004400 2 GEO_WA2_1AL_SANBORN_VOL_PAGE, 00004500 3 GEO_WA2_1AL_SANBORN_VOL_NUM CHAR(3), 00004600 3 GEO_WA2_1AL_SANBORN_PAGE_NUM CHAR(4), 00004700 2 GEO_WA2_1AL_COMMERC_DIST CHAR(5), 00004800 2 GEO_WA2_1AL_COOP_NUM CHAR(4), 00004903 2 GEO_WA2_1AL_FILLER_276 CHAR(4), 00005008 2 GEO_WA2_1AL_ACTUAL_NUM_STRUCTS CHAR(4), 00005106 2 GEO_WA2_1AL_DOF_MAP_BORO CHAR(1), 00005208 2 GEO_WA2_1AL_DOF_MAP_SECVOL CHAR(4), 00005308 2 GEO_WA2_1AL_DOF_MAP_PAGE CHAR(4), 00005408 2 GEO_WA2_1AL_X_COORD CHAR(7), 00005509 2 GEO_WA2_1AL_Y_COORD CHAR(7), 00005609 2 GEO_WA2_1AL_BID CHAR(6), 00005710 2 GEO_WA2_1AL_FILLER_280 CHAR(2), 00005810 2 GEO_WA2_1AL_FILLER_LGCS CHAR(8), 00005911 2 GEO_WA2_1AL_NUM_OF_BINS_FOR_LOT CHAR(4), 00006110 2 GEO_WA2_1AL_BINS(2500) CHAR(7); 00006210 00006310 DCL GEO_WA2_1AL_SANBORN_BVOLPAGE CHAR(8) 00006410 BASED(ADDR(GEO_WA2_1AL_SANBORN_BORO)); 00007009 W2PL13S COPY File /*******************************************************************/ 00000010 /** THIS IS GEOSUPPORT SYSTEM COPY FILE W2PL13S, CONTAINING THE \\**/ 00000020 /** LAYOUT OF WORK AREA 2 FOR FUNCTION 3S. 9/22/93 \\**/ 00000030 /*******************************************************************/ 00000040 DCL 00000050 1 W2PL13S, 00000060 2 GEO_WA2_3S_ACCESS_KEY CHAR(21), 00000070 2 GEO_WA2_3S_NUM_OF_INTERSECTS CHAR(3), 00000080 2 GEO_WA2_3S_LIST_OF_INTERSECTS(350), 00000090 3 GEO_WA2_3S_SMALLEST_PBSC FIXED DEC(7), 00000100 3 GEO_WA2_3S_2ND_SMALLEST_PBSC FIXED DEC(7), 00000110 3 GEO_WA2_3S_DISTANCE FIXED DEC(5), 00000120 3 GEO_WA2_3S_GAP_FLAG CHAR(1); 00000130 C COPY File (MSW) WAC COPY File /********************************************************************/ /* Modified - 2 June 2011 (added fields: 2010 Census Tract,Block \\*/ /* and Suffix for funcions 1,1E,2,3,3c). \\*/ /* Modified - 5 March 2009 \\*/ /********************************************************************/ typedef struct { struct { char func_code[2]; /* Function Code \\*/ char boro_1; /* Borough Code of First St \\*/ char hse_nbr_disp[12]; /* House nbr in Disp form \\*/ char hse_nbr_hni[6]; /* House nbr in HNI form \\*/ char street_name_1[32]; /* First Street Name \\*/ char street_name_2[32]; /* Second Street Name \\*/ char street_name_3[32]; /* Third Street Name \\*/ char comp_direction; /* Compass Direction \\*/ char comp_direction2; /* Compass Direction-Fn 3S \\*/ char PB5SC_1[4]; /* Packd Boro 5 digt St Code*/ char PB5SC_2[4]; /* Packd Boro 5 digt St Code*/ char PB5SC_3[4]; /* Packd Boro 5 digt St Code*/ char roadbedreq; /* Roadbed Request Switch \\*/ char boro_2; /* Boro Code of Second Strt \\*/ char boro_3; /* Boro Code of Third Street*/ char snl[2]; /* Street Name Norm Length \\*/ char B10SC_1[11]; /* 1st Boro & 10 Digt St Cod*/ char B10SC_2[11]; /* 2nd Boro & 10 Digt St Cod*/ char B10SC_3[11]; /* 3rd Boro & 10 Digt St Cod*/ char zipin[5]; /* Input Zip Code \\*/ char BBL[10]; /* Boro(len=1), Block(len=5)\\*/ /* and Lot (len=4) \\*/ char filler04; char bld_id[7]; /* Bld Id Number (BIN) \\*/ char compact_flag; /* Compact Street Names flag*/ char long_WA_flag; /* Long Work Area 2 Flag \\*/ char lo_range_hnd[12]; /* Low HND of Range \\*/ char lo_range_hni[6]; /* Low HNI of Range \\*/ char not_IBM_flag; /* Non-IBM Mainframe Flag \\*/ char BL1A; /* 1A/BL Version Switch \\*/ char xstreet_flag; /* Cross Street Names Flag \\*/ char filler06[4 ]; } input; struct { char lo_hse_nbr_disp[12]; /* Low HND of Range \\*/ char boro_name[9]; /* Boro Name of First Street*/ char street_name_1[32]; /* 1st St Name - Normalized \\*/ char street_name_2[32]; /* 2nd St Name - Normalized \\*/ char street_name_3[32]; /* 3rd St Name - Normalized \\*/ char hse_nbr_disp[12]; /* House nbr in Normalized \\*/ /* Display form \\*/ char hse_nbr_hni[6]; /* House number in HNI form \\*/ char filler01[7]; char PB5SC_1[4]; /* Packd Boro 5 digt St Code*/ char filler02[2]; char PB5SC_2[4]; /* Packd Boro 5 digt St Code*/ char filler03[2]; char PB5SC_3[4]; /* Packd Boro 5 digt St Code*/ char attrbytes[3]; /* Attribute Bytes - int use*/ char br_pb5sc[10][4]; /* Up to 10 PB5SCs-Browse fn*/ char B10SC_1[11]; /* 1st Boro & 10 Digt St Cod*/ char B10SC_2[11]; /* 2nd Boro & 10 Digt St Cod*/ char B10SC_3[11]; /* 3rd Boro & 10 Digt St Cod*/ char condo_nbr[5]; /* Condo Number \\*/ char BBL[10]; /* Boro(len=1), Block(len=5)\\*/ /* and Lot (len=4)-Normalizd*/ char filler06[1]; char bld_id[7]; /* Building Id Number \\*/ char intuse1; /* Internal Use Only \\*/ char reject_reason_code;/* Reject Reason Code \\*/ char filler07[2]; char ret_code[2]; /* GeoSupport Return Code \\*/ char msg[80]; /* GeoSupport Message \\*/ char nbr_sim_names[2]; /* Nbr of Similar St Names \\*/ char sim_names[10][32]; /* Up to 10 Similar St Names*/ } output; } C_WA1; typedef struct { char filler01[21]; char cont_parity_ind; /* Continuous Parity Ind. \\*/ char lo_hse_nbr[6]; /* Low House nbr in HNI form*/ char hi_hse_nbr[6]; /* Hi House Nbr in HNI form \\*/ char alx; /* A=Alley intersects segmnt*/ /* X=Cross Streets modified \\*/ char lo_nbr_x_sts; /* Nbr of cross streets at \\*/ /* low house nbr end of st \\*/ char l_x_sts[5][4]; /* PB5SCs of lo end cross st*/ char hi_nbr_x_sts; /* Nbr of cross streets at \\*/ /* low house nbr end of st \\*/ char h_x_sts[5][4]; /* PB5SCs of lo end cross st*/ char com_dist[3]; /* Community District \\*/ /* Position 0 contains the \\*/ /* Legacy Boro Code & Pos 1 \\*/ /* & 2, the district nbr \\*/ char zip_code[5]; /* Zip code for st seg \\*/ char DOT_slca; /* DOT St Lght Contractr Are*/ char health_cent[2]; /* Health Center District \\*/ char sos_ind; /* Side of Street Indicator \\*/ char cont_par; /* Continuous Parity Ind. \\*/ char cen_tract_10[6]; /* 2010 Census Tract \\*/ char cen_blk_10[4]; /* 2010 Census Block \\*/ char cen_blk_10_sufx; /* 2010 Census Block Suffix \\*/ char filler_indv; /* Was Instructional Divisn \\*/ char filler07[2]; /* Filler \\*/ char health_area[4]; /* Health Area \\*/ char sanit_recycle[3]; /* Recycling Sanit pick-up \\*/ char feature_type; /* Feature Type Code \\*/ char iaei; /* Community Development \\*/ /* Eligibility Indicator \\*/ char curve_flag; /* Curve Flag \\*/ char police_boro_com; /* Police Patrol Boro Commnd*/ char police_pre[3]; /* Police Precinct \\*/ char com_schl_dist[2]; /* Community School District*/ /* Following 7 fields are \\*/ /* used for Function 1E only*/ char ed[3]; /* Election District \\*/ char ad[2]; /* Assembly District \\*/ char sped_flag; /* Split Elect District Flag*/ char congress_dist[2]; /* Congressional District \\*/ char state_sen_dist[2]; /* State Senatorial District*/ char civil_court[2]; /* Civil Court District \\*/ char civil_council[2]; /* City Council District \\*/ char coincident_seg_cnt; /* Coincident Segment \\*/ /* Count \\*/ char segtypecode; /* Segment Type Code \\*/ char sanit_dist[3]; /* Sanitation District \\*/ char sanit_sub_sect[2]; /* Sanit Collect Scheduling \\*/ /* Section and Subsection \\*/ char fire_divisn[2]; /* Fire Division \\*/ char fire_bat[2]; /* Fire Battalion \\*/ char fire_co_type; /* Fire Company Type \\*/ char fire_co_nbr[3]; /* Fire Company Number \\*/ char sagr_flag; /* Special Address Generated*/ /* Record flag \\*/ char mh_ri_flag; /* Marble Hill/Rikers Island*/ /* Alternative Borough flag \\*/ char scsd_flag; /* Split Com School District*/ /* flag \\*/ char DCP_lgc[2]; /* DCP preferred LGC \\*/ char face_code[4]; /* LION Face Code \\*/ char seq_nbr[5]; /* LION Sequence Number \\*/ char cen_tract_90[6]; /* 1990 Census Tract \\*/ char filler09 [4]; /* Filler \\*/ char dynam_blk[3]; /* Dynamic Block \\*/ char X_coord[7]; /* X coordinate \\*/ char Y_coord[7]; /* Y coordinate \\*/ char seg_len[5]; /* Segment Length in Feet \\*/ char sanit_reg_sched[5];/* Regularly Sanit pick-up \\*/ } C_WA2_F1; typedef struct { C_WA2_F1 c_wa2_f1; /* First 200 Bytes \\*/ char seg_id[7]; /* Segment Identifier \\*/ char true_b7sc[8]; /* \"true\" Boro 7 Str code \\*/ char true_hni [6]; /* Underlying HNI \\*/ char cen_tract_2000[6]; /* 2000 Census Tract \\*/ char cen_blk_2000[4]; /* 2000 Census Block \\*/ char cen_blk_2000_sufx; /* 2000 Census Block Suffix \\*/ char filler01[68]; /* Filler - Future Use \\*/ /* char filler01[79]; /* Filler - Future Use \\*/ } C_WA2_F1L; typedef struct { char lo_hse_nbr[6]; /* Low House nbr in HNI form*/ char filler01[3]; char hi_hse_nbr[6]; /* Hi House Nbr in HNI form \\*/ char filler02[3]; char B5SC[6]; /* Boro & 5 digit Str Code \\*/ char lgc[2]; /* LGC of Street \\*/ char bld_id[7]; /* BIN of address range \\*/ char addr_type; /* Address Type \\*/ char filler04; char sos_ind; /* Side of Street Indicator \\*/ } ADDR_RANGE; typedef struct { char sanborn_boro; /* Sanborn Borough Code \\*/ char sanborn_vol[3]; /* Sanborn Volume \\*/ char sanborn_page[4]; /* Sanborn Page \\*/ } SANBORN; typedef struct { char filler01[21]; char cont_parity_ind; /* Continuous Parity Ind \\*/ char lo_hse_nbr[6]; /* Low House Number \\*/ char BBL[10]; /* Boro(len=1), Block(len=5)\\*/ /* and Lot (len=4) \\*/ char tax_lot_ver_nbr; /* Tax Lot Version Number \\*/ char RPAD_scc; /* RPAD Self_Check Code(SCC)\\*/ char filler02; char RPAD_lucc[2]; /* RPAD Land Use Class. Code*/ char corner[2]; /* Corner Code \\*/ char nbr_blds[2]; /* Nbr of buildings on lot \\*/ char nbr_str[2]; /* Nbr Street Frontages \\*/ char inter_flag; /* Interior Lot Flag \\*/ char vacant_flag; /* Vacant Lot Flag \\*/ char irreg_flag; /* Irregularly-Shaped Lot Fl*/ char mh_ri_flag; /* Marble Hill/Rikers Island*/ char filler03; /* Former Pseudo-Address Flg*/ char stroll_key[13]; /* Strolling key \\*/ char overflow_flag; /* More than 21 Addresses \\*/ char res_internal_use; /* Reserved for Internal Use*/ char bld_id[7]; /* Bld Identification Nbr \\*/ /* (BIN) of Input Address of*/ /* Existing Building, If any*/ char condo_flag; /* Condominium Flag \\*/ char RPAD_cin[4]; /* RPAD Condo Id Number \\*/ char condo_lo_BBL[10]; /* Low BBL of Condo \\*/ char filler05; char condo_bill_BBL[10];/* Condo Billing BBL \\*/ char filler06; char condo_bill_BBL_scc;/* Condo Billing BBL \\*/ /* Self-Check Code \\*/ char condo_hi_BBL[10]; /* High BBL of Condo \\*/ char filler07; SANBORN fn1A_Sanborn; /* Sanborn Information \\*/ char business_area[5]; /* Business Area \\*/ char co_op_nbr[4 ]; /* Co-op Number \\*/ char filler08[4 ]; char tot_nbr_bldgs[4 ]; /* Actual Nbr Bldgs on lot \\*/ char tax_map_nbr[5 ]; /* Tax Map Nbr-Sect and Vol \\*/ char filler09[04]; char X_coord[7]; /* X coordinate-Annotation p*/ char Y_coord[7]; /* Y coordinate-Annotation p*/ char bid_id[6]; /* Business Improvement Dist*/ char filler10[2]; char int_use[8]; char filler11[2]; char nbr_addr[2]; /* Nbr of Addr Ranges on Lot*/ ADDR_RANGE addr_range[21]; /* Addr Range structure \\*/ } C_WA2_F1A; typedef struct { char filler01[21]; char cont_parity_ind; /* Continuous Parity Ind \\*/ char lo_hse_nbr[6]; /* Low House Number \\*/ char BBL[10]; /* Boro(len=1), Block(len=5)\\*/ /* and Lot (len=4) \\*/ char tax_lot_ver_nbr; /* Tax Lot Version Number \\*/ char RPAD_scc; /* RPAD Self_Check Code(SCC)\\*/ char filler02; char RPAD_lucc[2]; /* RPAD Land Use Class. Code*/ char corner[2]; /* Corner Code \\*/ char nbr_blds[2]; /* Nbr of buildings on lot \\*/ char nbr_str[2]; /* Nbr Street Frontages \\*/ char inter_flag; /* Interior Lot Flag \\*/ char vacant_flag; /* Vacant Lot Flag \\*/ char irreg_flag; /* Irregularly-Shaped Lot Fl*/ char mh_ri_flag; /* Marble Hill/Rikers Island*/ char filler03; /* Former Pseudo-Address Flg*/ char stroll_key[13]; /* Strolling key \\*/ char filler04; char res_internal_use; /* Reserved for Internal Use*/ char bld_id[7]; /* Bld Identification Nbr \\*/ /* (BIN) of Input Address of*/ /* Existing Building, If any*/ char condo_flag; /* Condominium Flag \\*/ char RPAD_cin[4]; /* RPAD Condo Id Number \\*/ char condo_lo_BBL[10]; /* Low BBL of Condo \\*/ char filler05; char condo_bill_BBL[10];/* Condo Billing BBL \\*/ char filler06; char condo_bill_BBL_scc;/* Condo Billing BBL \\*/ /* Self-Check Code \\*/ char condo_hi_BBL[10]; /* High BBL of Condo \\*/ char filler07; SANBORN fn1A_Sanborn; /* Sanborn Information \\*/ char business_area[5]; /* Business Area \\*/ char co_op_nbr[4 ]; /* Co-op number \\*/ char filler08[4 ]; char tot_nbr_bldgs[4 ]; /* Actual Nbr Bldgs on lot \\*/ char tax_map_nbr[5 ]; /* Tax Map Nbr-Sect and Vol \\*/ char filler09[04]; char X_coord[7]; /* X coordinate-Annotation p*/ char Y_coord[7]; /* Y coordinate-Annotation p*/ char bid_id[6]; /* Business Improvement Dist*/ char filler10[2]; char int_use[8]; char nbr_bins[4]; /* Nbr of BINS on Lot \\*/ char bin_list[2500][7]; /* List of BINS on Lot \\*/ } C_WA2_F1AL; typedef struct { char filler01[31]; char lgc[2][2]; /* Preferred LGCs \\*/ char nbr_x_sts; /* Number of Intersecting St*/ char x_sts[5][4]; /* PB5SCs of Intersection St*/ char compdir[1]; /* Compass Direction if 2 \\*/ /* lowest str codes cross \\*/ /* exactly twice \\*/ char level_codes[10]; /* Level Codes of X Streets \\*/ char instruc_div[2]; /* Instructional Division \\*/ char fire_sector[2]; /* Fire Sector \\*/ char fire_bat[2]; /* Fire Battalion \\*/ char fire_co_type; /* Fire Company Type \\*/ char fire_co_nbr[3]; /* Fire Company Number \\*/ char com_dist[3]; /* Community District \\*/ /* Pos 0 contains the Boro \\*/ /* Code and Positions 1 & 2 \\*/ /* contain the district nbr \\*/ char zip_code[5]; /* Zip code for st segment \\*/ char DOT_slca; /* DOT St Lght Contractr Are*/ char cen_tract_10[6]; /* 2010 Census Tract \\*/ char filler03[3]; char health_area[4]; /* Health Area \\*/ char filler04[9]; char node_nbr[7 ]; /* Node Number \\*/ char X_coord[7]; /* X coordinate \\*/ char Y_coord[7]; /* Y coordinate \\*/ char filler04a[2]; /* \\*/ char filler05[2]; char police_boro_com; /* Police Patrol Boro Commnd*/ char police_pre[3]; /* Police Precinct \\*/ char com_schl_dist[2]; /* Community School District*/ /* Following 7 fields are \\*/ /* used forFunction 1E only \\*/ char mh_ri_flag; /* Marble Hill/Rikers Island*/ char cen_tract_90[6]; /* 1990 Census Tract \\*/ SANBORN fn2_Sanborn[2]; /* Sanborn Information \\*/ char dup_intersect_distance[5]; /* Distance in Feet*/ /* Bet Duplicate Intersects \\*/ char cen_tract_2000[6]; /* 2000 Census Tract \\*/ char filler06[27]; /* char filler06[33]; \\*/ } C_WA2_F2; typedef struct { char filler01[21]; char dup_key_flag; /* Duplicate Key Flag \\*/ char curve_flag; /* Curve Flag \\*/ char loc_stat_seg; /* Locational Status of Seg*/ char cnty_bnd_ind; /* County Boundary Indicat \\*/ char coincident_seg_cnt; /* Coincident Segment \\*/ /* Count \\*/ char filler03[3]; /* Future Use \\*/ char lgc[3][2]; /* Preferred LGCs \\*/ char lo_nbr_x_sts; /* Nbr of cross sts at low \\*/ /* house nbr end of street \\*/ char l_x_sts[5][4]; /* PB5SCs of lo end X sts \\*/ char hi_nbr_x_sts; /* Number of X streets at lo*/ /* house nbr end of street \\*/ char h_x_sts[5][4]; /* PB5SCs of low end X sts \\*/ char DOT_slca; /* DOT St Lght Contractr Are*/ char x_street_reversal_flag; /* X St Reversal Flag \\*/ char l_com_dist[3]; /* Left Community District \\*/ /* Position 0 contains the \\*/ /* Boro Code and Pos 1 & 2 \\*/ /* contain the district nbr \\*/ char r_com_dist[3]; /* Right Community District \\*/ /* Position 0 contains the \\*/ /* Boro Code and Pos 1 & 2 \\*/ /* contain the district nbr \\*/ char l_zip_code[5]; /* Left Zip code for st seg \\*/ char r_zip_code[5]; /* Right Zip code for st seg*/ char filler07 [18]; char l_health_area[4]; /* Left Health Area \\*/ char r_health_area[4]; /* Right Health Area \\*/ char l_fill_in_div[2]; /* Was Left Instructionl Div*/ char r_fill_in_div[2]; /* Was Right Instructnl Div \\*/ char l_lo_hse_nbr[7]; /* Left Lo Hse nbr in Disp \\*/ char l_hi_hse_nbr[7]; /* Left Hi Hse Nbr in Disp \\*/ char r_lo_hse_nbr[7]; /* rght Lo Hse nbr in Disply*/ char r_hi_hse_nbr[7]; /* rght Hi Hse Nbr in Disply*/ char cont_par; /* Continuous Parity Ind \\*/ char face_code[4]; /* LION Face Code \\*/ char seq_nbr[5]; /* LION Sequence Nbr \\*/ char genr_flag; /* Generated Record Flag \\*/ char seg_len[3]; /* Segment Length in Feet \\*/ char seg_azm[3]; /* Segment Azimuth \\*/ char seg_orient; /* Segment Orientation \\*/ char filler04a[2]; /* \\*/ char filler04b[2]; /* \\*/ char l_iaei; /* Community Development \\*/ /* Eligibility Indicator for*/ /* left side \\*/ char r_iaei; /* Community Development \\*/ /* Eligibility Indicator for*/ /* right side \\*/ char dog_leg; /* Dog Leg Flag \\*/ char feature_type; /* Feature Type Code \\*/ char l_police_boro_com; /* Lft Police Patrl Boro Com*/ char l_police_pre[3]; /* Left Police Precinct \\*/ char r_police_boro_com; /* Rght Police Patrl Boro Cm*/ char r_police_pre[3]; /* Right Police Precinct \\*/ char l_com_schl_dist[2];/* Lft Com School District \\*/ char r_com_schl_dist[2];/* Rght Com School District \\*/ char mh_ri_flag; /* Marble Hill/Rikers Island*/ /* Alternative Boro flag \\*/ char seg_id[7]; /* Segment Identifier \\*/ char segtypecode; /* Segment Type Code \\*/ } C_WA2_F3; typedef struct { C_WA2_F3 c_wa2_f3; /* First 200 Bytes \\*/ char l_cen_tract_90[6]; /* Left 1990 Census Tract \\*/ char filler01[4]; /* Filler \\*/ char l_dynam_blk[3]; /* Left Dynamic Block \\*/ char r_cen_tract_90[6]; /* Right 1990 Census Tract \\*/ char filler03[4]; /* Filler \\*/ char r_dynam_blk[3]; /* Right Dynamic Block \\*/ char l_fire_sector[2]; /* Left Fire Sector \\*/ char l_fire_bat[2]; /* Left Fire Battalion \\*/ char l_fire_co_type; /* Left Fire Company Type \\*/ char l_fire_co_nbr[3]; /* Left Fire Company Nbr \\*/ char r_fire_sector[2]; /* Right Fire Sector \\*/ char r_fire_bat[2]; /* Right Fire Battalion \\*/ char r_fire_co_type; /* Right Fire Company Type \\*/ char r_fire_co_nbr[3]; /* Right Fire Company Nbr \\*/ char l_cen_tract_10[6]; /* Left 2010 Census Tract \\*/ char l_cen_blk_10[4]; /* Left 2010 Census Block \\*/ char l_cen_blk_10_sufx; /* Left 2010 Census Blk Sufx*/ char r_cen_tract_10[6]; /* Right 2010 Census Tract \\*/ char r_cen_blk_10[4]; /* Right 2010 Census Block \\*/ char r_cen_blk_10_sufx; /* Right 2010 Census Blk Sfx*/ char nodes[2][7]; /* From and To Nodes \\*/ char l_cen_tract_2000[6];/\\*Left 2000 Census Tract \\*/ char l_cen_blk_2000[4]; /\\*Left 2000 Census Block \\*/ char l_cen_blk_2000_sufx;/\\*Left 2000 Census Blk Sufx\\*/ char r_cen_tract_2000[6];/\\*Right 2000 Census Tract \\*/ char r_cen_blk_2000[4]; /\\*Right 2000 Census Block \\*/ char r_cen_blk_2000_sufx;/\\*Right 2000 Census Blk Sfx*/ // char filler02[22]; } C_WA2_F3L; typedef struct { char filler01[21]; char curve_flag; /* curve flag \\*/ char segtypecode; /* Segment Type Code \\*/ char loc_stat_seg; /* Location Status of Seg. \\*/ char cnty_bnd_ind; /* County Boundary Indicator*/ char coincident_seg_cnt; /* Coincident Segment \\*/ /* Count \\*/ char filler0A[3]; /* Future Use \\*/ char lgc[3][2]; /* Preferred LGCs \\*/ char lo_nbr_x_sts; /* Nbr of cross sts at low \\*/ /* house nbr end of street \\*/ char l_x_sts[5][4]; /* PB5SCs of lo end cross st*/ char hi_nbr_x_sts; /* Nbr of cross sts at low \\*/ /* house nbr end of street \\*/ char h_x_sts[5][4]; /* PB5SCs of lo end X sts \\*/ char com_dist[3]; /* Community District Pos 0 \\*/ /* contains the Boro Code & \\*/ /* Positions 1&2 contain the*/ /* district nbr \\*/ char zip_code[5]; /* Zip code for street seg \\*/ char DOT_slca; /* DOT St Lght Contractr Are*/ char cen_tract_2000[6]; /* 2000 Census Tract \\*/ char filler02[1]; // char filler02[7]; char cen_tract_10[6]; /* 2010 Census Tract \\*/ char cen_blk_10[4]; /* 2010 Census Block \\*/ char cen_blk_10_sufx; /* 2010 Census Block Suffix \\*/ char health_area[4]; /* Health Area \\*/ char x_street_reversal_flag; /* X St Reversal Flag \\*/ char sos_ind; /* Side of Street Indicator \\*/ char fire_sector[2]; /* Fire Sector \\*/ char fire_bat[2]; /* Fire Battalion \\*/ char fire_co_type; /* Fire Company Type \\*/ char fire_co_nbr[3]; /* Fire Company Nbr */ char seg_id[7]; /* Segment Identifier */ char lo_hse_nbr[7]; /* Low House nbr in Display */ char hi_hse_nbr[7]; /* High House Nbr in Display*/ char a_lo_hse_nbr[7]; /* Alt. Lo Hse nbr in Disply*/ char a_hi_hse_nbr[7]; /* Alt.Hi Hse Nbr in Display*/ char cont_par; /* Continuous Parity Ind \\*/ char face_code[4]; /* LION Face Code \\*/ char seq_nbr[5]; /* LION Sequence Nbr \\*/ char genr_flag; /* Generated Record Flag \\*/ char seg_len[3]; /* Segment Length in Feet \\*/ char seg_azm[3]; /* Segment Azimuth \\*/ char seg_orient; /* Segment Orientation \\*/ char instruc_div[2]; /* Instructional Division \\*/ char iaei; /* Community Development \\*/ /* Eligibility Indicator \\*/ char feature_type; /* Feature Type Code \\*/ char police_boro_com; /* Police Patrol Boro Com. \\*/ char police_pre[3]; /* Police Precinct \\*/ char com_schl_dist[2]; /* Community School District*/ char mh_ri_flag; /* Marble Hill/Rikers Island*/ /* Alternative Boro flag \\*/ char cen_tract_90[6]; /* 1990 Census Tract \\*/ char filler03[4]; /* Filler \\*/ char dynam_blk[3]; /* Dynamic Block \\*/ char cen_blk_2000[4]; /* 2000 Census Block \\*/ char cen_blk_2000_sufx; /* 2000 Census Block Suffix \\*/ // char filler06[5]; } C_WA2_F3C; typedef struct { char lo_x_PB5SC[4]; /* Lowest PB5SC at Intersect*/ char lo2x_PB5SC[4]; /* 2nd Lowest PB5SC at Inter*/ char len[3]; /* Len in ft from prev node \\*/ char gap_flag; /* Gap Flag \\*/ } CROSS_STRS; typedef struct { char filler01[21]; char nbr_x_str[3]; /* Nbr of X sts in list \\*/ CROSS_STRS cross_strs[350];/* Cross Street structure*/ } C_WA2_F3S; NATURAL LDAs (MSW) GEOLW1 COPY File \\* USER PROGRAMS MUST RESET GEOLW1 BEFORE PRIMING WORKAREA 1 1 GEOLW1 /* LRECL=200 \\* THE FIELD W1NAT IS USED AS A PARAMETER TO CALL GEOSUPPORT RT 2 W1NAT A 2 R 2 W1NAT \\* * * * * INPUT FIELDS * * * * * * * * * * /* WORK AREA 1 FOR \\* * /* ALL FUNCTIONS 3 GEO-WA1-IN-FUNCTION-CODE A 2 R 3 GEO-WA1-IN-FUNCTION-CODE 4 GEO-WA1-IN-FUNCTION-1 A 1 4 GEO-WA1-IN-FUNCTION-2 A 1 2 GEO-WA1-IN-BORO A 1 2 GEO-WA1-IN-HOUSENUM A 12 /* FOR FCT 5, INPUT HIGH HSE NUM 2 GEO-WA1-IN-HOUSENUM-INTERNAL A 6 /* FOR FCT 5, INPUT HIGH HSE NUM 2 GEO-WA1-IN-STREET-1 A 32 2 GEO-WA1-IN-STREET-2 A 32 2 GEO-WA1-IN-STREET-3 A 32 2 GEO-WA1-IN-COMPASS A 1 2 GEO-WA1-IN-COMPASS2 A 1 2 GEO-WA1-IN-STREETCODE-1 P 6 2 GEO-WA1-IN-STREETCODE-2 P 6 2 GEO-WA1-IN-STREETCODE-3 P 6 2 GEO-WA1-IN-ROADBED-REQ-SWITCH-SF A 1 2 GEO-WA1-IN-BORO-2 A 1 2 GEO-WA1-IN-BORO-3 A 1 2 GEO-WA1-IN-SNL A 2 2 GEO-WA1-IN-10SC-1 A 11 2 GEO-WA1-IN-10SC-2 A 11 2 GEO-WA1-IN-10SC-3 A 11 2 GEO-WA1-IN-ZIPCODE A 5 2 GEO-WA1-IN-BBL A 10 R 2 GEO-WA1-IN-BBL 3 GEO-WA1-IN-BBL-BORO A 1 3 GEO-WA1-IN-BLOCKNUM A 5 3 GEO-WA1-IN-LOTNUM A 4 2 FILLER-WA1-10 A 1 2 GEO-WA1-IN-BIN A 7 2 GEO-WA1-IN-COMPACT-NAME-FLAG A 1 /* TO REQUEST THE COMPACT NAMES \\* OPTION, \\* MOVE 'C' TO THIS FIELD. \\* 2 GEO-WA1-IN-LONG-WORKAREA2-FLAG A 1 /* TO REQUEST THE LONG WORKAREA \\* OPTION, \\* MOVE 'L' TO THIS FIELD. \\* ONLY FCT 3 HAS THIS OPTION. \\* 2 GEO-WA1-IN-LOW-HOUSENUM A 12 2 GEO-WA1-IN-LOW-HSENUM-INTERNAL A 6 2 GEO-WA1-IN-NON-IBM-MAIN-FRAME A 1 /* NOT IMPLEMENTED \\* FOR ANY APPLICATION RUNNING \\* ON NON-IBM MAINFRAM, \\* MOVE 'X' TO THIS FIELD. \\* 2 GEO-WA1-IN-1ABL-VERSION A 1 /* FOR FCT 1A & BL, TO REQUEST \\* THE STANDARD WA2 FORMAT, SET \\* THIS FIELD TO 'S'. TO REQUEST \\* THE LEGACY WA2 FORMAT, SET \\* THIS FILED TO ' ' OR 'L'. \\* 2 GEO-WA1-IN-XSTREET-FLAG A 1 2 FILLER-WA1-100 A 4 \\* * * * * OUTPUT FIELDS * * * * * 2 GEO-WA1-OUT-LOW-HOUSENUM A 12 2 GEO-WA1-OUT-BORONAME A 9 2 GEO-WA1-OUT-STREET-1 A 32 2 GEO-WA1-OUT-STREET-2 A 32 2 GEO-WA1-OUT-STREET-3 A 32 2 GEO-WA1-OUT-HOUSENUM A 12 /* HI HND 2 GEO-WA1-OUT-HOUSENUM-INTERNAL A 6 2 FILLER-WA1-200 A 7 2 GEO-WA1-OUT-PB5SC-1 P 6 /* 4 BYTES R 2 GEO-WA1-OUT-PB5SC-1 3 GEO-WA1-OUT-PACKBORO-NOSIGN-1 N 1 3 GEO-WA1-OUT-STREETCODE-1-KEY P 5 /* 3 BYTES 2 FILLER-WA1-210 A 2 2 GEO-WA1-OUT-PB5SC-2 P 6 /* 4 BYTES R 2 GEO-WA1-OUT-PB5SC-2 3 GEO-WA1-OUT-PACKBORO-NOSIGN-2 N 1 3 GEO-WA1-OUT-STREETCODE-2-KEY P 5 /* 3 BYTES 2 FILLER-WA1-220 A 2 2 GEO-WA1-OUT-PB5SC-3 P 6 /* 4 BYTES R 2 GEO-WA1-OUT-PB5SC-3 3 GEO-WA1-OUT-PACKBORO-NOSIGN-3 N 1 3 GEO-WA1-OUT-STREETCODE-3-KEY P 5 /* 3 BYTES 2 GEO-WA1-OUT-STREET-ATTR A 1 (1:3) /* INTERNAL USE 2 GEO-WA1-BROWSE A 40 2 GEO-WA1-OUT-10SC-1 A 11 2 GEO-WA1-OUT-10SC-2 A 11 2 GEO-WA1-OUT-10SC-3 A 11 2 GEO-WA1-OUT-CUI A 5 /* NOT IMPLEMENTED 2 GEO-WA1-OUT-BBL A 10 R 2 GEO-WA1-OUT-BBL 3 GEO-WA1-OUT-BBL-BORO A 1 3 GEO-WA1-OUT-BLOCKNUM A 5 3 GEO-WA1-OUT-LOTNUM A 4 2 FILLER-WA1-240 A 1 2 GEO-WA1-OUT-BIN A 7 2 GEO-WA1-OUT-SND-ATTR A 1 /* DCP/GSS USE 2 GEO-WA1-OUT-REASON-CODE A 1 2 FILLER-WA1-400 A 2 /* INTERNAL USE 2 GEO-WA1-OUT-RETURN-CODE A 2 R 2 GEO-WA1-OUT-RETURN-CODE 3 GEO-WA1-OUT-RC-1 A 1 3 GEO-WA1-OUT-RC-2 A 1 2 GEO-WA1-OUT-ERROR-MESSAGE A 80 2 GEO-WA1-OUT-NUM-SIMILAR-NAMES P 3 2 GEO-WA1-OUT-SIMILAR-NAMES A 32 (1:10) GEOLW2 COPY File 1 GEOLW2 * THE FIELD W2NAT IS USED AS A PARAMETER TO CALL GEOSUPPORT FOR ALLLL * FUNCTIONS THAT ARE REDEFINED ON GEOLW2 2 W2NAT A 21 R 2 W2NAT * * BEGINNING OF FUNCTION 1 LAYOUT * **** ******* 3 GEO-WA2-FN1-ACCESS-KEY A 21 2 GEO-WA2-FN1-CONT-PARITY A 1 2 GEO-WA2-FN1-LOW-HOUSENUM-INT A 6 R 2 GEO-WA2-FN1-LOW-HOUSENUM-INT 3 GEO-WA2-FN1-LOW-HOUSENUM A 5 3 GEO-WA2-FN1-LOW-HOUSENUMSFX A 1 2 GEO-WA2-FN1-HI-HOUSENUM-INT A 6 R 2 GEO-WA2-FN1-HI-HOUSENUM-INT 3 GEO-WA2-FN1-HI-HOUSENUM A 5 3 GEO-WA2-FN1-HI-HOUSENUMSFX A 1 2 GEO-WA2-FN1-ALX A 1 /\\*ALLEYS INTERSECT SEGMENT 2 GEO-WA2-FN1-NUM-X-ST-LOW-END N 1 2 GEO-WA2-FN1-LOW-PBSC P 6 (1:5) /* 4 BYTES X 5 = 20 2 GEO-WA2-FN1-NUM-X-ST-HI-END N 1 2 GEO-WA2-FN1-HI-PBSC P 6 (1:5) 2 GEO-WA2-FN1-COMDIST A 3 R 2 GEO-WA2-FN1-COMDIST 3 GEO-WA2-FN1-COMDIST-BORO A 1 3 GEO-WA2-FN1-COMDIST-NUM A 2 2 GEO-WA2-FN1-ZIP A 5 2 GEO-WA2-FN1-SLA A 1 2 GEO-WA2-FN1-HCD A 2 2 GEO-WA2-FN1-SOS A 1 2 GEO-WA2-FN1-CONT-PARITY-IND A 1 2 GEO-WA2-FN1-2010-CENSUSTRACT A 6 2 GEO-WA2-FN1-2010-CENSUSBLOCK A 4 2 GEO-WA2-FN1-2010-CENSUSBLKSFX A 1 2 GEO-WA2-FN1-FILLER_INDV A 1 2 FILLER-WA2-260 A 2 2 GEO-WA2-FN1-HEALTHAREA A 4 2 GEO-WA2-FN1-SANI-REC A 3 2 GEO-WA1-FN1-FEATURE-TYPE A 1 2 GEO-WA2-FN1-RESDCP A 1 /* RESERVED FOR DCP/GSS USE 2 GEO-WA2-FN1-CURVE-FLAG A 1 2 GEO-WA2-FN1-POLICEDIST A 4 R 2 GEO-WA2-FN1-POLICEDIST 3 GEO-WA2-FN1-POL-PATR-BORO-CMD A 1 3 GEO-WA2-FN1-POL-PRECINCT A 3 2 GEO-WA2-FN1-SCHOOLDIST A 2 2 FILLER-WA2-250 A 15 2 GEO-WA2-FN1-SEGMENT-TYPE A 1 2 GEO-WA2-FN1-SANIDIST A 3 R 2 GEO-WA2-FN1-SANIDIST 3 GEO-WA2-FN1-SANIDIST-BORO A 1 3 GEO-WA2-FN1-SANIDIST-NUM A 2 2 GEO-WA2-FN1-SANITATION-SUBSEC A 2 2 GEO-WA2-FN1-FIRESEC A 2 /* FIRE DIVISION 2 GEO-WA2-FN1-FIREBAT A 2 2 GEO-WA2-FN1-FIRECO A 4 R 2 GEO-WA2-FN1-FIRECO 3 GEO-WA2-FN1-FIRECO-TYPE A 1 3 GEO-WA2-FN1-FIRECO-NUM A 3 2 GEO-WA2-FN1-SPECIAL-ADDR-FLAG A 1 2 GEO-WA2-FN1-MARBLE-RIKERS-FLAG A 1 2 GEO-WA2-FN1-SPLIT-SCHOOL-FLAG A 1 2 GEO-WA2-FN1-PREFERRED-LGC A 2 2 GEO-WA2-FN1-LIONFACECODE A 4 2 GEO-WA2-FN1-LIONSEQ A 5 2 GEO-WA2-FN1-1990-CENSUSTRACT A 6 2 FILLER-WA2-260B A 4 2 GEO-WA2-FN1-DYN-BLOCK A 3 2 GEO-WA2-FN1-XCOORD A 7 2 GEO-WA2-FN1-YCOORD A 7 2 GEO-WA2-FN1-SEGMENTLENGTH A 5 2 GEO-WA2-FN1-SANI-REG A 5 * * END OF FUNCTION 1 LAYOUT * **** ******* * - -------------------------------- - ---- --------------------------- * * BEGINNING OF FUNCTION 2 LAYOUT * **** ******* R 1 GEOLW2 2 GEO-WA2-FN2-ACCESS-KEY A 21 /\\*FCT 2,2C SHARE SAME WA2 LAYO 2 GEO-WA2-FN2-DUPINTERFLAG A 1 /* 2 FILLER-WA2-270 A 9 2 GEO-WA2-FN2-PREFERRED-LGC1 A 2 2 GEO-WA2-FN2-PREFERRED-LGC2 A 2 2 GEO-WA2-FN2-NUM-OF-INTERSECTS N 1 2 GEO-WA2-FN2-INTERSECT-PBSC P 6 (1:5) 2 GEO-WA2-FN2-COMPDIR A 1 2 GEO-WA2-FN2-LEVEL-CODES-TBL A 10 R 2 GEO-WA2-FN2-LEVEL-CODES-TBL 3 GEO-WA2-FN2-LEVEL-CODES A 1 (5,2) 2 GEO-WA2-FN2-INSTRUCT-REG A 2 2 GEO-WA2-FN2-FIRESEC A 2 2 GEO-WA2-FN2-FIREBAT A 2 2 GEO-WA2-FN2-FIRECO A 4 R 2 GEO-WA2-FN2-FIRECO 3 GEO-WA2-FN2-FIRECO-TYPE A 1 3 GEO-WA2-FN2-FIRECO-NUM A 3 2 GEO-WA2-FN2-COMDIST A 3 R 2 GEO-WA2-FN2-COMDIST 3 GEO-WA2-FN2-COMDIST-BORO A 1 3 GEO-WA2-FN2-COMDIST-NUM A 2 2 GEO-WA2-FN2-ZIP A 5 2 GEO-WA2-FN2-SLA A 1 2 GEO-WA2-FN2-2010-CENSUSTRACT A 6 2 FILLER-WA2-290 A 3 2 GEO-WA2-FN2-HEALTHAREA A 4 2 FILLER-WA2-300 A 9 2 GEO-WA2-FN2-LIONNODENUM A 7 2 GEO-WA2-FN2-XCOORD A 7 2 GEO-WA2-FN2-YCOORD A 7 2 FILLER-WA2-320 A 4 2 GEO-WA2-FN2-POLICEDIST A 4 R 2 GEO-WA2-FN2-POLICEDIST 3 GEO-WA2-FN2-POL-PATR-BORO-CMD A 1 3 GEO-WA2-FN2-POL-PRECINCT A 3 2 GEO-WA2-FN2-SCHOOLDIST A 2 2 GEO-WA2-FN2-MARBLE-RIKERS-FLAG A 1 2 GEO-WA2-FN2-1990-CENSUSTRACT A 6 2 GEO-WA2-FN2-SANBORN1-BVOLPAGE A 8 R 2 GEO-WA2-FN2-SANBORN1-BVOLPAGE 3 GEO-WA2-FN2-SANBORN1-BORO A 1 3 GEO-WA2-FN2-SANBORN1-VOLPAGE A 7 R 3 GEO-WA2-FN2-SANBORN1-VOLPAGE 4 GEO-WA2-FN2-SANBORN1-VOL-NUM A 3 4 GEO-WA2-FN2-SANBORN1-PAGE-NUM A 4 2 GEO-WA2-FN2-SANBORN2-BVOLPAGE A 8 R 2 GEO-WA2-FN2-SANBORN2-BVOLPAGE 3 GEO-WA2-FN2-SANBORN2-BORO A 1 3 GEO-WA2-FN2-SANBORN2-VOLPAGE A 7 R 3 GEO-WA2-FN2-SANBORN2-VOLPAGE 4 GEO-WA2-FN2-SANBORN2-VOL-NUM A 3 4 GEO-WA2-FN2-SANBORN2-PAGE-NUM A 4 2 GEO-WA2-FN2-DUP-INTRSCT-DISTNCE A 5 2 GEO-WA2-FN2-2000-CENSUSTRACT A 6 2 FILLER-WA2-330 A 27 * * END OF FUNCTION 2 LAYOUT * **** ******* * - -------------------------------- - ---- ------------------------------ * * BEGINNING OF FUNCTION 3 LAYOUT * **** ******* R 1 GEOLW2 2 GEO-WA2-FN3-ACCESS-KEY A 21 2 GEO-WA2-FN3-DUP-KEY-FLAG A 1 /* OR FN3 CONTI PARITY 2 GEO-WA2-FN3-CURVE-FLAG A 1 2 GEO-WA2-FN3-LOCATION-STATUS A 1 2 GEO-WA2-FN3-COUNTY-BOUNDARY A 1 2 FILLER-WA2-340 A 4 2 GEO-WA2-FN3-PREFERRED-LGC1 A 2 2 GEO-WA2-FN3-PREFERRED-LGC2 A 2 2 GEO-WA2-FN3-PREFERRED-LGC3 A 2 2 GEO-WA2-FN3-NUM-X-ST-LOW-END N 1 2 GEO-WA2-FN3-LOW-PBSC P 6 (1:5) 2 GEO-WA2-FN3-NUM-X-ST-HI-END N 1 2 GEO-WA2-FN3-HI-PBSC P 6 (1:5) 2 GEO-WA2-FN3-SLA A 1 2 GEO-WA2-FN3-REVERSALFLAG A 1 2 GEO-WA2-FN3-LEFT-COMDIST A 3 R 2 GEO-WA2-FN3-LEFT-COMDIST 3 GEO-WA2-FN3-LEFT-COMDIST-BORO A 1 3 GEO-WA2-FN3-LEFT-COMDIST-NUM A 2 2 GEO-WA2-FN3-RIGHT-COMDIST A 3 R 2 GEO-WA2-FN3-RIGHT-COMDIST 3 GEO-WA2-FN3-RIGHT-COMDIST-BORO A 1 3 GEO-WA2-FN3-RIGHT-COMDIST-NUM A 2 2 GEO-WA2-FN3-LEFT-ZIP A 5 2 GEO-WA2-FN3-RIGHT-ZIP A 5 2 FILLER-WA2-350A A 18 2 GEO-WA2-FN3-LEFT-HEALTHAREA A 4 2 GEO-WA2-FN3-RIGHT-HEALTHAREA A 4 2 GEO-WA2-FN3-LEFT-INSTRUCT-REG A 2 2 GEO-WA2-FN3-RIGHT-INSTRUCT-REG A 2 2 GEO-WA2-FN3-LEFT-LOW-HOUSENUM A 7 2 GEO-WA2-FN3-LEFT-HI-HOUSENUM A 7 2 GEO-WA2-FN3-RIGHT-LOW-HOUSENUM A 7 2 GEO-WA2-FN3-RIGHT-HI-HOUSENUM A 7 2 GEO-WA2-FN3-CONT-PARITY-IND A 1 2 GEO-WA2-FN3-LIONFACECODE A 4 2 GEO-WA2-FN3-LIONSEQ A 5 2 GEO-WA2-FN3-GENRECFLAG A 1 2 GEO-WA2-FN3-SEGMENTLENGTH P 5 2 GEO-WA2-FN3-SEGMENTSLOPE A 3 2 GEO-WA2-FN3-SEGMENTORIENT A 1 2 FILLER-WA2-355 A 4 2 GEO-WA2-FN3-RESSDCP A 2 /* RESERVED FOR DCP/GSS USE 2 GEO-WA2-FN3-DOG-LEG A 1 2 GEO-WA2-FN3-FEATURE-TYPE A 1 2 GEO-WA2-FN3-LEFT-POLICEDIST A 4 R 2 GEO-WA2-FN3-LEFT-POLICEDIST 3 GEO-WA2-FN3-L-POL-PATR-BORO-CMD A 1 3 GEO-WA2-FN3-LEFT-POL-PRECINCT A 3 2 GEO-WA2-FN3-RIGHT-POLICEDIST A 4 R 2 GEO-WA2-FN3-RIGHT-POLICEDIST 3 GEO-WA2-FN3-R-POL-PATR-BORO-CMD A 1 3 GEO-WA2-FN3-RIGHT-POL-PRECINCT A 3 2 GEO-WA2-FN3-LEFT-SCHOOLDIST A 2 2 GEO-WA2-FN3-RIGHT-SCHOOLDIST A 2 2 GEO-WA2-FN3-MARBLE-RIKERS-FLAG A 1 2 GEO-WA2-FN3-SEGMENT-ID A 7 2 GEO-WA2-FN3-SEGMENT-TYPE A 1 * * END OF FUNCTION 3 LAYOUT **** ******** * - -------------------------------- - ---- ------------------------------ * * BEGINNING OF FUNCTION 3C LAYOUT **** ******** R 1 GEOLW2 2 GEO-WA2-FN3C-ACCESS-KEY A 21 2 GEO-WA2-FN3C-CURVE-FLAG A 1 2 GEO-WA2-FN3C-SEGMENT-TYPE A 1 2 GEO-WA2-FN3C-LOCATION-STATUS A 1 2 GEO-WA2-FN3C-COUNTY-BOUNDARY A 1 2 FILLER-WA2-380 A 4 2 GEO-WA2-FN3C-PREFERRED-LGC1 A 2 2 GEO-WA2-FN3C-PREFERRED-LGC2 A 2 2 GEO-WA2-FN3C-PREFERRED-LGC3 A 2 2 GEO-WA2-FN3C-NUM-X-ST-LOW-END N 1 2 GEO-WA2-FN3C-LOW-PBSC P 6 (1:5) 2 GEO-WA2-FN3C-NUM-X-ST-HI-END N 1 2 GEO-WA2-FN3C-HI-PBSC P 6 (1:5) 2 GEO-WA2-FN3C-COMDIST A 3 R 2 GEO-WA2-FN3C-COMDIST 3 GEO-WA2-FN3C-COMDIST-BORO A 1 3 GEO-WA2-FN3C-COMDIST-NUM A 2 2 GEO-WA2-FN3C-ZIP A 5 2 GEO-WA2-FN3C-SLA A 1 2 GEO-WA2-FN3C-2000-CENSUSTRACT A 6 2 FILLER-WA2-390 A 1 2 GEO-WA2-FN3C-2010-CENSUSTRACT A 6 2 GEO-WA2-FN3C-2010-CENSUSBLOCK A 4 2 GEO-WA2-FN3C-2010-CENSUSBLKSFX A 1 /* NOT IMPLEMENTED \\*/ 2 GEO-WA2-FN3C-HEALTHAREA A 4 2 GEO-WA2-FN3C-REVERSALFLAG A 1 2 GEO-WA2-FN3C-SOS A 1 2 GEO-WA2-FN3C-FIRESEC A 2 2 GEO-WA2-FN3C-FIREBAT A 2 2 GEO-WA2-FN3C-FIRECO A 4 R 2 GEO-WA2-FN3C-FIRECO 3 GEO-WA2-FN3C-FIRECO-TYPE A 1 3 GEO-WA2-FN3C-FIRECO-NUM A 3 2 GEO-WA2-FN3C-SEGMENT-ID A 7 2 GEO-WA2-FN3C-LOW-HOUSENUM A 7 2 GEO-WA2-FN3C-HI-HOUSENUM A 7 2 GEO-WA2-FN3C-LOW-HOUSENUM2 A 7 /* HOUSENUM2 ONLY PRESENT IF 2 GEO-WA2-FN3C-HI-HOUSENUM2 A 7 /* ODD & EVEN ARE ON SAME SIDE 2 GEO-WA2-FN3C-CONT-PARITY-IND A 1 2 GEO-WA2-FN3C-LIONFACECODE A 4 2 GEO-WA2-FN3C-LIONSEQ A 5 2 GEO-WA2-FN3C-GENRECFLAG A 1 2 GEO-WA2-FN3C-SEGMENTLENGTH P 5 2 GEO-WA2-FN3C-SEGMENTSLOPE A 3 2 GEO-WA2-FN3C-SEGMENTORIENT A 1 2 FILLER-WA2-408 A 2 2 GEO-WA2-FN3C-RESDCP A 1 /* RESERVED FOR DCP/GSS USE 2 GEO-WA2-FN3C-FEATURE-TYPE A 1 2 GEO-WA2-FN3C-POLICEDIST A 4 R 2 GEO-WA2-FN3C-POLICEDIST 3 GEO-WA2-FN3C-POL-PATR-BORO-CMD A 1 3 GEO-WA2-FN3C-POL-PRECINCT A 3 2 GEO-WA2-FN3C-SCHOOLDIST A 2 2 GEO-WA2-FN3C-MARBLE-RIKERS-FLAG A 1 2 GEO-WA2-FN3C-1990-CENSUSTRACT A 6 2 FILLER-WA2-410B A 4 2 GEO-WA2-FN3C-DYN-BLOCK A 3 2 GEO-WA2-FN3C-2000-CENSUSBLOCK A 4 2 GEO-WA2-FN3C-2000-CENSUSBLKSFX A 1 \\* * END OF FUNCTION 3C LAYOUT * **** ******* \\* - -------------------------------- - ---- ------------------------------ \\* * BEGINNING OF FUNCTION 1E LAYOUT * **** ******* R 1 GEOLW2 2 GEO-WA2-FN1E-ACCESS-KEY A 21 2 GEO-WA2-FN1E-CONT-PARITY A 1 2 GEO-WA2-FN1E-LOW-HOUSENUM-INT A 6 R 2 GEO-WA2-FN1E-LOW-HOUSENUM-INT 3 GEO-WA2-FN1E-LOW-HOUSENUM A 5 3 GEO-WA2-FN1E-LOW-HOUSENUMSFX A 1 /* NOT IMPLEMENTED 2 GEO-WA2-FN1E-HI-HOUSENUM-INT A 6 R 2 GEO-WA2-FN1E-HI-HOUSENUM-INT 3 GEO-WA2-FN1E-HI-HOUSENUM A 5 3 GEO-WA2-FN1E-HI-HOUSENUMSFX A 1 /* NOT IMPLEMENTED 2 FILLER-WA2-435 A 1 2 GEO-WA2-FN1E-NUM-X-ST-LOW-END N 1 2 GEO-WA2-FN1E-LOW-PBSC P 6 (1:5) 2 GEO-WA2-FN1E-NUM-X-ST-HI-END N 1 2 GEO-WA2-FN1E-HI-PBSC P 6 (1:5) 2 GEO-WA2-FN1E-COMDIST A 3 R 2 GEO-WA2-FN1E-COMDIST 3 GEO-WA2-FN1E-COMDIST-BORO A 1 3 GEO-WA2-FN1E-COMDIST-NUM A 2 2 GEO-WA2-FN1E-ZIP A 5 2 GEO-WA2-FN1E-SLA A 1 2 GEO-WA2-FN1E-HCD A 2 2 GEO-WA2-FN1E-SOS A 1 2 GEO-WA2-FN1E-CONT-PARITY-IND A 1 2 GEO-WA2-FN1E-2010-CENSUSTRACT A 6 2 GEO-WA2-FN1E-2010-CENSUSBLOCK A 4 2 GEO-WA2-FN1E-2010-CENSUSBLKSFX A 1 2 FILLER-WA2-FN1E-FILLER-INDV A 1 2 FILLER-WA2-440 A 2 2 GEO-WA2-FN1E-HEALTHAREA A 4 2 GEO-WA2-FN1E-SANI-REC A 3 2 GEO-WA2-FN1E-FEATURE-TYPE A 1 2 GEO-WA2-FN1E-RESDCP A 1 /* RESERVED FOR DCP/GSS USE 2 GEO-WA2-FN1E-CURVE-FLAG A 1 2 GEO-WA2-FN1E-POLICEDIST A 4 R 2 GEO-WA2-FN1E-POLICEDIST 3 GEO-WA2-FN1E-POL-PATR-BORO-CMD A 1 3 GEO-WA2-FN1E-POL-PRECINCT A 3 2 GEO-WA2-FN1E-SCHOOLDIST A 2 2 GEO-WA2-FN1E-ELECTDIST A 3 2 GEO-WA2-FN1E-ASSEMDIST A 2 2 GEO-WA2-FN1E-SPLIT-ED-FLAG A 1 2 GEO-WA2-FN1E-CONGDIST A 2 2 GEO-WA2-FN1E-SENATEDIST A 2 2 GEO-WA2-FN1E-COURTDIST A 2 2 GEO-WA2-FN1E-COUNCILDIST A 2 2 FILLER-WA2-470 A 2 2 GEO-WA2-FN1E-SANIDIST A 3 R 2 GEO-WA2-FN1E-SANIDIST 3 GEO-WA2-FN1E-SANIDIST-BORO A 1 3 GEO-WA2-FN1E-SANIDIST-NUM A 2 2 GEO-WA2-FN1E-SANITATION-SUBSEC A 2 2 GEO-WA2-FN1E-FIRESEC A 2 2 GEO-WA2-FN1E-FIREBAT A 2 2 GEO-WA2-FN1E-FIRECO A 4 R 2 GEO-WA2-FN1E-FIRECO 3 GEO-WA2-FN1E-FIRECO-TYPE A 1 3 GEO-WA2-FN1E-FIRECO-NUM A 3 2 GEO-WA2-FN1E-SPECIAL-ADDR-FLAG A 1 2 GEO-WA2-FN1E-MARBLE-RIKERS-FLAG A 1 2 GEO-WA2-FN1E-SPLIT-SCHOOL-FLAG A 1 2 GEO-WA2-FN1E-PREFERRED-LGC A 2 2 GEO-WA2-FN1E-LIONFACECODE A 4 2 GEO-WA2-FN1E-LIONSEQ A 5 2 GEO-WA2-FN1E-1990-CENSUSTRACT A 6 2 FILLER-WA2-480B A 4 2 GEO-WA2-FN1E-DYN-BLOCK A 3 2 GEO-WA2-FN1E-XCOORD A 7 2 GEO-WA2-FN1E-YCOORD A 7 2 GEO-WA2-FN1E-SEGMENTLENGTH A 5 2 GEO-WA2-FN1E-SANI-REG A 5 \\* * END OF FUNCTION 1E LAYOUT * **** ******* \\* - -------------------------------- - ---- ------------------------------ \\* * BEGINNING OF FUNCTION 5 LAYOUT * **** ******* R 1 GEOLW2 2 GEO-WA2-FN5-ADDR-MATCHING-KEY A 28 2 FILLER-WA2-490 A 172 \\* * END OF FUNCTION 5 LAYOUT * **** ******* \\* - -------------------------------- - ---- ------------------------------ GEOLW2L COPY File 1 GEOLW2L \\* * THE FIELD W2NATL IS USED AS A PARAMETER TO CALL GEOSUPPORT 2 W2NATL A 21 R 2 W2NATL \\* * BEGINNING OF FUNCTION 1 LONG WORKAREA LAYOUT ****** 3 GEO-WA2-1L-ACCESS-KEY A 21 2 GEO-WA2-1L-CONT-PARITY A 1 2 GEO-WA2-1L-LOW-HOUSENUM-INT A 6 R 2 GEO-WA2-1L-LOW-HOUSENUM-INT 3 GEO-WA2-1L-LOW-HOUSENUM A 5 3 GEO-WA2-1L-LOW-HOUSENUMSFX A 1 2 GEO-WA2-1L-HI-HOUSENUM-INT A 6 R 2 GEO-WA2-1L-HI-HOUSENUM-INT 3 GEO-WA2-1L-HI-HOUSENUM A 5 3 GEO-WA2-1L-HI-HOUSENUMSFX A 1 2 FILLER-WA2-215 A 1 2 GEO-WA2-1L-NUM-X-ST-LOW-END N 1 2 GEO-WA2-1L-LOW-PBSC P 6 (1:5) 2 GEO-WA2-1L-NUM-X-ST-HI-END N 1 2 GEO-WA2-1L-HI-PBSC P 6 (1:5) 2 GEO-WA2-1L-COMDIST A 3 R 2 GEO-WA2-1L-COMDIST 3 GEO-WA2-1L-COMDIST-BORO A 1 3 GEO-WA2-1L-COMDIST-NUM A 2 2 GEO-WA2-1L-ZIP A 5 2 GEO-WA2-1L-SLA A 1 2 GEO-WA2-1L-HCD A 2 2 GEO-WA2-1L-SOS A 1 2 GEO-WA2-1L-CONT-PARITY-IND A 1 2 GEO-WA2-1L-2010-CENSUSTRACT A 6 2 GEO-WA2-1L-2010-CENSUSBLOCK A 4 2 GEO-WA2-1L-2010-CENSUSBLKSFX A 1 2 FILLER-1L-INDV A 1 2 FILLER-1L-260 A 2 2 GEO-WA2-1L-HEALTHAREA A 4 2 GEO-WA2-1L-SANI-REC A 3 2 GEO-WA2-1L-FEATURE-TYPE A 1 2 GEO-WA2-1L-RESDCP A 1 /* RESERVED FOR DCP/GSS USE 2 GEO-WA2-1L-CURVE-FLAG A 1 2 GEO-WA2-1L-POLICEDIST A 4 R 2 GEO-WA2-1L-POLICEDIST 3 GEO-WA2-1L-POL-PATR-BORO-CMD A 1 3 GEO-WA2-1L-POL-PRECINCT A 3 2 GEO-WA2-1L-SCHOOLDIST A 2 2 FILLER-WA2-250 A 16 /* 1E POL DIST 2 GEO-WA2-1L-SANIDIST A 3 R 2 GEO-WA2-1L-SANIDIST 3 GEO-WA2-1L-SANIDIST-BORO A 1 3 GEO-WA2-1L-SANIDIST-NUM A 2 2 GEO-WA2-1L-SANITATION-SUBSEC A 2 2 GEO-WA2-1L-FIRESEC A 2 /* FIRE DIVISION 2 GEO-WA2-1L-FIREBAT A 2 2 GEO-WA2-1L-FIRECO A 4 R 2 GEO-WA2-1L-FIRECO 3 GEO-WA2-1L-FIRECO-TYPE A 1 3 GEO-WA2-1L-FIRECO-NUM A 3 2 GEO-WA2-1L-SPECIAL-ADDR-FLAG A 1 2 GEO-WA2-1L-MARBLE-RIKERS-FLAG A 1 2 GEO-WA2-1L-SPLIT-SCHOOL-FLAG A 1 2 GEO-WA2-1L-PREFERRED-LGC A 2 2 GEO-WA2-1L-LIONFACECODE A 4 2 GEO-WA2-1L-LIONSEQ A 5 2 GEO-WA2-1L-1990-CENSUSTRACT A 6 2 FILLER-WA2-260B A 4 2 GEO-WA2-1L-DYN-BLOCK A 3 2 GEO-WA2-1L-XCOORD A 7 2 GEO-WA2-1L-YCOORD A 7 2 GEO-WA2-1L-SEGMENTLENGTH A 5 2 GEO-WA2-1L-SANI-REG A 5 2 GEO-WA2-1L-SEGMENT-ID A 7 2 GEO-WA2-1L-TRUE-B7SC A 8 2 GEO-WA2-1L-UNDERLY-HOUSENUM-INT A 6 R 2 GEO-WA2-1L-UNDERLY-HOUSENUM-INT 3 GEO-WA2-1L-UNDERLY-HOUSENUM A 5 3 GEO-WA2-1L-UNDERLY-HOUSENUMSFX A 1 2 GEO-WA2-1L-2000-CENSUSTRACT A 6 2 GEO-WA2-1L-2000-CENSUSBLOCK A 4 2 GEO-WA2-1L-2000-CENSUSBLKSFX A 1 2 FILLER-WA2-260C A 68 \\* * END OF FUNCTION 1 LONG WORKAREA LAYOUT ****** \\* - -------------------------------- - ---- ---------------------------- \\* * BEGINNING OF FUNCTION 1E LONG WORKAREA LAYOUT ****** R 1 GEOLW2L 2 GEO-WA2-1EL-ACCESS-KEY A 21 2 GEO-WA2-1EL-CONT-PARITY A 1 2 GEO-WA2-1EL-LOW-HOUSENUM-INT A 6 R 2 GEO-WA2-1EL-LOW-HOUSENUM-INT 3 GEO-WA2-1EL-LOW-HOUSENUM A 5 3 GEO-WA2-1EL-LOW-HOUSENUMSFX A 1 /* NOT IMPLEMENTED 2 GEO-WA2-1EL-HI-HOUSENUM-INT A 6 R 2 GEO-WA2-1EL-HI-HOUSENUM-INT 3 GEO-WA2-1EL-HI-HOUSENUM A 5 3 GEO-WA2-1EL-HI-HOUSENUMSFX A 1 /* NOT IMPLEMENTED 2 FILLER-WA2-435 A 1 2 GEO-WA2-1EL-NUM-X-ST-LOW-END N 1 2 GEO-WA2-1EL-LOW-PBSC P 6 (1:5) 2 GEO-WA2-1EL-NUM-X-ST-HI-END N 1 2 GEO-WA2-1EL-HI-PBSC P 6 (1:5) 2 GEO-WA2-1EL-COMDIST A 3 R 2 GEO-WA2-1EL-COMDIST 3 GEO-WA2-1EL-COMDIST-BORO A 1 3 GEO-WA2-1EL-COMDIST-NUM A 2 2 GEO-WA2-1EL-ZIP A 5 2 GEO-WA2-1EL-SLA A 1 2 GEO-WA2-1EL-HCD A 2 2 GEO-WA2-1EL-SOS A 1 2 GEO-WA2-1EL-CONT-PARITY-IND A 1 2 GEO-WA2-1EL-2010-CENSUSTRACT A 6 2 GEO-WA2-1EL-2010-CENSUSBLOCK A 4 2 GEO-WA2-1EL-2010-CENSUSBLKSFX A 1 2 FILLER-WA2-1EL-INDV A 1 2 FILLER-WA2-440C A 2 2 GEO-WA2-1EL-HEALTHAREA A 4 2 GEO-WA2-1EL-SANI-REC A 3 2 GEO-WA2-1EL-FEATURE-TYPE A 1 2 GEO-WA2-1EL-RESDCP A 1 /* RESERVED FOR DCP/GSS USE 2 GEO-WA2-1EL-CURVE-FLAG A 1 2 GEO-WA2-1EL-POLICEDIST A 4 R 2 GEO-WA2-1EL-POLICEDIST 3 GEO-WA2-1EL-POL-PATR-BORO-CMD A 1 3 GEO-WA2-1EL-POL-PRECINCT A 3 2 GEO-WA2-1EL-SCHOOLDIST A 2 2 GEO-WA2-1EL-ELECTDIST A 3 2 GEO-WA2-1EL-ASSEMDIST A 2 2 GEO-WA2-1EL-SPLIT-ED-FLAG A 1 2 GEO-WA2-1EL-CONGDIST A 2 2 GEO-WA2-1EL-SENATEDIST A 2 2 GEO-WA2-1EL-COURTDIST A 2 2 GEO-WA2-1EL-COUNCILDIST A 2 2 FILLER-WA2-470 A 2 2 GEO-WA2-1EL-SANIDIST A 3 R 2 GEO-WA2-1EL-SANIDIST 3 GEO-WA2-1EL-SANIDIST-BORO A 1 3 GEO-WA2-1EL-SANIDIST-NUM A 2 2 GEO-WA2-1EL-SANITATION-SUBSEC A 2 2 GEO-WA2-1EL-FIRESEC A 2 2 GEO-WA2-1EL-FIREBAT A 2 2 GEO-WA2-1EL-FIRECO A 4 R 2 GEO-WA2-1EL-FIRECO 3 GEO-WA2-1EL-FIRECO-TYPE A 1 3 GEO-WA2-1EL-FIRECO-NUM A 3 2 GEO-WA2-1EL-SPECIAL-ADDR-FLAG A 1 2 GEO-WA2-1EL-MARBLE-RIKERS-FLAG A 1 2 GEO-WA2-1EL-SPLIT-SCHOOL-FLAG A 1 2 GEO-WA2-1EL-PREFERRED-LGC A 2 2 GEO-WA2-1EL-LIONFACECODE A 4 2 GEO-WA2-1EL-LIONSEQ A 5 2 GEO-WA2-1EL-1990-CENSUSTRACT A 6 2 FILLER-WA2L-480B A 4 2 GEO-WA2-1EL-DYN-BLOCK A 3 2 GEO-WA2-1EL-XCOORD A 7 2 GEO-WA2-1EL-YCOORD A 7 2 GEO-WA2-1EL-SEGMENTLENGTH A 5 2 GEO-WA2-1EL-SANI-REG A 5 2 GEO-WA2-1EL-SEGMENT-ID A 7 2 GEO-WA2-1EL-TRUE-B7SC A 8 2 GEO-WA2-1EL-UNDER-HOUSENUM-INT A 6 2 GEO-WA2-1EL-2000-CENSUSTRACT A 6 2 GEO-WA2-1EL-2000-CENSUSBLOCK A 4 2 GEO-WA2-1EL-2000-CENSUSBLKSFX A 1 2 FILLER-WA2-480 A 68 \\* * END OF FUNCTION 1E LONG WORKAREA LAYOUT ****** \\* - -------------------------------- - ---- ---------------------------- \\* * BEGINNING OF FUNCTION 3 LONG WORKAREA LAYOUT ****** R 1 GEOLW2L 2 GEO-WA2-3L-ACCESS-KEY A 21 2 GEO-WA2-3L-DUP-KEY-FLAG A 1 /* NOT IMPLEMENTED 2 GEO-WA2-3L-CURVE-FLAG A 1 2 GEO-WA2-3L-LOCATION-STATUS A 1 2 GEO-WA2-3L-COUNTY-BOUNDARY A 1 2 FILLER-WA2-340 A 4 2 GEO-WA2-3L-PREFERRED-LGC1 A 2 2 GEO-WA2-3L-PREFERRED-LGC2 A 2 2 GEO-WA2-3L-PREFERRED-LGC3 A 2 2 GEO-WA2-3L-NUM-X-ST-LOW-END N 1 2 GEO-WA2-3L-LOW-PBSC P 6 (1:5) 2 GEO-WA2-3L-NUM-X-ST-HI-END N 1 2 GEO-WA2-3L-HI-PBSC P 6 (1:5) 2 GEO-WA2-3L-SLA A 1 2 GEO-WA2-3L-REVERSALFLAG A 1 2 GEO-WA2-3L-LEFT-COMDIST A 3 R 2 GEO-WA2-3L-LEFT-COMDIST 3 GEO-WA2-3L-LEFT-COMDIST-BORO A 1 3 GEO-WA2-3L-LEFT-COMDIST-NUM A 2 2 GEO-WA2-3L-RIGHT-COMDIST A 3 R 2 GEO-WA2-3L-RIGHT-COMDIST 3 GEO-WA2-3L-RIGHT-COMDIST-BORO A 1 3 GEO-WA2-3L-RIGHT-COMDIST-NUM A 2 2 GEO-WA2-3L-LEFT-ZIP A 5 2 GEO-WA2-3L-RIGHT-ZIP A 5 2 FILLER-WA2-340B A 18 2 GEO-WA2-3L-LEFT-HEALTHAREA A 4 2 GEO-WA2-3L-RIGHT-HEALTHAREA A 4 2 GEO-WA2-3L-LEFT-INSTRUCT-REG A 2 2 GEO-WA2-3L-RIGHT-INSTRUCT-REG A 2 2 GEO-WA2-3L-LEFT-LOW-HOUSENUM A 7 2 GEO-WA2-3L-LEFT-HI-HOUSENUM A 7 2 GEO-WA2-3L-RIGHT-LOW-HOUSENUM A 7 2 GEO-WA2-3L-RIGHT-HI-HOUSENUM A 7 2 GEO-WA2-3L-CONT-PARITY-IND A 1 2 GEO-WA2-3L-LIONFACECODE A 4 2 GEO-WA2-3L-LIONSEQ A 5 2 GEO-WA2-3L-GENRECFLAG A 1 2 GEO-WA2-3L-SEGMENTLENGTH P 5 2 GEO-WA2-3L-SEGMENTSLOPE A 3 2 GEO-WA2-3L-SEGMENTORIENT A 1 2 FILLER-WA2-3L-355 A 4 2 GEO-WA2-3L-RESDCP A 2 /* RESERVED FOR DCP/GSS USE 2 GEO-WA2-3L-DOG-LEG A 1 2 GEO-WA2-3L-FEATURE-TYPE A 1 2 GEO-WA2-3L-LEFT-POLICEDIST A 4 R 2 GEO-WA2-3L-LEFT-POLICEDIST 3 GEO-WA2-3L-L-POL-PATR-BORO-CMD A 1 3 GEO-WA2-3L-LEFT-POL-PRECINCT A 3 2 GEO-WA2-3L-RIGHT-POLICEDIST A 4 R 2 GEO-WA2-3L-RIGHT-POLICEDIST 3 GEO-WA2-3L-R-POL-PATR-BORO-CMD A 1 3 GEO-WA2-3L-RIGHT-POL-PRECINCT A 3 2 GEO-WA2-3L-LEFT-SCHOOLDIST A 2 2 GEO-WA2-3L-RIGHT-SCHOOLDIST A 2 2 GEO-WA2-3L-MARBLE-RIKERS-FLAG A 1 2 GEO-WA2-3L-SEGMENT-ID A 7 2 FILLER-WA2-3L-370 A 1 \\* * ******************************** * **** **************************** \\* THE PORTION OF THIS WORK AREA ABOVE THIS POINT IS \\* IDENTICAL TO THE STANDARD WORK AREA 2 FOR FUNCTION 3. \\* THE PORTION BELOW THIS POINT IS PRESENT ONLY FOR THE \\* LONG WORK AREA 2 OPTION. \\* * ******************************** * **** **************************** 2 GEO-WA2-3L-L-1990-CENSUSTRACT A 6 2 FILLER-WA2-370B A 4 2 GEO-WA2-3L-LEFT-DYN-BLK A 3 2 GEO-WA2-3L-R-1990-CENSUSTRACT A 6 2 GEO-WA2-370C A 4 2 GEO-WA2-3L-RIGHT-DYN-BLK A 3 2 GEO-WA2-3L-LEFT-FIRESEC A 2 2 GEO-WA2-3L-LEFT-FIREBAT A 2 2 GEO-WA2-3L-LEFT-FIRECO A 4 R 2 GEO-WA2-3L-LEFT-FIRECO 3 GEO-WA2-3L-LEFT-FIRECO-TYPE A 1 3 GEO-WA2-3L-LEFT-FIRECO-NUM A 3 2 GEO-WA2-3L-RIGHT-FIRESEC A 2 2 GEO-WA2-3L-RIGHT-FIREBAT A 2 2 GEO-WA2-3L-RIGHT-FIRECO A 4 R 2 GEO-WA2-3L-RIGHT-FIRECO 3 GEO-WA2-3L-RIGHT-FIRECO-TYPE A 1 3 GEO-WA2-3L-RIGHT-FIRECO-NUM A 3 2 GEO-WA2-3L-L-2010-CENSUSTRACT A 6 2 GEO-WA2-3L-L-2010-CENSUSBLOCK A 4 2 GEO-WA2-3L-L-2010-CENSUSBLKSFX A 1 2 GEO-WA2-3L-R-2010-CENSUSTRACT A 6 2 GEO-WA2-3L-R-2010-CENSUSBLOCK A 4 2 GEO-WA2-3L-R-2010-CENSUSBLKSFX A 1 2 GEO-WA2-3L-FROM-NODE A 7 2 GEO-WA2-3L-TO-NODE A 7 2 GEO-WA2-3L-L-2000-CENSUSTRACT A 6 2 GEO-WA2-3L-L-2000-CENSUSBLOCK A 4 2 GEO-WA2-3L-L-2000-CENSUSBLKSFX A 1 2 GEO-WA2-3L-R-2000-CENSUSTRACT A 6 2 GEO-WA2-3L-R-2000-CENSUSBLOCK A 4 2 GEO-WA2-3L-R-2000-CENSUSBLKSFX A 1 \\* * END OF FUNCTION 3 LONG WORKAREA LAYOUT ****** \\* - -------------------------------- - ---- ---------------------------- GEOLW21A COPY File 1 GEOLW21A /\\*FCT 1A,BL USE SAME WA2 LAYOUT \\* * THE FIELD W2NAT1A IS USED AS A PARAMETER TO CALL GEOSUPPORT 2 W2NAT1A A 21 R 2 W2NAT1A 3 GEO-WA2-1A-ACCESS-KEY A 21 2 GEO-WA2-1A-CONT-PARITY A 1 2 GEO-WA2-1A-LOW-HOUSENUM A 6 2 GEO-WA2-1A-ALTKEY-1 A 10 R 2 GEO-WA2-1A-ALTKEY-1 3 GEO-WA2-1A-ALTKEY-1-BORO A 1 3 GEO-WA2-1A-ALTKEY-1-TAXBLOCK A 5 3 GEO-WA2-1A-ALTKEY-1-TAXLOT A 4 2 FILLER-WA2-1A-230 A 1 2 GEO-WA2-1A-SCC A 1 2 FILLER-WA2-1A-240 A 1 2 GEO-WA2-1A-GENERAL-LOT-INFO 3 GEO-WA2-1A-RPAD-BLDG-CLASS A 2 3 GEO-WA2-1A-CORNER-CODE A 2 3 GEO-WA2-1A-NUM-OF-STRUCTURES A 2 3 GEO-WA2-1A-NUM-OF-BLOCKFACES A 2 3 GEO-WA2-1A-INTERIOR-FLAG A 1 3 GEO-WA2-1A-VACANT-FLAG A 1 3 GEO-WA2-1A-IRREG-FLAG A 1 2 GEO-WA2-1A-ALT-BORO-FLAG A 1 2 FILLER-WA2-1A-245 A 1 2 GEO-WA2-1A-STROLL-KEY A 13 2 GEO-WA2-1A-OVERFLOW-FLAG A 1 2 FILLER-WA2-1A-251 A 1 /* USED FOR DCP 2 GEO-WA2-1A-BIN A 7 2 GEO-WA2-1A-CONDO-FLAG A 1 2 GEO-WA2-1A-RPAD-CONDO-NUM A 4 2 GEO-WA2-1A-CONDO-LOW-BBL A 10 2 FILLER-WA2-1A-260 A 1 2 GEO-WA2-1A-CONDO-BILL-BBL A 10 2 FILLER-WA2-1A-270 A 1 2 GEO-WA2-1A-CONDO-BILL-BBL-SCC A 1 2 GEO-WA2-1A-CONDO-HIGH-BBL A 10 2 FILLER-WA2-1A-275 A 1 2 GEO-WA2-1A-SANBORN-BVOLPAGE A 8 R 2 GEO-WA2-1A-SANBORN-BVOLPAGE 3 GEO-WA2-1A-SANBORN-BORO A 1 3 GEO-WA2-1A-SANBORN-VOLPAGE A 7 R 3 GEO-WA2-1A-SANBORN-VOLPAGE 4 GEO-WA2-1A-SANBORN-VOL-NUM A 3 4 GEO-WA2-1A-SANBORN-VOL-PAGE A 4 2 GEO-WA2-1A-COMMERC-DIST A 5 2 GEO-WA2-1A-COOP-NUM A 4 2 FILLER-WA2-1A-276 A 4 2 GEO-WA2-1A-ACTUAL-NUM-STRUCTS A 4 2 GEO-WA2-1A-DOF-MAP-BORO A 1 2 GEO-WA2-1A-DOF-MAP-SECVOL A 4 2 GEO-WA2-1A-DOF-MAP-PAGE A 4 2 GEO-WA2-1A-X-COORD A 7 2 GEO-WA2-1A-Y-COORD A 7 2 FILLER-WA2-1A-280 A 18 2 GEO-WA2-1A-NUM-OF-ADDR-FOR-LOT N 2 2 GEO-WA2-1A-LIST-OF-ADDRESSES (1:21) 3 GEO-WA2-1A-LIST-LOW-HOUSENUM A 6 3 FILLER-WA2-1A-290 A 3 3 GEO-WA2-1A-LIST-HI-HOUSENUM A 6 3 FILLER-WA2-1A-300 A 3 3 GEO-WA2-1A-LIST-STREETCODE A 8 3 GEO-WA2-1A-LIST-BIN A 7 3 GEO-WA2-1A-LIST-ADDR-TYPE A 1 3 FILLER-WA2-1A-310 A 1 3 GEO-WA2-1A-LIST-SOS A 1 GEOLW2AL COPY File 1 GEOLW2AL /\\*FCT 1A,BL USE SAME LONG WA2 \\* * THE FIELD W2NAT1AL IS USED AS A P ARA METER TO CALL GEOSUPPORT 2 W2NAT1AL A 21 R 2 W2NAT1AL 3 GEO-WA2-1AL-ACCESS-KEY A 21 2 GEO-WA2-1AL-CONT-PARITY A 1 2 GEO-WA2-1AL-LOW-HOUSENUM A 6 2 GEO-WA2-1AL-ALTKEY-1 A 10 R 2 GEO-WA2-1AL-ALTKEY-1 3 GEO-WA2-1AL-ALTKEY-1-BORO A 1 3 GEO-WA2-1AL-ALTKEY-1-TAXBLOCK A 5 3 GEO-WA2-1AL-ALTKEY-1-TAXLOT A 4 2 FILLER-WA2-1AL-230 A 1 2 GEO-WA2-1AL-SCC A 1 2 FILLER-WA2-1AL-240 A 1 2 GEO-WA2-1AL-GENERAL-LOT-INFO 3 GEO-WA2-1AL-RPAD-BLDG-CLASS A 2 3 GEO-WA2-1AL-CORNER-CODE A 2 3 GEO-WA2-1AL-NUM-OF-STRUCTURES A 2 3 GEO-WA2-1AL-NUM-OF-BLOCKFACES A 2 3 GEO-WA2-1AL-INTERIOR-FLAG A 1 3 GEO-WA2-1AL-VACANT-FLAG A 1 3 GEO-WA2-1AL-IRREG-LOT-FLAG A 1 2 GEO-WA2-1AL-ALT-BORO-FLAG A 1 2 FILLER-WA2-1AL-245 A 1 2 GEO-WA2-1AL-STROLL-KEY A 13 2 FILLER-WA2-1AL-250 A 1 2 FILLER-WA2-1AL-251 A 1 /* USED FOR DCP 2 GEO-WA2-1AL-BIN A 7 2 GEO-WA2-1AL-CONDO-FLAG A 1 2 GEO-WA2-1AL-RPAD-CONDO-NUM A 4 2 GEO-WA2-1AL-CONDO-LOW-BBL A 10 2 FILLER-WA2-1AL-260 A 1 2 GEO-WA2-1AL-CONDO-BILL-BBL A 10 2 FILLER-WA2-1AL-270 A 1 2 GEO-WA2-1AL-CONDO-BILL-BBL-SCC A 1 2 GEO-WA2-1AL-CONDO-HIGH-BBL A 10 2 FILLER-WA2-1AL-275 A 1 2 GEO-WA2-1AL-SANBORN-BVOLPAGE A 8 R 2 GEO-WA2-1AL-SANBORN-BVOLPAGE 3 GEO-WA2-1AL-SANBORN-BORO A 1 3 GEO-WA2-1AL-SANBORN-VOLPAGE A 7 R 3 GEO-WA2-1AL-SANBORN-VOLPAGE 4 GEO-WA2-1AL-SANBORN-VOL-NUM A 3 4 GEO-WA2-1AL-SANBORN-VOL-PAGE A 4 2 GEO-WA2-1AL-COMMERC-DIST A 5 2 GEO-WA2-1AL-COOP-NUM A 4 2 FILLER-WA2-1AL-276 A 4 2 GEO-WA2-1AL-ACTUAL-NUM-STRUCTS A 4 2 GEO-WA2-1AL-DOF-MAP-BORO A 1 2 GEO-WA2-1AL-DOF-MAP-SECVOL A 4 2 GEO-WA2-1AL-DOF-MAP-PAGE A 4 2 GEO-WA2-1AL-X-COORD A 7 2 GEO-WA2-1AL-Y-COORD A 7 2 FILLER-WA2-1AL-280 A 16 2 GEO-WA2-1AL-NUM-OF-BINS-FOR-LOT N 4 2 GEO-WA2-1AL-LIST-OF-BINS (1:2500) 3 GEO-WA2-1AL-BINS N 7 GEOLW23S COPY File 1 GEOLW23S \\* * THE FIELD W2NAT3S IS USED AS A PARAMETER TO CALL GEOSUPPORT 2 W2NAT3S A 21 R 2 W2NAT3S 3 GEO-WA2-3S-ACCESS-KEY A 21 2 GEO-WA2-3S-NUM-OF-INTERSECTS N 3 2 GEO-WA2-3S-LIST-OF-INTERSECTS (1:350) 3 GEO-WA2-3S-SMALLEST-PBSC P 6 3 GEO-WA2-3S-2ND-SMALLEST-PBSC P 6 3 GEO-WA2-3S-DISTANCE P 5 3 GEO-WA2-3S-GAP-FLAG A 1","title":"Appendix 5: Geosupport Copy Files (MSW)"},{"location":"appendices/appendix05/#cobol-copy-files-msw","text":"W1COB COPY File ******************************************************************** 00000100 ***** THIS IS GEOSUPPORT SYSTEM COPY FILE W1COB, CONTAINING ***** 00000200 ***** LAYOUT OF WORK AREA 1. COPYLIB2 04/07/98 ***** 00000300 ******************************************************************** 00000400 ***** INPUT FIELDS ***** 00000500 ******************************************************************** 00000600 05 GEO-WA1-IN-FUNCTION-CODE. 00000700 10 GEO-WA1-IN-FUNCTION-1 PIC X. 00000800 10 GEO-WA1-IN-FUNCTION-2 PIC X. 00000900 05 GEO-WA1-IN-BORO PIC X. 00001000 ** NOTE GEO-WA1-IN-HOUSENUM - HIGH HSE# INPUT IF FUNC 5 00001100 05 GEO-WA1-IN-HOUSENUM PIC X(12). 00001200 ** NOTE GEO-WA1-IN-HOUSENUM-INTERNAL - HIGH HSE# INPUT IF FUN5 00001300 05 GEO-WA1-IN-HOUSENUM-INTERNAL PIC X(6). 00001400 05 GEO-WA1-IN-STREET-1 PIC X(32). 00001500 05 GEO-WA1-IN-STREET-2 PIC X(32). 00001600 05 GEO-WA1-IN-STREET-3 PIC X(32). 00001700 05 GEO-WA1-IN-COMPASS PIC X. 00001802 05 GEO-WA1-IN-COMPASS2 PIC X. 00001904 05 GEO-WA1-IN-STREETCODE-1 PIC S9(6) COMP-3. 00002104 05 GEO-WA1-IN-STREETCODE-2 PIC S9(6) COMP-3. 00002204 05 GEO-WA1-IN-STREETCODE-3 PIC S9(6) COMP-3. 00002304 05 GEO-WA1-IN-ROADBED-REQ-SWITCH PIC X. 00002508 05 GEO-WA1-IN-BORO-2 PIC X. 00002604 05 GEO-WA1-IN-BORO-3 PIC X. 00002704 05 GEO-WA1-IN-SNL PIC X(2). 00002804 05 GEO-WA1-IN-10SC-1 PIC X(11). 00002904 05 GEO-WA1-IN-10SC-2 PIC X(11). 00003004 05 GEO-WA1-IN-10SC-3 PIC X(11). 00003104 05 GEO-WA1-IN-ZIPIN PIC X(5). 00003309 05 GEO-WA1-IN-BBL. 00003404 10 GEO-WA1-IN-BL-BORO PIC X. 00003504 10 GEO-WA1-IN-BLOCKNUM PIC X(5). 00003604 10 GEO-WA1-IN-LOTNUM PIC X(4). 00003704 05 FILLER PIC X. 00003804 05 GEO-WA1-IN-BIN PIC X(7). 00004004 **************************************************************** 00004104 ** NOTE: TO REQUEST COMPACT NAMES OPTION, SET ** 00004204 ** GEO-WA1-IN-COMPACT-NAME-FLAG TO \"C\". ** 00004304 ** NOTE: TO REQUEST THE LONG WORKAREA 2, SET ** 00004404 ** GEO-WA1-IN-LONG-WORKAREA2-FLAG TO \"L\". AT PRESENT, ** 00004504 ** ONLY FUNCTION 3 HAS THE LONG WA2 OPTION. ** 00004604 ** NOTE: IF APPLICATION IS RUNNING ON A NON-IBM MAIN FRAME, ** 00004704 ** SET GEO-WA1-IN-NON-IBM-MAIN-FRAME EQUAL TO \"X\" ** 00004804 ** NOTE: FOR FUNCTIONS 1A AND BL, TO REQUEST THE STANDARD ** 00004904 ** WORKAREA2 FORMAT, SET GEO-WA1-IN-1ABL-VERSION TO \"S\" ** 00005004 ** NOTE: TO REQUEST THE LEGACY WORKAREA2 FORMAT, ** 00005104 ** SET GEO-WA1-IN-1ABL-VERSION TO \" \" OR \"L\". ** 00005204 **************************************************************** 00005704 05 GEO-WA1-IN-COMPACT-NAME-FLAG PIC X. 00005804 05 GEO-WA1-IN-LONG-WORKAREA2-FLAG PIC X. 00005904 05 GEO-WA1-IN-LOW-HOUSENUM PIC X(12). 00006004 05 GEO-WA1-IN-LOW-HSENUM-INTERNAL PIC X(6). 00006104 05 GEO-WA1-IN-NON-IBM-MAIN-FRAME PIC X(1). 00006204 05 GEO-WA1-IN-1ABL-VERSION PIC X(1). 00006304 05 GEO-WA1-IN-XSTREET-FLAG PIC X(1). 00006404 05 GEO-WA1-IN-NONEED-STNAME-FLAG PIC X(1). 00006504 05 FILLER PIC X(3). 00006604 ******************************************************************** 00006704 ***** OUTPUT FIELDS ***** 00006804 ******************************************************************** 00006904 05 GEO-WA1-OUT-LOW-HOUSENUM PIC X(12). 00007004 05 GEO-WA1-OUT-BORONAME PIC X(9). 00007104 05 GEO-WA1-OUT-STREET-1 PIC X(32). 00007204 05 GEO-WA1-OUT-STREET-2 PIC X(32). 00007304 05 GEO-WA1-OUT-STREET-3 PIC X(32). 00007404 05 GEO-WA1-OUT-HOUSENUM PIC X(12). 00007504 05 GEO-WA1-OUT-HOUSENUM-INTERNAL PIC X(6). 00007604 05 GEO-WA1-OUT-HOUSE-INT-FORMAT REDEFINES 00007704 GEO-WA1-OUT-HOUSENUM-INTERNAL. 00007804 10 GEO-WA1-OUT-HOUSE-INT-PACKED PIC X(5). 00007904 10 GEO-WA1-OUT-HOUSE-INT-SUFFIX PIC X. 00008004 05 FILLER PIC X(7). 00008104 05 GEO-WA1-OUT-PB5SC-1 PIC S9(6) COMP-3. 00008204 05 GEO-WA1-OUT-PB-5SC-1 REDEFINES GEO-WA1-OUT-PB5SC-1. 00008304 10 FILLER PIC X(1). 00008404 10 GEO-WA1-OUT-STREETCODE-1-KEY PIC S9(5) COMP-3. 00008504 05 FILLER PIC X(2). 00008604 05 GEO-WA1-OUT-PB5SC-2 PIC S9(6) COMP-3. 00008704 05 GEO-WA1-OUT-PB-5SC-2 REDEFINES GEO-WA1-OUT-PB5SC-2. 00008804 10 FILLER PIC X(1). 00008904 10 GEO-WA1-OUT-STREETCODE-2-KEY PIC S9(5) COMP-3. 00009004 05 FILLER PIC X(2). 00009104 05 GEO-WA1-OUT-PB5SC-3 PIC S9(6) COMP-3. 00009204 05 GEO-WA1-OUT-PB-5SC-3 REDEFINES GEO-WA1-OUT-PB5SC-3. 00009304 10 FILLER PIC X(1). 00009404 10 GEO-WA1-OUT-STREETCODE-3-KEY PIC S9(5) COMP-3. 00009504 05 FILLER PIC X(3). 00009604 05 GEO-WA1-BROWSE PIC X(40). 00009704 05 GEO-WA1-OUT-10SC-1 PIC X(11). 00009804 05 GEO-WA1-OUT-10SC-2 PIC X(11). 00009904 05 GEO-WA1-OUT-10SC-3 PIC X(11). 00010004 05 GEO-WA1-OUT-CUI PIC X(5). 00010104 ** NOTE: GEO-WA1-OUT-CUI NOT IMPLEMENTED ** 00010204 05 GEO-WA1-OUT-BBL. 00010304 10 GEO-WA1-OUT-BL-BORO PIC X. 00010404 10 GEO-WA1-OUT-BLOCKNUM PIC X(5). 00010504 10 GEO-WA1-OUT-LOTNUM PIC X(4). 00010604 05 FILLER PIC X. 00010704 05 GEO-WA1-OUT-BIN PIC X(7). 00010806 05 GEO-WA1-OUT-SND-ATTR PIC X. 00011304 05 GEO-WA1-OUT-REASON-CODE PIC X. 00011404 05 FILLER PIC X(2). 00011504 05 GEO-WA1-OUT-RETURN-CODE. 00011604 10 GEO-WA1-OUT-RC-1 PIC X. 00011704 10 GEO-WA1-OUT-RC-2 PIC X. 00011804 05 GEO-WA1-OUT-ERROR-MESSAGE PIC X(80). 00011904 05 GEO-WA1-OUT-NUM-SIMILAR-NAMES PIC S999 COMP-3. 00012004 05 GEO-WA1-OUT-SIMILAR-NAMES PIC X(32) 00012104 OCCURS 10 TIMES. 00013002 W2COB COPY File ****************************************************************** 00010040 *** THIS IS GEOSUPPORT SYSTEM COPY FILE W2COB, CONTAINING THE *** 00020040 *** LAYOUT OF WORK AREA 2 FOR FUNCTIONS: 1, 1E, 2, 2C, 3, 3C, *** 00030040 *** 5. PLEASE NOTE THAT FUNCTIONS 2 AND 2C SHARE A SINGLE WORK*** 00040040 *** AREA 2 LAYOUT. 04/03/01 *** 00050040 ****************************************************************** 00060040 *** LAST MODIFIED 06/08/10 *** 00070040 ****************************************************************** 00080040 05 GEO-WA2-FUNCTION1. 00090040 10 FILLER PIC X(21). 00100040 10 GEO-WA2-FN1-CONT-PARITY PIC X. 00110040 10 GEO-WA2-FN1-LOW-HOUSENUM-INT. 00120040 15 GEO-WA2-FN1-LOW-HOUSENUM PIC X(5). 00130040 15 GEO-WA2-FN1-LOW-HOUSENUMSFX PIC X. 00140040 00150040 10 GEO-WA2-FN1-HI-HOUSENUM-INT. 00160040 15 GEO-WA2-FN1-HI-HOUSENUM PIC X(5). 00170040 15 GEO-WA2-FN1-HI-HOUSENUMSFX PIC X. 00180040 00190040 10 GEO-WA2-FN1-ALX PIC X. 00200040 10 GEO-WA2-FN1-NUM-X-ST-LOW-END PIC X. 00210040 10 GEO-WA2-FN1-LOW-PBSC PIC S9(7) COMP-3 00220040 OCCURS 5 TIMES. 00230040 10 GEO-WA2-FN1-NUM-X-ST-HI-END PIC X. 00240040 10 GEO-WA2-FN1-HI-PBSC PIC S9(7) COMP-3 00250040 OCCURS 5 TIMES. 00260040 10 GEO-WA2-FN1-COMDIST. 00270040 15 GEO-WA2-FN1-COMDIST-BORO PIC X. 00280040 15 GEO-WA2-FN1-COMDIST-NUMBER PIC X(2). 00290040 10 GEO-WA2-FN1-ZIP PIC X(5). 00300040 10 GEO-WA2-FN1-SLA PIC X. 00310040 10 GEO-WA2-FN1-HCD PIC X(2). 00320047 10 GEO-WA2-FN1-SOS PIC X. 00330040 10 GEO-WA2-FN1-CONT-PARITY-IND PIC X. 00340040 10 GEO-WA2-FN1-2010-CENS-TRCT PIC X(6). 00350042 10 GEO-WA2-FN1-2010-CENS-BLK PIC X(4). 00360042 10 GEO-WA2-FN1-2010-CENS-BLK-SFX PIC X. 00370042 10 FILLER PIC X(3). 00380040 10 GEO-WA2-FN1-HEALTHAREA PIC X(4). 00390047 10 GEO-WA2-FN1-SANI-REC PIC X(3). 00400040 10 GEO-WA2-FN1-FEATURE-TYPE PIC X. 00410040 10 GEO-WA2-FN1-RESDCP PIC X. 00420040 10 GEO-WA2-FN1-CURVE-FLAG PIC X. 00430040 10 GEO-WA2-FN1-POLICEDIST. 00440040 15 GEO-WA2-FN1-POL-PATR-BORO-CMD PIC X. 00450040 15 GEO-WA2-FN1-POL-PRECINCT PIC X(3). 00460040 10 GEO-WA2-FN1-SCHOOLDIST PIC X(2). 00470040 10 FILLER PIC X(14). 00480040 10 GEO-WA2-FN1-COINCIDENT-CNT PIC X. 00490040 10 GEO-WA2-FN1-SEGMENT-TYPE PIC X. 00500040 10 GEO-WA2-FN1-SANIDIST. 00510040 15 GEO-WA2-FN1-SANIDIST-BORO PIC X. 00520040 15 GEO-WA2-FN1-SANIDIST-NUMBER PIC X(2). 00530040 10 GEO-WA2-FN1-SANITATION-SUBSEC PIC X(2). 00540040 ** NOTE:10 GEO-WA2-FN1-FIRESEC ==> FIRE DIVISION ** 00550040 10 GEO-WA2-FN1-FIRESEC PIC X(2). 00560040 10 GEO-WA2-FN1-FIREBAT PIC X(2). 00570040 10 GEO-WA2-FN1-FIRECO. 00580040 15 GEO-WA2-FN1-FIRECO-TYPE PIC X. 00590040 15 GEO-WA2-FN1-FIRECO-NUM PIC X(3). 00600040 10 GEO-WA2-FN1-SPECIAL-ADDR-FLAG PIC X. 00610040 10 GEO-WA2-FN1-MARBLE-RIKER-FLAG PIC X. 00620040 10 GEO-WA2-FN1-SPLIT-SCHOOL-FILL PIC X. 00630044 10 GEO-WA2-FN1-PREFERRED-LGC PIC X(2). 00640040 10 GEO-WA2-FN1-LIONFACECODE PIC X(4). 00650040 10 GEO-WA2-FN1-LIONSEQ PIC X(5). 00660040 10 GEO-WA2-FN1-1990-CENSUSTRACT PIC X(6). 00670040 10 FILLER PIC X(4). 00680040 10 GEO-WA2-FN1-DYN-BLOCK PIC X(3). 00690040 10 GEO-WA2-FN1-XCOORD PIC X(7). 00700040 10 GEO-WA2-FN1-YCOORD PIC X(7). 00710040 10 GEO-WA2-FN1-SEGMENTLENGTH PIC X(5). 00720040 10 GEO-WA2-FN1-SANI-REG PIC X(5). 00730040 05 GEO-WA2-FUNCTION2 REDEFINES GEO-WA2-FUNCTION1. 00740040 10 FILLER PIC X(21). 00750040 10 GEO-WA2-FN2-DUPINTERFLAG PIC X. 00760040 10 FILLER PIC X(9). 00770040 10 GEO-WA2-FN2-PREFERRED-LGC1 PIC X(2). 00780040 10 GEO-WA2-FN2-PREFERRED-LGC2 PIC X(2). 00790040 10 GEO-WA2-FN2-NUM-OF-INTERSECTS PIC X. 00800040 10 GEO-WA2-FN2-INTERSECT-PBSC PIC 9(7) COMP-3 00810040 OCCURS 5 TIMES. 00820040 10 GEO-WA2-FN2-COMPDIR PIC X. 00830040 10 GEO-WA2-FN2-LEVEL-LIST OCCURS 5 TIMES. 00840040 15 GEO-WA2-FN2-LEVEL-CODES 00850040 OCCURS 2 TIMES PIC X. 00860040 *** NEXT LINE WAS PREVIOUSLY INSTRUC-DIV 00870040 10 FILLER PIC X(2). 00880040 ** NOTE:10 GEO-WA2-FN2-FIRESEC ==> FIRE DIVISION ** 00890040 10 GEO-WA2-FN2-FIRESEC PIC X(2). 00900040 10 GEO-WA2-FN2-FIREBAT PIC X(2). 00910040 10 GEO-WA2-FN2-FIRECO. 00920040 15 GEO-WA2-FN2-FIRECO-TYPE PIC X. 00930040 15 GEO-WA2-FN2-FIRECO-NUM PIC X(3). 00940040 10 GEO-WA2-FN2-COMDIST. 00950040 15 GEO-WA2-FN2-COMDIST-BORO PIC X. 00960040 15 GEO-WA2-FN2-COMDIST-NUMBER PIC X(2). 00970040 10 GEO-WA2-FN2-ZIP PIC X(5). 00980040 10 GEO-WA2-FN2-SLA PIC X. 00990040 10 GEO-WA2-FN2-2010-CENS-TRCT PIC X(6). 01000042 10 FILLER PIC X(3). 01010040 10 GEO-WA2-FN2-HEALTHAREA PIC X(4). 01020047 10 FILLER PIC X(9). 01030040 10 GEO-WA2-FN2-NODE-NUM PIC X(7). 01040040 10 GEO-WA2-FN2-XCOORD PIC X(7). 01050040 10 GEO-WA2-FN2-YCOORD PIC X(7). 01060040 10 FILLER PIC X(4). 01070040 10 GEO-WA2-FN2-POLICEDIST. 01080040 15 GEO-WA2-FN2-POL-PATR-BORO-CMD PIC X. 01090040 15 GEO-WA2-FN2-POL-PRECINCT PIC X(3). 01100040 10 GEO-WA2-FN2-SCHOOLDIST PIC X(2). 01110040 10 GEO-WA2-FN2-MARBLE-RIKER-FLAG PIC X. 01120040 10 GEO-WA2-FN2-1990-CENSUSTRACT PIC X(6). 01130040 10 GEO-WA2-FN2-SANBORN1-BVOLPAGE. 01140040 15 GEO-WA2-FN2-SANBORN1-BORO PIC X. 01150040 15 GEO-WA2-FN2-SANBORN1-VOL-NUM PIC X(3). 01160040 15 GEO-WA2-FN2-SANBORN1-PAGE-NUM PIC X(4). 01170040 10 GEO-WA2-FN2-SANBORN2-BVOLPAGE. 01180040 15 GEO-WA2-FN2-SANBORN2-BORO PIC X. 01190040 15 GEO-WA2-FN2-SANBORN2-VOL-NUM PIC X(3). 01200040 15 GEO-WA2-FN2-SANBORN2-PAGE-NUM PIC X(4). 01210040 10 GEO-WA2-FN2-DUP-INT-DISTANCE PIC X(5). 01220040 10 GEO-WA2-FN2-2000-CENS-TRACT PIC X(6). 01240043 10 FILLER PIC X(27). 01250040 05 GEO-WA2-FUNCTION3 REDEFINES GEO-WA2-FUNCTION1. 01260040 10 FILLER PIC X(21). 01270040 10 GEO-WA2-FN3-DUP-KEY-FLAG PIC X. 01280040 10 GEO-WA2-FN3-CURVE-FLAG PIC X. 01290040 10 GEO-WA2-FN3-LOCATION-STATUS PIC X. 01300040 10 GEO-WA2-FN3-COUNTY-BOUNDARY PIC X. 01310040 10 GEO-WA2-FN3-COINCIDENT-CNT PIC X. 01320040 10 FILLER PIC X(3). 01330040 10 GEO-WA2-FN3-PREFERRED-LGC1 PIC X(2). 01340040 10 GEO-WA2-FN3-PREFERRED-LGC2 PIC X(2). 01350040 10 GEO-WA2-FN3-PREFERRED-LGC3 PIC X(2). 01360040 10 GEO-WA2-FN3-NUM-X-ST-LOW-END PIC X. 01370040 10 GEO-WA2-FN3-LOW-PBSC PIC S9(7) COMP-3 01380040 OCCURS 5 TIMES. 01390040 10 GEO-WA2-FN3-NUM-X-ST-HI-END PIC X. 01400040 10 GEO-WA2-FN3-HI-PBSC PIC S9(7) COMP-3 01410040 OCCURS 5 TIMES. 01420040 10 GEO-WA2-FN3-SLA PIC X. 01430040 10 GEO-WA2-FN3-REVERSALFLAG PIC X. 01440040 10 GEO-WA2-FN3-LEFT-COMDIST. 01450040 15 GEO-WA2-FN3-LEFT-COMDIST-BORO PIC X. 01460040 15 GEO-WA2-FN3-LEFT-COMDIST-NUM PIC X(2). 01470040 10 GEO-WA2-FN3-RIGHT-COMDIST. 01480040 15 GEO-WA2-FN3-RIGHT-COMDIST-BORO PIC X. 01490040 15 GEO-WA2-FN3-RIGHT-COMDIST-NUM PIC X(2). 01500040 10 GEO-WA2-FN3-LEFT-ZIP PIC X(5). 01510040 10 GEO-WA2-FN3-RIGHT-ZIP PIC X(5). 01520040 10 FILLER PIC X(18). 01530040 10 GEO-WA2-FN3-LEFT-HEALTHAREA PIC X(4). 01540047 10 GEO-WA2-FN3-RIGHT-HEALTHAREA PIC X(4). 01550047 *** NEXT LINE WAS PREVIOUSLY LEFT-INSTRUC-DIV 01560040 10 FILLER PIC X(2). 01570040 *** NEXT LINE WAS PREVIOUSLY RIGHT-INSTRUC-DIV 01580040 10 FILLER PIC X(2). 01590040 10 GEO-WA2-FN3-LEFT-LOW-HOUSENUM PIC X(7). 01600040 10 GEO-WA2-FN3-LEFT-HI-HOUSENUM PIC X(7). 01610040 10 GEO-WA2-FN3-RIGHT-LOW-HOUSENUM PIC X(7). 01620040 10 GEO-WA2-FN3-RIGHT-HI-HOUSENUM PIC X(7). 01630040 10 GEO-WA2-FN3-CONT-PARITY-IND PIC X. 01640040 10 GEO-WA2-FN3-LIONFACECODE PIC X(4). 01650040 10 GEO-WA2-FN3-LIONSEQ PIC X(5). 01660040 10 GEO-WA2-FN3-GENRECFLAG PIC X. 01670040 10 GEO-WA2-FN3-SEGMENTLENGTH PIC S9(5) COMP-3. 01680040 10 GEO-WA2-FN3-SEGMENTSLOPE PIC X(3). 01690040 10 GEO-WA2-FN3-SEGMENTORIENT PIC X. 01700040 10 FILLER PIC X(4). 01710040 10 GEO-WA2-FN3-RESDCP PIC X(2). 01720040 10 GEO-WA2-FN3-DOG-LEG PIC X. 01730040 10 GEO-WA2-FN3-FEATURE-TYPE PIC X. 01740040 10 GEO-WA2-FN3-LEFT-POLDIST. 01750040 15 GEO-WA2-FN3-L-POL-PATR-BOR-CMD PIC X. 01760040 15 GEO-WA2-FN3-L-POL-PRECINCT PIC X(3). 01770040 10 GEO-WA2-FN3-RIGHT-POLDIST. 01780040 15 GEO-WA2-FN3-R-POL-PATR-BOR-CMD PIC X. 01790040 15 GEO-WA2-FN3-R-POL-PRECINCT PIC X(3). 01800040 10 GEO-WA2-FN3-LEFT-SCHLDIST PIC X(2). 01810040 10 GEO-WA2-FN3-RIGHT-SCHLDIST PIC X(2). 01820040 10 GEO-WA2-FN3-MARBLE-RIKER-FLAG PIC X. 01830040 10 GEO-WA2-FN3-SEG-ID PIC X(7). 01840040 10 GEO-WA2-FN3-SEGMENT-TYPE PIC X. 01850040 05 GEO-WA2-FUNCTION3C REDEFINES GEO-WA2-FUNCTION1. 01860040 10 GEO-WA2-FN3C-ACCESS-KEY PIC X(21). 01870040 10 GEO-WA2-FN3C-CURVE-FLAG PIC X. 01880040 10 GEO-WA2-FN3C-SEGMENT-TYPE PIC X. 01890040 10 GEO-WA2-FN3C-LOCATION-STATUS PIC X. 01900040 10 GEO-WA2-FN3C-COUNTY-BOUNDARY PIC X. 01910040 10 GEO-WA2-FN3C-COINCIDENT-CNT PIC X. 01920040 10 FILLER PIC X(3). 01930040 10 GEO-WA2-FN3C-PREFERRED-LGC1 PIC X(2). 01940040 10 GEO-WA2-FN3C-PREFERRED-LGC2 PIC X(2). 01950040 10 GEO-WA2-FN3C-PREFERRED-LGC3 PIC X(2). 01960040 10 GEO-WA2-FN3C-NUM-X-ST-LOW-END PIC X. 01970040 10 GEO-WA2-FN3C-LOW-PBSC PIC S9(7) COMP-3 01980040 OCCURS 5 TIMES. 01990040 10 GEO-WA2-FN3C-NUM-X-ST-HI-END PIC X. 02000040 10 GEO-WA2-FN3C-HI-PBSC PIC S9(7) COMP-3 02010040 OCCURS 5 TIMES. 02020040 10 GEO-WA2-FN3C-COMDIST. 02030040 15 GEO-WA2-FN3C-COMDIST-BORO PIC X. 02040040 15 GEO-WA2-FN3C-COMDIST-NUMBER PIC X(2). 02050040 10 GEO-WA2-FN3C-ZIP PIC X(5). 02060040 10 GEO-WA2-FN3C-SLA PIC X. 02070040 10 GEO-WA2-FN3C-2000-CENS-TRACT PIC X(6). 02090043 10 FILLER PIC X. 02100040 10 GEO-WA2-FN3C-2010-CENS-TRCT PIC X(6). 02110042 10 GEO-WA2-FN3C-2010-CENS-BLK PIC X(4). 02120042 10 GEO-WA2-FN3C-2010-CENS-BLK-SFX PIC X. 02130042 10 GEO-WA2-FN3C-HEALTHAREA PIC X(4). 02140047 10 GEO-WA2-FN3C-REVERSALFLAG PIC X. 02150040 10 GEO-WA2-FN3C-SOS PIC X. 02160040 ** NOTE:10 GEO-WA2-FN3C-FIRESEC ==> FIRE DIVISION ** 02170040 10 GEO-WA2-FN3C-FIRESEC PIC X(2). 02180040 10 GEO-WA2-FN3C-FIREBAT PIC X(2). 02190040 10 GEO-WA2-FN3C-FIRECO. 02200040 15 GEO-WA2-FN3C-FIRECO-TYPE PIC X. 02210040 15 GEO-WA2-FN3C-FIRECO-NUM PIC X(3). 02220040 10 GEO-WA2-FN3C-SEG-ID PIC X(7). 02230040 10 GEO-WA2-FN3C-LOW-HOUSENUM PIC X(7). 02240040 10 GEO-WA2-FN3C-HI-HOUSENUM PIC X(7). 02250040 10 GEO-WA2-FN3C-LOW-HOUSENUM2 PIC X(7). 02260040 10 GEO-WA2-FN3C-HI-HOUSENUM2 PIC X(7). 02270040 * HOUSENUM2 ONLY PRESENT IF ODD & EVEN RANGES ARE ON 02280040 * SAME SIDE OF STREET. 02290040 10 GEO-WA2-FN3C-CONT-PARITY-IND PIC X. 02300040 10 GEO-WA2-FN3C-LIONFACECODE PIC X(4). 02310040 10 GEO-WA2-FN3C-LIONSEQ PIC X(5). 02320040 10 GEO-WA2-FN3C-GENRECFLAG PIC X. 02330040 10 GEO-WA2-FN3C-SEGMENTLENGTH PIC S9(5) COMP-3. 02340040 10 GEO-WA2-FN3C-SEGMENTSLOPE PIC X(3). 02350040 10 GEO-WA2-FN3C-SEGMENTORIENT PIC X. 02360040 *** NEXT LINE WAS PREVIOUSLY INSTRUC-DIV 02370040 10 FILLER PIC XX. 02380040 10 GEO-WA2-FN3C-RESDCP PIC X. 02390040 10 GEO-WA2-FN3C-FEATURE-TYPE PIC X. 02400040 10 GEO-WA2-FN3C-POLICEDIST. 02410040 15 GEO-WA2-FN3C-POL-PATR-BORO-CMD PIC X. 02420040 15 GEO-WA2-FN3C-POL-PRECINCT PIC X(3). 02430040 10 GEO-WA2-FN3C-SCHOOLDIST PIC X(2). 02440040 10 GEO-WA2-FN3C-MARBLE-RIKER-FLAG PIC X. 02450040 10 GEO-WA2-FN3C-1990-CENSUSTRACT PIC X(6). 02460040 10 FILLER PIC X(4). 02470040 10 GEO-WA2-FN3C-DYN-BLOCK PIC X(3). 02480040 10 GEO-WA2-FN3C-2000-CENS-BLOCK PIC X(4). 02500043 10 GEO-WA2-FN3C-2000-CENS-BLK-SUF PIC X. 02510043 05 GEO-WA2-FUNCTION1E REDEFINES GEO-WA2-FUNCTION1. 02520040 10 FILLER PIC X(21). 02530040 10 GEO-WA2-FN1E-CONT-PARITY PIC X. 02540040 10 GEO-WA2-FN1E-LOW-HOUSENUM-INT. 02550040 15 GEO-WA2-FN1E-LOW-HOUSENUM PIC X(5). 02560040 15 GEO-WA2-FN1E-LOW-HSENUMSFX PIC X. 02570040 10 GEO-WA2-FN1E-HI-HOUSENUM-INT. 02580040 15 GEO-WA2-FN1E-HI-HOUSENUM PIC X(5). 02590040 15 GEO-WA2-FN1E-HI-HSENUMSFX PIC X. 02600040 10 FILLER PIC X. 02610040 10 GEO-WA2-FN1E-NUM-X-ST-LOW-END PIC X. 02620040 10 GEO-WA2-FN1E-LOW-PBSC PIC S9(7) COMP-3 02630040 OCCURS 5 TIMES. 02640040 10 GEO-WA2-FN1E-NUM-X-ST-HI-END PIC X. 02650040 10 GEO-WA2-FN1E-HI-PBSC PIC S9(7) COMP-3 02660040 OCCURS 5 TIMES. 02670040 10 GEO-WA2-FN1E-COMDIST. 02680040 15 GEO-WA2-FN1E-COMDIST-BORO PIC X. 02690040 15 GEO-WA2-FN1E-COMDIST-NUMBER PIC X(2). 02700040 10 GEO-WA2-FN1E-ZIP PIC X(5). 02710040 10 GEO-WA2-FN1E-SLA PIC X. 02720040 10 GEO-WA2-FN1E-HCD PIC X(2). 02730047 10 GEO-WA2-FN1E-SOS PIC X. 02740040 10 GEO-WA2-FN1E-CONT-PARITY-IND PIC X. 02750040 10 GEO-WA2-FN1E-2010-CENS-TRCT PIC X(6). 02760042 10 GEO-WA2-FN1E-2010-CENS-BLK PIC X(4). 02770042 10 GEO-WA2-FN1E-2010-CENS-BLK-SFX PIC X. 02780042 10 FILLER PIC X(3). 02790040 10 GEO-WA2-FN1E-HEALTHAREA PIC X(4). 02800047 10 GEO-WA2-FN1E-SANI-REC PIC X(3). 02810040 10 GEO-WA2-FN1E-FEATURE-TYPE PIC X. 02820040 10 GEO-WA2-FN1E-RESDCP PIC X. 02830040 10 GEO-WA2-FN1E-CURVE-FLAG PIC X. 02840040 10 GEO-WA2-FN1E-POLICEDIST. 02850040 15 GEO-WA2-FN1E-POL-PATR-BORO-CMD PIC X. 02860040 15 GEO-WA2-FN1E-POL-PRECINCT PIC X(3). 02870040 10 GEO-WA2-FN1E-SCHOOLDIST PIC X(2). 02880040 10 GEO-WA2-FN1E-ELECTDIST PIC X(3). 02890040 10 GEO-WA2-FN1E-ASSEMDIST PIC X(2). 02900040 10 GEO-WA2-FN1E-SPLIT-ED-FLAG PIC X. 02910040 10 GEO-WA2-FN1E-CONGDIST PIC X(2). 02920040 10 GEO-WA2-FN1E-SENATEDIST PIC X(2). 02930040 10 GEO-WA2-FN1E-COURTDIST PIC X(2). 02940040 10 GEO-WA2-FN1E-COUNCILDIST PIC X(2). 02950040 10 GEO-WA2-FN1E-COINCIDENT-CNT PIC X. 02960040 10 FILLER PIC X. 02970040 10 GEO-WA2-FN1E-SANIDIST. 02980040 15 GEO-WA2-FN1E-SANIDIST-BORO PIC X. 02990040 15 GEO-WA2-FN1E-SANIDIST-NUMBER PIC X(2). 03000040 10 GEO-WA2-FN1E-SANITATION-SUBSEC PIC X(2). 03010040 ** NOTE:10 GEO-WA2-FN1E-FIRESEC ==> FIRE DIVISION ** 03020040 10 GEO-WA2-FN1E-FIRESEC PIC X(2). 03030040 10 GEO-WA2-FN1E-FIREBAT PIC X(2). 03040040 10 GEO-WA2-FN1E-FIRECO. 03050040 15 GEO-WA2-FN1E-FIRECO-TYPE PIC X. 03060040 15 GEO-WA2-FN1E-FIRECO-NUM PIC X(3). 03070040 10 GEO-WA2-FN1E-SPECIAL-ADDR-FLAG PIC X. 03080040 10 GEO-WA2-FN1E-MARBLE-RIKER-FLAG PIC X. 03090040 10 GEO-WA2-FN1E-SPLIT-SCHOOL-FILL PIC X. 03100044 10 GEO-WA2-FN1E-PREFERRED-LGC PIC X(2). 03110040 10 GEO-WA2-FN1E-LIONFACECODE PIC X(4). 03120040 10 GEO-WA2-FN1E-LIONSEQ PIC X(5). 03130040 10 GEO-WA2-FN1E-1990-CENSUSTRACT PIC X(6). 03140040 10 FILLER PIC X(4). 03150040 10 GEO-WA2-FN1E-DYN-BLOCK PIC X(3). 03160040 10 GEO-WA2-FN1E-XCOORD PIC X(7). 03170040 10 GEO-WA2-FN1E-YCOORD PIC X(7). 03180040 10 GEO-WA2-FN1E-SEGMENTLENGTH PIC X(5). 03190040 10 GEO-WA2-FN1E-SANI-REG PIC X(5). 03200040 05 GEO-WA2-FUNCTION5 REDEFINES GEO-WA2-FUNCTION1. 03210040 10 GEO-WA2-FN5-ADDR-MATCHING-KEY PIC X(28). 03220040 10 FILLER PIC X(172). 03230040 W2COBL COPY File ****************************************************************** 00010021 *** THIS IS GEOSUPPORT SYSTEM COPY FILE W2COBL, CONTAINING *** 00020021 *** THE LAYOUT OF THE OPTIONAL LONG WORK AREA 2 FOR FUNCTIONS * 00030021 *** 1/1E AND 3. THIS WORK AREA SHOULD BE USED ONLY WHEN *** 00040021 *** FUNCTION 1/1E,3 ARE CALLED WITH THE \"LONG\" WORK AREA2 *** 00050021 *** APRIL 3 2001 *** 00060021 ****************************************************************** 00070021 *** LAST MODIFIED 06/08/10 *** 00080021 ****************************************************************** 00090021 05 GEO-WA2-1L-FUNCTION1. 00100021 10 FILLER PIC X(21). 00110021 10 GEO-WA2-1L-CONT-PARITY PIC X. 00120021 10 GEO-WA2-1L-LOW-HOUSENUM-INT. 00130021 15 GEO-WA2-1L-LOW-HOUSENUM PIC X(5). 00140021 15 GEO-WA2-1L-LOW-HOUSENUMSFX PIC X. 00150021 10 GEO-WA2-1L-HI-HOUSENUM-INT. 00160021 15 GEO-WA2-1L-HI-HOUSENUM PIC X(5). 00170021 15 GEO-WA2-1L-HI-HOUSENUMSFX PIC X. 00180021 10 GEO-WA2-1L-ALX PIC X. 00190021 10 GEO-WA2-1L-NUM-X-ST-LOW-END PIC X. 00200021 10 GEO-WA2-1L-LOW-PBSC PIC S9(7) COMP-3 00210021 OCCURS 5 TIMES. 00220021 10 GEO-WA2-1L-NUM-X-ST-HI-END PIC X. 00230021 10 GEO-WA2-1L-HI-PBSC PIC S9(7) COMP-3 00240021 OCCURS 5 TIMES. 00250021 10 GEO-WA2-1L-COMDIST. 00260021 15 GEO-WA2-1L-COMDIST-BORO PIC X(1). 00270021 15 GEO-WA2-1L-COMDIST-NUMBER PIC X(2). 00280021 10 GEO-WA2-1L-ZIP PIC X(5). 00290021 10 GEO-WA2-1L-SLA PIC X. 00300021 10 GEO-WA2-1L-HCD PIC X(2). 00310028 10 GEO-WA2-1L-SOS PIC X. 00320021 10 GEO-WA2-1L-CONT-PARITY-IND PIC X. 00330021 10 GEO-WA2-1L-2010-CENS-TRCT PIC X(6). 00340023 10 GEO-WA2-1L-2010-CENS-BLK PIC X(4). 00350023 10 GEO-WA2-1L-2010-CENS-BLK-SFX PIC X. 00360023 10 FILLER PIC X(3). 00370021 10 GEO-WA2-1L-HEALTHAREA PIC X(4). 00380028 10 GEO-WA2-1L-SANI-REC PIC X(3). 00390021 10 GEO-WA2-1L-FEATURE-TYPE PIC X(1). 00400021 10 GEO-WA2-1L-RESDCP PIC X(1). 00410021 10 GEO-WA2-1L-CURVE-FLAG PIC X(1). 00420021 10 GEO-WA2-1L-POLICEDIST. 00430021 15 GEO-WA2-1L-POL-PATR-BORO-CMD PIC X(1). 00440021 15 GEO-WA2-1L-POL-PRECINCT PIC X(3). 00450021 10 GEO-WA2-1L-SCHOOLDIST PIC X(2). 00460021 10 FILLER PIC X(14). 00470021 10 GEO-WA2-1L-COINCIDENT-CNT PIC X. 00480021 10 GEO-WA2-1L-SEGMENT-TYPE PIC X. 00490021 10 GEO-WA2-1L-SANIDIST. 00500021 15 GEO-WA2-1L-SANIDIST-BORO PIC X(1). 00510021 15 GEO-WA2-1L-SANIDIST-NUMBER PIC X(2). 00520021 10 GEO-WA2-1L-SANITATION-SUBSEC PIC X(2). 00530021 ** NOTE:10 GEO-WA2-1L-FIRESEC ==> FIRE DIVISION ** 00540021 10 GEO-WA2-1L-FIRESEC PIC X(2). 00550021 10 GEO-WA2-1L-FIREBAT PIC X(2). 00560021 10 GEO-WA2-1L-FIRECO. 00570021 15 GEO-WA2-1L-FIRECO-TYPE PIC X(1). 00580021 15 GEO-WA2-1L-FIRECO-NUM PIC X(3). 00590021 10 GEO-WA2-1L-SPECIAL-ADDR-FLAG PIC X(1). 00600021 10 GEO-WA2-1L-MARBLE-RIKER-FLAG PIC X(1). 00610021 10 GEO-WA2-1L-SPLIT-SCHOOL-FILL PIC X. 00620025 10 GEO-WA2-1L-PREFERRED-LGC PIC X(2). 00630021 10 GEO-WA2-1L-LIONFACECODE PIC X(4). 00640021 10 GEO-WA2-1L-LIONSEQ PIC X(5). 00650021 10 GEO-WA2-1L-1990-CENSUSTRACT PIC X(6). 00660021 10 FILLER PIC X(4). 00670021 10 GEO-WA2-1L-DYN-BLOCK PIC X(3). 00680021 10 GEO-WA2-1L-XCOORD PIC X(7). 00690021 10 GEO-WA2-1L-YCOORD PIC X(7). 00700021 10 GEO-WA2-1L-SEGMENTLENGTH PIC X(5). 00710021 10 GEO-WA2-1L-SANI-REG PIC X(5). 00720021 10 GEO-WA2-1L-SEG-ID PIC X(7). 00730021 10 GEO-WA2-1L-TRUE-B7SC PIC X(8). 00740021 10 GEO-WA2-1L-TRUE-HNI PIC X(6). 00750021 10 GEO-WA2-1L-2000-CENS-TRACT PIC X(6). 00770024 10 GEO-WA2-1L-2000-CENS-BLOCK PIC X(4). 00780024 10 GEO-WA2-1L-2000-CENS-BLK-SUF PIC X. 00790024 10 FILLER PIC X(68). 00800021 05 GEO-WA2-1EL-FUNCTION1E REDEFINES GEO-WA2-1L-FUNCTION1. 00810021 10 FILLER PIC X(21). 00820021 10 GEO-WA2-1EL-CONT-PARITY PIC X. 00830021 10 GEO-WA2-1EL-LOW-HOUSENUM-INT. 00840021 15 GEO-WA2-1EL-LOW-HOUSENUM PIC X(5). 00850021 15 GEO-WA2-1EL-LOW-HOUSENUMSFX PIC X. 00860021 10 GEO-WA2-1EL-HI-HOUSENUM-INT. 00870021 15 GEO-WA2-1EL-HI-HOUSENUM PIC X(5). 00880021 15 GEO-WA2-1EL-HI-HOUSENUMSFX PIC X. 00890021 10 FILLER PIC X. 00900021 10 GEO-WA2-1EL-NUM-X-ST-LOW-END PIC X. 00910021 10 GEO-WA2-1EL-LOW-PBSC PIC S9(7) COMP-3 00920021 OCCURS 5 TIMES. 00930021 10 GEO-WA2-1EL-NUM-X-ST-HI-END PIC X. 00940021 10 GEO-WA2-1EL-HI-PBSC PIC S9(7) COMP-3 00950021 OCCURS 5 TIMES. 00960021 10 GEO-WA2-1EL-COMDIST. 00970021 15 GEO-WA2-1EL-COMDIST-BORO PIC X(1). 00980021 15 GEO-WA2-1EL-COMDIST-NUMBER PIC X(2). 00990021 10 GEO-WA2-1EL-ZIP PIC X(5). 01000021 10 GEO-WA2-1EL-SLA PIC X. 01010021 10 GEO-WA2-1EL-HCD PIC X(2). 01020028 10 GEO-WA2-1EL-SOS PIC X. 01030021 10 GEO-WA2-1EL-CONT-PARITY-IND PIC X. 01040021 10 GEO-WA2-1EL-2010-CENS-TRCT PIC X(6). 01050023 10 GEO-WA2-1EL-2010-CENS-BLK PIC X(4). 01060023 10 GEO-WA2-1EL-2010-CENS-BLK-SFX PIC X. 01070023 10 FILLER PIC X(3). 01080021 10 GEO-WA2-1EL-HEALTHAREA PIC X(4). 01090028 10 GEO-WA2-1EL-SANI-REC PIC X(3). 01100021 10 GEO-WA2-1EL-FEATURE-TYPE PIC X(1). 01110021 10 GEO-WA2-1EL-RESDCP PIC X(1). 01120021 10 GEO-WA2-1EL-CURVE-FLAG PIC X(1). 01130021 10 GEO-WA2-1EL-POLICEDIST. 01140021 15 GEO-WA2-1EL-POL-PATR-BORO-CMD PIC X(1). 01150021 15 GEO-WA2-1EL-POL-PRECINCT PIC X(3). 01160021 10 GEO-WA2-1EL-SCHOOLDIST PIC X(2). 01170021 10 GEO-WA2-1EL-ELECTDIST PIC X(3). 01180021 10 GEO-WA2-1EL-ASSEMDIST PIC X(2). 01190021 10 GEO-WA2-1EL-SPLIT-ED-FLAG PIC X(1). 01200021 10 GEO-WA2-1EL-CONGDIST PIC X(2). 01210021 10 GEO-WA2-1EL-SENATEDIST PIC X(2). 01220021 10 GEO-WA2-1EL-COURTDIST PIC X(2). 01230021 10 GEO-WA2-1EL-COUNCILDIST PIC X(2). 01240021 10 GEO-WA2-1EL-COINCIDENT-CNT PIC X. 01250021 10 FILLER PIC X. 01260021 10 GEO-WA2-1EL-SANIDIST. 01270021 15 GEO-WA2-1EL-SANIDIST-BORO PIC X(1). 01280021 15 GEO-WA2-1EL-SANIDIST-NUMBER PIC X(2). 01290021 10 GEO-WA2-1EL-SANITATION-SUBSEC PIC X(2). 01300021 ** NOTE:10 GEO-WA2-1EL-FIRESEC==> FIRE DIVISION ** 01310021 10 GEO-WA2-1EL-FIRESEC PIC X(2). 01320021 10 GEO-WA2-1EL-FIREBAT PIC X(2). 01330021 10 GEO-WA2-1EL-FIRECO. 01340021 15 GEO-WA2-1EL-FIRECO-TYPE PIC X(1). 01350021 15 GEO-WA2-1EL-FIRECO-NUM PIC X(3). 01360021 10 GEO-WA2-1EL-SPECIAL-ADDR-FLAG PIC X(1). 01370021 10 GEO-WA2-1EL-MARBLE-RIKER-FLAG PIC X(1). 01380021 10 GEO-WA2-1EL-SPLIT-SCHOOL-FILL PIC X. 01390025 10 GEO-WA2-1EL-PREFERRED-LGC PIC X(2). 01400021 10 GEO-WA2-1EL-LIONFACECODE PIC X(4). 01410021 10 GEO-WA2-1EL-LIONSEQ PIC X(5). 01420021 10 GEO-WA2-1EL-1990-CENSUSTRACT PIC X(6). 01430021 10 FILLER PIC X(4). 01440021 10 GEO-WA2-1EL-DYN-BLOCK PIC X(3). 01450021 10 GEO-WA2-1EL-XCOORD PIC X(7). 01460021 10 GEO-WA2-1EL-YCOORD PIC X(7). 01470021 10 GEO-WA2-1EL-SEGMENTLENGTH PIC X(5). 01480021 10 GEO-WA2-1EL-SANI-REG PIC X(5). 01490021 10 GEO-WA2-1EL-SEG-ID PIC X(7). 01500021 10 GEO-WA2-1EL-TRUE-B7SC PIC X(8). 01510021 10 GEO-WA2-1EL-TRUE-HNI PIC X(6). 01520021 10 GEO-WA2-1EL-2000-CENS-TRACT PIC X(6). 01540024 10 GEO-WA2-1EL-2000-CENS-BLOCK PIC X(4). 01550024 10 GEO-WA2-1EL-2000-CENS-BLK-SUF PIC X. 01560024 10 FILLER PIC X(68). 01570021 05 GEO-WA2-3L-FUNCTION3 REDEFINES GEO-WA2-1L-FUNCTION1. 01580021 10 FILLER PIC X(21). 01590021 10 GEO-WA2-3L-DUP-KEY-FLAG PIC X. 01600021 10 GEO-WA2-3L-CURVE-FLAG PIC X. 01610021 10 GEO-WA2-3L-LOCATION-STATUS PIC X. 01620021 10 GEO-WA2-3L-COUNTY-BOUNDARY PIC X. 01630021 10 GEO-WA2-3L-COINCIDENT-CNT PIC X. 01640021 10 FILLER PIC X(3). 01650021 10 GEO-WA2-3L-PREFERRED-LGC1 PIC X(2). 01660021 10 GEO-WA2-3L-PREFERRED-LGC2 PIC X(2). 01670021 10 GEO-WA2-3L-PREFERRED-LGC3 PIC X(2). 01680021 10 GEO-WA2-3L-NUM-X-ST-LOW-END PIC X. 01690021 10 GEO-WA2-3L-LOW-PBSC PIC S9(7) COMP-3 01700021 OCCURS 5 TIMES. 01710021 10 GEO-WA2-3L-NUM-X-ST-HI-END PIC X. 01720021 10 GEO-WA2-3L-HI-PBSC PIC S9(7) COMP-3 01730021 OCCURS 5 TIMES. 01740021 10 GEO-WA2-3L-SLA PIC X. 01750021 10 GEO-WA2-3L-REVERSALFLAG PIC X. 01760021 10 GEO-WA2-3L-LEFT-COMDIST. 01770021 15 GEO-WA2-3L-LEFT-COMDIST-BORO PIC X(1). 01780021 15 GEO-WA2-3L-LEFT-COMDIST-NUM PIC X(2). 01790021 10 GEO-WA2-3L-RIGHT-COMDIST. 01800021 15 GEO-WA2-3L-RIGHT-COMDIST-BORO PIC X(1). 01810021 15 GEO-WA2-3L-RIGHT-COMDIST-NUM PIC X(2). 01820021 10 GEO-WA2-3L-LEFT-ZIP PIC X(5). 01830021 10 GEO-WA2-3L-RIGHT-ZIP PIC X(5). 01840021 10 FILLER PIC X(18). 01850021 10 GEO-WA2-3L-LEFT-HEALTHAREA PIC X(4). 01860028 10 GEO-WA2-3L-RIGHT-HEALTHAREA PIC X(4). 01870028 *** NEXT LINE WAS PREVIOUSLY LEFT-INSTRUC-DIV 01880021 10 FILLER PIC X(2). 01890021 *** NEXT LINE WAS PREVIOUSLY RIGHT-INSTRUC-DIV 01900021 10 FILLER PIC X(2). 01910021 10 GEO-WA2-3L-LEFT-LOW-HOUSENUM PIC X(7). 01920021 10 GEO-WA2-3L-LEFT-HI-HOUSENUM PIC X(7). 01930021 10 GEO-WA2-3L-RIGHT-LOW-HOUSENUM PIC X(7). 01940021 10 GEO-WA2-3L-RIGHT-HI-HOUSENUM PIC X(7). 01950021 10 GEO-WA2-3L-CONT-PARITY-IND PIC X. 01960021 10 GEO-WA2-3L-LIONFACECODE PIC X(4). 01970021 10 GEO-WA2-3L-LIONSEQ PIC X(5). 01980021 10 GEO-WA2-3L-GENRECFLAG PIC X. 01990021 10 GEO-WA2-3L-SEGMENTLENGTH PIC S9(5) COMP-3. 02000021 10 GEO-WA2-3L-SEGMENTSLOPE PIC X(3). 02010021 10 GEO-WA2-3L-SEGMENTORIENT PIC X. 02020021 10 FILLER PIC X(4). 02030021 10 GEO-WA2-3L-RESDCP PIC X(2). 02040021 10 GEO-WA2-3L-DOG-LEG PIC X. 02050021 10 GEO-WA2-3L-FEATURE-TYPE PIC X(1). 02060021 10 GEO-WA2-3L-LEFT-POLDIST. 02070021 15 GEO-WA2-3L-L-POL-PATR-BOR-CMD PIC X(1). 02080021 15 GEO-WA2-3L-L-POL-PRECINCT PIC X(3). 02090021 10 GEO-WA2-3L-RIGHT-POLDIST. 02100021 15 GEO-WA2-3L-R-POL-PATR-BOR-CMD PIC X(1). 02110021 15 GEO-WA2-3L-R-POL-PRECINCT PIC X(3). 02120021 10 GEO-WA2-3L-LEFT-SCHLDIST PIC X(2). 02130021 10 GEO-WA2-3L-RIGHT-SCHLDIST PIC X(2). 02140021 10 GEO-WA2-3L-MARBLE-RIKER-FLAG PIC X(1). 02150021 10 GEO-WA2-3L-SEG-ID PIC X(7). 02160021 10 GEO-WA2-3L-SEGMENT-TYPE PIC X. 02170021 ************************************************************* 02180021 ** THE PORTION OF THIS WORK AREA ABOVE THIS POINT IS ** 02190021 ** IDENTICAL TO THE STANDARD WORK AREA 2 FOR FUNCTION 3. ** 02200021 ** THE PORTION BELOW THIS POINT IS PRESENT ONLY FOR THE ** 02210021 ** LONG WORK AREA 2 OPTION. ** 02220021 ************************************************************* 02230021 10 GEO-WA2-3L-L-1990-CENSUSTRACT PIC X(6) . 02240021 10 FILLER PIC X(4). 02250021 10 GEO-WA2-3L-L-DYN-BLOCK PIC X(3). 02260021 10 GEO-WA2-3L-R-1990-CENSUSTRACT PIC X(6). 02270021 10 FILLER PIC X(4). 02280021 10 GEO-WA2-3L-R-DYN-BLOCK PIC X(3). 02290021 ** NOTE:10 GEO-WA2-3L-L-FIRESEC ==> FIRE DIV ** 02300021 ** NOTE:10 GEO-WA2-3L-R-FIRESEC ==> FIRE DIV ** 02310021 10 GEO-WA2-3L-L-FIRESEC PIC X(2). 02320021 10 GEO-WA2-3L-L-FIREBAT PIC X(2). 02330021 10 GEO-WA2-3L-L-FIRECO. 02340021 15 GEO-WA2-3L-L-FIRECO-TYPE PIC X(1). 02350021 15 GEO-WA2-3L-L-FIRECO-NUM PIC X(3). 02360021 10 GEO-WA2-3L-R-FIRESEC PIC X(2). 02370021 10 GEO-WA2-3L-R-FIREBAT PIC X(2). 02380021 10 GEO-WA2-3L-R-FIRECO. 02390021 15 GEO-WA2-3L-R-FIRECO-TYPE PIC X(1). 02400021 15 GEO-WA2-3L-R-FIRECO-NUM PIC X(3). 02410021 10 GEO-WA2-3L-L-2010-CENS-TRCT PIC X(6). 02420023 10 GEO-WA2-3L-L-2010-CENS-BLK PIC X(4). 02430023 10 GEO-WA2-3L-L-2010-CENS-BLK-SFX PIC X. 02440023 10 GEO-WA2-3L-R-2010-CENS-TRCT PIC X(6). 02450023 10 GEO-WA2-3L-R-2010-CENS-BLK PIC X(4). 02460023 10 GEO-WA2-3L-R-2010-CENS-BLK-SFX PIC X. 02470023 10 GEO-WA2-3L-FROM-NODE PIC X(7). 02480021 10 GEO-WA2-3L-TO-NODE PIC X(7). 02490021 10 GEO-WA2-3L-L-2000-CENS-TRACT PIC X(6). 02510024 10 GEO-WA2-3L-L-2000-CENS-BLOCK PIC X(4). 02520024 10 GEO-WA2-3L-L-2000-CENS-BLK-SUF PIC X. 02530024 10 GEO-WA2-3L-R-2000-CENS-TRACT PIC X(6). 02540024 10 GEO-WA2-3L-R-2000-CENS-BLOCK PIC X(4). 02550024 10 GEO-WA2-3L-R-2000-CENS-BLK-SUF PIC X. 02560024 W2COB1A COPY File ***************************************************************** 00000100 ** THIS IS GEOSUPPORT SYSTEM COPY FILE W2COB1A, CONTAINING ** 00000200 ** THE LAYOUT OF WORK AREA 2 FOR FUNCTIONS 1A AND BL WHICH ** 00000300 ** SHARE A SINGLE WORK AREA 2 LAYOUT. 10/18/96 ** 00000400 ***************************************************************** 00000500 * NEW FORMAT * 00000600 05 GEO-WA2-1A-ACCESS-KEY PIC X(21). 00000700 05 GEO-WA2-1A-CONT-PARITY PIC X. 00000800 05 GEO-WA2-1A-LOW-HOUSENUM PIC X(6). 00000900 05 GEO-WA2-1A-ALTKEY-1. 00001000 10 GEO-WA2-1A-ALTKEY-1-BORO PIC X. 00001100 10 GEO-WA2-1A-ALTKEY-1-TAXBLOCK PIC X(5). 00001200 10 GEO-WA2-1A-ALTKEY-1-TAXLOT PIC X(4). 00001300 05 FILLER PIC X. 00001400 05 GEO-WA2-1A-SCC PIC X. 00001500 05 FILLER PIC X. 00001600 05 GEO-WA2-1A-GENERAL-LOT-INFO. 00001700 10 GEO-WA2-1A-RPAD-BLDG-CLASS PIC X(2). 00001800 10 GEO-WA2-1A-CORNER-CODE PIC X(2). 00001900 10 GEO-WA2-1A-NUM-OF-STRUCTURES PIC X(2). 00002000 10 GEO-WA2-1A-NUM-OF-BLOCKFACES PIC X(2). 00002100 10 GEO-WA2-1A-INTERIOR-FLAG PIC X. 00002200 10 GEO-WA2-1A-VACANT-FLAG PIC X. 00002300 10 GEO-WA2-1A-IRREG-FLAG PIC X. 00002400 05 GEO-WA2-1A-ALT-BORO-FLAG PIC X. 00002500 05 FILLER PIC X. 00002600 05 GEO-WA2-1A-STROLL-KEY PIC X(13). 00002700 05 GEO-WA2-1A-OVERFLOW-FLAG PIC X(1). 00002801 05 FILLER-DCP PIC X(1). 00002900 05 GEO-WA2-1A-BLDG-ID-NUM PIC X(7). 00003000 05 GEO-WA2-1A-CONDO-LOT-FLAG PIC X. 00003100 05 GEO-WA2-1A-RPAD-COND-NUM PIC X(4). 00003200 05 GEO-WA2-1A-CONDO-LOW-BBL PIC X(10). 00003300 05 FILLER PIC X. 00003400 05 GEO-WA2-1A-CONDO-BILLING-BBL PIC X(10). 00003500 05 FILLER PIC X. 00003600 05 GEO-WA2-1A-CONDO-BILL-BBL-SCC PIC X. 00003700 05 GEO-WA2-1A-CONDO-HIGH-BBL PIC X(10). 00003800 05 FILLER PIC X. 00003900 05 GEO-WA2-1A-SANBORN-BVOLPAGE. 00004000 10 GEO-WA2-1A-SANBORN-BORO PIC X(1). 00004100 10 GEO-WA2-1A-SANBORN-VOL-PAGE. 00004200 15 GEO-WA2-1A-SANBORN-VOL-NUM PIC X(3). 00004300 15 GEO-WA2-1A-SANBORN-PAGE-NUM PIC X(4). 00004400 05 GEO-WA2-1A-COMMERC-DIST PIC X(5). 00004500 05 GEO-WA2-1A-CO-OP-NBR PIC X(4). 00004602 05 FILLER PIC X(4). 00004703 05 GEO-WA2-1A-TOT-NBR-BLDG PIC X(4). 00004802 05 GEO-WA2-1A-DOF-MAP-BOROUGH PIC X. 00004904 05 GEO-WA2-1A-TAX-MAP-NBR PIC X(4). 00005004 05 FILLER-FOR-TAX-MAP-PAGE PIC X(4). 00005105 05 GEO-WA2-1A-X-COORD PIC X(7). 00005205 05 GEO-WA2-1A-Y-COORD PIC X(7). 00005305 05 GEO-WA2-1A-BID PIC X(6). 00005406 05 FILLER PIC X(2). 00005506 05 GEO-WA2-1A-FILLER-LGCS PIC X(8). 00005607 05 FILLER PIC X(2). 00005706 05 GEO-WA2-1A-NUM-OF-ADDR-FOR-LOT PIC X(2). 00005806 05 GEO-WA2-1A-LIST-OF-ADDRESSES OCCURS 21 TIMES. 00005906 10 GEO-WA2-1A-LIST-LOW-HOUSENUM PIC X(6). 00006006 10 FILLER PIC X(3). 00006106 10 GEO-WA2-1A-LIST-HI-HOUSENUM PIC X(6). 00006206 10 FILLER PIC X(3). 00006306 10 GEO-WA2-1A-LIST-STREETCODE PIC X(8). 00006406 10 GEO-WA2-1A-LIST-BIN PIC X(7). 00006506 10 GEO-WA2-1A-ADDR-TYPE PIC X. 00006606 10 FILLER PIC X. 00006706 10 GEO-WA2-1A-LIST-SOS PIC X. 00007002 W2COB1AL COPY File ***************************************************************** 00000100 ** THIS IS GEOSUPPORT SYSTEM COPY FILE W2COB1AL, CONTAINING ** 00000200 ** THE LAYOUT OF LONG WORK AREA 2 FOR FUNCTIONS 1A AND BL ** 00000300 ** WHICH SHARE A SINGLE WORK AREA 2 LAYOUT. 11/06/97 ** 00000400 ***************************************************************** 00000500 * 1A/BL LONG WORK AREA 2 * 00000600 05 GEO-WA2-1AL-ACCESS-KEY PIC X(21). 00000700 05 GEO-WA2-1AL-CONT-PARITY PIC X. 00000800 05 GEO-WA2-1AL-LOW-HOUSENUM PIC X(6). 00000900 05 GEO-WA2-1AL-ALTKEY-1. 00001000 10 GEO-WA2-1AL-ALTKEY-1-BORO PIC X. 00001100 10 GEO-WA2-1AL-ALTKEY-1-TAXBLOCK PIC X(5). 00001200 10 GEO-WA2-1AL-ALTKEY-1-TAXLOT PIC X(4). 00001300 05 FILLER PIC X. 00001400 05 GEO-WA2-1AL-SCC PIC X. 00001500 05 FILLER PIC X. 00001600 05 GEO-WA2-1AL-GENERAL-LOT-INFO. 00001700 10 GEO-WA2-1AL-RPAD-BLDG-CLASS PIC X(2). 00001800 10 GEO-WA2-1AL-CORNER-CODE PIC X(2). 00001900 10 GEO-WA2-1AL-NUM-OF-STRUCTURES PIC X(2). 00002000 10 GEO-WA2-1AL-NUM-OF-BLOCKFACES PIC X(2). 00002100 10 GEO-WA2-1AL-INTERIOR-FLAG PIC X. 00002200 10 GEO-WA2-1AL-VACANT-FLAG PIC X. 00002300 10 GEO-WA2-1AL-IRREG-FLAG PIC X. 00002400 05 GEO-WA2-1AL-ALT-BORO-FLAG PIC X. 00002500 05 FILLER PIC X. 00002600 05 GEO-WA2-1AL-STROLL-KEY PIC X(13). 00002700 05 FILLER PIC X(1). 00002800 05 FILLER-DCP PIC X(1). 00002900 05 GEO-WA2-1AL-BLDG-ID-NUM PIC X(7). 00003000 05 GEO-WA2-1AL-CONDO-LOT-FLAG PIC X. 00003100 05 GEO-WA2-1AL-RPAD-COND-NUM PIC X(4). 00003200 05 GEO-WA2-1AL-CONDO-LOW-BBL PIC X(10). 00003300 05 FILLER PIC X. 00003400 05 GEO-WA2-1AL-CONDO-BILLING-BBL PIC X(10). 00003500 05 FILLER PIC X. 00003600 05 GEO-WA2-1AL-CONDO-BILL-BBL-SCC PIC X. 00003700 05 GEO-WA2-1AL-CONDO-HIGH-BBL PIC X(10). 00003800 05 FILLER PIC X. 00003900 05 GEO-WA2-1AL-SANBORN-BVOLPAGE. 00004000 10 GEO-WA2-1AL-SANBORN-BORO PIC X(1). 00004100 10 GEO-WA2-1AL-SANBORN-VOL-PAGE. 00004200 15 GEO-WA2-1AL-SANBORN-VOL-NUM PIC X(3). 00004300 15 GEO-WA2-1AL-SANBORN-PAGE-NUM PIC X(4). 00004400 05 GEO-WA2-1AL-COMMERC-DIST PIC X(5). 00004500 05 GEO-WA2-1AL-CO-OP-NBR PIC X(4). 00004604 05 FILLER PIC X(4). 00004705 05 GEO-WA2-1AL-TOT-NBR-BLDG PIC X(4). 00004804 05 GEO-WA2-1AL-DOF-MAP-BORO PIC X. 00004907 05 GEO-WA2-1AL-DOF-MAP-SECVOL PIC X(4). 00005007 ******* GEO-WA2-1AL-DOF-MAP-PAGE NOT IMPLEMENTED 00005107 05 GEO-WA2-1AL-DOF-MAP-PAGE PIC X(4). 00005207 05 GEO-WA2-1AL-X-COORD PIC X(7). 00005308 05 GEO-WA2-1AL-Y-COORD PIC X(7). 00005408 05 GEO-WA2-1AL-BID PIC X(6). 00005509 05 FILLER PIC X(2). 00005609 05 GEO-WA2-1AL-FILLER-LGCS PIC X(8). 00005709 05 GEO-WA2-1AL-NUM-OF-BINS PIC X(4). 00005809 05 GEO-WA2-1AL-BINS PIC X(7) 00005909 OCCURS 2500 TIMES. 00006004 W2COB3S COPY File ****************************************************************** 00010000 *** THIS IS GEOSUPPORT SYSTEM COPY FILE W2COB3S, CONTAINING ** 00020000 *** THE LAYOUT OF WORK AREA 2 FOR FUNCTION 3S. 9/22/93 ** 00030000 ****************************************************************** 00040000 05 GEO-WA2-3S-ACCESS-KEY PIC X(21). 00050000 05 GEO-WA2-3S-NUM-OF-INTERSECTS PIC X(3). 00060000 05 GEO-WA2-3S-LIST-OFINTERSECTS OCCURS 350 TIMES. 00070000 10 GEO-WA2-3S-SMALLEST-PBSC PIC S9(7) COMP-3. 00080000 10 GEO-WA2-3S-2ND-SMALLEST-PBSC PIC S9(7) COMP-3. 00090000 10 GEO-WA2-3S-DISTANCE PIC S9(5) COMP-3. 00100000 10 GEO-WA2-3S-GAP-FLAG PIC X. 00110000","title":"COBOL COPY Files (MSW)"},{"location":"appendices/appendix05/#assembler-copy-files-msw","text":"W1BAL COPY File \\*/********************************************************************/ 00000100 \\*/***** THIS IS GEOSUPPORT INFORMATION SYSTEM COPY FILE W1BAL, \\***/ 00000200 \\*/***** CONTAINING THE LAYOUT OF WORK AREA 1. \\***/ 00000300 \\*/********************************************************************/ 00000400 \\*/***** Last Updated - 17 October 2006 \\***/ 00000410 \\*/********************************************************************/ 00000420 W1BAL DS 0H 00000500 \\*/**************************** 00000600 \\*/***** INPUT FIELDS ******* 00000700 \\*/**************************** 00000800 W1IFUNC DS 0CL2 FUNCTION CODE 00000900 W1IFUNC1 DS CL1 FUNCTION CODE, BYTE 1 00001000 W1IFUNC2 DS CL1 FUNCTION CODE, BYTE 2 00001100 W1IBORO DS 0CL1 00001200 W1IBORO1 DS CL1 BORO CODE (1=MN;2=BX;3=BK;4=QN;5=SI) 00001300 W1IHSE# DS CL12 UNFORMATED HSNUM FOR FUNCTION: 1; 1A; 1E. 00001400 W1IHSE#P DS CL6 HOUSE NUM (INTERNAL FORMAT FOR FUNC D) 00001500 W1ISTRT1 DS CL32 STREET NAME 1 00001600 W1ISTRT2 DS CL32 STREET NAME 2 00001700 W1ISTRT3 DS CL32 STREET NAME 3 00001800 W1ICOMP DS CL1 COMPASS DIRECTION (TYPES 2, 3C & 3S) 00001900 W1ICOMP2 DS CL1 COMPASS DIRECTION (TYPE 3S) 00001950 W1ICDE1 DS PL4 PB5SC FOR STREET 1 00002000 W1ICDE2 DS PL4 PB5SC FOR STREET 2 00002100 W1ICDE3 DS PL4 PB5SC FOR STREET 3 00002200 W1IRBRQS DS CL1 ROADBED REQUEST SWITCH 00002300 W1IBORO2 DS CL1 BORO CODE OF CROSS ST. 1 00002400 W1IBORO3 DS CL1 BORO CODE OF CROSS ST. 2 00002500 W1ISNL DS CL2 LENGTH STREET NAME IS TO BE NORMALIZED TO 00002600 W1I10SC1 DS CL11 BORO + 10 BYTE STREET CODE FOR CROSS STREET 1 00002700 W1I10SC2 DS CL11 BORO + 10 BYTE STREET CODE FOR CROSS STREET 2 00002800 W1I10SC3 DS CL11 BORO + 10 BYTE STREET CODE FOR CROSS STREET 3 00002900 W1IZIPIN DS CL5 INPUT ZIP CODE 00003000 W1IBBL DS 0CL10 BORO,BLOCK,LOT FOR \"BL\" FUNCTION 00003100 W1IBLBOR DS CL1 BORO FOR FUNCTION \"BL\" 00003200 W1IBLOCK DS CL5 TAX BLOCK - FOR FUNCTION \"BL\" 00003300 W1ILOT DS CL4 TAX LOT - FOR FUNCTION \"BL\" 00003400 DS CL1 FILLER 00003410 W1IBIN DS CL7 BUILDING ID NUMBER 00003500 W1ICMPCT DS CL1 'C' IF STREET NAMES ARE TO BE COMPACTED 00003600 W1ILONG3 DS CL1 'L' IF LONG WORKAREA 2 FOR FUNC 3 DESIRED 00003700 W1ILHSE DS CL12 UNFORMATED LOW HSNUM FOR FUNCTION: 1; 1A; 1E. 00003800 W1ILHSEP DS CL6 LOW HOUSE NUM (INTERNAL FORMAT FOR FUNC D) 00003900 W1INIBMF DS CL1 NON-IBM MAIN FRAMME FLAG 00004000 W1I1ABLV DS CL1 Set to \"S\" for St'd Func. 1A & BL WORKAREA 00004100 \\* Set to \"L\" or \" \" for Legacy 1A & BL Workarea 00004200 W1IXSTF DS CL1 CROSS STREET NAME FLAG 00004300 DS CL4 FILLER 00004400 \\*/***************************** 00004500 \\*/***** OUTPUT FIELDS ******* 00004600 \\*/***************************** 00004700 W1OLHSE DS CL12 LOW HOUSE NUMBER IN DISPLAY FORMAT W1OBORO DS CL9 BORO NAME 00004800 W1OSTRT1 DS CL32 STREET 1 NAME, NORMALIZED 00004900 W1OSTRT2 DS CL32 STREET 2 NAME, NORMALIZED 00005000 W1OSTRT3 DS CL32 STREET 3 NAME, NORMALIZED 00005100 W1OHSE# DS CL12 HOUSE NUMBER, NORMALIZED, DISPLAY FORMAT 00005200 W1OHSE#P DS CL6 HOUSE NUMBER (INTERNAL FORMAT) 00005300 DS CL7 FILLER 00005400 W1OPB51K DS 0PL4 Packed Borough and Street Code 1 00005500 W1OBOR1K DS XL1 Packed unsigned Borough Code 00005600 W1OCDE1K DS PL3 STREET CODE 1 (KEY) 00005700 DS PL2 Filler 00005800 W1OPB52K DS 0PL4 Packed Borough and Street Code 2 00005900 W1OBOR2K DS XL1 Packed unsigned Borough Code 00006000 W1OCDE2K DS PL3 STREET CODE 2 (KEY) 00006100 DS PL2 Filler 00006200 W1OPB53K DS 0PL4 Packed Borough and Street Code 3 00006300 W1OBOR3K DS XL1 Packed unsigned Borough Code 00006400 W1OCDE3K DS PL3 STREET CODE 3 (KEY) 00006500 W1OATTR DS CL3 Attribute Bytes - Internal Use Only 00006600 W1BROWSE DS CL40 10 PB5SC'S FOR FUNCTION: BB; BF. 00006700 W1O10SC1 DS CL11 BORO + 10 BYTE STREET CODE FOR CROSS STREET 1 00006800 W1O10SC2 DS CL11 BORO + 10 BYTE STREET CODE FOR CROSS STREET 2 00006900 W1O10SC3 DS CL11 BORO + 10 BYTE STREET CODE FOR CROSS STREET 2 00007000 W1OCONDO DS CL5 CONDO UNIT ID NUMBER - NOT IMPLEMENTED 00007100 W1OBBL DS 0CL10 OUTPUT BORO,BLOCK,LOT FOR FUNCTION \"BL\" 00007200 W1OBLBOR DS CL1 BORO FOR FUNCTION \"BL\" 00007300 W1OBLOCK DS CL5 TAX BLOCK - FOR FUNCTION \"BL\" 00007400 W1OLOT DS CL4 TAX LOT - FOR FUNCTION \"BL\" 00007500 DS CL1 FILLER 00007510 W1OBIN DS CL7 BUILDING IDENTIFICATION Number 00007600 W1OINTU1 DS CL1 INTERNAL USE ONLY - ATTR BYTE W1OREASN DS CL1 REASON CODE 00007900 W1OINTR0 DS CL1 INTERNAL USE ONLY - RETURN CODE 00008000 W1OINTRC DS CL1 INTERNAL USE ONLY - RETURN CODE 00008100 W1ORC DS 0CL2 RETURN CODE 00008200 W1ORC1 DS CL1 RETURN CODE, BYTE 1 00008300 W1ORC2 DS CL1 RETURN CODE, BYTE 2 00008400 W1OERROR DS CL80 ERROR MESSAGE 00008500 W1O#SIM DS PL2 NUMBER OF SIMILAR NAMES 00008600 W1ONAMES DS 10CL32 UP TO 10 SIMILAR NAMES 00008700 W1END EQU * 00008800 W1LENGTH EQU W1END-W1BAL LENGTH OF W1BAL 00008900 W2BAL COPY File \\*/********************************************************************/ 00010000 \\*/***** THIS IS GEOSUPPORT INFORMATION SYSTEM COPY FILE W2BAL, \\***/ 00020000 \\*/***** CONTAINING THE LAYOUT OF WORK AREA 2 FOR FUNCTIONS \\***/ 00030000 \\*/***** 1, 1E, 2, 2C, 3, 3C. PLEASE NOTE THAT FUNCTIONS 2 AND 2C \\***/ 00040000 \\*/***** SHARE A SINGLE WORK AREA 2 LAYOUT. \\***/ 00050000 \\*/********************************************************************/ 00060000 \\*/***** LAST MODIFIED JANUARY 2012 \\***/ 00070044 \\*/********************************************************************/ 00080012 W2BAL DS 0H 00090000 W2ACCKEY DS CL21 ACCESS KEY 00100000 W2LAYOUT DS 0CL179 00110002 W2F1CPAR DS CL1 CONTINUOUS PARITY INDICATOR 00120002 W2F1LHNI DS 0CL6 LOW HOUSE NUMBER 00130000 W2F1HSEL DS CL5 LOW HOUSE NUMBER ON BLOCK FACE 00140000 W2F1SFXL DS CL1 LOW HOUSE NUMBER SUFFIX 00150013 W2F1HHNI DS 0CL6 HIGH HOUSE NUMBER 00160000 W2F1HSEH DS CL5 HIGH HOUSE NUMBER ON BLOCK FACE 00170000 W2F1SFXH DS CL1 HI HOUSE NUMBER SUFFIX 00180013 W2F1ALX DS CL1 A=ALLEYS INTERSECT SEGMENT 00190025 \\* X=CROSS STREETS MODIFIED 00191025 W2F1#STL DS CL1 NUMBER OF CROSS STREETS AT LOW END 00200000 W2F1CDEL DS CL20 UP TO FIVE PB5SC'S FOR LOW END 00210000 W2F1#STH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 00220000 W2F1CDEH DS CL20 UP TO FIVE PB5SC'S FOR HIGH END 00230000 W2F1CD DS 0CL3 COMMUNITY DISTRICT 00240000 W2F1CDB DS CL1 COMMUNITY DISTRICT BORO 00250000 W2F1CDN DS CL2 COMMUNITY DISTRICT NUMBER 00260000 W2F1ZIP DS CL5 ZIP CODE 00270000 W2F1SLA DS CL1 STREET LIGHT AREA 00280000 W2F1HCD DS CL2 HEALTH CODE DISTRICT 00290045 W2F1SOS DS CL1 SIDE OF STREET INDICATOR 00300000 W2F1PAR DS CL1 CONTINUOUS PARITY INDICATOR 00310000 W2F1CT10 DS CL6 2010 CENSUS TRACT 00320037 W2F1CB10 DS CL4 2010 CENSUS BLOCK 00350037 W2F1CBS1 DS CL1 2010 CENSUS BLOCK SUFFIX NOT IMPLEMENTED 00351042 DS CL3 FILLER 00352032 W2F1HA DS CL4 HEALTH AREA 00360045 W2F1SREC DS CL3 SANITATION RECYCLE PICK-UP 00370007 W2F1FEAT DS CL1 FEATURE TYPE CODE 00380023 RES1 DS CL1 RESERVED FOR DCP/GSS USE 00400000 ORG RES1 00401030 W2F1ELCD DS CL1 COMMUNITY DEVELOPMENT ELIGIBILITY 00402031 W2F1CURV DS CL1 CURVE FLAG 00410014 W2F1POL DS 0CL4 POLICE DISTRICT 00420000 W2F1PBC DS CL1 POLICE PATROL BORO COMMAND 00430000 W2F1POP DS CL3 POLICE PRECINCT 00440000 W2F1SCH DS CL2 SCHOOL DISTRICT 00450000 DS CL14 RESERVED FOR POLITICAL INFORMATION 00460028 W2F1CSC DS CL1 COINCIDENT SEGMENT COUNT 00460128 W2F1STC DS CL1 SEGMENT TYPE CODE 00461026 W2F1SAND DS CL3 SANITATION DISTRICT 00470002 W2F1SANT DS CL2 SANITATION DEPT SUBSECTION 00480000 W2F1FS DS CL2 FIRE DIVISION 00490001 W2F1FB DS CL2 FIRE BATTALION 00500000 W2F1FC DS 0CL4 FIRE COMPANY 00510000 W2F1FCT DS CL1 FIRE COMPANY TYPE 00520000 W2F1FCN DS CL3 FIRE COMPANY NUMBER 00530000 W2F1SPAD DS CL1 SPECIAL ADDRESS FLAG 00540000 W2F1MHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 00550000 W2F1FILS DS CL1 FILLER-WAS SPLIT SCHOOL DISTRICT FLAG 00560039 W2F1LGC DS CL2 LOGICAL GROUP CODE (PREFERRED) 00570000 W2F1FACE DS CL4 LION FACE CODE 00580000 W2F1SEQ DS CL5 LION SEQUENCE NUMBER 00590000 W2F1CT90 DS CL6 1990 CENSUS TRACT 00600000 DS CL4 FILLER 00610015 W2F1CPB DS CL3 DYNAMIC BLOCK/ATOMIC POLYGON 00640038 W2F1XCOR DS CL7 X COORDINATE 00650000 W2F1YCOR DS CL7 Y COORDINATE 00660000 W2F1SEGL DS CL5 SEGMENT LEGNTH 00670000 W2F1SREG DS CL5 SANITATION REGULAR PICK-UP 00680012 \\* 00690000 ******************************************************************** 00700000 ORG W2F1SCH+2 PATCH FOR FUNCTION 1E FIELDS 00710000 ******************************************************************** 00720000 \\* 00730000 W2F1EED DS CL3 ELECTION DISTRICT 00740000 W2F1EAD DS CL2 ASSEMBLY DISTRICT 00750000 W2F1ESED DS CL1 SPLIT E.D. FLAG 00760000 W2F1ECON DS CL2 CONGRESSIONAL DISTRICT 00770000 W2F1ESEN DS CL2 SENATORIAL DISTRICT 00780000 W2F1ECIV DS CL2 CIVIL COURT DISTRICT 00790000 W2F1ECOU DS CL2 CITY COUNCIL DISTRICT 00800000 DS CL18 00810000 W2F1ELGC DS CL2 LOGICAL GROUP CODE (PREFERRED) 00820000 \\* 00830000 ******************************************************************** 00840000 ORG W2LAYOUT RESET LOCATION COUNTER FOR FUNCTION 2 00850000 ******************************************************************** 00860000 \\* 00870000 W2F2DUPI DS CL1 DUPLICATE INTERSECT FLAG 00880000 DS CL9 FILLER 00890000 W2F2LGC1 DS CL2 STREET 1 PREFERRED LGC 00900013 W2F2LGC2 DS CL2 STREET 2 PREFERRED LGC 00910013 W2F2#INT DS CL1 NUMBER OF INTERSECTING STREETS 00920000 W2F2CODE DS CL20 INTERSECTING PB5SC'S 00930000 W2F2CDIR DS CL1 COMPASS DIRECTION OF TWO LOWEST STREETS 00940011 W2F2LEVC DS CL10 LEVEL CODES ASSOCIATED WITH CROSS STREETS 00941022 DS CL2 WAS INSTRUCTIONAL DIVISION 00950046 W2F2FS DS CL2 FIRE DIVISION 00960003 W2F2FB DS CL2 FIRE BATTALION 00970000 W2F2FC DS 0CL4 FIRE COMPANY 00980000 W2F2FCT DS CL1 FIRE COMPANY TYPE 00990000 W2F2FCN DS CL3 FIRE COMPANY NUMBER 01000000 W2F2CD DS 0CL3 COMMUNITY DISTRICT 01010000 W2F2CDB DS CL1 COMMUNITY DISTRICT BORO 01020000 W2F2CDN DS CL2 COMMUNITY DISTRICT NUMBER 01030000 W2F2ZIP DS CL5 ZIP CODE 01040000 W2F2SLA DS CL1 STREET LIGHT AREA 01050000 W2F2CT10 DS CL6 2010 CENSUS TRACT 01060037 DS CL3 FILLER 01080000 W2F2HA DS CL4 HEALTH AREA 01090045 DS CL9 FILLER 01100010 W2F2NDNB DS CL7 LION NODE NUMBER 01110010 W2F2XCOR DS CL7 X COORDINATE 01120000 W2F2YCOR DS CL7 Y COORDINATE 01130000 DS CL4 FILLER 01150013 W2F2POL DS 0CL4 POLICE DISTRICT 01160000 W2F2PBC DS CL1 POLICE PATROL BORO COMMAND 01170000 W2F2POP DS CL3 POLICE PRECINCT 01180000 W2F2SCH DS CL2 SCHOOL DISTRICT 01190000 W2F2MHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 01200000 W2F2CT90 DS CL6 1990 CENSUS TRACT 01210000 W2F2SVP1 DS 0CL8 FIRST SANBORN BOROUGH, PAGE, VOLUME 01220003 W2F2SB1 DS CL1 FIRST SANBORN BOROUGH CODE 01230003 W2F2SP1 DS CL3 FIRST SANBORN PAGE 01240003 W2F2SV1 DS CL4 FIRST SANBORN VOLUME 01250003 W2F2SVP2 DS 0CL8 SECOND SANBORN BOROUGH, PAGE, VOLUME 01260003 W2F2SB2 DS CL1 SECOND SANBORN BOROUGH CODE 01270003 W2F2SP2 DS CL3 SECOND SANBORN PAGE 01280003 W2F2SV2 DS CL4 SECOND SANBORN VOLUME 01290003 W2F2DID DS CL5 DUPLICATE INTERSECTION DISTANCE 01291034 W2F2T00 DS CL6 2000 CENSUS TRACT 01292040 DS CL27 FILLER 01300034 \\* 01310000 ******************************************************************** 01320000 ORG W2LAYOUT RESET LOCATION COUNTER FOR FUNCTION 3 01330000 ******************************************************************** 01340000 \\* 01350000 W2F3DUPF DS CL1 DUPLICATE KEY FLAG 01360013 W2F3CURV DS CL1 CURVE FLAG 01361014 W2F3LST DS CL1 LOCATIONAL STATUS 01362018 W2F3CBI DS CL1 COUNTY BOUNDARY INDICATOR 01363017 W2F3CSC DS CL1 COINCIDENT SEGMENT COUNT 01364028 DS CL3 01370028 W2F3LGC1 DS CL2 STREET 1 PREFERRED LGC 01380013 W2F3LGC2 DS CL2 STREET 2 PREFERRED LGC 01390013 W2F3LGC3 DS CL2 STREET 3 PREFERRED LGC 01400013 W2F3#STL DS CL1 NUMBER OF CROSS STREETS AT LOW END 01410000 W2F3CDEL DS CL20 CROSS STREET PB5SC'S AT LOW END 01420000 W2F3#STH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 01430000 W2F3CDEH DS CL20 CROSS STREET PB5SC'S AT HIGH END 01440000 W2F3SLA DS CL1 STREET LIGHT AREA 01450000 W2F3REVF DS CL1 REVERSAL FLAG 01460000 W2F3CDL DS 0CL3 LEFT COMMUNITY DISTRICT 01470000 W2F3CDBL DS CL1 LEFT COMMUNITY DISTRICT BORO 01480006 W2F3CDNL DS CL2 LEFT COMMUNITY DISTRICT NUMBER 01490006 W2F3CDR DS 0CL3 RIGHT COMMUNITY DISTRICT 01500000 W2F3CDBR DS CL1 RIGHT COMMUNITY DISTRICT BORO 01510006 W2F3CDNR DS CL2 RIGHT COMMUNITY DISTRICT NUMBER 01520006 W2F3ZIPL DS CL5 LEFT ZIP CODE 01530000 W2F3ZIPR DS CL5 RIGHT ZIP CODE 01540000 DS CL18 FILLER - FORMER 1980 CENSUS GEOGRAPHY 01541015 W2F3HAL DS CL4 LEFT HEALTH AREA 01610045 W2F3HAR DS CL4 RIGHT HEALTH AREA 01620045 DS CL2 WAS LEFT INSTRUCTIONAL DIVISION 01630046 DS CL2 WAS RIGHT INSTRUCTIONAL DIVISION 01631046 W2F3LO#L DS CL7 LEFT LOW HOUSE NUMBER 01640000 W2F3HI#L DS CL7 LEFT HIGH HOUSE NUMBER 01650000 W2F3LO#R DS CL7 RIGHT LOW HOUSE NUMBER 01660000 W2F3HI#R DS CL7 RIGHT HIGH HOUSE NUMBER 01670000 W2F3PAR DS CL1 CONTINUOUS PARITY INDICATOR 01680000 W2F3FACE DS CL4 LION FACE CODE 01690000 W2F3SEQ DS CL5 LION SEQUENCE NUMBER 01700000 W2F3GEN DS CL1 GENERATED RECORD FLAG 01710000 W2F3SEGL DS PL3 SEGMENT LENGTH IN FEET 01720000 W2F3SLOP DS CL3 SEGMENT SLOPE IN DEGREES 01730000 W2F3ORNT DS CL1 SEGMENT ORIENTATION 01740000 DS CL4 FILLER 01750013 RES2 DS CL2 RESERVED FOR DCP/GSS USE 01770000 ORG RES2 01770130 W2F3ELCD DS CL2 COMMUNITY DEVELOPMENT ELIGIBILITY 01770231 W2F3DGLG DS CL1 DOG LEG FLAG 01771015 W2F3FEAT DS CL1 FEATURE TYPE CODE 01780024 W2F3POLL DS 0CL4 LEFT POLICE DISTRICT 01790000 W2F3PBCL DS CL1 LEFT POLICE PATROL BORO COMMAND 01800000 W2F3POPL DS CL3 LEFT POLICE PRECINCT 01810000 W2F3POLR DS 0CL4 RIGHT POLICE DISTRICT 01820000 W2F3PBCR DS CL1 RIGHT POLICE PATROL BORO COMMAND 01830000 W2F3POPR DS CL3 RIGHT POLICE PRECINCT 01840000 W2F3SCHL DS CL2 LEFT SCHOOL DISTRICT 01850000 W2F3SCHR DS CL2 RIGHT SCHOOL DISTRICT 01860000 W2F3MHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 01870000 W2F3SEGT DS CL7 SEGMENT IDENTIFIER 01871015 W2F3STC DS CL1 SEGMENT TYPE CODE 01880026 \\* 01890000 ******************************************************************** 01900000 ORG W2LAYOUT RESET LOCATION COUNTER FOR FUNCTION 3C 01910000 ******************************************************************** 01920000 \\* 01930000 W23CCURV DS CL1 CURVE FLAG 01931014 W23CSTC DS CL1 SEGMENT TYPE CODE 01932026 W23CLST DS CL1 LOCATIONAL STATUS 01933018 W23CCBI DS CL1 COUNTY BOUNDARY INDICATOR 01934017 W23CCSC DS CL1 COINCIDENT SEGMENT COUNT 01935028 DS CL3 FILLER 01940028 W23CLGC1 DS CL2 STREET 1 PREFERRED LGC 01950013 W23CLGC2 DS CL2 STREET 2 PREFERRED LGC 01960013 W23CLGC3 DS CL2 STREET 3 PREFERRED LGC 01970013 W23C#STL DS CL1 NUMBER OF CROSS STREETS AT LOW END 01980000 W23CCDEL DS CL20 UP TO FIVE PB5SC'S FOR LOW END 01990000 W23C#STH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 02000000 W23CCDEH DS CL20 UP TO FIVE PB5SC'S FOR HIGH END 02010000 W23CCD DS 0CL3 COMMUNITY DISTRICT 02020000 W23CCDB DS CL1 COMMUNITY DISTRICT BORO 02030000 W23CCDN DS CL2 COMMUNITY DISTRICT NUMBER 02040000 W23CZIP DS CL5 ZIP CODE 02050000 W23CSLA DS CL1 STREET LIGHT AREA 02060000 W23CT00 DS CL6 2000 CENSUS TRACT - 02070040 DS CL1 FILLER 02080034 W23CCT10 DS CL6 2010 CENSUS TRACT 02100037 W23CCB10 DS CL4 2010 CENSUS BLOCK 02110037 W23CCBS1 DS CL1 2010 CENSUS BLOCK SUFFIX NOT IMPLEMENTED 02111042 W23CHA DS CL4 HEALTH AREA 02120045 W23CREVF DS CL1 CROSS STREET REVERSAL FLAG 02130005 W23CSOS DS CL1 SIDE OF STREET INDICATOR 02140005 W23CFS DS CL2 FIRE DIVISION 02150003 W23CFB DS CL2 FIRE BATTALION 02160000 W23CFC DS 0CL4 FIRE COMPANY 02170000 W23CFCT DS CL1 FIRE COMPANY TYPE 02180000 W23CFCN DS CL3 FIRE COMPANY NUMBER 02190000 W23CSEGT DS CL7 SEGMENT IDENTIFIER 02200015 W23CHSEL DS CL7 LOW HOUSE NUMBER 02210000 W23CHSEH DS CL7 HIGH HOUSE NUMBER 02220000 W23CHS2L DS CL7 2ND LOW HSE # - USED IF ODD & EVEN RANGES 02230000 W23CHS2H DS CL7 2ND HI HSE # ARE ON SAME SIDE OF STREET 02240000 W23CPAR DS CL1 CONTINUOUS PARITY INDICATOR 02250000 W23CFACE DS CL4 LION FACE CODE 02260000 W23CSEQ DS CL5 LION SEQUENCE NUMBER 02270000 W23CGEN DS CL1 GENERATED RECORD FLAG 02280000 W23CSEGL DS PL3 SEGMENT LENGTH IN FEET 02290000 W23CSLOP DS CL3 SEGMENT SLOPE IN DEGREES 02300000 W23CORNT DS CL1 SEGMENT ORIENTATION 02310000 DS CL2 WAS INSTRUCTIONAL DIVISION 02320046 RES3 DS CL1 RESERVED FOR DCP/GSS USE 02330000 ORG RES3 02331030 W23CELCD DS CL1 COMMUNITY DEVELOPMENT ELIGIBILITY 02332031 W23CFEAT DS CL1 FEATURE TYPE CODE 02340024 W23CPOL DS 0CL4 POLICE DISTRICT 02350000 W23CPBC DS CL1 POLICE PATROL BORO COMMAND 02360000 W23CPOP DS CL3 POLICE PRECINCT 02370000 W23CSCH DS CL2 SCHOOL DISTRICT 02380000 W23CMHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 02390000 W23CCT90 DS CL6 1990 CENSUS TRACT 02400000 DS CL4 FILLER 02410015 W23CCPB DS CL3 DYNAMIC BLOCK/ATOMIC POLYGON 02440038 W23CB00 DS CL4 2000 CENSUS BLOCK 02441040 W23CS00 DS CL1 2000 CENSUS BLOCK SUFFIX 02442040 \\* 02460000 ******************************************************************** 02470000 ORG W2BAL RESET LOCATION COUNTER FOR FUNCTION 5 02480000 ******************************************************************** 02490000 \\* 02500000 W2F5AMK DS CL28 ACCESS MATCHING KEY 02510000 DS CL172 FILLER 02520000 W2END EQU * 02530000 W2LENGTH EQU W2END-W2BAL LENGTH OF W2BAL 02540000 W2BALL COPY File \\*/********************************************************************/ 00000100 \\*/***** THIS IS GEOSUPPORT INFORMATION SYSTEM COPY FILE W2BALL, \\***/ 00000200 \\*/***** CONTAINING THE LAYOUT OF THE OPTIONAL LONG WORK AREA 2 \\***/ 00000300 \\*/***** FOR FUNCTIONS 1 AND 3. \\***/ 00000400 \\*/********************************************************************/ 00000500 \\*/***** LAST UPDATED JANUARY 2012 \\***/ 00000603 \\*/********************************************************************/ 00000702 W2BALL DS 0H 00000802 W2LACKEY DS CL21 ACCESS KEY 00100000 W21LCPAR DS CL1 CONTINUOUS PARITY INDICATOR 00120002 W21LLHNI DS 0CL6 LOW HOUSE NUMBER 00130000 W21LHSEL DS CL5 LOW HOUSE NUMBER ON BLOCK FACE 00140000 W21LSFXL DS CL1 LOW HOUSE NUMBER SUFFIX 00150013 W21LHHNI DS 0CL6 HIGH HOUSE NUMBER 00160000 W21LHSEH DS CL5 HIGH HOUSE NUMBER ON BLOCK FACE 00170000 W21LSFXH DS CL1 HI HOUSE NUMBER SUFFIX 00180013 W21LALX DS CL1 A=ALLEYS INTERSECT SEGMENT 00190000 * X=CROSS STREETS MODIFIED W21L#STL DS CL1 NUMBER OF CROSS STREETS AT LOW END 00200000 W21LCDEL DS CL20 UP TO FIVE PB5SC'S FOR LOW END 00210000 W21L#STH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 00220000 W21LCDEH DS CL20 UP TO FIVE PB5SC'S FOR HIGH END 00230000 W21LCD DS 0CL3 COMMUNITY DISTRICT 00240000 W21LCDB DS CL1 COMMUNITY DISTRICT BORO 00250000 W21LCDN DS CL2 COMMUNITY DISTRICT NUMBER 00260000 W21LZIP DS CL5 ZIP CODE 00270000 W21LSLA DS CL1 STREET LIGHT AREA 00280000 W21LHCD DS CL2 HEALTH CODE DISTRICT 00290000 W21LSOS DS CL1 SIDE OF STREET INDICATOR 00300000 W21LPAR DS CL1 CONTINUOUS PARITY INDICATOR 00310000 W21LCT10 DS CL6 2010 CENSUS TRACT 00320015 W21LCB10 DS CL4 2010 CENSUS BLOCK 00350015 W21LCBS1 DS CL1 2010 CENSUS BLOCK SUFFIX 00351015 DS CL3 FILLER 00352015 W21LHA DS CL4 HEALTH AREA 00360000 W21LSREC DS CL3 SANITATION RECYCLE PICK-UP 00370007 W21LFEAT DS CL1 FEATURE TYPE CODE 00380007 RES1L DS CL1 RESERVED FOR DCP/GSS USE 00400000 ORG RES1L W21LELCD DS CL1 COMMUNITY DEVELOPMENT ELIGIBILITY W21LCURV DS CL1 CURVE FLAG 00410014 W21LPOL DS 0CL4 POLICE DISTRICT 00420000 W21LPBC DS CL1 POLICE PATROL BORO COMMAND 00430000 W21LPOP DS CL3 POLICE PRECINCT 00440000 W21LSCH DS CL2 SCHOOL DISTRICT 00450000 DS CL14 RESERVED FOR POLITICAL INFORMATION 00460013 W21LCSC DS CL1 COINCIDENT SEGMENT COUNT W21LSTC DS CL1 SEGMENT TYPE CODE W21LSAND DS CL3 SANITATION DISTRICT 00470002 W21LSANT DS CL2 SANITATION DEPT SUBSECTION 00480000 W21LFS DS CL2 FIRE DIVISION 00490001 W21LFB DS CL2 FIRE BATTALION 00500000 W21LFC DS 0CL4 FIRE COMPANY 00510000 W21LFCT DS CL1 FIRE COMPANY TYPE 00520000 W21LFCN DS CL3 FIRE COMPANY NUMBER 00530000 W21LSPAD DS CL1 SPECIAL ADDRESS FLAG 00540000 W21LMHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 00550000 W21LFILS DS CL1 FILLER-WAS SPLIT SCHOOL DISTRICT FLAG 00560000 W21LLGC DS CL2 LOGICAL GROUP CODE (PREFERRED) 00570000 W21LFACE DS CL4 LION FACE CODE 00580000 W21LSEQ DS CL5 LION SEQUENCE NUMBER 00590000 W21LCT90 DS CL6 1990 CENSUS TRACT 00600000 DS CL4 FILLER 00610015 W21LCPB DS CL3 DYNAMIC BLOCK/ATOMIC POLYGON 00640000 W21LXCOR DS CL7 X COORDINATE 00650000 W21LYCOR DS CL7 Y COORDINATE 00660000 W21LSEGL DS CL5 SEGMENT LEGNTH 00670000 W21LSREG DS CL5 SANITATION REGULAR PICK-UP 00680012 W21LSEGT DS CL7 SEGMENT IDENTIFIER W21LB7SC DS CL8 \"TRUE\" BOROUGH AND 7 DIGIT STREET CODE W21LHNI DS CL6 UNDERLYING HOUSE NUMBER W21LT00 DS CL6 2000 CENSUS TRACT 00320015 W21LB00 DS CL4 2000 CENSUS BLOCK 00350015 W21LS00 DS CL1 2000 CENSUS BLOCK SUFFIX 00351015 DS CL68 FILLER - FUTURE USE \\* 00690000 ******************************************************************** 00700000 ORG W21LSCH+2 PATCH FOR FUNCTION 1E FIELDS 00710000 ******************************************************************** 00720000 \\* 00730000 W21LEED DS CL3 ELECTION DISTRICT 00740000 W21LEAD DS CL2 ASSEMBLY DISTRICT 00750000 W21LESED DS CL1 SPLIT E.D. FLAG 00760000 W21LECON DS CL2 CONGRESSIONAL DISTRICT 00770000 W21LESEN DS CL2 SENATORIAL DISTRICT 00780000 W21LECIV DS CL2 CIVIL COURT DISTRICT 00790000 W21LECOU DS CL2 CITY COUNCIL DISTRICT 00800000 DS CL18 00810000 W21LELGC DS CL2 LOGICAL GROUP CODE (PREFERRED) 00820000 \\* 00830000 ******************************************************************** 00840000 ORG W2LACKEY RESET LOCATION COUNTER FOR FUNCTION 3 00850000 ******************************************************************** 00860000 \\* 00870000 DS CL21 00000902 W23LDUPF DS CL1 DUPLICATE KEY FLAG 00001002 W23LCURV DS CL1 CURVE FLAG 00001103 W23LLST DS CL1 LOCATION STATUS OF SEGMENT W23LCBI DS CL1 COUNTY BOUNDARY INDICATOR W23LCSC DS CL1 COINCIDENT SEGMENT COUNT DS CL3 00001203 W23LLGC1 DS CL2 STREET 1 PREFERRED LGC 00001302 W23LLGC2 DS CL2 STREET 2 PREFERRED LGC 00001402 W23LLGC3 DS CL2 STREET 3 PREFERRED LGC 00001502 W23L#STL DS CL1 NUMBER OF CROSS STREETS AT LOW END 00001602 W23LCDEL DS CL20 CROSS STREET PB5SC'S AT LOW END 00001702 W23L#STH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 00001802 W23LCDEH DS CL20 CROSS STREET PB5SC'S AT HIGH END 00001902 W23LSLA DS CL1 STREET LIGHT AREA 00002002 W23LREVF DS CL1 REVERSAL FLAG 00002102 W23LCDL DS 0CL3 LEFT COMMUNITY DISTRICT 00002202 W23LCDBL DS CL1 LEFT COMMUNITY DISTRICT BORO 00002302 W23LCDNL DS CL2 LEFT COMMUNITY DISTRICT NUMBER 00002402 W23LCDR DS 0CL3 RIGHT COMMUNITY DISTRICT 00002502 W23LCDBR DS CL1 RIGHT COMMUNITY DISTRICT BORO 00002602 W23LCDNR DS CL2 RIGHT COMMUNITY DISTRICT NUMBER 00002702 W23LZIPL DS CL5 LEFT ZIP CODE 00002802 W23LZIPR DS CL5 RIGHT ZIP CODE 00002902 DS CL18 W23LHAL DS CL4 LEFT HEALTH AREA 00003602 W23LHAR DS CL4 RIGHT HEALTH AREA 00003702 DS CL2 WAS LEFT INSTRUCTIONAL DIVISION 00003802 DS CL2 WAS RIGHT INSTRUCTIONAL DIVISION W23LLO#L DS CL7 LEFT LOW HOUSE NUMBER 00003902 W23LHI#L DS CL7 LEFT HIGH HOUSE NUMBER 00004002 W23LLO#R DS CL7 RIGHT LOW HOUSE NUMBER 00004102 W23LHI#R DS CL7 RIGHT HIGH HOUSE NUMBER 00004202 W23LPAR DS CL1 CONTINUOUS PARITY INDICATOR 00004302 W23LFACE DS CL4 LION FACE CODE 00004402 W23LSEQ DS CL5 LION SEQUENCE NUMBER 00004502 W23LGEN DS CL1 GENERATED RECORD FLAG 00004602 W23LSEGL DS PL3 SEGMENT LENGTH IN FEET 00004702 W23LSLOP DS CL3 SEGMENT SLOPE IN DEGREES 00004802 W23LORNT DS CL1 SEGMENT ORIENTATION 00004902 DS CL4 FILLER 00005002 RESL1 DS CL2 RESERVED FOR DCP/GSS USE 00005102 ORG RESL1 W23LELCD DS CL2 COMMUNITY DEVELOPMENT ELIGIBILITY W23LDGLG DS CL1 DOG LEG FLAG W23LFEAT DS CL1 FEATURE TYPE CODE 00005202 W23LPOLL DS 0CL4 LEFT POLICE DISTRICT 00005302 W23LPBCL DS CL1 LEFT POLICE PATROL BORO COMMAND 00005402 W23LPOPL DS CL3 LEFT POLICE PRECINCT 00005502 W23LPOLR DS 0CL4 RIGHT POLICE DISTRICT 00005602 W23LPBCR DS CL1 RIGHT POLICE PATROL BORO COMMAND 00005702 W23LPOPR DS CL3 RIGHT POLICE PRECINCT 00005802 W23LSCHL DS CL2 LEFT SCHOOL DISTRICT 00005902 W23LSCHR DS CL2 RIGHT SCHOOL DISTRICT 00006002 W23LMHRI DS CL1 MARBLE HILL / RIKERS ISLAND 00006102 W23LSEGT DS CL7 SEGMENT IDENTIFIER W23LSTC DS CL1 SEGMENT TYPE CODE 00006202 W23LT90L DS CL6 1990 LEFT CENSUS TRACT 00006302 DS CL4 FILLER W23LCPBL DS CL3 CURRENT LEFT DYNAMIC BLOCK/ATOMIC POLYGON 00006702 W23LT90R DS CL6 1990 RIGHT CENSUS TRACT 00006802 DS CL4 FILLER W23LCPBR DS CL3 CURRENT RIGHT DYNAMIC BLOCK/ATOMIC POLYGON 00007202 W23LFSL DS CL2 LEFT FIRE DIVISION 00007302 W23LFBL DS CL2 LEFT FIRE BATTALION 00007402 W23LFCL DS 0CL4 LEFT FIRE COMPANY 00007502 W23LFCTL DS CL1 LEFT FIRE COMPANY TYPE 00007602 W23LFCNL DS CL3 LEFT FIRE COMPANY NUMBER 00007702 W23LFSR DS CL2 RIGHT FIRE DIVISION 00007802 W23LFBR DS CL2 RIGHT FIRE BATTALION 00007902 W23LFCR DS 0CL4 RIGHT FIRE COMPANY 00008002 W23LFCTR DS CL1 RIGHT FIRE COMPANY TYPE 00008102 W23LFCNR DS CL3 RIGHT FIRE COMPANY NUMBER 00008202 W23LT10L DS CL6 LEFT 2010 CENSUS TRACT W23LB10L DS CL4 LEFT 2010 CENSUS BLOCK W23LBS1L DS CL1 LEFT 2010 CENSUS BLOCK SUFFIX W23LT10R DS CL6 RIGHT 2010 CENSUS TRACT W23LB10R DS CL4 RIGHT 2010 CENSUS BLOCK W23LBS1R DS CL1 RIGHT 2010 CENSUS BLOCK SUFFIX W23FNODE DS CL7 FROM NODE W23TNODE DS CL7 TO NODE W23L00TL DS CL6 LEFT 2000 CENSUS TRACT W23L00BL DS CL4 LEFT 2000 CENSUS BLOCK W23L00SL DS CL1 LEFT 2000 CENSUS BLOCK SUFFIX W23L00TR DS CL6 RIGHT 2000 CENSUS TRACT W23L00BR DS CL4 RIGHT 2000 CENSUS BLOCK W23L00SR DS CL1 RIGHT 2000 CENSUS BLOCK SUFFIX W23LEND EQU * 00008402 W23LLEN EQU W23LEND-W2BALL LENGTH OF W2BALL 00008502 W2BAL1A COPY File \\*/********************************************************************/ 00000100 \\*/***** THIS IS GEOSUPPORT INFORMATION SYSTEM COPY FILE W2BAL1A, \\***/ 00000200 \\*/***** CONTAINING THE LAYOUT OF WORK AREA 2 FOR FUNCTION \\***/ 00000300 \\*/***** 1A, BL AND BN WHICH SHARE A SINGLE WORK AREA 2 LAYOUT. \\***/ 00000408 \\*/********************************************************************/ 00000500 \\*/***** LAST UPDATED 5 MARCH 2009 \\***/ 00000608 \\*/********************************************************************/ 00000703 W2BAL1A DS 0H 00000803 DS CL21 00000903 W21ACPAR DS CL1 CONTINUOUS PARITY INDICATOR 00001003 W21AHSEL DS CL6 LOW HOUSE NUMBER ON BLOCK 00001103 W21AALT1 DS 0CL10 ALTERNATE KEY 00001203 W21ABOR1 DS CL1 ALTERNATE KEY - BORO 00001303 W21ATXB1 DS CL5 ALTERNATE KEY - TAX BLOCK 00001403 W21ATXL1 DS CL4 ALTERNATE KEY - TAX LOT 00001503 DS CL1 FILLER 00001603 W21ARSCC DS CL1 RPAD SCC 00001703 DS CL1 FILLER 00001803 W21AGLI DS 0CL11 GENERAL LOT INFO 00001903 W21ARBLC DS CL2 RPAD BUILDING CLASSIFICATION 00002003 W21ACORC DS CL2 CORNER CODE 00002103 W21A#STC DS CL2 TOTAL NUMBER STRUCTURES 00002203 W21A#BFA DS CL2 TOTAL NUMBER BLOCKFACES 00002303 W21AINTF DS CL1 INTERIOR LOT FLAG 00002403 W21AVACF DS CL1 VACANT LOT FLAG 00002503 W21AIRLF DS CL1 IRREGULARLY-SHAPED LOT FLAG 00002603 W21AMHRI DS 0CL1 MARBLE HILL/RIKERS ISLAND FLAG 00002703 W21AABFL DS CL1 ALTERNATE BORO FLAG 00002803 DS CL1 STROLLING FLAG (W21ASTRF) 00002903 W21ASTRK DS CL13 STROLLING KEY 00003003 W21AOVFL DS CL1 ADDRESS RANGE LIST OVERFLOW FLAG 00003103 W21ARFIU DS CL1 RESERVED FOR INTERNAL USE 00003203 W21ABIN DS CL7 BUILDING IDENTIFICATION NUMBER (BIN) 00003303 W21ACONF DS CL1 CONDO LOT FLAG 00003403 W21ARCO# DS CL4 RPAD CONDO NUMBER 00003503 W21ACLBL DS CL10 CONDO LOW BBL 00003603 DS CL1 FILLER 00003703 W21ACBBL DS CL10 CONDO BILLING BBL 00003803 DS CL1 FILLER 00003903 W21ACBBS DS CL1 CONDO BILLING BBL SCC 00004003 W21ACHBL DS CL10 CONDO HIGH BBL 00004103 DS CL1 FILLER 00004203 W21ASBVP DS CL8 SANDBORN BOROUGH/VOLUME/PAGE 00004303 W21ABUSA DS CL5 BUSINESS AREA 00004403 W21ACOOP DS CL4 COOP ID NUMBER 00004503 DS CL4 FILLER 00004605 W21ANBST DS CL4 ACTUAL TOTAL NBR OF BLDGS ON LOT 00004704 W21ATAXB DS CL1 TAX MAP BOROUGH 00004805 W21ATAXM DS CL4 TAX MAP NBR - SECTION AND VOLUME 00004905 DS CL4 RESERVED FOR TAX MAP PAGE NUMBER 00005005 W21AXCO DS CL7 X COORDINATE OF ANNOTATION POINT 00005107 W21AYCO DS CL7 Y COORDINATE OF ANNOTATION POINT 00005207 W21ABID DS CL6 BUSINESS IMPROVEMENT DISTRICT 00005308 DS CL2 FILLER 00005408 W21AINT DS CL10 INTERNAL USE 00005508 W21A#ADR DS CL2 TOTAL ADDRESSES FOR LOT 00005603 W21ALIST DS 0CL756 LIST OF ADDRESSES, MAXIMUM OF 21 00005703 W21ALOW# DS CL6 LOW HOUSE NUMBER 00005803 DS CL3 FILLER 00005903 W21AHI# DS CL6 HIGH HOUSE NUMBER 00006003 DS CL3 FILLER 00006103 W21ACODE DS CL8 STREET CODE 00006203 W21ALBIN DS CL7 LIST BIN 00006303 W21AATYP DS CL1 ADDRESS TYPE 00006403 DS CL1 FILLER 00006503 W21ALSOS DS CL1 LIST SOS 00006603 * STORAGE IS RESERVED FOR THE REMAINING 20 ADDRESS STRUCTURES. 00006703 * EACH STRUCTURE IS IDENTICAL TO THE ONE DEFINED ABOVE. 00006803 DS CL720 REMAINING ADDRESSES 00006903 W21AEND EQU * 00007003 W21ALEN EQU W21AEND-W2BAL1A LENGTH OF W2BAL1A 00008003 W2BAL1AL COPY File \\*/********************************************************************/ 00000100 \\*/***** THIS IS GEOSUPPORT INFORMATION SYSTEM COPY FILE W2BAL1AL, \\***/ 00000200 \\*/***** CONTAINING THE LONG LAYOUT OF WORK AREA 2 FOR FUNCTION \\***/ 00000300 \\*/***** 1A, BL and BN WHICH SHARE A SINGLE WORK AREA 2 LAYOUT. \\***/ 00000416 \\*/********************************************************************/ 00000500 \\*/***** Last Updated 5 March 2009 \\***/ 00000616 \\*/********************************************************************/ 00000710 W2BAL1AL DS 0H 00000810 DS CL21 00000910 W21ALCPA DS CL1 CONTINUOUS PARITY INDICATOR 00001010 W21ALHSE DS CL6 LOW HOUSE NUMBER ON BLOCK 00001110 W21ALALT DS 0CL10 ALTERNATE KEY 00001210 W21ALBOR DS CL1 ALTERNATE KEY - BORO 00001310 W21ALTXB DS CL5 ALTERNATE KEY - TAX BLOCK 00001410 W21ALTXL DS CL4 ALTERNATE KEY - TAX LOT 00001510 DS CL1 FILLER 00001610 W21ALRSC DS CL1 RPAD SCC 00001710 DS CL1 FILLER 00001810 W21ALGLI DS 0CL11 GENERAL LOT INFO 00001910 W21ALRBL DS CL2 RPAD BUILDING CLASSIFICATION 00002010 W21ALCOR DS CL2 CORNER CODE 00002110 W21AL#ST DS CL2 TOTAL NUMBER STRUCTURES 00002210 W21AL#BF DS CL2 TOTAL NUMBER BLOCKFACES 00002310 W21ALINT DS CL1 INTERIOR LOT FLAG 00002410 W21ALVAC DS CL1 VACANT LOT FLAG 00002510 W21ALIRL DS CL1 IRREGULARLY-SHAPED LOT FLAG 00002610 W21ALMHR DS 0CL1 Marble Hill/Rikers Island Flag 00002710 W21ALABF DS CL1 ALTERNATE BORO FLAG 00002810 DS CL1 STROLLING FLAG (W21ALSTRF) 00002910 W21ALSTR DS CL13 STROLLING KEY 00003010 DS CL1 FILLER 00003110 W21ALRFI DS CL1 RESERVED FOR INTERNAL USE 00003210 W21ALNGB DS CL7 BUILDING IDENTIFICATION NUMBER (BIN) 00003310 W21ALCON DS CL1 CONDO LOT FLAG 00003410 W21ALRCO DS CL4 RPAD CONDO NUMBER 00003510 W21ALCLB DS CL10 CONDO LOW BBL 00003610 DS CL1 FILLER 00003710 W21ALCBB DS CL10 CONDO BILLING BBL 00003810 DS CL1 FILLER 00003910 W21ALCBS DS CL1 CONDO BILLING BBL SCC 00004010 W21ALCHB DS CL10 CONDO HIGH BBL 00004110 DS CL1 FILLER 00004210 W21ALSBV DS CL8 SANDBORN BOROUGH/VOLUME/PAGE 00004310 W21ALBUS DS CL5 BUSINESS AREA 00004410 W21ALCOO DS CL4 COOP ID NUMBER 00004510 DS CL4 00004613 W21ALNBS DS CL4 Actual Nbr of Bldgs on Lot 00004711 W21ALTMB DS CL1 TAX MAP BOROUGH 00004814 W21ALTAX DS CL4 Tax Map NBR - Section and Volume 00004913 DS CL4 RESERVED FOR TAX PAGE NUMBER 00005013 W21ALXCO DS CL7 X COORDINATE OF ANNOTATION POINT 00005115 W21ALYCO DS CL7 Y COORDINATE OF ANNOTATION POINT 00005215 W21ALBID DS CL6 Business Improvement District 00005316 DS CL2 FILLER 00005416 W21ALINU DS CL8 Internal Use Only 00005517 W21AL#BN DS CL4 TOTAL Number of BINS for Lot 00005610 W21ALLST DS 2500CL7 LIST OF BINS, MAXIMUM OF 2500 00005709 W21ALEND EQU * 00005802 W21ALLEN EQU W21ALEND-W2BAL1AL Length of W2BAL1AL 00006002 W2BAL3S COPY File \\*/********************************************************************/ 00000100 \\*/***** THIS IS GEOSUPPORT INFORMATION SYSTEM COPY FILE W2BAL3S, \\***/ 00000200 \\*/***** CONTAINING THE LAYOUT OF WORK AREA 2 FOR FUNCTION 3S. \\***/ 00000300 \\*/********************************************************************/ 00000400 W2BAL3S DS 0H 00000500 W23SAKEY DS CL21 ACCESS KEY 00000600 W23S#INT DS CL3 NUMBER OF INTERSECTIONS ON STRETCH 00000700 W23SINT DS 0CL12 INTERSECTION LAYOUT 00000800 W23SCDE1 DS PL4 NUMERICALLY SMALLEST PB5SC 00000900 W23SCDE2 DS PL4 NUMERICALLY 2ND SMALLEST PB5SC 00001000 W23SDIST DS PL3 DISTANCE IN FEET FROM PREVIOUS INTERSECT. 00001100 W23SGAPF DS CL1 GAP FLAG (\"G\" IF NO SEGMENT CONNECTS THIS 00001200 \\* INTERSECTION TO THE PREVIOUS ONE) 00001300 \\* 00001400 \\* THE MAXIMUM NUMBER OF INTERSECTIONS IS 350. THE LAYOUT OF EACH 00001500 \\* INTERSECTION IS IDENTICAL TO THE 12 BYTES DEFINED BY \"W23SINT\". 00001600 \\* RATHER THAN DEFINE 349 MORE INTERSECTIONS, WE ALLOCATE THE STORAGE 00001700 \\* NECESSSARY SHOULD THE MAXIMUM NUMBER OF INTERSECTIONS BY FOUND. 00001800 \\* ALL INTERSECTIONS BUT THE FIRST ONE MUST BE REFERENCED BY 00001900 \\* DISPLACEMENT. 00002000 \\* 00002100 W23SREST DS CL4188 REMAINING INTERSECTIONS 00002200 W23SEND EQU * 00002300 W23SLEN EQU W23SEND-W2BAL3S LENGTH OF W2BAL3S 00002400","title":"ASSEMBLER COPY FILES (MSW)"},{"location":"appendices/appendix05/#pl1-copy-files-msw","text":"W1PL1 COPY File /******************************************************************/ 00000100 /*** THIS IS GEOSUPPORT SYSTEM COPY FILE W1PL1, CONTAINING THE \\***/ 00000200 /\\*** LAYOUT OF WORK AREA 1. COPYLIB2 04/07/98 \\***/ 00000300 /\\******************************************************************/ 00000400 DCL PW1 POINTER; 00000500 DCL 00000600 1 W1PL1, 00000700 /*******************************************************/ 00000802 /***** INPUT FIELDS *****/ 00000902 /*******************************************************/ 00001002 2 GEO_WA1_IN_FUNCTION_CODE, 00001100 3 GEO_WA1_IN_FUNCTION_1 CHAR(1), 00001200 3 GEO_WA1_IN_FUNCTION_2 CHAR(1), 00001300 2 GEO_WA1_IN_BORO CHAR(1), 00001400 2 GEO_WA1_IN_HOUSENUM CHAR(12),/\\*HIGH HSE# INPUT*/ 00001500 2 GEO_WA1_IN_HOUSENUM_INTERNAL CHAR(6), /\\*IF FUNCTION 5 \\*/ 00001600 2 GEO_WA1_IN_STREET_1 CHAR(32), 00001700 2 GEO_WA1_IN_STREET_2 CHAR(32), 00001800 2 GEO_WA1_IN_STREET_3 CHAR(32), 00001900 2 GEO_WA1_IN_COMPASS CHAR(01), 00002008 2 GEO_WA1_IN_COMPASS2 CHAR(01), 00002110 2 GEO_WA1_IN_STREETCODE_1 FIXED DEC(6), 00002200 2 GEO_WA1_IN_STREETCODE_2 FIXED DEC(6), 00002300 2 GEO_WA1_IN_STREETCODE_3 FIXED DEC(6), 00002400 2 GEO_WA1_IN_ROADBED_REQ_SWITCH CHAR(1), 00002514 2 GEO_WA1_IN_BORO_2 CHAR(1), 00002600 2 GEO_WA1_IN_BORO_3 CHAR(1), 00002700 2 GEO_WA1_IN_SNL CHAR(2), 00002800 2 GEO_WA1_IN_10SC_1 CHAR(11), 00002900 2 GEO_WA1_IN_10SC_2 CHAR(11), 00003000 2 GEO_WA1_IN_10SC_3 CHAR(11), 00003100 2 GEO_WA1_IN_ZIPIN CHAR(5), 00003215 2 GEO_WA1_IN_BBL, 00003300 3 GEO_WA1_IN_BL_BORO CHAR(1), 00003400 3 GEO_WA1_IN_BLOCKNUM CHAR(5), 00003500 3 GEO_WA1_IN_LOTNUM CHAR(4), 00003600 2 FILLER_W1_010 CHAR(1), 00003700 2 GEO_WA1_IN_BIN CHAR(7), 00003802 /************************************************************/ 00003903 /*******------ USAGE NOTES FOR SELECTED FIELDS -------*******/ 00004004 /************************************************************/ 00004103 /** GEO_WA1_IN_COMPACT_NAME_FLAG: SET TO \"C\" TO REQUEST \\**/ 00004203 /** COMPACT NAMES OPTION. \\**/ 00004303 /** GEO_WA1_IN_LONG_WORKAREA2_FLAG: SET TO \"L\" TO REQUEST \\**/ 00004403 /** THE LONG WORKAREA 2. AT PRESENT, ONLY FUNCTIONS \\**/ 00004503 /** 1A AND 3 HAVE THE LONG WA2 OPTION. \\**/ 00004603 /** GEO_WA1_IN_NON_IBM_MAIN_FRAME: SET TO \"X\" IF \\**/ 00004703 /** APPLICATION IS RUNNING ON A NON-IBM MAIN FRAME. \\**/ 00004803 /** GEO_WA1_IN_1ABL_VERSION: SET TO \"L\" OR \" \" TO REQUEST \\**/ 00004903 /** THE LEGACY WORKAREA2 FORMAT FOR FUNCTION 1A OR BL. \\**/ 00005003 /** GEO_WA1_IN_1ABL_VERSION: SET TO \"S\" TO REQUEST THE \\**/ 00005103 /** STANDARD WORKAREA2 FORMAT FOR FUNCTION 1A OR BL. \\**/ 00005203 /************************************************************/ 00005903 2 GEO_WA1_IN_COMPACT_NAME_FLAG CHAR(1), 00006000 2 GEO_WA1_IN_LONG_WORKAREA2_FLAG CHAR(1), 00006100 2 GEO_WA1_IN_LOW_HOUSENUM CHAR(12), 00006200 2 GEO_WA1_IN_LOW_HSENUM_INTERNAL CHAR(6), 00006300 2 GEO_WA1_IN_NON_IBM_MAIN_FRAME CHAR(1), 00006400 2 GEO_WA1_IN_1ABL_VERSION CHAR(1), 00006500 2 GEO_WA1_IN_XSTREET_FLAG CHAR(1), 00006610 2 FILLER_W1_100 CHAR(04), 00006809 /*******************************************************/ 00006902 /***** OUTPUT FIELDS *****/ 00007002 /*******************************************************/ 00007102 2 GEO_WA1_OUT_LOW_HOUSENUM CHAR(12), 00007209 2 GEO_WA1_OUT_BORONAME CHAR(9), 00007300 2 GEO_WA1_OUT_STREET_1 CHAR(32), 00007400 2 GEO_WA1_OUT_STREET_2 CHAR(32), 00007500 2 GEO_WA1_OUT_STREET_3 CHAR(32), 00007600 2 GEO_WA1_OUT_HOUSENUM CHAR(12), /\\*HI-HND*/ 00007709 2 GEO_WA1_OUT_HOUSENUM_INTERNAL CHAR(6), 00007800 2 FILLER_W1_200 CHAR(7), 00007900 2 GEO_WA1_OUT_PB5SC_1 FIXED DEC(6), 00008006 2 FILLER_W1_210 CHAR(2), 00008300 2 GEO_WA1_OUT_PB5SC_2 FIXED DEC(6), 00008406 2 FILLER_W1_220 CHAR(2), 00008800 2 GEO_WA1_OUT_PB5SC_3 FIXED DEC(6), 00008906 2 GEO_WA1_OUT_STREET_ATTR(3) CHAR(1), 00009312 2 GEO_WA1_BROWSE CHAR(40), 00009400 2 GEO_WA1_OUT_10SC_1 CHAR(11), 00009500 2 GEO_WA1_OUT_10SC_2 CHAR(11), 00009600 2 GEO_WA1_OUT_10SC_3 CHAR(11), 00009700 2 GEO_WA1_OUT_CUI CHAR(5), /\\*NOT IMPLEMENTED*/ 00009800 2 GEO_WA1_OUT_BBL, 00009900 3 GEO_WA1_OUT_BL_BORO CHAR(1), 00010000 3 GEO_WA1_OUT_BLOCKNUM CHAR(5), 00010100 3 GEO_WA1_OUT_LOTNUM CHAR(4), 00010200 2 FILLER_W1_240 CHAR(1), 00010300 2 GEO_WA1_OUT_BIN CHAR(7), 00010411 2 GEO_WA1_OUT_SND_ATTR CHAR(1), /\\*DCP/GSS USE*/ 00010705 2 GEO_WA1_OUT_REASON_CODE CHAR(1), 00010800 2 FILLER_W1_400 CHAR(2), 00010900 2 GEO_WA1_OUT_RETURN_CODE, 00011007 3 GEO_WA1_OUT_RC_1 CHAR(1), 00011107 3 GEO_WA1_OUT_RC_2 CHAR(1), 00011207 2 GEO_WA1_OUT_ERROR_MESSAGE CHAR(80), 00011400 2 GEO_WA1_OUT_NUM_SIMILAR_NAMES FIXED DEC(3), 00011500 2 GEO_WA1_OUT_SIMILAR_NAMES(10) CHAR(32); 00011600 00011702 /**************************************************************/ 00011801 00011902 DCL 1 GEO_WA1_OUT_PB_5SC_1 00012006 BASED (ADDR(GEO_WA1_OUT_PB5SC_1)), 00012106 3 GEO_WA1_OUT_PACKBORO_NOSIGN_1 CHAR(1), 00012206 3 GEO_WA1_OUT_STREETCODE_1_KEY FIXED DEC(5), 00012306 1 GEO_WA1_OUT_PB_5SC_2 00012406 BASED (ADDR(GEO_WA1_OUT_PB5SC_2)), 00012506 3 GEO_WA1_OUT_PACKBORO_NOSIGN_2 CHAR(1), 00012606 3 GEO_WA1_OUT_STREETCODE_2_KEY FIXED DEC(5), 00012706 1 GEO_WA1_OUT_PB_5SC_3 00012806 BASED (ADDR(GEO_WA1_OUT_PB5SC_3)), 00012906 3 GEO_WA1_OUT_PACKBORO_NOSIGN_3 CHAR(1), 00013006 3 GEO_WA1_OUT_STREETCODE_3_KEY FIXED DEC(5); 00013106 00013202 /**************************************************************/ 00013301 00013402 DCL GEO_WA1_OUT_GRC CHAR(02) 00013507 BASED(ADDR(GEO_WA1_OUT_RETURN_CODE)); 00013607 00013902 /**************************************************************/ 00014001 00014102 DCL 1 WORK1PL1 BASED(PW1) CHAR(884); 00014201 00014302 /**************************************************************/ 00014401 00014502 PW1=ADDR(W1PL1); 00015000 W2PL1 COPY File /******************************************************************/ 00000100 /*** THIS IS GEOSUPPORT SYSTEM COPY FILE W2PL1, CONTAINING THE \\***/ 00000300 /*** LAYOUT OF WORK AREA 2 FOR FUNCTIONS: 1, 1E, 2, 2C, 3, 3C, \\***/ 00000400 /*** 5. PLEASE NOTE THAT FUNCTIONS 2 AND 2C SHARE A SINGLE \\***/ 00000500 /*** WORK AREA 2 LAYOUT. 12/30/97 \\***/ 00000600 /*** LAST UPDATED JANUARY 2012 \\***/ 00000749 /******************************************************************/ 00000800 DCL PW2 POINTER; 00000900 00001001 DCL 1 W2PL1 CHAR(200) INIT(' '); 00001101 00001201 DCL 00001300 1 GEO_WA2_FUNCTION1 BASED(PW2), 00001400 2 GEO_WA2_FN1_ACCESS_KEY CHAR(21), 00001500 2 GEO_WA2_FN1_CONT_PARITY CHAR(1), 00001600 2 GEO_WA2_FN1_LOW_HOUSENUM_INT CHAR(6), 00001700 2 GEO_WA2_FN1_HI_HOUSENUM_INT CHAR(6), 00001800 2 GEO_WA2_FN1_ALX CHAR(1), 00001931 2 GEO_WA2_FN1_NUM_X_ST_LOW_END CHAR(1), 00002000 2 GEO_WA2_FN1_LOW_PBSC(5) FIXED DEC(7), 00002100 2 GEO_WA2_FN1_NUM_X_ST_HI_END CHAR(1), 00002200 2 GEO_WA2_FN1_HI_PBSC(5) FIXED DEC(7), 00002300 2 GEO_WA2_FN1_COMMUN_DIST, 00002400 3 GEO_WA2_FN1_COMDIST_BORO CHAR(1), 00002500 3 GEO_WA2_FN1_COMDIST_NUMBER CHAR(2), 00002600 2 GEO_WA2_FN1_ZIP CHAR(5), 00002700 2 GEO_WA2_FN1_SLA CHAR(1), 00002800 2 GEO_WA2_FN1_HCD CHAR(2), 00002951 2 GEO_WA2_FN1_SOS CHAR(1), 00003150 2 GEO_WA2_FN1_CONT_PARITY_IND CHAR(1), 00003250 2 GEO_WA2_FN1_2010_CENSUS_TRACT CHAR(6), 00003350 2 GEO_WA2_FN1_2010_CENSUS_BLOCK CHAR(4), 00003450 2 GEO_WA2_FN1_2010_CENSUS_BLK_SF CHAR(1), /\\*NOT IMPLEMENTED*/00003550 2 GEO_WA2_FN1_FILLER_INDV CHAR(1), 00003650 2 FILLER_W2_260 CHAR(2), 00003750 2 GEO_WA2_FN1_HEALTHAREA CHAR(4), 00003851 2 GEO_WA2_FN1_SANI_REC CHAR(3), 00003950 2 GEO_WA2_FN1_FEATURE_TYPE CHAR(1), 00004050 2 GEO_WA2_FN1_RESDCP /\\*RESERVED FOR*/ CHAR(1), /\\*DCP/GSS USE*/ 00004150 2 GEO_WA2_FN1_CURVE_FLAG CHAR(1), 00004250 2 GEO_WA2_FN1_POLICE_DIST, 00004350 3 GEO_WA2_FN1_POL_PAT_B_CMD CHAR(1), 00004450 3 GEO_WA2_FN1_POL_PRECINCT CHAR(3), 00004550 2 GEO_WA2_FN1_SCHOOLDIST CHAR(2), 00004650 2 FILLER_W2_250 CHAR(14), /\\*1E POL DIST*/ 00004750 2 GEO_WA2_FN1_COINCIDENT_SEG_CTR CHAR(1), 00004850 2 GEO_WA2_FN1_SEGMENT_TYPE CHAR(1), 00004950 2 GEO_WA2_FN1_SANI_DIST, 00005050 3 GEO_WA2_FN1_SANIDIST_BORO CHAR(1), 00005150 3 GEO_WA2_FN1_SANIDIST_NUMBER CHAR(2), 00005250 2 GEO_WA2_FN1_SANITATION_SUBSEC CHAR(2), 00005350 2 GEO_WA2_FN1_FIRESEC /\\*FIRE DIV*/ CHAR(2), 00005450 2 GEO_WA2_FN1_FIREBAT CHAR(2), 00005550 2 GEO_WA2_FN1_FIRECO, 00005650 3 GEO_WA2_FN1_FIRECO_TYPE CHAR(1), 00005750 3 GEO_WA2_FN1_FIRECO_NUM CHAR(3), 00005850 2 GEO_WA2_FN1_SPECIAL_ADDR_FLAG CHAR(1), 00005950 2 GEO_WA2_FN1_MARBLE_RIKERS_FLAG CHAR(1), 00006050 2 GEO_WA2_FN1_SPLIT_SCHOOL_FILL CHAR(1), 00006150 2 GEO_WA2_FN1_PREFERRED_LGC CHAR(2), 00006250 2 GEO_WA2_FN1_LIONFACECODE CHAR(4), 00006350 2 GEO_WA2_FN1_LIONSEQ CHAR(5), 00006450 2 GEO_WA2_FN1_1990_CENSUSTRACT CHAR(6), 00006550 2 FILLER_W2_260B CHAR(4), 00006650 2 GEO_WA2_FN1_DYN_BLOCK CHAR(3), /\\*ATOMIC POLYGON*/ 00006750 2 GEO_WA2_FN1_XCOORD CHAR(7), 00006850 2 GEO_WA2_FN1_YCOORD CHAR(7), 00006950 2 GEO_WA2_FN1_SEGMENTLENGTH CHAR(5), 00007050 2 GEO_WA2_FN1_SANI_REG CHAR(5); 00007150 00007250 /********************************************************************/ 00007350 00007450 DCL 1 GEO_WA2_FN1_LOW_HOUSE_NUM 00007550 BASED(ADDR(GEO_WA2_FN1_LOW_HOUSENUM_INT)), 00007650 3 GEO_WA2_FN1_LOW_HOUSENUM CHAR(5), 00007750 3 GEO_WA2_FN1_LOW_HOUSENUMSFX CHAR(1); 00007850 00008001 DCL 1 GEO_WA2_FN1_HI_HOUSE_NUM 00008100 BASED(ADDR(GEO_WA2_FN1_HI_HOUSENUM_INT)), 00008200 3 GEO_WA2_FN1_HI_HOUSENUM CHAR(5), 00008300 3 GEO_WA2_FN1_HI_HOUSENUMSFX CHAR(1); 00008425 00008501 DCL 1 GEO_WA2_FN1_COMDIST CHAR(3) 00008600 BASED(ADDR(GEO_WA2_FN1_COMMUN_DIST)); 00008700 00008801 DCL 1 GEO_WA2_FN1_SANIDIST CHAR(3) 00008900 BASED(ADDR(GEO_WA2_FN1_SANI_DIST)); 00009000 00009101 DCL 1 GEO_WA2_FN1_POLICEDIST CHAR(4) 00009200 BASED(ADDR(GEO_WA2_FN1_POLICE_DIST)); 00009300 00009401 /********************************************************************/ 00009801 00009901 DCL 00010000 1 GEO_WA2_FUNCTION2 BASED(PW2), 00010100 2 GEO_WA2_FN2_ACCESS_KEY CHAR(21), 00010200 2 GEO_WA2_FN2_DUPINTERFLAG CHAR(1), 00010300 2 FILLER_W2_270 CHAR(9), 00010400 2 GEO_WA2_FN2_PREFERRED_LGC1 CHAR(2), 00010500 2 GEO_WA2_FN2_PREFERRED_LGC2 CHAR(2), 00010600 2 GEO_WA2_FN2_NUM_OF_INTERSECTS CHAR(1), 00010700 2 GEO_WA2_FN2_INTERSECT_PBSC(5) FIXED DEC(7), 00010800 2 GEO_WA2_FN2_COMPDIR CHAR(01), 00010906 2 GEO_WA2_FN2_LEVEL_CODES(5,2) CHAR(01), 00011020 2 GEO_WA2_FN2_FILLER_INDV CHAR(02), 00011134 2 GEO_WA2_FN2_FIRESEC /\\*FIRE DIV*/ CHAR(2), 00011200 2 GEO_WA2_FN2_FIREBAT CHAR(2), 00011300 2 GEO_WA2_FN2_FIRECO, 00011400 3 GEO_WA2_FN2_FIRECO_TYPE CHAR(1), 00011500 3 GEO_WA2_FN2_FIRECO_NUM CHAR(3), 00011600 2 GEO_WA2_FN2_COMMUN_DIST, 00011700 3 GEO_WA2_FN2_COMDIST_BORO CHAR(1), 00011800 3 GEO_WA2_FN2_COMDIST_NUMBER CHAR(2), 00011900 2 GEO_WA2_FN2_ZIP CHAR(5), 00012000 2 GEO_WA2_FN2_SLA CHAR(1), 00012100 2 GEO_WA2_FN2_2010_CENSUS_TRACT CHAR(6), 00012241 2 FILLER_W2_290 CHAR(3), 00012300 2 GEO_WA2_FN2_HEALTHAREA CHAR(4), 00012451 2 FILLER_W2_300 CHAR(9), 00012504 2 GEO_WA2_FN2_LIONNODENUM CHAR(7), 00012605 2 GEO_WA2_FN2_XCOORD CHAR(7), 00013000 2 GEO_WA2_FN2_YCOORD CHAR(7), 00013100 2 FILLER_W2_320 CHAR(4), 00013300 2 GEO_WA2_FN2_POLICE_DIST, 00013400 3 GEO_WA2_FN2_POL_PAT_B_CMD CHAR(1), 00013500 3 GEO_WA2_FN2_POL_PRECINCT CHAR(3), 00013600 2 GEO_WA2_FN2_SCHOOLDIST CHAR(2), 00013700 2 GEO_WA2_FN2_MARBLE_RIKERS_FLAG CHAR(1), 00013800 2 GEO_WA2_FN2_1990_CENSUSTRACT CHAR(6), 00013900 2 GEO_WA2_FN2_SANBORN1_BORO CHAR(1), 00014000 2 GEO_WA2_FN2_SANBORN1_VOL_PAGE, 00014100 3 GEO_WA2_FN2_SANBORN1_VOL_NUM CHAR(3), 00014200 3 GEO_WA2_FN2_SANBORN1_PAGE_NUM CHAR(4), 00014300 2 GEO_WA2_FN2_SANBORN2_BORO CHAR(1), 00014400 2 GEO_WA2_FN2_SANBORN2_VOL_PAGE, 00014500 3 GEO_WA2_FN2_SANBORN2_VOL_NUM CHAR(3), 00014600 3 GEO_WA2_FN2_SANBORN2_PAGE_NUM CHAR(4), 00014700 2 GEO_WA2_FN2_DUP_INTRSCT_DISTNCE CHAR(5), 00014837 2 GEO_WA2_FN2_2000_CENS_TRACT CHAR(6), 00014944 2 FILLER_W2_330 CHAR(27); 00015038 00015101 /********************************************************************/ 00015201 00015301 DCL 1 GEO_WA2_FN2_COMDIST CHAR(3) 00015400 BASED(ADDR(GEO_WA2_FN2_COMMUN_DIST)); 00015500 00015601 DCL 1 GEO_WA2_FN2_POLICEDIST CHAR(4) 00015700 BASED(ADDR(GEO_WA2_FN2_POLICE_DIST)); 00015800 00015901 DCL 1 GEO_WA2_FN2_SANBORN1_BVOLPAGE CHAR(8) 00016000 BASED(ADDR(GEO_WA2_FN2_SANBORN1_BORO)), 00016100 1 GEO_WA2_FN2_SANBORN2_BVOLPAGE CHAR(8) 00016200 BASED(ADDR(GEO_WA2_FN2_SANBORN2_BORO)); 00016300 00016401 /********************************************************************/ 00016501 00016601 DCL 00016700 1 GEO_WA2_FUNCTION3 BASED(PW2), 00016800 2 GEO_WA2_FN3_ACCESS_KEY CHAR(21), 00016900 2 GEO_WA2_FN3_DUP_KEY_FLAG CHAR(1), 00017023 2 GEO_WA2_FN3_CURVE_FLAG CHAR(1), 00017108 2 GEO_WA2_FN3_LOCATION_STATUS CHAR(1), 00017216 2 GEO_WA2_FN3_COUNTY_BOUNDARY CHAR(1), 00017316 2 GEO_WA2_FN3_COINCIDENT_SEG_CTR CHAR(1), 00017432 2 FILLER_W2_340 CHAR(3), 00017532 2 GEO_WA2_FN3_PREFERRED_LGC1 CHAR(2), 00017632 2 GEO_WA2_FN3_PREFERRED_LGC2 CHAR(2), 00017732 2 GEO_WA2_FN3_PREFERRED_LGC3 CHAR(2), 00017832 2 GEO_WA2_FN3_NUM_X_ST_LOW_END CHAR(1), 00017932 2 GEO_WA2_FN3_LOW_PBSC(5) FIXED DEC(7), 00018032 2 GEO_WA2_FN3_NUM_X_ST_HI_END CHAR(1), 00018132 2 GEO_WA2_FN3_HI_PBSC(5) FIXED DEC(7), 00018232 2 GEO_WA2_FN3_SLA CHAR(1), 00018332 2 GEO_WA2_FN3_REVERSALFLAG CHAR(1), 00018432 2 GEO_WA2_FN3_LEFT_COMMUN_DIST, 00018532 3 GEO_WA2_FN3_LEFT_COMDIST_BORO CHAR(1), 00018632 3 GEO_WA2_FN3_LEFT_COMDIST_NUM CHAR(2), 00018732 2 GEO_WA2_FN3_RIGHT_COMMUN_DIST, 00018832 3 GEO_WA2_FN3_RIGHT_COMDIST_BORO CHAR(1), 00018932 3 GEO_WA2_FN3_RIGHT_COMDIST_NUM CHAR(2), 00019032 2 GEO_WA2_FN3_LEFT_ZIP CHAR(5), 00019132 2 GEO_WA2_FN3_RIGHT_ZIP CHAR(5), 00019232 2 FILLER_WA2_350A CHAR(18), 00019332 2 GEO_WA2_FN3_LEFT_HEALTHAREA CHAR(4), 00019451 2 GEO_WA2_FN3_RIGHT_HEALTHAREA CHAR(4), 00019551 2 GEO_WA2_FN3_LEFT_FILLER_INDV CHAR(2), 00019634 2 GEO_WA2_FN3_RIGHT_FILLER_INDV CHAR(2), 00019734 2 GEO_WA2_FN3_LEFT_LOW_HOUSENUM CHAR(7), 00019800 2 GEO_WA2_FN3_LEFT_HI_HOUSENUM CHAR(7), 00019900 2 GEO_WA2_FN3_RIGHT_LOW_HOUSENUM CHAR(7), 00020000 2 GEO_WA2_FN3_RIGHT_HI_HOUSENUM CHAR(7), 00020100 2 GEO_WA2_FN3_CONT_PARITY_IND CHAR(1), 00020200 2 GEO_WA2_FN3_LIONFACECODE CHAR(4), 00020300 2 GEO_WA2_FN3_LIONSEQ CHAR(5), 00020400 2 GEO_WA2_FN3_GENRECFLAG CHAR(1), 00020500 2 GEO_WA2_FN3_SEGMENTLENGTH FIXED DEC(5), 00020600 2 GEO_WA2_FN3_SEGMENTSLOPE CHAR(3), 00020700 2 GEO_WA2_FN3_SEGMENTORIENT CHAR(1), 00020800 2 FILLER_W2_355 CHAR(4), 00020900 2 GEO_WA2_FN3_RESDCP /\\*RESERVED FOR \\*/ CHAR(2), /\\*DCP/GSS USE*/ 00021000 2 GEO_WA2_FN3_DOG_LEG CHAR(1), 00021111 2 GEO_WA2_FN3_FEATURE_TYPE CHAR(1), 00021221 2 GEO_WA2_FN3_LEFT_POLICE_DIST, 00021300 3 GEO_WA2_FN3_LEFT_POL_PAT_B_CMD CHAR(1), 00021400 3 GEO_WA2_FN3_LEFT_POL_PRECINCT CHAR(3), 00021500 2 GEO_WA2_FN3_RIGHT_POLICE_DIST, 00021600 3 GEO_WA2_FN3_RIGHT_POL_PAT_B_CMD CHAR(1), 00021700 3 GEO_WA2_FN3_RIGHT_POL_PRECINCT CHAR(3), 00021800 2 GEO_WA2_FN3_LEFT_SCHLDIST CHAR(2), 00021900 2 GEO_WA2_FN3_RIGHT_SCHLDIST CHAR(2), 00022000 2 GEO_WA2_FN3_MARBLE_RIKERS_FLAG CHAR(1), 00022100 2 GEO_WA2_FN3_SEGMENT_ID CHAR(7), 00022211 2 GEO_WA2_FN3_SEGMENT_TYPE CHAR(1); 00022329 00022501 /********************************************************************/ 00022601 00022701 DCL 1 GEO_WA2_FN3_LEFT_COMDIST CHAR(3) 00022800 BASED(ADDR(GEO_WA2_FN3_LEFT_COMMUN_DIST)); 00022900 00023001 DCL 1 GEO_WA2_FN3_RIGHT_COMDIST CHAR(3) 00023100 BASED(ADDR(GEO_WA2_FN3_RIGHT_COMMUN_DIST)); 00023200 00023301 DCL 1 GEO_WA2_FN3_LEFT_POLICEDIST CHAR(4) 00023400 BASED(ADDR(GEO_WA2_FN3_LEFT_POLICE_DIST)); 00023500 00023601 DCL 1 GEO_WA2_FN3_RIGHT_POLICEDIST CHAR(4) 00023700 BASED(ADDR(GEO_WA2_FN3_RIGHT_POLICE_DIST)); 00023800 00023901 DCL 00024000 1 GEO_WA2_FUNCTION3C BASED(PW2), 00024100 2 GEO_WA2_FN3C_ACCESS_KEY CHAR(21), 00024200 2 GEO_WA2_FN3C_CURVE_FLAG CHAR(1), 00024308 2 GEO_WA2_FN3C_SEGMENT_TYPE CHAR(1), 00024430 2 GEO_WA2_FN3C_LOCATION_STATUS CHAR(1), 00024630 2 GEO_WA2_FN3C_COUNTY_BOUNDARY CHAR(1), 00024730 2 GEO_WA2_FN3C_COINCIDENT_SEG_CTR CHAR(1), 00024832 2 FILLER_W2_380 CHAR(3), 00024932 2 GEO_WA2_FN3C_PREFERRED_LGC1 CHAR(2), 00025032 2 GEO_WA2_FN3C_PREFERRED_LGC2 CHAR(2), 00025132 2 GEO_WA2_FN3C_PREFERRED_LGC3 CHAR(2), 00025232 2 GEO_WA2_FN3C_NUM_X_ST_LOW_END CHAR(1), 00025332 2 GEO_WA2_FN3C_LOW_PBSC(5) FIXED DEC(7), 00025432 2 GEO_WA2_FN3C_NUM_X_ST_HI_END CHAR(1), 00025532 2 GEO_WA2_FN3C_HI_PBSC(5) FIXED DEC(7), 00025632 2 GEO_WA2_FN3C_COMMUN_DIST, 00025732 3 GEO_WA2_FN3C_COMDIST_BORO CHAR(1), 00025832 3 GEO_WA2_FN3C_COMDIST_NUMBER CHAR(2), 00025932 2 GEO_WA2_FN3C_ZIP CHAR(5), 00026032 2 GEO_WA2_FN3C_SLA CHAR(1), 00026132 2 GEO_WA2_FN3C_2000_CENS_TRACT CHAR(6), 00026244 2 FILLER_W2_390 CHAR(1), 00026338 2 GEO_WA2_FN3C_2010_CENSUS_TRACT CHAR(6), 00026441 2 GEO_WA2_FN3C_2010_CENSUS_BLOCK CHAR(4), 00026541 2 GEO_WA2_FN3C_2010_CENSUS_BLK_SF CHAR(1), /\\*NOTIMPLEMENTED*/ 00026647 2 GEO_WA2_FN3C_HEALTHAREA CHAR(4), 00026751 2 GEO_WA2_FN3C_REVERSALFLAG CHAR(1), 00026835 2 GEO_WA2_FN3C_SOS CHAR(1), 00026935 2 GEO_WA2_FN3C_FIRESEC /\\*FIRE DIV*/ CHAR(2), 00027035 2 GEO_WA2_FN3C_FIREBAT CHAR(2), 00027135 2 GEO_WA2_FN3C_FIRECO, 00027235 3 GEO_WA2_FN3C_FIRECO_TYPE CHAR(1), 00027335 3 GEO_WA2_FN3C_FIRECO_NUM CHAR(3), 00027435 2 GEO_WA2_FN3C_SEGMENT_ID CHAR(7), 00027535 2 GEO_WA2_FN3C_LOW_HOUSENUM CHAR(7), 00027635 2 GEO_WA2_FN3C_HI_HOUSENUM CHAR(7), 00027735 2 GEO_WA2_FN3C_LOW_HOUSENUM2 CHAR(7), 00027835 2 GEO_WA2_FN3C_HI_HOUSENUM2 CHAR(7), 00027935 /* 2 HOUSENUM2 ONLY PRESENT IF ODD & EVEN RANGES ARE ON \\*/ 00028035 /* 2 SAME SIDE OF STREET \\*/ 00028135 2 GEO_WA2_FN3C_CONT_PARITY_IND CHAR(1), 00028235 2 GEO_WA2_FN3C_LIONFACECODE CHAR(4), 00028335 2 GEO_WA2_FN3C_LIONSEQ CHAR(5), 00028435 2 GEO_WA2_FN3C_GENRECFLAG CHAR(1), 00028535 2 GEO_WA2_FN3C_SEGMENTLENGTH FIXED DEC(5), 00028635 2 GEO_WA2_FN3C_SEGMENTSLOPE CHAR(3), 00028735 2 GEO_WA2_FN3C_SEGMENTORIENT CHAR(1), 00028835 2 GEO_WA2_FN3C_FILLER_INDV CHAR(2), 00028935 2 GEO_WA2_FN3C_RESDCP /\\*RESERVED FOR*/ CHAR(1), /\\*DCP/GSS USE*/ 00029035 2 GEO_WA2_FN3C_FEATURE_TYPE CHAR(1), 00029135 2 GEO_WA2_FN3C_POLICE_DIST, 00029235 3 GEO_WA2_FN3C_POL_PAT_B_CMD CHAR(1), 00029335 3 GEO_WA2_FN3C_POL_PRECINCT CHAR(3), 00029435 2 GEO_WA2_FN3C_SCHOOLDIST CHAR(2), 00029535 2 GEO_WA2_FN3C_MARBLE_RIKERS_FLAG CHAR(1), 00029635 2 GEO_WA2_FN3C_1990_CENSUSTRACT CHAR(6), 00029735 2 FILLER_W2_410B CHAR(4), 00029835 2 GEO_WA2_FN3C_DYN_BLOCK CHAR(3), /\\*ATOMIC POLYGON*/ 00029942 2 GEO_WA2_FN3C_2000_CENS_BLOCK CHAR(4), 00030044 2 GEO_WA2_FN3C_2000_CENS_BL_SFX CHAR(1); 00030144 00030335 /********************************************************************/ 00030435 00030535 DCL 1 GEO_WA2_FN3C_COMDIST CHAR(3) 00030635 BASED(ADDR(GEO_WA2_FN3C_COMMUN_DIST)); 00030735 DCL 1 GEO_WA2_FN3C_POLICEDIST CHAR(4) 00030835 BASED(ADDR(GEO_WA2_FN3C_POLICE_DIST)); 00030935 00031035 /********************************************************************/ 00031135 00031235 DCL 00031335 1 GEO_WA2_FUNCTION1E BASED(PW2), 00031435 2 GEO_WA2_FN1E_ACCESS_KEY CHAR(21), 00031535 2 GEO_WA2_FN1E_CONT_PARITY CHAR(1), 00031635 2 GEO_WA2_FN1E_LOW_HOUSENUM_INT CHAR(6), 00031735 2 GEO_WA2_FN1E_HI_HOUSENUM_INT CHAR(6), 00031835 2 FILLER_W2_435 CHAR(1), 00031935 2 GEO_WA2_FN1E_NUM_X_ST_LOW_END CHAR(1), 00032035 2 GEO_WA2_FN1E_LOW_PBSC(5) FIXED DEC(7), 00032135 2 GEO_WA2_FN1E_NUM_X_ST_HI_END CHAR(1), 00032235 2 GEO_WA2_FN1E_HI_PBSC(5) FIXED DEC(7), 00032335 2 GEO_WA2_FN1E_COMMUN_DIST, 00032435 3 GEO_WA2_FN1E_COMDIST_BORO CHAR(1), 00032535 3 GEO_WA2_FN1E_COMDIST_NUMBER CHAR(2), 00032635 2 GEO_WA2_FN1E_ZIP CHAR(5), 00032735 2 GEO_WA2_FN1E_SLA CHAR(1), 00032835 2 GEO_WA2_FN1E_HCD CHAR(2), 00032951 2 GEO_WA2_FN1E_SOS CHAR(1), 00033150 2 GEO_WA2_FN1E_CONT_PARITY_IND CHAR(1), 00033250 2 GEO_WA2_FN1E_2010_CENSUS_TRACT CHAR(6), 00033350 2 GEO_WA2_FN1E_2010_CENSUS_BLOCK CHAR(4), 00033450 2 GEO_WA2_FN1E_2010_CENSUS_BLK_SF CHAR(1), /\\*NOTIMPLEMENTED*/ 00033550 2 GEO_WA2_FN1E_FILLER_INDV CHAR(1), 00033650 2 FILLER_W2_440 CHAR(2), 00033750 2 GEO_WA2_FN1E_HEALTHAREA CHAR(4), 00033851 2 GEO_WA2_FN1E_SANI_REC CHAR(3), 00033950 2 GEO_WA2_FN1E_FEATURE_TYPE CHAR(1), 00034050 2 GEO_WA2_FN1E_RESDCP /\\*RESERVED FOR*/ CHAR(1), /\\*DCP/GSS USE*/ 00034150 2 GEO_WA2_FN1E_CURVE_FLAG CHAR(1), 00034250 2 GEO_WA2_FN1E_POLICE_DIST, 00034350 3 GEO_WA2_FN1E_POL_PAT_B_CMD CHAR(1), 00034450 3 GEO_WA2_FN1E_POL_PRECINCT CHAR(3), 00034550 2 GEO_WA2_FN1E_SCHOOLDIST CHAR(2), 00034650 2 GEO_WA2_FN1E_ELECTDIST CHAR(3), 00034750 2 GEO_WA2_FN1E_ASSEMDIST CHAR(2), 00034850 2 GEO_WA2_FN1E_SPLIT_ED_FLAG CHAR(1), 00034950 2 GEO_WA2_FN1E_CONGDIST CHAR(2), 00035050 2 GEO_WA2_FN1E_SENATEDIST CHAR(2), 00035150 2 GEO_WA2_FN1E_COURTDIST CHAR(2), 00035250 2 GEO_WA2_FN1E_COUNCILDIST CHAR(2), 00035350 2 GEO_WA2_FN1E_COINCIDENT_SEG_CTR CHAR(1), 00035450 2 GEO_WA2_FN1E_SEGMENT_TYPE_CODE CHAR(1), 00035550 2 GEO_WA2_FN1E_SANI_DIST, 00035650 3 GEO_WA2_FN1E_SANIDIST_BORO CHAR(1), 00035750 3 GEO_WA2_FN1E_SANIDIST_NUMBER CHAR(2), 00035850 2 GEO_WA2_FN1E_SANITATION_SUBSEC CHAR(2), 00035950 2 GEO_WA2_FN1E_FIRESEC /\\*FIRE DIV*/ CHAR(2), 00036050 2 GEO_WA2_FN1E_FIREBAT CHAR(2), 00036150 2 GEO_WA2_FN1E_FIRECO, 00036250 3 GEO_WA2_FN1E_FIRECO_TYPE CHAR(1), 00036350 3 GEO_WA2_FN1E_FIRECO_NUM CHAR(3), 00036450 2 GEO_WA2_FN1E_SPECIAL_ADDR__FLAG CHAR(1), 00036550 2 GEO_WA2_FN1E_MARBLE_RIKERS_FLAG CHAR(1), 00036650 2 GEO_WA2_FN1E_SPLIT_SCHOOL_FILL CHAR(1), 00036750 2 GEO_WA2_FN1E_PREFERRED_LGC CHAR(2), 00036850 2 GEO_WA2_FN1E_LIONFACECODE CHAR(4), 00036950 2 GEO_WA2_FN1E_LIONSEQ CHAR(5), 00037050 2 GEO_WA2_FN1E_1990_CENSUSTRACT CHAR(6), 00037150 2 FILLER_W2_480B CHAR(4), 00037250 2 GEO_WA2_FN1E_DYN_BLOCK CHAR(3), /\\*ATOMIC POLYGON*/ 00037350 2 GEO_WA2_FN1E_XCOORD CHAR(7), 00037450 2 GEO_WA2_FN1E_YCOORD CHAR(7), 00037550 2 GEO_WA2_FN1E_SEGMENTLENGTH CHAR(5), 00037650 2 GEO_WA2_FN1E_SANI_REG CHAR(5); 00037750 00037850 /********************************************************************/ 00037950 00038050 DCL 1 GEO_WA2_FN1E_LOW_HOUSE_NUM 00038150 BASED(ADDR(GEO_WA2_FN1E_LOW_HOUSENUM_INT)), 00038250 3 GEO_WA2_FN1E_LOW_HOUSENUM CHAR(5), 00038350 3 GEO_WA2_FN1E_LOW_HOUSENUMSFX CHAR(1); 00038450 00038550 DCL 1 GEO_WA2_FN1E_HI_HOUSE_NUM 00038650 BASED(ADDR(GEO_WA2_FN1E_HI_HOUSENUM_INT)), 00038750 3 GEO_WA2_FN1E_HI_HOUSENUM CHAR(5), 00038850 3 GEO_WA2_FN1E_HI_HOUSENUMSFX CHAR(1); 00038950 00039050 DCL 1 GEO_WA2_FN1E_COMDIST CHAR(3) 00039150 BASED(ADDR(GEO_WA2_FN1E_COMMUN_DIST)); 00039250 00039350 DCL 1 GEO_WA2_FN1E_SANIDIST CHAR(3) 00039450 BASED(ADDR(GEO_WA2_FN1E_SANI_DIST)); 00039550 00039650 DCL 1 GEO_WA2_FN1E_POLICEDIST CHAR(4) 00039750 BASED(ADDR(GEO_WA2_FN1E_POLICE_DIST)); 00039850 00039950 /********************************************************************/ 00040050 00040150 DCL 00040250 1 GEO_WA2_FUNCTION5 BASED(PW2), 00040350 2 GEO_WA2_FN5_ADDR_MATCHING_KEY CHAR(28), 00040450 2 FILLER_W2_210 CHAR(172); 00040550 00041000 /********************************************************************/ 00042001 00043001 PW2=ADDR(W2PL1); 00050000 W2PL1L COPY File /********************************************************************/ 00000100 /*** THIS IS GEOSUPPORT SYSTEM COPY FILE W2PL1L, CONTAINING \\***/ 00000200 /*** THE LAYOUT OF THE OPTIONAL LONG WORK AREA 2 FOR \\***/ 00000300 /*** FUNCTION 1,1E, & 3. THIS WORK AREA SHOULD BE USED ONLY WHEN \\***/ 00000400 /*** FUNCTION IS CALLED WITH THE \"LONG\" WORK AREA2 OPTION. \\***/ 00000500 /*** 07/23/2001 \\***/ 00000600 /*** LAST MODIFIED JANUARY 2012 \\***/ 00000739 /********************************************************************/ 00000824 DCL PW2L POINTER; 00000924 DCL 1 W2PL1L CHAR(300) INIT(' '); 00001024 DCL 00001124 1 GEO_WA2_1L_FUNCTION1 BASED(PW2L), 00001224 2 GEO_WA2_1L_ACCESS_KEY CHAR(21), 00001324 2 GEO_WA2_1L_CONT_PARITY CHAR(1), 00001424 2 GEO_WA2_1L_LOW_HOUSENUM_INT CHAR(6), 00001524 2 GEO_WA2_1L_HI_HOUSENUM_INT CHAR(6), 00001624 2 GEO_WA2_1L_ALX CHAR(1), 00001724 2 GEO_WA2_1L_NUM_X_ST_LOW_END CHAR(1), 00001824 2 GEO_WA2_1L_LOW_PBSC(5) FIXED DEC(7), 00001924 2 GEO_WA2_1L_NUM_X_ST_HI_END CHAR(1), 00002024 2 GEO_WA2_1L_HI_PBSC(5) FIXED DEC(7), 00002124 2 GEO_WA2_1L_COMMUN_DIST, 00002224 3 GEO_WA2_1L_COMDIST_BORO CHAR(1), 00002324 3 GEO_WA2_1L_COMDIST_NUMBER CHAR(2), 00002424 2 GEO_WA2_1L_ZIP CHAR(5), 00002524 2 GEO_WA2_1L_SLA CHAR(1), 00002624 2 GEO_WA2_1L_HCD CHAR(2), 00002740 2 GEO_WA2_1L_SOS CHAR(1), 00002939 2 GEO_WA2_1L_CONT_PARITY_IND CHAR(1), 00003039 2 GEO_WA2_1L_2010_CENSUS_TRACT CHAR(6), 00003139 2 GEO_WA2_1L_2010_CENSUS_BLOCK CHAR(4), 00003239 2 GEO_WA2_1L_2010_CENSUS_BLK_SF CHAR(1), /\\*NOTIMPLEMENTED*/ 00003339 2 GEO_WA2_1L_FILLER_INDV CHAR(1), 00003439 2 FILLER_W2_230 CHAR(2), 00003539 2 GEO_WA2_1L_HEALTHAREA CHAR(4), 00003640 2 GEO_WA2_1L_SANI_REC CHAR(3), 00003739 2 GEO_WA2_1L_FEATURE_TYPE CHAR(1), 00003839 2 GEO_WA2_1L_RESDCP /\\*RESERVED FOR*/ CHAR(1), /\\*DCP/GSS USE*/ 00003939 2 GEO_WA2_1L_CURVE_FLAG CHAR(1), 00004039 2 GEO_WA2_1L_POLICE_DIST, 00004139 3 GEO_WA2_1L_POL_PAT_B_CMD CHAR(1), 00004239 3 GEO_WA2_1L_POL_PRECINCT CHAR(3), 00004339 2 GEO_WA2_1L_SCHOOLDIST CHAR(2), 00004439 2 FILLER_W2_250 CHAR(14), /\\*1E POL DIST*/ 00004539 2 GEO_WA2_1L_COINCIDENT_SEG_CTR CHAR(1), 00004620 2 GEO_WA2_1L_SEGMENT_TYPE CHAR(1), 00004720 2 GEO_WA2_1L_SANI_DIST, 00004820 3 GEO_WA2_1L_SANIDIST_BORO CHAR(1), 00004920 3 GEO_WA2_1L_SANIDIST_NUMBER CHAR(2), 00005020 2 GEO_WA2_1L_SANITATION_SUBSEC CHAR(2), 00005120 2 GEO_WA2_1L_FIRESEC /\\*FIRE DIV*/ CHAR(2), 00005220 2 GEO_WA2_1L_FIREBAT CHAR(2), 00005320 2 GEO_WA2_1L_FIRECO, 00005420 3 GEO_WA2_1L_FIRECO_TYPE CHAR(1), 00005520 3 GEO_WA2_1L_FIRECO_NUM CHAR(3), 00005620 2 GEO_WA2_1L_SPECIAL_ADDR_FLAG CHAR(1), 00005720 2 GEO_WA2_1L_MARBLE_RIKERS_FLAG CHAR(1), 00005820 2 GEO_WA2_1L_SPLIT_SCHOOL_FILL CHAR(1), 00005938 2 GEO_WA2_1L_PREFERRED_LGC CHAR(2), 00006020 2 GEO_WA2_1L_LIONFACECODE CHAR(4), 00006120 2 GEO_WA2_1L_LIONSEQ CHAR(5), 00006220 2 GEO_WA2_1L_1990_CENSUSTRACT CHAR(6), 00006320 2 FILLER_W2_260B CHAR(4), 00006423 2 GEO_WA2_1L_DYN_BLOCK CHAR(3), /\\*ATOMIC POLYGON*/ 00006534 2 GEO_WA2_1L_XCOORD CHAR(7), 00006620 2 GEO_WA2_1L_YCOORD CHAR(7), 00006720 2 GEO_WA2_1L_SEGMENTLENGTH CHAR(5), 00006820 2 GEO_WA2_1L_SANI_REG CHAR(5), 00006920 2 GEO_WA2_1L_SEGMENT_ID CHAR(7), 00007020 2 GEO_WA2_1L_REAL_B7SC CHAR(08), 00007120 2 GEO_WA2_1L_UNDERLY_HOUSENUM_INT CHAR(6), 00007223 2 GEO_WA2_1L_2000_CENS_TRACT CHAR(6), 00007336 2 GEO_WA2_1L_2000_CENS_BLOCK CHAR(4), 00007436 2 GEO_WA2_1L_2000_CENS_BLK_SUF CHAR(1), 00007536 2 FILLER_W2_260C CHAR(68); 00007629 00007723 /********************************************************************/ 00007823 00007923 DCL 1 GEO_WA2_1L_LOW_HOUSE_NUM 00008023 BASED(ADDR(GEO_WA2_1L_LOW_HOUSENUM_INT)), 00008123 3 GEO_WA2_1L_LOW_HOUSENUM CHAR(5), 00008223 3 GEO_WA2_1L_LOW_HOUSENUMSFX CHAR(1); 00008323 00008423 DCL 1 GEO_WA2_1L_HI_HOUSE_NUM 00008523 BASED(ADDR(GEO_WA2_1L_HI_HOUSENUM_INT)), 00008623 3 GEO_WA2_1L_HI_HOUSENUM CHAR(5), 00008723 3 GEO_WA2_1L_HI_HOUSENUMSFX CHAR(1); 00008823 00008923 DCL 1 GEO_WA2_1L_UNDERLY_HOUSE_NUM 00009023 BASED(ADDR(GEO_WA2_1L_UNDERLY_HOUSENUM_INT)), 00009123 3 GEO_WA2_1L_UNDERLY_HOUSENUM CHAR(5), 00009223 3 GEO_WA2_1L_UNDERLY_HOUSENUMSFX CHAR(1); 00009323 00009423 DCL 1 GEO_WA2_1L_COMDIST CHAR(3) 00009523 BASED(ADDR(GEO_WA2_1L_COMMUN_DIST)); 00009623 00009723 DCL 1 GEO_WA2_1L_SANIDIST CHAR(3) 00009823 BASED(ADDR(GEO_WA2_1L_SANI_DIST)); 00009923 00010023 DCL 1 GEO_WA2_1L_POLICEDIST CHAR(4) 00010123 BASED(ADDR(GEO_WA2_1L_POLICE_DIST)); 00010223 00010323 /********************************************************************/ 00010423 00010523 DCL 00010623 1 GEO_WA2_1EL_FUNCTION1E BASED(PW2L), 00010723 2 GEO_WA2_1EL_ACCESS_KEY CHAR(21), 00010823 2 GEO_WA2_1EL_CONT_PARITY CHAR(1), 00010923 2 GEO_WA2_1EL_LOW_HOUSENUM_INT CHAR(6), 00011023 2 GEO_WA2_1EL_HI_HOUSENUM_INT CHAR(6), 00011123 2 GEO_WA2_1EL_ALX CHAR(1), 00011223 2 GEO_WA2_1EL_NUM_X_ST_LOW_END CHAR(1), 00011323 2 GEO_WA2_1EL_LOW_PBSC(5) FIXED DEC(7), 00011423 2 GEO_WA2_1EL_NUM_X_ST_HI_END CHAR(1), 00011523 2 GEO_WA2_1EL_HI_PBSC(5) FIXED DEC(7), 00011623 2 GEO_WA2_1EL_COMMUN_DIST, 00011723 3 GEO_WA2_1EL_COMDIST_BORO CHAR(1), 00011823 3 GEO_WA2_1EL_COMDIST_NUMBER CHAR(2), 00011923 2 GEO_WA2_1EL_ZIP CHAR(5), 00012023 2 GEO_WA2_1EL_SLA CHAR(1), 00012123 2 GEO_WA2_1EL_HCD CHAR(2), 00012240 2 GEO_WA2_1EL_SOS CHAR(1), 00012439 2 GEO_WA2_1EL_CONT_PARITY_IND CHAR(1), 00012539 2 GEO_WA2_1EL_2010_CENSUS_TRACT CHAR(6), 00012639 2 GEO_WA2_1EL_2010_CENSUS_BLOCK CHAR(4), 00012739 2 GEO_WA2_1EL_2010_CENSUS_BLK_SF CHAR(1), /\\*NOTIMPLEMENTED*/ 00012839 2 GEO_WA2_1EL_FILLER_INDV CHAR(1), 00012939 2 FILLER_W2_240 CHAR(2), 00013039 2 GEO_WA2_1EL_HEALTHAREA CHAR(4), 00013140 2 GEO_WA2_1EL_SANI_REC CHAR(3), 00013239 2 GEO_WA2_1EL_FEATURE_TYPE CHAR(1), 00013339 2 GEO_WA2_1EL_RESDCP /\\*RESERVED FOR*/ CHAR(1), /\\*DCP/GSS USE*/ 00013439 2 GEO_WA2_1EL_CURVE_FLAG CHAR(1), 00013539 2 GEO_WA2_1EL_POLICE_DIST, 00013639 3 GEO_WA2_1EL_POL_PAT_B_CMD CHAR(1), 00013739 3 GEO_WA2_1EL_POL_PRECINCT CHAR(3), 00013839 2 GEO_WA2_1EL_SCHOOLDIST CHAR(2), 00013939 2 GEO_WA2_1EL_ELECTDIST CHAR(3), 00014039 2 GEO_WA2_1EL_ASSEMDIST CHAR(2), 00014139 2 GEO_WA2_1EL_SPLIT_ED_FLAG CHAR(1), 00014239 2 GEO_WA2_1EL_CONGDIST CHAR(2), 00014339 2 GEO_WA2_1EL_SENATEDIST CHAR(2), 00014439 2 GEO_WA2_1EL_COURTDIST CHAR(2), 00014539 2 GEO_WA2_1EL_COUNCILDIST CHAR(2), 00014639 2 GEO_WA2_1EL_COINCIDENT_SEG_CTR CHAR(1), 00014739 2 GEO_WA2_1EL_SEGMENT_TYPE_CODE CHAR(1), 00014839 2 GEO_WA2_1EL_SANI_DIST, 00014939 3 GEO_WA2_1EL_SANIDIST_BORO CHAR(1), 00015039 3 GEO_WA2_1EL_SANIDIST_NUMBER CHAR(2), 00015139 2 GEO_WA2_1EL_SANITATION_SUBSEC CHAR(2), 00015239 2 GEO_WA2_1EL_FIRESEC /\\*FIRE DIV*/ CHAR(2), 00015339 2 GEO_WA2_1EL_FIREBAT CHAR(2), 00015439 2 GEO_WA2_1EL_FIRECO, 00015539 3 GEO_WA2_1EL_FIRECO_TYPE CHAR(1), 00015639 3 GEO_WA2_1EL_FIRECO_NUM CHAR(3), 00015739 2 GEO_WA2_1EL_SPECIAL_ADDR__FLAG CHAR(1), 00015839 2 GEO_WA2_1EL_MARBLE_RIKERS_FLAG CHAR(1), 00015939 2 GEO_WA2_1EL_SPLIT_SCHOOL_FILL CHAR(1), 00016039 2 GEO_WA2_1EL_PREFERRED_LGC CHAR(2), 00016139 2 GEO_WA2_1EL_LIONFACECODE CHAR(4), 00016239 2 GEO_WA2_1EL_LIONSEQ CHAR(5), 00016339 2 GEO_WA2_1EL_1990_CENSUSTRACT CHAR(6), 00016439 2 FILLER_W2_480B CHAR(4), 00016539 2 GEO_WA2_1EL_DYN_BLOCK CHAR(3), /\\*ATOMIC POLYGON*/ 00016639 2 GEO_WA2_1EL_XCOORD CHAR(7), 00016739 2 GEO_WA2_1EL_YCOORD CHAR(7), 00016839 2 GEO_WA2_1EL_SEGMENTLENGTH CHAR(5), 00016939 2 GEO_WA2_1EL_SANI_REG CHAR(5), 00017039 2 GEO_WA2_1EL_SEGMENT_ID CHAR(7), 00017139 2 GEO_WA2_1EL_TRUE_B7SC CHAR(8), 00017239 2 GEO_WA2_1EL_UNDER_HOUSENUM_INT CHAR(6), 00017339 2 GEO_WA2_1EL_2000_CENS_TRACT CHAR(6), 00017439 2 GEO_WA2_1EL_2000_CENS_BLOCK CHAR(4), 00017539 2 GEO_WA2_1EL_2000_CENS_BLK_SUF CHAR(1), 00017639 2 FILLER_W2_480 CHAR(68); 00017739 00017839 /********************************************************************/ 00017939 00018039 DCL 1 GEO_WA2_1EL_LOW_HOUSE_NUM 00018139 BASED(ADDR(GEO_WA2_1EL_LOW_HOUSENUM_INT)), 00018239 3 GEO_WA2_1EL_LOW_HOUSENUM CHAR(5), 00018339 3 GEO_WA2_1EL_LOW_HOUSENUMSFX CHAR(1); 00018439 00018539 DCL 1 GEO_WA2_1EL_HI_HOUSE_NUM 00018639 BASED(ADDR(GEO_WA2_1EL_HI_HOUSENUM_INT)), 00018739 3 GEO_WA2_1EL_HI_HOUSENUM CHAR(5), 00018839 3 GEO_WA2_1EL_HI_HOUSENUMSFX CHAR(1); 00018939 00019039 DCL 1 GEO_WA2_1EL_UNDER_HOUSE_NUM 00019139 BASED(ADDR(GEO_WA2_1EL_UNDER_HOUSENUM_INT)), 00019239 3 GEO_WA2_1EL_UNDER_HOUSENUM CHAR(5), 00019339 3 GEO_WA2_1EL_UNDER_HOUSENUMSFX CHAR(1); 00019439 00019539 DCL 1 GEO_WA2_1EL_COMDIST CHAR(3) 00019639 BASED(ADDR(GEO_WA2_1EL_COMMUN_DIST)); 00019739 00019839 DCL 1 GEO_WA2_1EL_SANIDIST CHAR(3) 00019939 BASED(ADDR(GEO_WA2_1EL_SANI_DIST)); 00020039 00020139 DCL 1 GEO_WA2_1EL_POLICEDIST CHAR(4) 00020239 BASED(ADDR(GEO_WA2_1EL_POLICE_DIST)); 00020339 00020439 /********************************************************************/ 00020539 00020639 DCL 00020739 1 GEO_WA2_FUNCTION3L BASED(PW2L), 00020839 2 GEO_WA2_3L_ACCESS_KEY CHAR(21), 00020939 2 GEO_WA2_3L_DUP_KEY_FLAG CHAR(1), 00021039 2 GEO_WA2_3L_CURVE_FLAG CHAR(1), 00021139 2 GEO_WA2_3L_LOCATION_STATUS CHAR(1), 00021239 2 GEO_WA2_3L_COUNTY_BOUNDARY CHAR(1), 00021339 2 GEO_WA2_3L_COINCIDENT_SEG_CTR CHAR(1), 00021439 2 FILLER_W340 CHAR(3), 00021539 2 GEO_WA2_3L_PREFERRED_LGC1 CHAR(2), 00021639 2 GEO_WA2_3L_PREFERRED_LGC2 CHAR(2), 00021739 2 GEO_WA2_3L_PREFERRED_LGC3 CHAR(2), 00021839 2 GEO_WA2_3L_NUM_X_ST_LOW_END CHAR(1), 00021939 2 GEO_WA2_3L_LOW_PBSC(5) FIXED DEC(7), 00022039 2 GEO_WA2_3L_NUM_X_ST_HI_END CHAR(1), 00022139 2 GEO_WA2_3L_HI_PBSC(5) FIXED DEC(7), 00022239 2 GEO_WA2_3L_SLA CHAR(1), 00022339 2 GEO_WA2_3L_REVERSALFLAG CHAR(1), 00022439 2 GEO_WA2_3L_LEFT_COMMUN_DIST, 00022539 3 GEO_WA2_3L_LEFT_COMDIST_BORO CHAR(1), 00022639 3 GEO_WA2_3L_LEFT_COMDIST_NUMBER CHAR(2), 00022739 2 GEO_WA2_3L_RIGHT_COMMUN_DIST, 00022839 3 GEO_WA2_3L_RIGHT_COMDIST_BORO CHAR(1), 00022939 3 GEO_WA2_3L_RIGHT_COMDIST_NUMBER CHAR(2), 00023039 2 GEO_WA2_3L_LEFT_ZIP CHAR(5), 00023139 2 GEO_WA2_3L_RIGHT_ZIP CHAR(5), 00023239 2 FILLER_W340B CHAR(18), 00023339 2 GEO_WA2_3L_LEFT_HEALTHAREA CHAR(4), 00023440 2 GEO_WA2_3L_RIGHT_HEALTHAREA CHAR(4), 00023540 2 GEO_WA2_3L_LEFT_FILLER_INDV CHAR(2), 00023639 2 GEO_WA2_3L_RIGHT_FILLER_INDV CHAR(2), 00023739 2 GEO_WA2_3L_LEFT_LOW_HOUSENUM CHAR(7), 00023839 2 GEO_WA2_3L_LEFT_HI_HOUSENUM CHAR(7), 00023939 2 GEO_WA2_3L_RIGHT_LOW_HOUSENUM CHAR(7), 00024039 2 GEO_WA2_3L_RIGHT_HI_HOUSENUM CHAR(7), 00024139 2 GEO_WA2_3L_CONT_PARITY_IND CHAR(1), 00024239 2 GEO_WA2_3L_LIONFACECODE CHAR(4), 00024339 2 GEO_WA2_3L_LIONSEQ CHAR(5), 00024439 2 GEO_WA2_3L_GENRECFLAG CHAR(1), 00024539 2 GEO_WA2_3L_SEGMENTLENGTH FIXED DEC(5), 00024639 2 GEO_WA2_3L_SEGMENTSLOPE CHAR(3), 00024739 2 GEO_WA2_3L_SEGMENTORIENT CHAR(1), 00024839 2 FILLER_W355 CHAR(4), 00024939 2 GEO_WA2_3L_RESDCP CHAR(2), 00025039 2 GEO_WA2_3L_DOG_LEG CHAR(1), 00025139 2 GEO_WA2_3L_FEATURE_TYPE CHAR(1), 00025239 2 GEO_WA2_3L_LEFT_POLICE_DIST, 00025339 3 GEO_WA2_3L_LEFT_POL_PAT_B_CMD CHAR(1), 00025439 3 GEO_WA2_3L_LEFT_POL_PRECINCT CHAR(3), 00025539 2 GEO_WA2_3L_RIGHT_POLICE_DIST, 00025639 3 GEO_WA2_3L_RIGHT_POL_PAT_B_CMD CHAR(1), 00025739 3 GEO_WA2_3L_RIGHT_POL_PRECINCT CHAR(3), 00025839 2 GEO_WA2_3L_LEFT_SCHLDIST CHAR(2), 00025939 2 GEO_WA2_3L_RIGHT_SCHLDIST CHAR(2), 00026039 2 GEO_WA2_3L_MARBLE_RIKERS_FLAG CHAR(1), 00026139 2 GEO_WA2_3L_SEGMENT_ID CHAR(7), 00026239 2 GEO_WA2_3L_SEGMENT_TYPE CHAR(1), 00026339 /*************************************************************/ 00026439 /** THE PORTION OF THIS WORK AREA ABOVE THIS POINT IS \\**/ 00026539 /** IDENTICAL TO THE STANDARD WORK AREA 2 FOR FUNCTION 3. \\**/ 00026639 /** THE PORTION BELOW THIS POINT IS PRESENT ONLY FOR THE \\**/ 00026739 /** LONG WORK AREA 2 OPTION. \\**/ 00026839 /*************************************************************/ 00026939 2 GEO_WA2_3L_L_1990_CENSUSTRACT CHAR(6), 00027039 2 FILLER_W370B CHAR(4), 00027139 2 GEO_WA2_L_3L_DYN_BLOCK CHAR(3),/\\*ATOMIC POLYGON*/ 00027239 2 GEO_WA2_3L_R_1990_CENSUSTRACT CHAR(6), 00027339 2 FILLER_W370C CHAR(4), 00027439 2 GEO_WA2_R_3L_DYN_BLOCK CHAR(3),/\\*ATOMIC POLYGON*/ 00027539 2 GEO_WA2_3L_LEFT_FIRESEC CHAR(2),/\\*FIRE DIV*/ 00027639 2 GEO_WA2_3L_LEFT_FIREBAT CHAR(2), 00027739 2 GEO_WA2_3L_LEFT_FIRECO, 00027839 3 GEO_WA2_3L_LEFT_FIRECO_TYPE CHAR(1), 00027939 3 GEO_WA2_3L_LEFT_FIRECO_NUM CHAR(3), 00028039 2 GEO_WA2_3L_RIGHT_FIRESEC CHAR(2),/\\*FIRE DIV*/ 00028139 2 GEO_WA2_3L_RIGHT_FIREBAT CHAR(2), 00028239 2 GEO_WA2_3L_RIGHT_FIRECO, 00028339 3 GEO_WA2_3L_RIGHT_FIRECO_TYPE CHAR(1), 00028439 3 GEO_WA2_3L_RIGHT_FIRECO_NUM CHAR(3), 00028539 2 GEO_WA2_3L_L_2010_CENSUS_TRACT CHAR(6), 00028639 2 GEO_WA2_3L_L_2010_CENSUS_BLOCK CHAR(4), 00028739 2 GEO_WA2_3L_L_2010_CENSUS_BLK_SF CHAR(1), /\\*NOTIMPLEMENTED*/ 00028839 2 GEO_WA2_3L_R_2010_CENSUS_TRACT CHAR(6), 00028939 2 GEO_WA2_3L_R_2010_CENSUS_BLOCK CHAR(4), 00029039 2 GEO_WA2_3L_R_2010_CENSUS_BLK_SF CHAR(1), /\\*NOTIMPLEMENTED*/ 00029139 2 GEO_WA2_3L_FROM_NODE CHAR(7), 00029239 2 GEO_WA2_3L_TO_NODE CHAR(7), 00029339 2 GEO_WA2_3L_L_2000_CENS_TRACT CHAR(6), 00029439 2 GEO_WA2_3L_L_2000_CENS_BLOCK CHAR(4), 00029539 2 GEO_WA2_3L_L_2000_CENS_BL_SUF CHAR(1), 00029639 2 GEO_WA2_3L_R_2000_CENS_TRACT CHAR(6), 00029739 2 GEO_WA2_3L_R_2000_CENS_BLOCK CHAR(4), 00029839 2 GEO_WA2_3L_R_2000_CENS_BL_SUF CHAR(1); 00029939 DCL 1 GEO_WA2_3L_LEFT_COMDIST CHAR(3) 00030025 BASED(ADDR(GEO_WA2_3L_LEFT_COMMUN_DIST)); 00030125 DCL 1 GEO_WA2_3L_RIGHT_COMDIST CHAR(3) 00030225 BASED(ADDR(GEO_WA2_3L_RIGHT_COMMUN_DIST)); 00030325 DCL 1 GEO_WA2_3L_LEFT_POLICEDIST CHAR(4) 00030425 BASED(ADDR(GEO_WA2_3L_LEFT_POLICE_DIST)); 00030525 DCL 1 GEO_WA2_3L_RIGHT_POLICEDIST CHAR(4) 00030625 BASED(ADDR(GEO_WA2_3L_RIGHT_POLICE_DIST)); 00030725 PW2L=ADDR(W2PL1L); 00030825 00031025 /********************************************************************/ 00040012 W2PL11A COPY File /********************************************************************/ 00000100 /*** THIS IS GEOSUPPORT SYSTEM COPY FILE W2PL11A, CONTAINING THE \\***/ 00000200 /*** LAYOUT OF WORK AREA 2 FOR FUNCTIONS 1A AND BL WHICH SHARE \\***/ 00000300 /*** A SINGLE WORK AREA 2 LAYOUT. 11/28/00 \\***/ 00000403 /********************************************************************/ 00000500 00000600 /* STANDARD FORMAT \\*/ 00000701 00000800 DCL 00000900 1 W2PL11A, 00001000 2 GEO_WA2_1A_ACCESS_KEY CHAR(21), 00001100 2 GEO_WA2_1A_CONT_PARITY CHAR(1), 00001200 2 GEO_WA2_1A_LOW_HOUSENUM CHAR(6), 00001300 2 GEO_WA2_1A_ALTKEY_1, 00001400 3 GEO_WA2_1A_ALTKEY_1_BORO CHAR(1), 00001500 3 GEO_WA2_1A_ALTKEY_1_TAXBLOCK CHAR(5), 00001600 3 GEO_WA2_1A_ALTKEY_1_TAXLOT CHAR(4), 00001700 2 GEO_WA2_1A_FILLER_230 CHAR(1), 00001800 2 GEO_WA2_1A_SCC CHAR(1), 00001900 2 GEO_WA2_1A_FILLER_240 CHAR(1), 00002000 2 GEO_WA2_1A_GENERAL_LOT_INFO, 00002100 3 GEO_WA2_1A_RPAD_BLDG_CLASS CHAR(2), 00002200 3 GEO_WA2_1A_CORNER_CODE CHAR(2), 00002300 3 GEO_WA2_1A_NUM_OF_STRUCTURES CHAR(2), 00002400 3 GEO_WA2_1A_NUM_OF_BLOCKFACES CHAR(2), 00002500 3 GEO_WA2_1A_INTERIOR_FLAG CHAR(1), 00002600 3 GEO_WA2_1A_VACANT_FLAG CHAR(1), 00002700 3 GEO_WA2_1A_IRREG_LOT_FLAG CHAR(1), 00002800 2 GEO_WA2_1A_ALT_BORO_FLAG CHAR(1), 00002900 2 GEO_WA2_1A_FILLER_245 CHAR(1), 00003000 2 GEO_WA2_1A_STROLL_KEY CHAR(13), 00003100 2 GEO_WA2_1A_OVERFLOW_FLAG CHAR(1), 00003202 2 GEO_WA2_1A_FILLER_251 CHAR(1), /\\*USED FOR DCP*/ 00003300 2 GEO_WA2_1A_BIN CHAR(7), 00003400 2 GEO_WA2_1A_CONDO_FLAG CHAR(1), 00003500 2 GEO_WA2_1A_RPAD_CONDO_ID_NUM CHAR(4), 00003600 2 GEO_WA2_1A_CONDO_LOW_BBL CHAR(10), 00003700 2 GEO_WA2_1A_FILLER_260 CHAR(1), 00003800 2 GEO_WA2_1A_CONDO_BILL_BBL CHAR(10), 00003900 2 GEO_WA2_1A_FILLER_270 CHAR(1), 00004000 2 GEO_WA2_1A_CONDO_BILL_BBL_SCC CHAR(1), 00004100 2 GEO_WA2_1A_CONDO_HIGH_BBL CHAR(10), 00004200 2 GEO_WA2_1A_FILLER_275 CHAR(1), 00004300 2 GEO_WA2_1A_SANBORN_BORO CHAR(1), 00004400 2 GEO_WA2_1A_SANBORN_VOL_PAGE, 00004500 3 GEO_WA2_1A_SANBORN_VOL_NUM CHAR(3), 00004600 3 GEO_WA2_1A_SANBORN_PAGE_NUM CHAR(4), 00004700 2 GEO_WA2_1A_COMMERC_DIST CHAR(5), 00004800 2 GEO_WA2_1A_COOP_NUM CHAR(4), 00004904 2 GEO_WA2_1A_FILLER_276 CHAR(4), 00005007 2 GEO_WA2_1A_ACTUAL_NUM_OF_STRUCT CHAR(4), 00005106 2 GEO_WA2_1A_DOF_MAP_BORO CHAR(1), 00005207 2 GEO_WA2_1A_DOF_MAP_SECVOL CHAR(4), 00005307 2 GEO_WA2_1A_DOF_MAP_PAGE CHAR(4), 00005407 2 GEO_WA2_1A_X_COORD CHAR(7), 00005508 2 GEO_WA2_1A_Y_COORD CHAR(7), 00005608 2 GEO_WA2_1A_BID CHAR(6), 00005809 2 GEO_WA2_1A_FILLER_280 CHAR(2), 00005909 2 GEO_WA2_1A_FILLER_LGCS CHAR(8), 00006010 2 GEO_WA2_1A_FILLER_280A CHAR(2), 00006109 2 GEO_WA2_1A_NUM_OF_ADDR_FOR_LOT CHAR(2), 00006209 2 GEO_WA2_1A_LIST_OF_ADDRESSES(21), 00006309 3 GEO_WA2_1A_LIST_LOW_HOUSENUM CHAR(6), 00006409 3 GEO_WA2_1A_FILLER_290 CHAR(3), 00006509 3 GEO_WA2_1A_LIST_HI_HOUSENUM CHAR(6), 00006609 3 GEO_WA2_1A_FILLER_300 CHAR(3), 00006709 3 GEO_WA2_1A_LIST_STREETCODE CHAR(8), 00006809 3 GEO_WA2_1A_LIST_BIN CHAR(7), 00006909 3 GEO_WA2_1A_ADDR_TYPE CHAR(1), 00007009 3 GEO_WA2_1A_FILLER_310 CHAR(1), 00007109 3 GEO_WA2_1A_LIST_SOS CHAR(1); 00007209 DCL GEO_WA2_1A_SANBORN_BVOLPAGE CHAR(8) 00007309 BASED(ADDR(GEO_WA2_1A_SANBORN_BORO)); 00008009 W2PL11AL COPY File /********************************************************************/ 00000100 /*** THIS IS GEOSUPPORT SYSTEM COPY FILE W2PL11AL, CONTAINING THE***/ 00000200 /*** LAYOUT OF LONG WORK AREA 2 FOR FUNCTIONS 1A AND BL WHICH \\***/ 00000300 /*** SHARE A SINGLE WORK AREA 2 LAYOUT. 11/28/00 \\***/ 00000402 /********************************************************************/ 00000500 00000600 /* 1A/BL LONG WORK AREA 2 \\*/ 00000700 00000800 DCL 00000900 1 W2PL11AL, 00001000 2 GEO_WA2_1AL_ACCESS_KEY CHAR(21), 00001100 2 GEO_WA2_1AL_CONT_PARITY CHAR(1), 00001200 2 GEO_WA2_1AL_LOW_HOUSENUM CHAR(6), 00001300 2 GEO_WA2_1AL_ALTKEY_1, 00001400 3 GEO_WA2_1AL_ALTKEY_1_BORO CHAR(1), 00001500 3 GEO_WA2_1AL_ALTKEY_1_TAXBLOCK CHAR(5), 00001600 3 GEO_WA2_1AL_ALTKEY_1_TAXLOT CHAR(4), 00001700 2 GEO_WA2_1AL_FILLER_230 CHAR(1), 00001800 2 GEO_WA2_1AL_SCC CHAR(1), 00001900 2 GEO_WA2_1AL_FILLER_240 CHAR(1), 00002000 2 GEO_WA2_1AL_GENERAL_LOT_INFO, 00002100 3 GEO_WA2_1AL_RPAD_BLDG_CLASS CHAR(2), 00002200 3 GEO_WA2_1AL_CORNER_CODE CHAR(2), 00002300 3 GEO_WA2_1AL_NUM_OF_STRUCTURES CHAR(2), 00002400 3 GEO_WA2_1AL_NUM_OF_BLOCKFACES CHAR(2), 00002500 3 GEO_WA2_1AL_INTERIOR_FLAG CHAR(1), 00002600 3 GEO_WA2_1AL_VACANT_FLAG CHAR(1), 00002700 3 GEO_WA2_1AL_IRREG_LOT_FLAG CHAR(1), 00002800 2 GEO_WA2_1AL_ALT_BORO_FLAG CHAR(1), 00002900 2 GEO_WA2_1AL_FILLER_245 CHAR(1), 00003000 2 GEO_WA2_1AL_STROLL_KEY CHAR(13), 00003100 2 GEO_WA2_1AL_FILLER_250 CHAR(1), 00003200 2 GEO_WA2_1AL_FILLER_251 CHAR(1), /\\*USED FOR DCP*/ 00003300 2 GEO_WA2_1AL_BIN CHAR(7), 00003400 2 GEO_WA2_1AL_CONDO_FLAG CHAR(1), 00003500 2 GEO_WA2_1AL_RPAD_CONDO_ID_NUM CHAR(4), 00003600 2 GEO_WA2_1AL_CONDO_LOW_BBL CHAR(10), 00003700 2 GEO_WA2_1AL_FILLER_260 CHAR(1), 00003800 2 GEO_WA2_1AL_CONDO_BILL_BBL CHAR(10), 00003900 2 GEO_WA2_1AL_FILLER_270 CHAR(1), 00004000 2 GEO_WA2_1AL_CONDO_BILL_BBL_SCC CHAR(1), 00004100 2 GEO_WA2_1AL_CONDO_HIGH_BBL CHAR(10), 00004200 2 GEO_WA2_1AL_FILLER_275 CHAR(1), 00004300 2 GEO_WA2_1AL_SANBORN_BORO CHAR(1), 00004400 2 GEO_WA2_1AL_SANBORN_VOL_PAGE, 00004500 3 GEO_WA2_1AL_SANBORN_VOL_NUM CHAR(3), 00004600 3 GEO_WA2_1AL_SANBORN_PAGE_NUM CHAR(4), 00004700 2 GEO_WA2_1AL_COMMERC_DIST CHAR(5), 00004800 2 GEO_WA2_1AL_COOP_NUM CHAR(4), 00004903 2 GEO_WA2_1AL_FILLER_276 CHAR(4), 00005008 2 GEO_WA2_1AL_ACTUAL_NUM_STRUCTS CHAR(4), 00005106 2 GEO_WA2_1AL_DOF_MAP_BORO CHAR(1), 00005208 2 GEO_WA2_1AL_DOF_MAP_SECVOL CHAR(4), 00005308 2 GEO_WA2_1AL_DOF_MAP_PAGE CHAR(4), 00005408 2 GEO_WA2_1AL_X_COORD CHAR(7), 00005509 2 GEO_WA2_1AL_Y_COORD CHAR(7), 00005609 2 GEO_WA2_1AL_BID CHAR(6), 00005710 2 GEO_WA2_1AL_FILLER_280 CHAR(2), 00005810 2 GEO_WA2_1AL_FILLER_LGCS CHAR(8), 00005911 2 GEO_WA2_1AL_NUM_OF_BINS_FOR_LOT CHAR(4), 00006110 2 GEO_WA2_1AL_BINS(2500) CHAR(7); 00006210 00006310 DCL GEO_WA2_1AL_SANBORN_BVOLPAGE CHAR(8) 00006410 BASED(ADDR(GEO_WA2_1AL_SANBORN_BORO)); 00007009 W2PL13S COPY File /*******************************************************************/ 00000010 /** THIS IS GEOSUPPORT SYSTEM COPY FILE W2PL13S, CONTAINING THE \\**/ 00000020 /** LAYOUT OF WORK AREA 2 FOR FUNCTION 3S. 9/22/93 \\**/ 00000030 /*******************************************************************/ 00000040 DCL 00000050 1 W2PL13S, 00000060 2 GEO_WA2_3S_ACCESS_KEY CHAR(21), 00000070 2 GEO_WA2_3S_NUM_OF_INTERSECTS CHAR(3), 00000080 2 GEO_WA2_3S_LIST_OF_INTERSECTS(350), 00000090 3 GEO_WA2_3S_SMALLEST_PBSC FIXED DEC(7), 00000100 3 GEO_WA2_3S_2ND_SMALLEST_PBSC FIXED DEC(7), 00000110 3 GEO_WA2_3S_DISTANCE FIXED DEC(5), 00000120 3 GEO_WA2_3S_GAP_FLAG CHAR(1); 00000130","title":"PL/1 COPY Files (MSW)"},{"location":"appendices/appendix05/#c-copy-file-msw","text":"WAC COPY File /********************************************************************/ /* Modified - 2 June 2011 (added fields: 2010 Census Tract,Block \\*/ /* and Suffix for funcions 1,1E,2,3,3c). \\*/ /* Modified - 5 March 2009 \\*/ /********************************************************************/ typedef struct { struct { char func_code[2]; /* Function Code \\*/ char boro_1; /* Borough Code of First St \\*/ char hse_nbr_disp[12]; /* House nbr in Disp form \\*/ char hse_nbr_hni[6]; /* House nbr in HNI form \\*/ char street_name_1[32]; /* First Street Name \\*/ char street_name_2[32]; /* Second Street Name \\*/ char street_name_3[32]; /* Third Street Name \\*/ char comp_direction; /* Compass Direction \\*/ char comp_direction2; /* Compass Direction-Fn 3S \\*/ char PB5SC_1[4]; /* Packd Boro 5 digt St Code*/ char PB5SC_2[4]; /* Packd Boro 5 digt St Code*/ char PB5SC_3[4]; /* Packd Boro 5 digt St Code*/ char roadbedreq; /* Roadbed Request Switch \\*/ char boro_2; /* Boro Code of Second Strt \\*/ char boro_3; /* Boro Code of Third Street*/ char snl[2]; /* Street Name Norm Length \\*/ char B10SC_1[11]; /* 1st Boro & 10 Digt St Cod*/ char B10SC_2[11]; /* 2nd Boro & 10 Digt St Cod*/ char B10SC_3[11]; /* 3rd Boro & 10 Digt St Cod*/ char zipin[5]; /* Input Zip Code \\*/ char BBL[10]; /* Boro(len=1), Block(len=5)\\*/ /* and Lot (len=4) \\*/ char filler04; char bld_id[7]; /* Bld Id Number (BIN) \\*/ char compact_flag; /* Compact Street Names flag*/ char long_WA_flag; /* Long Work Area 2 Flag \\*/ char lo_range_hnd[12]; /* Low HND of Range \\*/ char lo_range_hni[6]; /* Low HNI of Range \\*/ char not_IBM_flag; /* Non-IBM Mainframe Flag \\*/ char BL1A; /* 1A/BL Version Switch \\*/ char xstreet_flag; /* Cross Street Names Flag \\*/ char filler06[4 ]; } input; struct { char lo_hse_nbr_disp[12]; /* Low HND of Range \\*/ char boro_name[9]; /* Boro Name of First Street*/ char street_name_1[32]; /* 1st St Name - Normalized \\*/ char street_name_2[32]; /* 2nd St Name - Normalized \\*/ char street_name_3[32]; /* 3rd St Name - Normalized \\*/ char hse_nbr_disp[12]; /* House nbr in Normalized \\*/ /* Display form \\*/ char hse_nbr_hni[6]; /* House number in HNI form \\*/ char filler01[7]; char PB5SC_1[4]; /* Packd Boro 5 digt St Code*/ char filler02[2]; char PB5SC_2[4]; /* Packd Boro 5 digt St Code*/ char filler03[2]; char PB5SC_3[4]; /* Packd Boro 5 digt St Code*/ char attrbytes[3]; /* Attribute Bytes - int use*/ char br_pb5sc[10][4]; /* Up to 10 PB5SCs-Browse fn*/ char B10SC_1[11]; /* 1st Boro & 10 Digt St Cod*/ char B10SC_2[11]; /* 2nd Boro & 10 Digt St Cod*/ char B10SC_3[11]; /* 3rd Boro & 10 Digt St Cod*/ char condo_nbr[5]; /* Condo Number \\*/ char BBL[10]; /* Boro(len=1), Block(len=5)\\*/ /* and Lot (len=4)-Normalizd*/ char filler06[1]; char bld_id[7]; /* Building Id Number \\*/ char intuse1; /* Internal Use Only \\*/ char reject_reason_code;/* Reject Reason Code \\*/ char filler07[2]; char ret_code[2]; /* GeoSupport Return Code \\*/ char msg[80]; /* GeoSupport Message \\*/ char nbr_sim_names[2]; /* Nbr of Similar St Names \\*/ char sim_names[10][32]; /* Up to 10 Similar St Names*/ } output; } C_WA1; typedef struct { char filler01[21]; char cont_parity_ind; /* Continuous Parity Ind. \\*/ char lo_hse_nbr[6]; /* Low House nbr in HNI form*/ char hi_hse_nbr[6]; /* Hi House Nbr in HNI form \\*/ char alx; /* A=Alley intersects segmnt*/ /* X=Cross Streets modified \\*/ char lo_nbr_x_sts; /* Nbr of cross streets at \\*/ /* low house nbr end of st \\*/ char l_x_sts[5][4]; /* PB5SCs of lo end cross st*/ char hi_nbr_x_sts; /* Nbr of cross streets at \\*/ /* low house nbr end of st \\*/ char h_x_sts[5][4]; /* PB5SCs of lo end cross st*/ char com_dist[3]; /* Community District \\*/ /* Position 0 contains the \\*/ /* Legacy Boro Code & Pos 1 \\*/ /* & 2, the district nbr \\*/ char zip_code[5]; /* Zip code for st seg \\*/ char DOT_slca; /* DOT St Lght Contractr Are*/ char health_cent[2]; /* Health Center District \\*/ char sos_ind; /* Side of Street Indicator \\*/ char cont_par; /* Continuous Parity Ind. \\*/ char cen_tract_10[6]; /* 2010 Census Tract \\*/ char cen_blk_10[4]; /* 2010 Census Block \\*/ char cen_blk_10_sufx; /* 2010 Census Block Suffix \\*/ char filler_indv; /* Was Instructional Divisn \\*/ char filler07[2]; /* Filler \\*/ char health_area[4]; /* Health Area \\*/ char sanit_recycle[3]; /* Recycling Sanit pick-up \\*/ char feature_type; /* Feature Type Code \\*/ char iaei; /* Community Development \\*/ /* Eligibility Indicator \\*/ char curve_flag; /* Curve Flag \\*/ char police_boro_com; /* Police Patrol Boro Commnd*/ char police_pre[3]; /* Police Precinct \\*/ char com_schl_dist[2]; /* Community School District*/ /* Following 7 fields are \\*/ /* used for Function 1E only*/ char ed[3]; /* Election District \\*/ char ad[2]; /* Assembly District \\*/ char sped_flag; /* Split Elect District Flag*/ char congress_dist[2]; /* Congressional District \\*/ char state_sen_dist[2]; /* State Senatorial District*/ char civil_court[2]; /* Civil Court District \\*/ char civil_council[2]; /* City Council District \\*/ char coincident_seg_cnt; /* Coincident Segment \\*/ /* Count \\*/ char segtypecode; /* Segment Type Code \\*/ char sanit_dist[3]; /* Sanitation District \\*/ char sanit_sub_sect[2]; /* Sanit Collect Scheduling \\*/ /* Section and Subsection \\*/ char fire_divisn[2]; /* Fire Division \\*/ char fire_bat[2]; /* Fire Battalion \\*/ char fire_co_type; /* Fire Company Type \\*/ char fire_co_nbr[3]; /* Fire Company Number \\*/ char sagr_flag; /* Special Address Generated*/ /* Record flag \\*/ char mh_ri_flag; /* Marble Hill/Rikers Island*/ /* Alternative Borough flag \\*/ char scsd_flag; /* Split Com School District*/ /* flag \\*/ char DCP_lgc[2]; /* DCP preferred LGC \\*/ char face_code[4]; /* LION Face Code \\*/ char seq_nbr[5]; /* LION Sequence Number \\*/ char cen_tract_90[6]; /* 1990 Census Tract \\*/ char filler09 [4]; /* Filler \\*/ char dynam_blk[3]; /* Dynamic Block \\*/ char X_coord[7]; /* X coordinate \\*/ char Y_coord[7]; /* Y coordinate \\*/ char seg_len[5]; /* Segment Length in Feet \\*/ char sanit_reg_sched[5];/* Regularly Sanit pick-up \\*/ } C_WA2_F1; typedef struct { C_WA2_F1 c_wa2_f1; /* First 200 Bytes \\*/ char seg_id[7]; /* Segment Identifier \\*/ char true_b7sc[8]; /* \"true\" Boro 7 Str code \\*/ char true_hni [6]; /* Underlying HNI \\*/ char cen_tract_2000[6]; /* 2000 Census Tract \\*/ char cen_blk_2000[4]; /* 2000 Census Block \\*/ char cen_blk_2000_sufx; /* 2000 Census Block Suffix \\*/ char filler01[68]; /* Filler - Future Use \\*/ /* char filler01[79]; /* Filler - Future Use \\*/ } C_WA2_F1L; typedef struct { char lo_hse_nbr[6]; /* Low House nbr in HNI form*/ char filler01[3]; char hi_hse_nbr[6]; /* Hi House Nbr in HNI form \\*/ char filler02[3]; char B5SC[6]; /* Boro & 5 digit Str Code \\*/ char lgc[2]; /* LGC of Street \\*/ char bld_id[7]; /* BIN of address range \\*/ char addr_type; /* Address Type \\*/ char filler04; char sos_ind; /* Side of Street Indicator \\*/ } ADDR_RANGE; typedef struct { char sanborn_boro; /* Sanborn Borough Code \\*/ char sanborn_vol[3]; /* Sanborn Volume \\*/ char sanborn_page[4]; /* Sanborn Page \\*/ } SANBORN; typedef struct { char filler01[21]; char cont_parity_ind; /* Continuous Parity Ind \\*/ char lo_hse_nbr[6]; /* Low House Number \\*/ char BBL[10]; /* Boro(len=1), Block(len=5)\\*/ /* and Lot (len=4) \\*/ char tax_lot_ver_nbr; /* Tax Lot Version Number \\*/ char RPAD_scc; /* RPAD Self_Check Code(SCC)\\*/ char filler02; char RPAD_lucc[2]; /* RPAD Land Use Class. Code*/ char corner[2]; /* Corner Code \\*/ char nbr_blds[2]; /* Nbr of buildings on lot \\*/ char nbr_str[2]; /* Nbr Street Frontages \\*/ char inter_flag; /* Interior Lot Flag \\*/ char vacant_flag; /* Vacant Lot Flag \\*/ char irreg_flag; /* Irregularly-Shaped Lot Fl*/ char mh_ri_flag; /* Marble Hill/Rikers Island*/ char filler03; /* Former Pseudo-Address Flg*/ char stroll_key[13]; /* Strolling key \\*/ char overflow_flag; /* More than 21 Addresses \\*/ char res_internal_use; /* Reserved for Internal Use*/ char bld_id[7]; /* Bld Identification Nbr \\*/ /* (BIN) of Input Address of*/ /* Existing Building, If any*/ char condo_flag; /* Condominium Flag \\*/ char RPAD_cin[4]; /* RPAD Condo Id Number \\*/ char condo_lo_BBL[10]; /* Low BBL of Condo \\*/ char filler05; char condo_bill_BBL[10];/* Condo Billing BBL \\*/ char filler06; char condo_bill_BBL_scc;/* Condo Billing BBL \\*/ /* Self-Check Code \\*/ char condo_hi_BBL[10]; /* High BBL of Condo \\*/ char filler07; SANBORN fn1A_Sanborn; /* Sanborn Information \\*/ char business_area[5]; /* Business Area \\*/ char co_op_nbr[4 ]; /* Co-op Number \\*/ char filler08[4 ]; char tot_nbr_bldgs[4 ]; /* Actual Nbr Bldgs on lot \\*/ char tax_map_nbr[5 ]; /* Tax Map Nbr-Sect and Vol \\*/ char filler09[04]; char X_coord[7]; /* X coordinate-Annotation p*/ char Y_coord[7]; /* Y coordinate-Annotation p*/ char bid_id[6]; /* Business Improvement Dist*/ char filler10[2]; char int_use[8]; char filler11[2]; char nbr_addr[2]; /* Nbr of Addr Ranges on Lot*/ ADDR_RANGE addr_range[21]; /* Addr Range structure \\*/ } C_WA2_F1A; typedef struct { char filler01[21]; char cont_parity_ind; /* Continuous Parity Ind \\*/ char lo_hse_nbr[6]; /* Low House Number \\*/ char BBL[10]; /* Boro(len=1), Block(len=5)\\*/ /* and Lot (len=4) \\*/ char tax_lot_ver_nbr; /* Tax Lot Version Number \\*/ char RPAD_scc; /* RPAD Self_Check Code(SCC)\\*/ char filler02; char RPAD_lucc[2]; /* RPAD Land Use Class. Code*/ char corner[2]; /* Corner Code \\*/ char nbr_blds[2]; /* Nbr of buildings on lot \\*/ char nbr_str[2]; /* Nbr Street Frontages \\*/ char inter_flag; /* Interior Lot Flag \\*/ char vacant_flag; /* Vacant Lot Flag \\*/ char irreg_flag; /* Irregularly-Shaped Lot Fl*/ char mh_ri_flag; /* Marble Hill/Rikers Island*/ char filler03; /* Former Pseudo-Address Flg*/ char stroll_key[13]; /* Strolling key \\*/ char filler04; char res_internal_use; /* Reserved for Internal Use*/ char bld_id[7]; /* Bld Identification Nbr \\*/ /* (BIN) of Input Address of*/ /* Existing Building, If any*/ char condo_flag; /* Condominium Flag \\*/ char RPAD_cin[4]; /* RPAD Condo Id Number \\*/ char condo_lo_BBL[10]; /* Low BBL of Condo \\*/ char filler05; char condo_bill_BBL[10];/* Condo Billing BBL \\*/ char filler06; char condo_bill_BBL_scc;/* Condo Billing BBL \\*/ /* Self-Check Code \\*/ char condo_hi_BBL[10]; /* High BBL of Condo \\*/ char filler07; SANBORN fn1A_Sanborn; /* Sanborn Information \\*/ char business_area[5]; /* Business Area \\*/ char co_op_nbr[4 ]; /* Co-op number \\*/ char filler08[4 ]; char tot_nbr_bldgs[4 ]; /* Actual Nbr Bldgs on lot \\*/ char tax_map_nbr[5 ]; /* Tax Map Nbr-Sect and Vol \\*/ char filler09[04]; char X_coord[7]; /* X coordinate-Annotation p*/ char Y_coord[7]; /* Y coordinate-Annotation p*/ char bid_id[6]; /* Business Improvement Dist*/ char filler10[2]; char int_use[8]; char nbr_bins[4]; /* Nbr of BINS on Lot \\*/ char bin_list[2500][7]; /* List of BINS on Lot \\*/ } C_WA2_F1AL; typedef struct { char filler01[31]; char lgc[2][2]; /* Preferred LGCs \\*/ char nbr_x_sts; /* Number of Intersecting St*/ char x_sts[5][4]; /* PB5SCs of Intersection St*/ char compdir[1]; /* Compass Direction if 2 \\*/ /* lowest str codes cross \\*/ /* exactly twice \\*/ char level_codes[10]; /* Level Codes of X Streets \\*/ char instruc_div[2]; /* Instructional Division \\*/ char fire_sector[2]; /* Fire Sector \\*/ char fire_bat[2]; /* Fire Battalion \\*/ char fire_co_type; /* Fire Company Type \\*/ char fire_co_nbr[3]; /* Fire Company Number \\*/ char com_dist[3]; /* Community District \\*/ /* Pos 0 contains the Boro \\*/ /* Code and Positions 1 & 2 \\*/ /* contain the district nbr \\*/ char zip_code[5]; /* Zip code for st segment \\*/ char DOT_slca; /* DOT St Lght Contractr Are*/ char cen_tract_10[6]; /* 2010 Census Tract \\*/ char filler03[3]; char health_area[4]; /* Health Area \\*/ char filler04[9]; char node_nbr[7 ]; /* Node Number \\*/ char X_coord[7]; /* X coordinate \\*/ char Y_coord[7]; /* Y coordinate \\*/ char filler04a[2]; /* \\*/ char filler05[2]; char police_boro_com; /* Police Patrol Boro Commnd*/ char police_pre[3]; /* Police Precinct \\*/ char com_schl_dist[2]; /* Community School District*/ /* Following 7 fields are \\*/ /* used forFunction 1E only \\*/ char mh_ri_flag; /* Marble Hill/Rikers Island*/ char cen_tract_90[6]; /* 1990 Census Tract \\*/ SANBORN fn2_Sanborn[2]; /* Sanborn Information \\*/ char dup_intersect_distance[5]; /* Distance in Feet*/ /* Bet Duplicate Intersects \\*/ char cen_tract_2000[6]; /* 2000 Census Tract \\*/ char filler06[27]; /* char filler06[33]; \\*/ } C_WA2_F2; typedef struct { char filler01[21]; char dup_key_flag; /* Duplicate Key Flag \\*/ char curve_flag; /* Curve Flag \\*/ char loc_stat_seg; /* Locational Status of Seg*/ char cnty_bnd_ind; /* County Boundary Indicat \\*/ char coincident_seg_cnt; /* Coincident Segment \\*/ /* Count \\*/ char filler03[3]; /* Future Use \\*/ char lgc[3][2]; /* Preferred LGCs \\*/ char lo_nbr_x_sts; /* Nbr of cross sts at low \\*/ /* house nbr end of street \\*/ char l_x_sts[5][4]; /* PB5SCs of lo end X sts \\*/ char hi_nbr_x_sts; /* Number of X streets at lo*/ /* house nbr end of street \\*/ char h_x_sts[5][4]; /* PB5SCs of low end X sts \\*/ char DOT_slca; /* DOT St Lght Contractr Are*/ char x_street_reversal_flag; /* X St Reversal Flag \\*/ char l_com_dist[3]; /* Left Community District \\*/ /* Position 0 contains the \\*/ /* Boro Code and Pos 1 & 2 \\*/ /* contain the district nbr \\*/ char r_com_dist[3]; /* Right Community District \\*/ /* Position 0 contains the \\*/ /* Boro Code and Pos 1 & 2 \\*/ /* contain the district nbr \\*/ char l_zip_code[5]; /* Left Zip code for st seg \\*/ char r_zip_code[5]; /* Right Zip code for st seg*/ char filler07 [18]; char l_health_area[4]; /* Left Health Area \\*/ char r_health_area[4]; /* Right Health Area \\*/ char l_fill_in_div[2]; /* Was Left Instructionl Div*/ char r_fill_in_div[2]; /* Was Right Instructnl Div \\*/ char l_lo_hse_nbr[7]; /* Left Lo Hse nbr in Disp \\*/ char l_hi_hse_nbr[7]; /* Left Hi Hse Nbr in Disp \\*/ char r_lo_hse_nbr[7]; /* rght Lo Hse nbr in Disply*/ char r_hi_hse_nbr[7]; /* rght Hi Hse Nbr in Disply*/ char cont_par; /* Continuous Parity Ind \\*/ char face_code[4]; /* LION Face Code \\*/ char seq_nbr[5]; /* LION Sequence Nbr \\*/ char genr_flag; /* Generated Record Flag \\*/ char seg_len[3]; /* Segment Length in Feet \\*/ char seg_azm[3]; /* Segment Azimuth \\*/ char seg_orient; /* Segment Orientation \\*/ char filler04a[2]; /* \\*/ char filler04b[2]; /* \\*/ char l_iaei; /* Community Development \\*/ /* Eligibility Indicator for*/ /* left side \\*/ char r_iaei; /* Community Development \\*/ /* Eligibility Indicator for*/ /* right side \\*/ char dog_leg; /* Dog Leg Flag \\*/ char feature_type; /* Feature Type Code \\*/ char l_police_boro_com; /* Lft Police Patrl Boro Com*/ char l_police_pre[3]; /* Left Police Precinct \\*/ char r_police_boro_com; /* Rght Police Patrl Boro Cm*/ char r_police_pre[3]; /* Right Police Precinct \\*/ char l_com_schl_dist[2];/* Lft Com School District \\*/ char r_com_schl_dist[2];/* Rght Com School District \\*/ char mh_ri_flag; /* Marble Hill/Rikers Island*/ /* Alternative Boro flag \\*/ char seg_id[7]; /* Segment Identifier \\*/ char segtypecode; /* Segment Type Code \\*/ } C_WA2_F3; typedef struct { C_WA2_F3 c_wa2_f3; /* First 200 Bytes \\*/ char l_cen_tract_90[6]; /* Left 1990 Census Tract \\*/ char filler01[4]; /* Filler \\*/ char l_dynam_blk[3]; /* Left Dynamic Block \\*/ char r_cen_tract_90[6]; /* Right 1990 Census Tract \\*/ char filler03[4]; /* Filler \\*/ char r_dynam_blk[3]; /* Right Dynamic Block \\*/ char l_fire_sector[2]; /* Left Fire Sector \\*/ char l_fire_bat[2]; /* Left Fire Battalion \\*/ char l_fire_co_type; /* Left Fire Company Type \\*/ char l_fire_co_nbr[3]; /* Left Fire Company Nbr \\*/ char r_fire_sector[2]; /* Right Fire Sector \\*/ char r_fire_bat[2]; /* Right Fire Battalion \\*/ char r_fire_co_type; /* Right Fire Company Type \\*/ char r_fire_co_nbr[3]; /* Right Fire Company Nbr \\*/ char l_cen_tract_10[6]; /* Left 2010 Census Tract \\*/ char l_cen_blk_10[4]; /* Left 2010 Census Block \\*/ char l_cen_blk_10_sufx; /* Left 2010 Census Blk Sufx*/ char r_cen_tract_10[6]; /* Right 2010 Census Tract \\*/ char r_cen_blk_10[4]; /* Right 2010 Census Block \\*/ char r_cen_blk_10_sufx; /* Right 2010 Census Blk Sfx*/ char nodes[2][7]; /* From and To Nodes \\*/ char l_cen_tract_2000[6];/\\*Left 2000 Census Tract \\*/ char l_cen_blk_2000[4]; /\\*Left 2000 Census Block \\*/ char l_cen_blk_2000_sufx;/\\*Left 2000 Census Blk Sufx\\*/ char r_cen_tract_2000[6];/\\*Right 2000 Census Tract \\*/ char r_cen_blk_2000[4]; /\\*Right 2000 Census Block \\*/ char r_cen_blk_2000_sufx;/\\*Right 2000 Census Blk Sfx*/ // char filler02[22]; } C_WA2_F3L; typedef struct { char filler01[21]; char curve_flag; /* curve flag \\*/ char segtypecode; /* Segment Type Code \\*/ char loc_stat_seg; /* Location Status of Seg. \\*/ char cnty_bnd_ind; /* County Boundary Indicator*/ char coincident_seg_cnt; /* Coincident Segment \\*/ /* Count \\*/ char filler0A[3]; /* Future Use \\*/ char lgc[3][2]; /* Preferred LGCs \\*/ char lo_nbr_x_sts; /* Nbr of cross sts at low \\*/ /* house nbr end of street \\*/ char l_x_sts[5][4]; /* PB5SCs of lo end cross st*/ char hi_nbr_x_sts; /* Nbr of cross sts at low \\*/ /* house nbr end of street \\*/ char h_x_sts[5][4]; /* PB5SCs of lo end X sts \\*/ char com_dist[3]; /* Community District Pos 0 \\*/ /* contains the Boro Code & \\*/ /* Positions 1&2 contain the*/ /* district nbr \\*/ char zip_code[5]; /* Zip code for street seg \\*/ char DOT_slca; /* DOT St Lght Contractr Are*/ char cen_tract_2000[6]; /* 2000 Census Tract \\*/ char filler02[1]; // char filler02[7]; char cen_tract_10[6]; /* 2010 Census Tract \\*/ char cen_blk_10[4]; /* 2010 Census Block \\*/ char cen_blk_10_sufx; /* 2010 Census Block Suffix \\*/ char health_area[4]; /* Health Area \\*/ char x_street_reversal_flag; /* X St Reversal Flag \\*/ char sos_ind; /* Side of Street Indicator \\*/ char fire_sector[2]; /* Fire Sector \\*/ char fire_bat[2]; /* Fire Battalion \\*/ char fire_co_type; /* Fire Company Type \\*/ char fire_co_nbr[3]; /* Fire Company Nbr */ char seg_id[7]; /* Segment Identifier */ char lo_hse_nbr[7]; /* Low House nbr in Display */ char hi_hse_nbr[7]; /* High House Nbr in Display*/ char a_lo_hse_nbr[7]; /* Alt. Lo Hse nbr in Disply*/ char a_hi_hse_nbr[7]; /* Alt.Hi Hse Nbr in Display*/ char cont_par; /* Continuous Parity Ind \\*/ char face_code[4]; /* LION Face Code \\*/ char seq_nbr[5]; /* LION Sequence Nbr \\*/ char genr_flag; /* Generated Record Flag \\*/ char seg_len[3]; /* Segment Length in Feet \\*/ char seg_azm[3]; /* Segment Azimuth \\*/ char seg_orient; /* Segment Orientation \\*/ char instruc_div[2]; /* Instructional Division \\*/ char iaei; /* Community Development \\*/ /* Eligibility Indicator \\*/ char feature_type; /* Feature Type Code \\*/ char police_boro_com; /* Police Patrol Boro Com. \\*/ char police_pre[3]; /* Police Precinct \\*/ char com_schl_dist[2]; /* Community School District*/ char mh_ri_flag; /* Marble Hill/Rikers Island*/ /* Alternative Boro flag \\*/ char cen_tract_90[6]; /* 1990 Census Tract \\*/ char filler03[4]; /* Filler \\*/ char dynam_blk[3]; /* Dynamic Block \\*/ char cen_blk_2000[4]; /* 2000 Census Block \\*/ char cen_blk_2000_sufx; /* 2000 Census Block Suffix \\*/ // char filler06[5]; } C_WA2_F3C; typedef struct { char lo_x_PB5SC[4]; /* Lowest PB5SC at Intersect*/ char lo2x_PB5SC[4]; /* 2nd Lowest PB5SC at Inter*/ char len[3]; /* Len in ft from prev node \\*/ char gap_flag; /* Gap Flag \\*/ } CROSS_STRS; typedef struct { char filler01[21]; char nbr_x_str[3]; /* Nbr of X sts in list \\*/ CROSS_STRS cross_strs[350];/* Cross Street structure*/ } C_WA2_F3S;","title":"C COPY File (MSW)"},{"location":"appendices/appendix05/#natural-ldas-msw","text":"GEOLW1 COPY File \\* USER PROGRAMS MUST RESET GEOLW1 BEFORE PRIMING WORKAREA 1 1 GEOLW1 /* LRECL=200 \\* THE FIELD W1NAT IS USED AS A PARAMETER TO CALL GEOSUPPORT RT 2 W1NAT A 2 R 2 W1NAT \\* * * * * INPUT FIELDS * * * * * * * * * * /* WORK AREA 1 FOR \\* * /* ALL FUNCTIONS 3 GEO-WA1-IN-FUNCTION-CODE A 2 R 3 GEO-WA1-IN-FUNCTION-CODE 4 GEO-WA1-IN-FUNCTION-1 A 1 4 GEO-WA1-IN-FUNCTION-2 A 1 2 GEO-WA1-IN-BORO A 1 2 GEO-WA1-IN-HOUSENUM A 12 /* FOR FCT 5, INPUT HIGH HSE NUM 2 GEO-WA1-IN-HOUSENUM-INTERNAL A 6 /* FOR FCT 5, INPUT HIGH HSE NUM 2 GEO-WA1-IN-STREET-1 A 32 2 GEO-WA1-IN-STREET-2 A 32 2 GEO-WA1-IN-STREET-3 A 32 2 GEO-WA1-IN-COMPASS A 1 2 GEO-WA1-IN-COMPASS2 A 1 2 GEO-WA1-IN-STREETCODE-1 P 6 2 GEO-WA1-IN-STREETCODE-2 P 6 2 GEO-WA1-IN-STREETCODE-3 P 6 2 GEO-WA1-IN-ROADBED-REQ-SWITCH-SF A 1 2 GEO-WA1-IN-BORO-2 A 1 2 GEO-WA1-IN-BORO-3 A 1 2 GEO-WA1-IN-SNL A 2 2 GEO-WA1-IN-10SC-1 A 11 2 GEO-WA1-IN-10SC-2 A 11 2 GEO-WA1-IN-10SC-3 A 11 2 GEO-WA1-IN-ZIPCODE A 5 2 GEO-WA1-IN-BBL A 10 R 2 GEO-WA1-IN-BBL 3 GEO-WA1-IN-BBL-BORO A 1 3 GEO-WA1-IN-BLOCKNUM A 5 3 GEO-WA1-IN-LOTNUM A 4 2 FILLER-WA1-10 A 1 2 GEO-WA1-IN-BIN A 7 2 GEO-WA1-IN-COMPACT-NAME-FLAG A 1 /* TO REQUEST THE COMPACT NAMES \\* OPTION, \\* MOVE 'C' TO THIS FIELD. \\* 2 GEO-WA1-IN-LONG-WORKAREA2-FLAG A 1 /* TO REQUEST THE LONG WORKAREA \\* OPTION, \\* MOVE 'L' TO THIS FIELD. \\* ONLY FCT 3 HAS THIS OPTION. \\* 2 GEO-WA1-IN-LOW-HOUSENUM A 12 2 GEO-WA1-IN-LOW-HSENUM-INTERNAL A 6 2 GEO-WA1-IN-NON-IBM-MAIN-FRAME A 1 /* NOT IMPLEMENTED \\* FOR ANY APPLICATION RUNNING \\* ON NON-IBM MAINFRAM, \\* MOVE 'X' TO THIS FIELD. \\* 2 GEO-WA1-IN-1ABL-VERSION A 1 /* FOR FCT 1A & BL, TO REQUEST \\* THE STANDARD WA2 FORMAT, SET \\* THIS FIELD TO 'S'. TO REQUEST \\* THE LEGACY WA2 FORMAT, SET \\* THIS FILED TO ' ' OR 'L'. \\* 2 GEO-WA1-IN-XSTREET-FLAG A 1 2 FILLER-WA1-100 A 4 \\* * * * * OUTPUT FIELDS * * * * * 2 GEO-WA1-OUT-LOW-HOUSENUM A 12 2 GEO-WA1-OUT-BORONAME A 9 2 GEO-WA1-OUT-STREET-1 A 32 2 GEO-WA1-OUT-STREET-2 A 32 2 GEO-WA1-OUT-STREET-3 A 32 2 GEO-WA1-OUT-HOUSENUM A 12 /* HI HND 2 GEO-WA1-OUT-HOUSENUM-INTERNAL A 6 2 FILLER-WA1-200 A 7 2 GEO-WA1-OUT-PB5SC-1 P 6 /* 4 BYTES R 2 GEO-WA1-OUT-PB5SC-1 3 GEO-WA1-OUT-PACKBORO-NOSIGN-1 N 1 3 GEO-WA1-OUT-STREETCODE-1-KEY P 5 /* 3 BYTES 2 FILLER-WA1-210 A 2 2 GEO-WA1-OUT-PB5SC-2 P 6 /* 4 BYTES R 2 GEO-WA1-OUT-PB5SC-2 3 GEO-WA1-OUT-PACKBORO-NOSIGN-2 N 1 3 GEO-WA1-OUT-STREETCODE-2-KEY P 5 /* 3 BYTES 2 FILLER-WA1-220 A 2 2 GEO-WA1-OUT-PB5SC-3 P 6 /* 4 BYTES R 2 GEO-WA1-OUT-PB5SC-3 3 GEO-WA1-OUT-PACKBORO-NOSIGN-3 N 1 3 GEO-WA1-OUT-STREETCODE-3-KEY P 5 /* 3 BYTES 2 GEO-WA1-OUT-STREET-ATTR A 1 (1:3) /* INTERNAL USE 2 GEO-WA1-BROWSE A 40 2 GEO-WA1-OUT-10SC-1 A 11 2 GEO-WA1-OUT-10SC-2 A 11 2 GEO-WA1-OUT-10SC-3 A 11 2 GEO-WA1-OUT-CUI A 5 /* NOT IMPLEMENTED 2 GEO-WA1-OUT-BBL A 10 R 2 GEO-WA1-OUT-BBL 3 GEO-WA1-OUT-BBL-BORO A 1 3 GEO-WA1-OUT-BLOCKNUM A 5 3 GEO-WA1-OUT-LOTNUM A 4 2 FILLER-WA1-240 A 1 2 GEO-WA1-OUT-BIN A 7 2 GEO-WA1-OUT-SND-ATTR A 1 /* DCP/GSS USE 2 GEO-WA1-OUT-REASON-CODE A 1 2 FILLER-WA1-400 A 2 /* INTERNAL USE 2 GEO-WA1-OUT-RETURN-CODE A 2 R 2 GEO-WA1-OUT-RETURN-CODE 3 GEO-WA1-OUT-RC-1 A 1 3 GEO-WA1-OUT-RC-2 A 1 2 GEO-WA1-OUT-ERROR-MESSAGE A 80 2 GEO-WA1-OUT-NUM-SIMILAR-NAMES P 3 2 GEO-WA1-OUT-SIMILAR-NAMES A 32 (1:10) GEOLW2 COPY File 1 GEOLW2 * THE FIELD W2NAT IS USED AS A PARAMETER TO CALL GEOSUPPORT FOR ALLLL * FUNCTIONS THAT ARE REDEFINED ON GEOLW2 2 W2NAT A 21 R 2 W2NAT * * BEGINNING OF FUNCTION 1 LAYOUT * **** ******* 3 GEO-WA2-FN1-ACCESS-KEY A 21 2 GEO-WA2-FN1-CONT-PARITY A 1 2 GEO-WA2-FN1-LOW-HOUSENUM-INT A 6 R 2 GEO-WA2-FN1-LOW-HOUSENUM-INT 3 GEO-WA2-FN1-LOW-HOUSENUM A 5 3 GEO-WA2-FN1-LOW-HOUSENUMSFX A 1 2 GEO-WA2-FN1-HI-HOUSENUM-INT A 6 R 2 GEO-WA2-FN1-HI-HOUSENUM-INT 3 GEO-WA2-FN1-HI-HOUSENUM A 5 3 GEO-WA2-FN1-HI-HOUSENUMSFX A 1 2 GEO-WA2-FN1-ALX A 1 /\\*ALLEYS INTERSECT SEGMENT 2 GEO-WA2-FN1-NUM-X-ST-LOW-END N 1 2 GEO-WA2-FN1-LOW-PBSC P 6 (1:5) /* 4 BYTES X 5 = 20 2 GEO-WA2-FN1-NUM-X-ST-HI-END N 1 2 GEO-WA2-FN1-HI-PBSC P 6 (1:5) 2 GEO-WA2-FN1-COMDIST A 3 R 2 GEO-WA2-FN1-COMDIST 3 GEO-WA2-FN1-COMDIST-BORO A 1 3 GEO-WA2-FN1-COMDIST-NUM A 2 2 GEO-WA2-FN1-ZIP A 5 2 GEO-WA2-FN1-SLA A 1 2 GEO-WA2-FN1-HCD A 2 2 GEO-WA2-FN1-SOS A 1 2 GEO-WA2-FN1-CONT-PARITY-IND A 1 2 GEO-WA2-FN1-2010-CENSUSTRACT A 6 2 GEO-WA2-FN1-2010-CENSUSBLOCK A 4 2 GEO-WA2-FN1-2010-CENSUSBLKSFX A 1 2 GEO-WA2-FN1-FILLER_INDV A 1 2 FILLER-WA2-260 A 2 2 GEO-WA2-FN1-HEALTHAREA A 4 2 GEO-WA2-FN1-SANI-REC A 3 2 GEO-WA1-FN1-FEATURE-TYPE A 1 2 GEO-WA2-FN1-RESDCP A 1 /* RESERVED FOR DCP/GSS USE 2 GEO-WA2-FN1-CURVE-FLAG A 1 2 GEO-WA2-FN1-POLICEDIST A 4 R 2 GEO-WA2-FN1-POLICEDIST 3 GEO-WA2-FN1-POL-PATR-BORO-CMD A 1 3 GEO-WA2-FN1-POL-PRECINCT A 3 2 GEO-WA2-FN1-SCHOOLDIST A 2 2 FILLER-WA2-250 A 15 2 GEO-WA2-FN1-SEGMENT-TYPE A 1 2 GEO-WA2-FN1-SANIDIST A 3 R 2 GEO-WA2-FN1-SANIDIST 3 GEO-WA2-FN1-SANIDIST-BORO A 1 3 GEO-WA2-FN1-SANIDIST-NUM A 2 2 GEO-WA2-FN1-SANITATION-SUBSEC A 2 2 GEO-WA2-FN1-FIRESEC A 2 /* FIRE DIVISION 2 GEO-WA2-FN1-FIREBAT A 2 2 GEO-WA2-FN1-FIRECO A 4 R 2 GEO-WA2-FN1-FIRECO 3 GEO-WA2-FN1-FIRECO-TYPE A 1 3 GEO-WA2-FN1-FIRECO-NUM A 3 2 GEO-WA2-FN1-SPECIAL-ADDR-FLAG A 1 2 GEO-WA2-FN1-MARBLE-RIKERS-FLAG A 1 2 GEO-WA2-FN1-SPLIT-SCHOOL-FLAG A 1 2 GEO-WA2-FN1-PREFERRED-LGC A 2 2 GEO-WA2-FN1-LIONFACECODE A 4 2 GEO-WA2-FN1-LIONSEQ A 5 2 GEO-WA2-FN1-1990-CENSUSTRACT A 6 2 FILLER-WA2-260B A 4 2 GEO-WA2-FN1-DYN-BLOCK A 3 2 GEO-WA2-FN1-XCOORD A 7 2 GEO-WA2-FN1-YCOORD A 7 2 GEO-WA2-FN1-SEGMENTLENGTH A 5 2 GEO-WA2-FN1-SANI-REG A 5 * * END OF FUNCTION 1 LAYOUT * **** ******* * - -------------------------------- - ---- --------------------------- * * BEGINNING OF FUNCTION 2 LAYOUT * **** ******* R 1 GEOLW2 2 GEO-WA2-FN2-ACCESS-KEY A 21 /\\*FCT 2,2C SHARE SAME WA2 LAYO 2 GEO-WA2-FN2-DUPINTERFLAG A 1 /* 2 FILLER-WA2-270 A 9 2 GEO-WA2-FN2-PREFERRED-LGC1 A 2 2 GEO-WA2-FN2-PREFERRED-LGC2 A 2 2 GEO-WA2-FN2-NUM-OF-INTERSECTS N 1 2 GEO-WA2-FN2-INTERSECT-PBSC P 6 (1:5) 2 GEO-WA2-FN2-COMPDIR A 1 2 GEO-WA2-FN2-LEVEL-CODES-TBL A 10 R 2 GEO-WA2-FN2-LEVEL-CODES-TBL 3 GEO-WA2-FN2-LEVEL-CODES A 1 (5,2) 2 GEO-WA2-FN2-INSTRUCT-REG A 2 2 GEO-WA2-FN2-FIRESEC A 2 2 GEO-WA2-FN2-FIREBAT A 2 2 GEO-WA2-FN2-FIRECO A 4 R 2 GEO-WA2-FN2-FIRECO 3 GEO-WA2-FN2-FIRECO-TYPE A 1 3 GEO-WA2-FN2-FIRECO-NUM A 3 2 GEO-WA2-FN2-COMDIST A 3 R 2 GEO-WA2-FN2-COMDIST 3 GEO-WA2-FN2-COMDIST-BORO A 1 3 GEO-WA2-FN2-COMDIST-NUM A 2 2 GEO-WA2-FN2-ZIP A 5 2 GEO-WA2-FN2-SLA A 1 2 GEO-WA2-FN2-2010-CENSUSTRACT A 6 2 FILLER-WA2-290 A 3 2 GEO-WA2-FN2-HEALTHAREA A 4 2 FILLER-WA2-300 A 9 2 GEO-WA2-FN2-LIONNODENUM A 7 2 GEO-WA2-FN2-XCOORD A 7 2 GEO-WA2-FN2-YCOORD A 7 2 FILLER-WA2-320 A 4 2 GEO-WA2-FN2-POLICEDIST A 4 R 2 GEO-WA2-FN2-POLICEDIST 3 GEO-WA2-FN2-POL-PATR-BORO-CMD A 1 3 GEO-WA2-FN2-POL-PRECINCT A 3 2 GEO-WA2-FN2-SCHOOLDIST A 2 2 GEO-WA2-FN2-MARBLE-RIKERS-FLAG A 1 2 GEO-WA2-FN2-1990-CENSUSTRACT A 6 2 GEO-WA2-FN2-SANBORN1-BVOLPAGE A 8 R 2 GEO-WA2-FN2-SANBORN1-BVOLPAGE 3 GEO-WA2-FN2-SANBORN1-BORO A 1 3 GEO-WA2-FN2-SANBORN1-VOLPAGE A 7 R 3 GEO-WA2-FN2-SANBORN1-VOLPAGE 4 GEO-WA2-FN2-SANBORN1-VOL-NUM A 3 4 GEO-WA2-FN2-SANBORN1-PAGE-NUM A 4 2 GEO-WA2-FN2-SANBORN2-BVOLPAGE A 8 R 2 GEO-WA2-FN2-SANBORN2-BVOLPAGE 3 GEO-WA2-FN2-SANBORN2-BORO A 1 3 GEO-WA2-FN2-SANBORN2-VOLPAGE A 7 R 3 GEO-WA2-FN2-SANBORN2-VOLPAGE 4 GEO-WA2-FN2-SANBORN2-VOL-NUM A 3 4 GEO-WA2-FN2-SANBORN2-PAGE-NUM A 4 2 GEO-WA2-FN2-DUP-INTRSCT-DISTNCE A 5 2 GEO-WA2-FN2-2000-CENSUSTRACT A 6 2 FILLER-WA2-330 A 27 * * END OF FUNCTION 2 LAYOUT * **** ******* * - -------------------------------- - ---- ------------------------------ * * BEGINNING OF FUNCTION 3 LAYOUT * **** ******* R 1 GEOLW2 2 GEO-WA2-FN3-ACCESS-KEY A 21 2 GEO-WA2-FN3-DUP-KEY-FLAG A 1 /* OR FN3 CONTI PARITY 2 GEO-WA2-FN3-CURVE-FLAG A 1 2 GEO-WA2-FN3-LOCATION-STATUS A 1 2 GEO-WA2-FN3-COUNTY-BOUNDARY A 1 2 FILLER-WA2-340 A 4 2 GEO-WA2-FN3-PREFERRED-LGC1 A 2 2 GEO-WA2-FN3-PREFERRED-LGC2 A 2 2 GEO-WA2-FN3-PREFERRED-LGC3 A 2 2 GEO-WA2-FN3-NUM-X-ST-LOW-END N 1 2 GEO-WA2-FN3-LOW-PBSC P 6 (1:5) 2 GEO-WA2-FN3-NUM-X-ST-HI-END N 1 2 GEO-WA2-FN3-HI-PBSC P 6 (1:5) 2 GEO-WA2-FN3-SLA A 1 2 GEO-WA2-FN3-REVERSALFLAG A 1 2 GEO-WA2-FN3-LEFT-COMDIST A 3 R 2 GEO-WA2-FN3-LEFT-COMDIST 3 GEO-WA2-FN3-LEFT-COMDIST-BORO A 1 3 GEO-WA2-FN3-LEFT-COMDIST-NUM A 2 2 GEO-WA2-FN3-RIGHT-COMDIST A 3 R 2 GEO-WA2-FN3-RIGHT-COMDIST 3 GEO-WA2-FN3-RIGHT-COMDIST-BORO A 1 3 GEO-WA2-FN3-RIGHT-COMDIST-NUM A 2 2 GEO-WA2-FN3-LEFT-ZIP A 5 2 GEO-WA2-FN3-RIGHT-ZIP A 5 2 FILLER-WA2-350A A 18 2 GEO-WA2-FN3-LEFT-HEALTHAREA A 4 2 GEO-WA2-FN3-RIGHT-HEALTHAREA A 4 2 GEO-WA2-FN3-LEFT-INSTRUCT-REG A 2 2 GEO-WA2-FN3-RIGHT-INSTRUCT-REG A 2 2 GEO-WA2-FN3-LEFT-LOW-HOUSENUM A 7 2 GEO-WA2-FN3-LEFT-HI-HOUSENUM A 7 2 GEO-WA2-FN3-RIGHT-LOW-HOUSENUM A 7 2 GEO-WA2-FN3-RIGHT-HI-HOUSENUM A 7 2 GEO-WA2-FN3-CONT-PARITY-IND A 1 2 GEO-WA2-FN3-LIONFACECODE A 4 2 GEO-WA2-FN3-LIONSEQ A 5 2 GEO-WA2-FN3-GENRECFLAG A 1 2 GEO-WA2-FN3-SEGMENTLENGTH P 5 2 GEO-WA2-FN3-SEGMENTSLOPE A 3 2 GEO-WA2-FN3-SEGMENTORIENT A 1 2 FILLER-WA2-355 A 4 2 GEO-WA2-FN3-RESSDCP A 2 /* RESERVED FOR DCP/GSS USE 2 GEO-WA2-FN3-DOG-LEG A 1 2 GEO-WA2-FN3-FEATURE-TYPE A 1 2 GEO-WA2-FN3-LEFT-POLICEDIST A 4 R 2 GEO-WA2-FN3-LEFT-POLICEDIST 3 GEO-WA2-FN3-L-POL-PATR-BORO-CMD A 1 3 GEO-WA2-FN3-LEFT-POL-PRECINCT A 3 2 GEO-WA2-FN3-RIGHT-POLICEDIST A 4 R 2 GEO-WA2-FN3-RIGHT-POLICEDIST 3 GEO-WA2-FN3-R-POL-PATR-BORO-CMD A 1 3 GEO-WA2-FN3-RIGHT-POL-PRECINCT A 3 2 GEO-WA2-FN3-LEFT-SCHOOLDIST A 2 2 GEO-WA2-FN3-RIGHT-SCHOOLDIST A 2 2 GEO-WA2-FN3-MARBLE-RIKERS-FLAG A 1 2 GEO-WA2-FN3-SEGMENT-ID A 7 2 GEO-WA2-FN3-SEGMENT-TYPE A 1 * * END OF FUNCTION 3 LAYOUT **** ******** * - -------------------------------- - ---- ------------------------------ * * BEGINNING OF FUNCTION 3C LAYOUT **** ******** R 1 GEOLW2 2 GEO-WA2-FN3C-ACCESS-KEY A 21 2 GEO-WA2-FN3C-CURVE-FLAG A 1 2 GEO-WA2-FN3C-SEGMENT-TYPE A 1 2 GEO-WA2-FN3C-LOCATION-STATUS A 1 2 GEO-WA2-FN3C-COUNTY-BOUNDARY A 1 2 FILLER-WA2-380 A 4 2 GEO-WA2-FN3C-PREFERRED-LGC1 A 2 2 GEO-WA2-FN3C-PREFERRED-LGC2 A 2 2 GEO-WA2-FN3C-PREFERRED-LGC3 A 2 2 GEO-WA2-FN3C-NUM-X-ST-LOW-END N 1 2 GEO-WA2-FN3C-LOW-PBSC P 6 (1:5) 2 GEO-WA2-FN3C-NUM-X-ST-HI-END N 1 2 GEO-WA2-FN3C-HI-PBSC P 6 (1:5) 2 GEO-WA2-FN3C-COMDIST A 3 R 2 GEO-WA2-FN3C-COMDIST 3 GEO-WA2-FN3C-COMDIST-BORO A 1 3 GEO-WA2-FN3C-COMDIST-NUM A 2 2 GEO-WA2-FN3C-ZIP A 5 2 GEO-WA2-FN3C-SLA A 1 2 GEO-WA2-FN3C-2000-CENSUSTRACT A 6 2 FILLER-WA2-390 A 1 2 GEO-WA2-FN3C-2010-CENSUSTRACT A 6 2 GEO-WA2-FN3C-2010-CENSUSBLOCK A 4 2 GEO-WA2-FN3C-2010-CENSUSBLKSFX A 1 /* NOT IMPLEMENTED \\*/ 2 GEO-WA2-FN3C-HEALTHAREA A 4 2 GEO-WA2-FN3C-REVERSALFLAG A 1 2 GEO-WA2-FN3C-SOS A 1 2 GEO-WA2-FN3C-FIRESEC A 2 2 GEO-WA2-FN3C-FIREBAT A 2 2 GEO-WA2-FN3C-FIRECO A 4 R 2 GEO-WA2-FN3C-FIRECO 3 GEO-WA2-FN3C-FIRECO-TYPE A 1 3 GEO-WA2-FN3C-FIRECO-NUM A 3 2 GEO-WA2-FN3C-SEGMENT-ID A 7 2 GEO-WA2-FN3C-LOW-HOUSENUM A 7 2 GEO-WA2-FN3C-HI-HOUSENUM A 7 2 GEO-WA2-FN3C-LOW-HOUSENUM2 A 7 /* HOUSENUM2 ONLY PRESENT IF 2 GEO-WA2-FN3C-HI-HOUSENUM2 A 7 /* ODD & EVEN ARE ON SAME SIDE 2 GEO-WA2-FN3C-CONT-PARITY-IND A 1 2 GEO-WA2-FN3C-LIONFACECODE A 4 2 GEO-WA2-FN3C-LIONSEQ A 5 2 GEO-WA2-FN3C-GENRECFLAG A 1 2 GEO-WA2-FN3C-SEGMENTLENGTH P 5 2 GEO-WA2-FN3C-SEGMENTSLOPE A 3 2 GEO-WA2-FN3C-SEGMENTORIENT A 1 2 FILLER-WA2-408 A 2 2 GEO-WA2-FN3C-RESDCP A 1 /* RESERVED FOR DCP/GSS USE 2 GEO-WA2-FN3C-FEATURE-TYPE A 1 2 GEO-WA2-FN3C-POLICEDIST A 4 R 2 GEO-WA2-FN3C-POLICEDIST 3 GEO-WA2-FN3C-POL-PATR-BORO-CMD A 1 3 GEO-WA2-FN3C-POL-PRECINCT A 3 2 GEO-WA2-FN3C-SCHOOLDIST A 2 2 GEO-WA2-FN3C-MARBLE-RIKERS-FLAG A 1 2 GEO-WA2-FN3C-1990-CENSUSTRACT A 6 2 FILLER-WA2-410B A 4 2 GEO-WA2-FN3C-DYN-BLOCK A 3 2 GEO-WA2-FN3C-2000-CENSUSBLOCK A 4 2 GEO-WA2-FN3C-2000-CENSUSBLKSFX A 1 \\* * END OF FUNCTION 3C LAYOUT * **** ******* \\* - -------------------------------- - ---- ------------------------------ \\* * BEGINNING OF FUNCTION 1E LAYOUT * **** ******* R 1 GEOLW2 2 GEO-WA2-FN1E-ACCESS-KEY A 21 2 GEO-WA2-FN1E-CONT-PARITY A 1 2 GEO-WA2-FN1E-LOW-HOUSENUM-INT A 6 R 2 GEO-WA2-FN1E-LOW-HOUSENUM-INT 3 GEO-WA2-FN1E-LOW-HOUSENUM A 5 3 GEO-WA2-FN1E-LOW-HOUSENUMSFX A 1 /* NOT IMPLEMENTED 2 GEO-WA2-FN1E-HI-HOUSENUM-INT A 6 R 2 GEO-WA2-FN1E-HI-HOUSENUM-INT 3 GEO-WA2-FN1E-HI-HOUSENUM A 5 3 GEO-WA2-FN1E-HI-HOUSENUMSFX A 1 /* NOT IMPLEMENTED 2 FILLER-WA2-435 A 1 2 GEO-WA2-FN1E-NUM-X-ST-LOW-END N 1 2 GEO-WA2-FN1E-LOW-PBSC P 6 (1:5) 2 GEO-WA2-FN1E-NUM-X-ST-HI-END N 1 2 GEO-WA2-FN1E-HI-PBSC P 6 (1:5) 2 GEO-WA2-FN1E-COMDIST A 3 R 2 GEO-WA2-FN1E-COMDIST 3 GEO-WA2-FN1E-COMDIST-BORO A 1 3 GEO-WA2-FN1E-COMDIST-NUM A 2 2 GEO-WA2-FN1E-ZIP A 5 2 GEO-WA2-FN1E-SLA A 1 2 GEO-WA2-FN1E-HCD A 2 2 GEO-WA2-FN1E-SOS A 1 2 GEO-WA2-FN1E-CONT-PARITY-IND A 1 2 GEO-WA2-FN1E-2010-CENSUSTRACT A 6 2 GEO-WA2-FN1E-2010-CENSUSBLOCK A 4 2 GEO-WA2-FN1E-2010-CENSUSBLKSFX A 1 2 FILLER-WA2-FN1E-FILLER-INDV A 1 2 FILLER-WA2-440 A 2 2 GEO-WA2-FN1E-HEALTHAREA A 4 2 GEO-WA2-FN1E-SANI-REC A 3 2 GEO-WA2-FN1E-FEATURE-TYPE A 1 2 GEO-WA2-FN1E-RESDCP A 1 /* RESERVED FOR DCP/GSS USE 2 GEO-WA2-FN1E-CURVE-FLAG A 1 2 GEO-WA2-FN1E-POLICEDIST A 4 R 2 GEO-WA2-FN1E-POLICEDIST 3 GEO-WA2-FN1E-POL-PATR-BORO-CMD A 1 3 GEO-WA2-FN1E-POL-PRECINCT A 3 2 GEO-WA2-FN1E-SCHOOLDIST A 2 2 GEO-WA2-FN1E-ELECTDIST A 3 2 GEO-WA2-FN1E-ASSEMDIST A 2 2 GEO-WA2-FN1E-SPLIT-ED-FLAG A 1 2 GEO-WA2-FN1E-CONGDIST A 2 2 GEO-WA2-FN1E-SENATEDIST A 2 2 GEO-WA2-FN1E-COURTDIST A 2 2 GEO-WA2-FN1E-COUNCILDIST A 2 2 FILLER-WA2-470 A 2 2 GEO-WA2-FN1E-SANIDIST A 3 R 2 GEO-WA2-FN1E-SANIDIST 3 GEO-WA2-FN1E-SANIDIST-BORO A 1 3 GEO-WA2-FN1E-SANIDIST-NUM A 2 2 GEO-WA2-FN1E-SANITATION-SUBSEC A 2 2 GEO-WA2-FN1E-FIRESEC A 2 2 GEO-WA2-FN1E-FIREBAT A 2 2 GEO-WA2-FN1E-FIRECO A 4 R 2 GEO-WA2-FN1E-FIRECO 3 GEO-WA2-FN1E-FIRECO-TYPE A 1 3 GEO-WA2-FN1E-FIRECO-NUM A 3 2 GEO-WA2-FN1E-SPECIAL-ADDR-FLAG A 1 2 GEO-WA2-FN1E-MARBLE-RIKERS-FLAG A 1 2 GEO-WA2-FN1E-SPLIT-SCHOOL-FLAG A 1 2 GEO-WA2-FN1E-PREFERRED-LGC A 2 2 GEO-WA2-FN1E-LIONFACECODE A 4 2 GEO-WA2-FN1E-LIONSEQ A 5 2 GEO-WA2-FN1E-1990-CENSUSTRACT A 6 2 FILLER-WA2-480B A 4 2 GEO-WA2-FN1E-DYN-BLOCK A 3 2 GEO-WA2-FN1E-XCOORD A 7 2 GEO-WA2-FN1E-YCOORD A 7 2 GEO-WA2-FN1E-SEGMENTLENGTH A 5 2 GEO-WA2-FN1E-SANI-REG A 5 \\* * END OF FUNCTION 1E LAYOUT * **** ******* \\* - -------------------------------- - ---- ------------------------------ \\* * BEGINNING OF FUNCTION 5 LAYOUT * **** ******* R 1 GEOLW2 2 GEO-WA2-FN5-ADDR-MATCHING-KEY A 28 2 FILLER-WA2-490 A 172 \\* * END OF FUNCTION 5 LAYOUT * **** ******* \\* - -------------------------------- - ---- ------------------------------ GEOLW2L COPY File 1 GEOLW2L \\* * THE FIELD W2NATL IS USED AS A PARAMETER TO CALL GEOSUPPORT 2 W2NATL A 21 R 2 W2NATL \\* * BEGINNING OF FUNCTION 1 LONG WORKAREA LAYOUT ****** 3 GEO-WA2-1L-ACCESS-KEY A 21 2 GEO-WA2-1L-CONT-PARITY A 1 2 GEO-WA2-1L-LOW-HOUSENUM-INT A 6 R 2 GEO-WA2-1L-LOW-HOUSENUM-INT 3 GEO-WA2-1L-LOW-HOUSENUM A 5 3 GEO-WA2-1L-LOW-HOUSENUMSFX A 1 2 GEO-WA2-1L-HI-HOUSENUM-INT A 6 R 2 GEO-WA2-1L-HI-HOUSENUM-INT 3 GEO-WA2-1L-HI-HOUSENUM A 5 3 GEO-WA2-1L-HI-HOUSENUMSFX A 1 2 FILLER-WA2-215 A 1 2 GEO-WA2-1L-NUM-X-ST-LOW-END N 1 2 GEO-WA2-1L-LOW-PBSC P 6 (1:5) 2 GEO-WA2-1L-NUM-X-ST-HI-END N 1 2 GEO-WA2-1L-HI-PBSC P 6 (1:5) 2 GEO-WA2-1L-COMDIST A 3 R 2 GEO-WA2-1L-COMDIST 3 GEO-WA2-1L-COMDIST-BORO A 1 3 GEO-WA2-1L-COMDIST-NUM A 2 2 GEO-WA2-1L-ZIP A 5 2 GEO-WA2-1L-SLA A 1 2 GEO-WA2-1L-HCD A 2 2 GEO-WA2-1L-SOS A 1 2 GEO-WA2-1L-CONT-PARITY-IND A 1 2 GEO-WA2-1L-2010-CENSUSTRACT A 6 2 GEO-WA2-1L-2010-CENSUSBLOCK A 4 2 GEO-WA2-1L-2010-CENSUSBLKSFX A 1 2 FILLER-1L-INDV A 1 2 FILLER-1L-260 A 2 2 GEO-WA2-1L-HEALTHAREA A 4 2 GEO-WA2-1L-SANI-REC A 3 2 GEO-WA2-1L-FEATURE-TYPE A 1 2 GEO-WA2-1L-RESDCP A 1 /* RESERVED FOR DCP/GSS USE 2 GEO-WA2-1L-CURVE-FLAG A 1 2 GEO-WA2-1L-POLICEDIST A 4 R 2 GEO-WA2-1L-POLICEDIST 3 GEO-WA2-1L-POL-PATR-BORO-CMD A 1 3 GEO-WA2-1L-POL-PRECINCT A 3 2 GEO-WA2-1L-SCHOOLDIST A 2 2 FILLER-WA2-250 A 16 /* 1E POL DIST 2 GEO-WA2-1L-SANIDIST A 3 R 2 GEO-WA2-1L-SANIDIST 3 GEO-WA2-1L-SANIDIST-BORO A 1 3 GEO-WA2-1L-SANIDIST-NUM A 2 2 GEO-WA2-1L-SANITATION-SUBSEC A 2 2 GEO-WA2-1L-FIRESEC A 2 /* FIRE DIVISION 2 GEO-WA2-1L-FIREBAT A 2 2 GEO-WA2-1L-FIRECO A 4 R 2 GEO-WA2-1L-FIRECO 3 GEO-WA2-1L-FIRECO-TYPE A 1 3 GEO-WA2-1L-FIRECO-NUM A 3 2 GEO-WA2-1L-SPECIAL-ADDR-FLAG A 1 2 GEO-WA2-1L-MARBLE-RIKERS-FLAG A 1 2 GEO-WA2-1L-SPLIT-SCHOOL-FLAG A 1 2 GEO-WA2-1L-PREFERRED-LGC A 2 2 GEO-WA2-1L-LIONFACECODE A 4 2 GEO-WA2-1L-LIONSEQ A 5 2 GEO-WA2-1L-1990-CENSUSTRACT A 6 2 FILLER-WA2-260B A 4 2 GEO-WA2-1L-DYN-BLOCK A 3 2 GEO-WA2-1L-XCOORD A 7 2 GEO-WA2-1L-YCOORD A 7 2 GEO-WA2-1L-SEGMENTLENGTH A 5 2 GEO-WA2-1L-SANI-REG A 5 2 GEO-WA2-1L-SEGMENT-ID A 7 2 GEO-WA2-1L-TRUE-B7SC A 8 2 GEO-WA2-1L-UNDERLY-HOUSENUM-INT A 6 R 2 GEO-WA2-1L-UNDERLY-HOUSENUM-INT 3 GEO-WA2-1L-UNDERLY-HOUSENUM A 5 3 GEO-WA2-1L-UNDERLY-HOUSENUMSFX A 1 2 GEO-WA2-1L-2000-CENSUSTRACT A 6 2 GEO-WA2-1L-2000-CENSUSBLOCK A 4 2 GEO-WA2-1L-2000-CENSUSBLKSFX A 1 2 FILLER-WA2-260C A 68 \\* * END OF FUNCTION 1 LONG WORKAREA LAYOUT ****** \\* - -------------------------------- - ---- ---------------------------- \\* * BEGINNING OF FUNCTION 1E LONG WORKAREA LAYOUT ****** R 1 GEOLW2L 2 GEO-WA2-1EL-ACCESS-KEY A 21 2 GEO-WA2-1EL-CONT-PARITY A 1 2 GEO-WA2-1EL-LOW-HOUSENUM-INT A 6 R 2 GEO-WA2-1EL-LOW-HOUSENUM-INT 3 GEO-WA2-1EL-LOW-HOUSENUM A 5 3 GEO-WA2-1EL-LOW-HOUSENUMSFX A 1 /* NOT IMPLEMENTED 2 GEO-WA2-1EL-HI-HOUSENUM-INT A 6 R 2 GEO-WA2-1EL-HI-HOUSENUM-INT 3 GEO-WA2-1EL-HI-HOUSENUM A 5 3 GEO-WA2-1EL-HI-HOUSENUMSFX A 1 /* NOT IMPLEMENTED 2 FILLER-WA2-435 A 1 2 GEO-WA2-1EL-NUM-X-ST-LOW-END N 1 2 GEO-WA2-1EL-LOW-PBSC P 6 (1:5) 2 GEO-WA2-1EL-NUM-X-ST-HI-END N 1 2 GEO-WA2-1EL-HI-PBSC P 6 (1:5) 2 GEO-WA2-1EL-COMDIST A 3 R 2 GEO-WA2-1EL-COMDIST 3 GEO-WA2-1EL-COMDIST-BORO A 1 3 GEO-WA2-1EL-COMDIST-NUM A 2 2 GEO-WA2-1EL-ZIP A 5 2 GEO-WA2-1EL-SLA A 1 2 GEO-WA2-1EL-HCD A 2 2 GEO-WA2-1EL-SOS A 1 2 GEO-WA2-1EL-CONT-PARITY-IND A 1 2 GEO-WA2-1EL-2010-CENSUSTRACT A 6 2 GEO-WA2-1EL-2010-CENSUSBLOCK A 4 2 GEO-WA2-1EL-2010-CENSUSBLKSFX A 1 2 FILLER-WA2-1EL-INDV A 1 2 FILLER-WA2-440C A 2 2 GEO-WA2-1EL-HEALTHAREA A 4 2 GEO-WA2-1EL-SANI-REC A 3 2 GEO-WA2-1EL-FEATURE-TYPE A 1 2 GEO-WA2-1EL-RESDCP A 1 /* RESERVED FOR DCP/GSS USE 2 GEO-WA2-1EL-CURVE-FLAG A 1 2 GEO-WA2-1EL-POLICEDIST A 4 R 2 GEO-WA2-1EL-POLICEDIST 3 GEO-WA2-1EL-POL-PATR-BORO-CMD A 1 3 GEO-WA2-1EL-POL-PRECINCT A 3 2 GEO-WA2-1EL-SCHOOLDIST A 2 2 GEO-WA2-1EL-ELECTDIST A 3 2 GEO-WA2-1EL-ASSEMDIST A 2 2 GEO-WA2-1EL-SPLIT-ED-FLAG A 1 2 GEO-WA2-1EL-CONGDIST A 2 2 GEO-WA2-1EL-SENATEDIST A 2 2 GEO-WA2-1EL-COURTDIST A 2 2 GEO-WA2-1EL-COUNCILDIST A 2 2 FILLER-WA2-470 A 2 2 GEO-WA2-1EL-SANIDIST A 3 R 2 GEO-WA2-1EL-SANIDIST 3 GEO-WA2-1EL-SANIDIST-BORO A 1 3 GEO-WA2-1EL-SANIDIST-NUM A 2 2 GEO-WA2-1EL-SANITATION-SUBSEC A 2 2 GEO-WA2-1EL-FIRESEC A 2 2 GEO-WA2-1EL-FIREBAT A 2 2 GEO-WA2-1EL-FIRECO A 4 R 2 GEO-WA2-1EL-FIRECO 3 GEO-WA2-1EL-FIRECO-TYPE A 1 3 GEO-WA2-1EL-FIRECO-NUM A 3 2 GEO-WA2-1EL-SPECIAL-ADDR-FLAG A 1 2 GEO-WA2-1EL-MARBLE-RIKERS-FLAG A 1 2 GEO-WA2-1EL-SPLIT-SCHOOL-FLAG A 1 2 GEO-WA2-1EL-PREFERRED-LGC A 2 2 GEO-WA2-1EL-LIONFACECODE A 4 2 GEO-WA2-1EL-LIONSEQ A 5 2 GEO-WA2-1EL-1990-CENSUSTRACT A 6 2 FILLER-WA2L-480B A 4 2 GEO-WA2-1EL-DYN-BLOCK A 3 2 GEO-WA2-1EL-XCOORD A 7 2 GEO-WA2-1EL-YCOORD A 7 2 GEO-WA2-1EL-SEGMENTLENGTH A 5 2 GEO-WA2-1EL-SANI-REG A 5 2 GEO-WA2-1EL-SEGMENT-ID A 7 2 GEO-WA2-1EL-TRUE-B7SC A 8 2 GEO-WA2-1EL-UNDER-HOUSENUM-INT A 6 2 GEO-WA2-1EL-2000-CENSUSTRACT A 6 2 GEO-WA2-1EL-2000-CENSUSBLOCK A 4 2 GEO-WA2-1EL-2000-CENSUSBLKSFX A 1 2 FILLER-WA2-480 A 68 \\* * END OF FUNCTION 1E LONG WORKAREA LAYOUT ****** \\* - -------------------------------- - ---- ---------------------------- \\* * BEGINNING OF FUNCTION 3 LONG WORKAREA LAYOUT ****** R 1 GEOLW2L 2 GEO-WA2-3L-ACCESS-KEY A 21 2 GEO-WA2-3L-DUP-KEY-FLAG A 1 /* NOT IMPLEMENTED 2 GEO-WA2-3L-CURVE-FLAG A 1 2 GEO-WA2-3L-LOCATION-STATUS A 1 2 GEO-WA2-3L-COUNTY-BOUNDARY A 1 2 FILLER-WA2-340 A 4 2 GEO-WA2-3L-PREFERRED-LGC1 A 2 2 GEO-WA2-3L-PREFERRED-LGC2 A 2 2 GEO-WA2-3L-PREFERRED-LGC3 A 2 2 GEO-WA2-3L-NUM-X-ST-LOW-END N 1 2 GEO-WA2-3L-LOW-PBSC P 6 (1:5) 2 GEO-WA2-3L-NUM-X-ST-HI-END N 1 2 GEO-WA2-3L-HI-PBSC P 6 (1:5) 2 GEO-WA2-3L-SLA A 1 2 GEO-WA2-3L-REVERSALFLAG A 1 2 GEO-WA2-3L-LEFT-COMDIST A 3 R 2 GEO-WA2-3L-LEFT-COMDIST 3 GEO-WA2-3L-LEFT-COMDIST-BORO A 1 3 GEO-WA2-3L-LEFT-COMDIST-NUM A 2 2 GEO-WA2-3L-RIGHT-COMDIST A 3 R 2 GEO-WA2-3L-RIGHT-COMDIST 3 GEO-WA2-3L-RIGHT-COMDIST-BORO A 1 3 GEO-WA2-3L-RIGHT-COMDIST-NUM A 2 2 GEO-WA2-3L-LEFT-ZIP A 5 2 GEO-WA2-3L-RIGHT-ZIP A 5 2 FILLER-WA2-340B A 18 2 GEO-WA2-3L-LEFT-HEALTHAREA A 4 2 GEO-WA2-3L-RIGHT-HEALTHAREA A 4 2 GEO-WA2-3L-LEFT-INSTRUCT-REG A 2 2 GEO-WA2-3L-RIGHT-INSTRUCT-REG A 2 2 GEO-WA2-3L-LEFT-LOW-HOUSENUM A 7 2 GEO-WA2-3L-LEFT-HI-HOUSENUM A 7 2 GEO-WA2-3L-RIGHT-LOW-HOUSENUM A 7 2 GEO-WA2-3L-RIGHT-HI-HOUSENUM A 7 2 GEO-WA2-3L-CONT-PARITY-IND A 1 2 GEO-WA2-3L-LIONFACECODE A 4 2 GEO-WA2-3L-LIONSEQ A 5 2 GEO-WA2-3L-GENRECFLAG A 1 2 GEO-WA2-3L-SEGMENTLENGTH P 5 2 GEO-WA2-3L-SEGMENTSLOPE A 3 2 GEO-WA2-3L-SEGMENTORIENT A 1 2 FILLER-WA2-3L-355 A 4 2 GEO-WA2-3L-RESDCP A 2 /* RESERVED FOR DCP/GSS USE 2 GEO-WA2-3L-DOG-LEG A 1 2 GEO-WA2-3L-FEATURE-TYPE A 1 2 GEO-WA2-3L-LEFT-POLICEDIST A 4 R 2 GEO-WA2-3L-LEFT-POLICEDIST 3 GEO-WA2-3L-L-POL-PATR-BORO-CMD A 1 3 GEO-WA2-3L-LEFT-POL-PRECINCT A 3 2 GEO-WA2-3L-RIGHT-POLICEDIST A 4 R 2 GEO-WA2-3L-RIGHT-POLICEDIST 3 GEO-WA2-3L-R-POL-PATR-BORO-CMD A 1 3 GEO-WA2-3L-RIGHT-POL-PRECINCT A 3 2 GEO-WA2-3L-LEFT-SCHOOLDIST A 2 2 GEO-WA2-3L-RIGHT-SCHOOLDIST A 2 2 GEO-WA2-3L-MARBLE-RIKERS-FLAG A 1 2 GEO-WA2-3L-SEGMENT-ID A 7 2 FILLER-WA2-3L-370 A 1 \\* * ******************************** * **** **************************** \\* THE PORTION OF THIS WORK AREA ABOVE THIS POINT IS \\* IDENTICAL TO THE STANDARD WORK AREA 2 FOR FUNCTION 3. \\* THE PORTION BELOW THIS POINT IS PRESENT ONLY FOR THE \\* LONG WORK AREA 2 OPTION. \\* * ******************************** * **** **************************** 2 GEO-WA2-3L-L-1990-CENSUSTRACT A 6 2 FILLER-WA2-370B A 4 2 GEO-WA2-3L-LEFT-DYN-BLK A 3 2 GEO-WA2-3L-R-1990-CENSUSTRACT A 6 2 GEO-WA2-370C A 4 2 GEO-WA2-3L-RIGHT-DYN-BLK A 3 2 GEO-WA2-3L-LEFT-FIRESEC A 2 2 GEO-WA2-3L-LEFT-FIREBAT A 2 2 GEO-WA2-3L-LEFT-FIRECO A 4 R 2 GEO-WA2-3L-LEFT-FIRECO 3 GEO-WA2-3L-LEFT-FIRECO-TYPE A 1 3 GEO-WA2-3L-LEFT-FIRECO-NUM A 3 2 GEO-WA2-3L-RIGHT-FIRESEC A 2 2 GEO-WA2-3L-RIGHT-FIREBAT A 2 2 GEO-WA2-3L-RIGHT-FIRECO A 4 R 2 GEO-WA2-3L-RIGHT-FIRECO 3 GEO-WA2-3L-RIGHT-FIRECO-TYPE A 1 3 GEO-WA2-3L-RIGHT-FIRECO-NUM A 3 2 GEO-WA2-3L-L-2010-CENSUSTRACT A 6 2 GEO-WA2-3L-L-2010-CENSUSBLOCK A 4 2 GEO-WA2-3L-L-2010-CENSUSBLKSFX A 1 2 GEO-WA2-3L-R-2010-CENSUSTRACT A 6 2 GEO-WA2-3L-R-2010-CENSUSBLOCK A 4 2 GEO-WA2-3L-R-2010-CENSUSBLKSFX A 1 2 GEO-WA2-3L-FROM-NODE A 7 2 GEO-WA2-3L-TO-NODE A 7 2 GEO-WA2-3L-L-2000-CENSUSTRACT A 6 2 GEO-WA2-3L-L-2000-CENSUSBLOCK A 4 2 GEO-WA2-3L-L-2000-CENSUSBLKSFX A 1 2 GEO-WA2-3L-R-2000-CENSUSTRACT A 6 2 GEO-WA2-3L-R-2000-CENSUSBLOCK A 4 2 GEO-WA2-3L-R-2000-CENSUSBLKSFX A 1 \\* * END OF FUNCTION 3 LONG WORKAREA LAYOUT ****** \\* - -------------------------------- - ---- ---------------------------- GEOLW21A COPY File 1 GEOLW21A /\\*FCT 1A,BL USE SAME WA2 LAYOUT \\* * THE FIELD W2NAT1A IS USED AS A PARAMETER TO CALL GEOSUPPORT 2 W2NAT1A A 21 R 2 W2NAT1A 3 GEO-WA2-1A-ACCESS-KEY A 21 2 GEO-WA2-1A-CONT-PARITY A 1 2 GEO-WA2-1A-LOW-HOUSENUM A 6 2 GEO-WA2-1A-ALTKEY-1 A 10 R 2 GEO-WA2-1A-ALTKEY-1 3 GEO-WA2-1A-ALTKEY-1-BORO A 1 3 GEO-WA2-1A-ALTKEY-1-TAXBLOCK A 5 3 GEO-WA2-1A-ALTKEY-1-TAXLOT A 4 2 FILLER-WA2-1A-230 A 1 2 GEO-WA2-1A-SCC A 1 2 FILLER-WA2-1A-240 A 1 2 GEO-WA2-1A-GENERAL-LOT-INFO 3 GEO-WA2-1A-RPAD-BLDG-CLASS A 2 3 GEO-WA2-1A-CORNER-CODE A 2 3 GEO-WA2-1A-NUM-OF-STRUCTURES A 2 3 GEO-WA2-1A-NUM-OF-BLOCKFACES A 2 3 GEO-WA2-1A-INTERIOR-FLAG A 1 3 GEO-WA2-1A-VACANT-FLAG A 1 3 GEO-WA2-1A-IRREG-FLAG A 1 2 GEO-WA2-1A-ALT-BORO-FLAG A 1 2 FILLER-WA2-1A-245 A 1 2 GEO-WA2-1A-STROLL-KEY A 13 2 GEO-WA2-1A-OVERFLOW-FLAG A 1 2 FILLER-WA2-1A-251 A 1 /* USED FOR DCP 2 GEO-WA2-1A-BIN A 7 2 GEO-WA2-1A-CONDO-FLAG A 1 2 GEO-WA2-1A-RPAD-CONDO-NUM A 4 2 GEO-WA2-1A-CONDO-LOW-BBL A 10 2 FILLER-WA2-1A-260 A 1 2 GEO-WA2-1A-CONDO-BILL-BBL A 10 2 FILLER-WA2-1A-270 A 1 2 GEO-WA2-1A-CONDO-BILL-BBL-SCC A 1 2 GEO-WA2-1A-CONDO-HIGH-BBL A 10 2 FILLER-WA2-1A-275 A 1 2 GEO-WA2-1A-SANBORN-BVOLPAGE A 8 R 2 GEO-WA2-1A-SANBORN-BVOLPAGE 3 GEO-WA2-1A-SANBORN-BORO A 1 3 GEO-WA2-1A-SANBORN-VOLPAGE A 7 R 3 GEO-WA2-1A-SANBORN-VOLPAGE 4 GEO-WA2-1A-SANBORN-VOL-NUM A 3 4 GEO-WA2-1A-SANBORN-VOL-PAGE A 4 2 GEO-WA2-1A-COMMERC-DIST A 5 2 GEO-WA2-1A-COOP-NUM A 4 2 FILLER-WA2-1A-276 A 4 2 GEO-WA2-1A-ACTUAL-NUM-STRUCTS A 4 2 GEO-WA2-1A-DOF-MAP-BORO A 1 2 GEO-WA2-1A-DOF-MAP-SECVOL A 4 2 GEO-WA2-1A-DOF-MAP-PAGE A 4 2 GEO-WA2-1A-X-COORD A 7 2 GEO-WA2-1A-Y-COORD A 7 2 FILLER-WA2-1A-280 A 18 2 GEO-WA2-1A-NUM-OF-ADDR-FOR-LOT N 2 2 GEO-WA2-1A-LIST-OF-ADDRESSES (1:21) 3 GEO-WA2-1A-LIST-LOW-HOUSENUM A 6 3 FILLER-WA2-1A-290 A 3 3 GEO-WA2-1A-LIST-HI-HOUSENUM A 6 3 FILLER-WA2-1A-300 A 3 3 GEO-WA2-1A-LIST-STREETCODE A 8 3 GEO-WA2-1A-LIST-BIN A 7 3 GEO-WA2-1A-LIST-ADDR-TYPE A 1 3 FILLER-WA2-1A-310 A 1 3 GEO-WA2-1A-LIST-SOS A 1 GEOLW2AL COPY File 1 GEOLW2AL /\\*FCT 1A,BL USE SAME LONG WA2 \\* * THE FIELD W2NAT1AL IS USED AS A P ARA METER TO CALL GEOSUPPORT 2 W2NAT1AL A 21 R 2 W2NAT1AL 3 GEO-WA2-1AL-ACCESS-KEY A 21 2 GEO-WA2-1AL-CONT-PARITY A 1 2 GEO-WA2-1AL-LOW-HOUSENUM A 6 2 GEO-WA2-1AL-ALTKEY-1 A 10 R 2 GEO-WA2-1AL-ALTKEY-1 3 GEO-WA2-1AL-ALTKEY-1-BORO A 1 3 GEO-WA2-1AL-ALTKEY-1-TAXBLOCK A 5 3 GEO-WA2-1AL-ALTKEY-1-TAXLOT A 4 2 FILLER-WA2-1AL-230 A 1 2 GEO-WA2-1AL-SCC A 1 2 FILLER-WA2-1AL-240 A 1 2 GEO-WA2-1AL-GENERAL-LOT-INFO 3 GEO-WA2-1AL-RPAD-BLDG-CLASS A 2 3 GEO-WA2-1AL-CORNER-CODE A 2 3 GEO-WA2-1AL-NUM-OF-STRUCTURES A 2 3 GEO-WA2-1AL-NUM-OF-BLOCKFACES A 2 3 GEO-WA2-1AL-INTERIOR-FLAG A 1 3 GEO-WA2-1AL-VACANT-FLAG A 1 3 GEO-WA2-1AL-IRREG-LOT-FLAG A 1 2 GEO-WA2-1AL-ALT-BORO-FLAG A 1 2 FILLER-WA2-1AL-245 A 1 2 GEO-WA2-1AL-STROLL-KEY A 13 2 FILLER-WA2-1AL-250 A 1 2 FILLER-WA2-1AL-251 A 1 /* USED FOR DCP 2 GEO-WA2-1AL-BIN A 7 2 GEO-WA2-1AL-CONDO-FLAG A 1 2 GEO-WA2-1AL-RPAD-CONDO-NUM A 4 2 GEO-WA2-1AL-CONDO-LOW-BBL A 10 2 FILLER-WA2-1AL-260 A 1 2 GEO-WA2-1AL-CONDO-BILL-BBL A 10 2 FILLER-WA2-1AL-270 A 1 2 GEO-WA2-1AL-CONDO-BILL-BBL-SCC A 1 2 GEO-WA2-1AL-CONDO-HIGH-BBL A 10 2 FILLER-WA2-1AL-275 A 1 2 GEO-WA2-1AL-SANBORN-BVOLPAGE A 8 R 2 GEO-WA2-1AL-SANBORN-BVOLPAGE 3 GEO-WA2-1AL-SANBORN-BORO A 1 3 GEO-WA2-1AL-SANBORN-VOLPAGE A 7 R 3 GEO-WA2-1AL-SANBORN-VOLPAGE 4 GEO-WA2-1AL-SANBORN-VOL-NUM A 3 4 GEO-WA2-1AL-SANBORN-VOL-PAGE A 4 2 GEO-WA2-1AL-COMMERC-DIST A 5 2 GEO-WA2-1AL-COOP-NUM A 4 2 FILLER-WA2-1AL-276 A 4 2 GEO-WA2-1AL-ACTUAL-NUM-STRUCTS A 4 2 GEO-WA2-1AL-DOF-MAP-BORO A 1 2 GEO-WA2-1AL-DOF-MAP-SECVOL A 4 2 GEO-WA2-1AL-DOF-MAP-PAGE A 4 2 GEO-WA2-1AL-X-COORD A 7 2 GEO-WA2-1AL-Y-COORD A 7 2 FILLER-WA2-1AL-280 A 16 2 GEO-WA2-1AL-NUM-OF-BINS-FOR-LOT N 4 2 GEO-WA2-1AL-LIST-OF-BINS (1:2500) 3 GEO-WA2-1AL-BINS N 7 GEOLW23S COPY File 1 GEOLW23S \\* * THE FIELD W2NAT3S IS USED AS A PARAMETER TO CALL GEOSUPPORT 2 W2NAT3S A 21 R 2 W2NAT3S 3 GEO-WA2-3S-ACCESS-KEY A 21 2 GEO-WA2-3S-NUM-OF-INTERSECTS N 3 2 GEO-WA2-3S-LIST-OF-INTERSECTS (1:350) 3 GEO-WA2-3S-SMALLEST-PBSC P 6 3 GEO-WA2-3S-2ND-SMALLEST-PBSC P 6 3 GEO-WA2-3S-DISTANCE P 5 3 GEO-WA2-3S-GAP-FLAG A 1","title":"NATURAL LDAs (MSW)"},{"location":"appendices/appendix06/","text":"APPENDIX 6: USER FEEDBACK PROCEDURES This appendix describes the procedures for users to provide feedback to GSS of geographic data that have either been rejected by the Geosupport System or produced unexpected results. Only items that the user has reviewed and believes to be valid geographic data should be provided as feedback to GSS. These feedback procedures should also be used for reporting software issues. Feedback from users is a crucial resource in GSS\u2019s efforts to maintain accurate and up-to-date Geosupport data files. The staff of GSS\u2019s Geographic Research Unit researches the feedback received from users and corrects errors and omissions in Geosupport files as appropriate. Those corrections become accessible to users when the next release of Geosupport is installed on the computer where the user\u2019s application is running. The user should review all items and screen out those caused by obvious user data coding or data entry errors, such as an obvious street name misspelling, the specification of the intersection of two streets that are obviously parallel, etc. The user should provide feedback on those items that the user considers to be valid data, or is uncertain about, to GSS\u2019s Geographic Research Unit by submitting one or more completed Geosupport System User Feedback Forms. There are spaces to report up to three items on a single form. A sample form is included in this appendix and the user can replicate it as needed. Printouts, sketch maps and/or any other material documenting the validity and location of the items should be attached to the form if possible. The user should provide any available information that would assist the GSS staff to research the issue. For example, if an address is rejected, the user should provide, if it is known, alternate addresses for the building, the names of the adjacent cross streets, the BBL (tax lot identifiers) etc. In the case of large computer-generated reject reports, the user may submit the User Feedback Form as a transmittal form attached to the printout. In that case, it is not necessary for the user to transcribe all the reject information onto the form. If possible, the printout should display only the user input geographic data that Geosupport has rejected, not application-related data that is not passed to Geosupport. In addition, the printout should display the Geosupport Return Code, the Reason Code, and if there is space in the report, the Geosupport Message. When designing the reject report, it is advisable for the user to contact GSS Manager of Geographic Research to ascertain how the report should be sorted. Appropriate sorting of user reject reports greatly facilitates GSS\u2019s research. Feedback materials and inquiries about feedback procedures should be submitted to: Email: GSS_Feedback@planning.nyc.gov Email is the preferred mode of communication. If email is not feasible, feedback may be submitted to: Manager of Geographic Research, Department of City Planning 120 Broadway, 31 st Floor New York, New York 10271 Phone: (212)720-3441 FAX: (212)720-3488 Software issues may be directed to: Email: Geosupport_DL@planning.nyc.gov","title":"Appendix 6: User Feedback Procedures"},{"location":"appendices/appendix07/","text":"APPENDIX 7: MAINFRAME DATA CENTERS WHERE GEOSUPPORT IS INSTALLED Current as of December, 2016 NAME OF AGENCY LOCATION LPARs at DOITT DoITT/CSC - Department of Information Technology and Telecommunications / Computer Service Center 2 Metro Tech Center, Brooklyn See below DEP - Department of Environment Protection DoITT MVSW DOE - Department of Education DoITT EDU* DOF - Department of Finance DoITT DOF* FISA \u2013 Financial Information Services Agency 450 West 33 Street, Manhattan n/a HHC - Health and Hospitals Corporation 230 West 41 Street, Manhattan n/a HRA \u2013 Human Resources Administration DoITT HRAP NYCHA - New York City Housing Authority 250 Broadway, Manhattan n/a NYPD \u2013 New York Police Department 1 Police Plaza, Manhattan n/a All other city agencies DoITT MVSP","title":"Appendix 7: Mainframe Data Centers Where Geosupport Is Installed"},{"location":"appendices/appendix08/","text":"APPENDIX 8: SAMPLE APPLICATION PROGRAMS AND JCL This appendix exhibits sample batch user application programs written in COBOL, Assembler, PL/1, C and NATURAL. These programs exemplify how a user-written application program may be coded to interact with Geosupport via its Application Programming Interface (API). For each sample program, this appendix contains a printout of the job-stream input for an MSW application, the job-stream input for a COW application, and a printout of the program execution output report. The job-stream input contains the JCL to compile, link-edit and execute the program and, embedded in the JCL, the program source code (except for NATURAL) and a few in-stream records of sample input data. The NATURAL program source code is not embedded in the job-stream, and is printed separately. The MSW and COW sample programs both generate the same output report. Please note that the sample application programs are not guaranteed to run exactly as shown in this appendix. The samples are here as an aid in developing Geosupport application programs. All of the sample programs use the Geosupport COPY facility. Since this appendix displays un-compiled source code rather than compilation output listings, the source code is shown without the COPY file expansions. Therefore, the source code as shown contains references to fields in Geosupport work areas but does not contain the definitions of those fields. To see those definitions, refer to the listings of the COPY file contents in Appendix 5 (for MSW) and Appendix 14 (for COW). There are two sample programs in each programming language, referred to as Sample Programs #1 and #2. The processing performed in Sample Program #1 is similar for all of the programming languages, as is the processing performed in Sample Program #2. Note: there is an MSW and COW version of each of the sample programs. In brief, Sample Program #1 reads a record containing an address from the in-stream input file; calls Functions 1 and D, checking the Geosupport Return Code (GRC) generated by each call; and writes a record into a formatted output report. The report displays the input address data and, as appropriate, selected output data obtained from Geosupport and/or the GRC, Reason Code and Message. Sample Program #2 performs similar processing, but its input file contains street intersections instead of addresses, and accordingly it calls Function 2 instead of Function 1. Both sample programs use the Compact Names feature to direct Geosupport to return street names in a format suitable for display in the output report. In addition, Sample Program #1, but not Sample Program #2, uses the Street Name Normalization Length Limit (SNL) feature to limit the lengths of normalized street names so they will fit into that program\u2019s output report. In both sample programs, Function D is called to generate the cross street names. Note, that Geosupport will generate all the cross street names automatically if the user specifies the Cross Street Names Flag in the initial Function 1 or Function 2 call or if the user calls Functions 1/1E Extended or Function 1B. (See Cross Street Names Flag in Appendix 3 .) The Function D call, however, is used in the sample programs to demonstrate use of Function D and a one work-area-call. In detail, the processing performed by Sample Program #1 is as follows: Read a record from the in-stream input file. Prime Work Area 1 with the function code, the Work Area Format Indicator (required for COW), the address information (Borough Code, House Number and Street Name) from the input record, the appropriate SNL value, and the code required to request street names in the compact format. Call Function 1. Examine the Geosupport Return Code (GRC). If the GRC indicates a successful call or a warning, use the street codes of the cross streets retrieved in WA2 as input to a Function D call to obtain their street names for display in the output report 14 . The Function D processing is performed as follows: Prime Work Area 1 with the function code value, the Work Area Format Indicator (required for COW), and the street codes of the cross streets obtained from the Function 1 call. Call Function D Note: If the Cross Street Names Flag is used in the original call to Function 1 (or if Extended Mode of Function1 is used or if Function 1B is used), all the cross street names will be returned. Examine the GRC. If the GRC is zeros, include the street names obtained from Function D in the output report. Otherwise, include the GRC, the Reason Code and the warning/reject message in the output report. Write an output report line containing the input information and, selected output information obtained from Work Area 2 (e.g., the ZIP code, Community District, and cross streets) and/or the Geosupport Return Code, Reason Code and Message ___________________________ 14 Note: The sample programs have been written in a skeletal fashion to illustrate the use of the Geosupport API as clearly as possible. Thus, for example, Sample Program #1 assumes, when it gets a \u2019hit\u2019 for an input address, that WA2 contains at least one cross street at each end of the block face containing the address. In reality, this is not necessarily the case; in a real application, the program would check for the presence of cross street codes before calling Function D. COBOL SAMPLE PROGRAM #1 - Input Job Stream - MSW - Input Job Stream - COW - Output Report COBOL SAMPLE PROGRAM #1-JOB Stream-MSW //COBF1SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //*** COBOL SAMPLE BATCH GEOSUPPORT USER APPLICATION PROGRAM \\#1 **** //*** MSW FORMAT **** //******************************************************************** //STEP1 EXEC IGYWCLG,PARM.COBOL=(NOWORD,OPTIMIZE) //COBOL.SYSLIB DD DSN=A030.GEO.COPYLIB2,DISP=SHR // DD DSN=A030.GEO.COPYLIB,DISP=SHR //COBOL.SYSIN DD * ***************************************************************** \\* THIS PROGRAM MAKES FUNCTION 1 AND D CALLS TO GEOSUPPORT USING * \\* BORO, HOUSE NUMBER & STREET NAME SUPPLIED BY AN INSTREAM FILE.* \\* FUNCTION 1 RETURNS GEOGRAPHIC INFORMATION FOR AN ADDRESS. * \\* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. * \\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE * \\* ORIGINAL CALL TO FUNCTION 1, ALL THE CROSS STREET * \\* NAMES WOULD HAVE BEEN RETURNED BY FUNCTION 1. * ***************************************************************** * IDENTIFICATION DIVISION. PROGRAM-ID. COBS1JOB. **************************************** ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT IN-FILE ASSIGN TO INFILE. SELECT RPT-FILE ASSIGN TO RPTFILE. **************************************** DATA DIVISION. FILE SECTION. **** REPLACE CODE BELOW WITH YOUR OWN INPUT FILE DEFINTION ***** FD IN-FILE RECORDING MODE IS F RECORD CONTAINS 80 CHARACTERS LABEL RECORDS ARE OMITTED. 01 INPUT-TO-GEOSUPPORT. 05 IN-BORO-CODE PIC X. 05 FILLER PIC X. 05 IN-HOUSE-NUMBER PIC X(12). 05 FILLER PIC X. 05 IN-STREET PIC X(32). 05 FILLER PIC X(33). FD RPT-FILE RECORDING MODE IS F RECORD CONTAINS 132 CHARACTERS LABEL RECORDS ARE OMITTED. 01 RPT-LINE PIC X(132). WORKING-STORAGE SECTION. ************************************************************** *** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE *** *** COPY STATEMENTS) IS STRONGLY ENCOURAGED. *** ***************************************************************** 01 WORK1. COPY W1COB. 01 WORK2. COPY W2COB. **** REPLACE CODE BELOW WITH YOUR OWN REPORT LAYOUT ********* 01 RPT-DATA-LINE1. 05 OUT-BOR PIC X. 05 FILLER PIC X VALUE ' '. 05 OUT-HN PIC X(12). 05 FILLER PIC X VALUE ' '. 05 OUT-ST PIC X(32). 05 FILLER PIC X VALUE ' '. 05 OUT-ZIP PIC X(5). 05 FILLER PIC X VALUE ' '. 05 OUT-CD PIC X(2). 05 FILLER PIC X VALUE ' '. 05 OUT-NYPD-PCT PIC X(3). 05 FILLER PIC X(6) VALUE ' '. 05 OUT-SCHLDIST PIC X(2). 05 FILLER PIC X(58) VALUE ' '. 01 RPT-DATA-LINE2. 05 FILLER PIC X(74) VALUE ' '. 05 OUT-LO-X-STREET PIC X(25). 05 FILLER PIC X VALUE ' '. 05 OUT-HI-X-STREET PIC X(25). 01 RPT-ERR-LINE-1. 05 ERR-BOR PIC X. 05 FILLER PIC X VALUE ' '. 05 ERR-HN PIC X(12). 05 FILLER PIC X VALUE ' '. 05 ERR-ST PIC X(32). 05 FILLER PIC X(14) VALUE ' *** FUNCTION '. 05 ERR-FUNCTION PIC X. 05 FILLER PIC X(7) VALUE ' GRC = '. 05 ERR-GRC PIC X(2). 05 FILLER PIC X(15) VALUE ' REASON CODE = '. 05 ERR-REASON PIC X. 05 FILLER PIC X(45) VALUE ' '. 01 RPT-ERR-LINE-2. 05 FILLER PIC X(48) VALUE ' '. 05 FILLER PIC X(4) VALUE '*** '. 05 OUT-ERR-MSG PIC X(80). 01 RPT-WRN-LINE. 05 WRN-BOR PIC X. 05 FILLER PIC X VALUE ' '. 05 WRN-HN PIC X(12). 05 FILLER PIC X VALUE ' '. 05 WRN-ST PIC X(32). 05 FILLER PIC X(14) VALUE ' *** FUNCTION '. 05 WRN-FUNCTION PIC X. 05 FILLER PIC X(16) VALUE ' WARNING, GRC = '. 05 WRN-GRC PIC X(2). 05 FILLER PIC X(15) VALUE ' REASON CODE = '. 05 WRN-REASON PIC X(1). 05 FILLER PIC X(36) VALUE ' '. 01 RPT-HEADER-1. 05 FILLER PIC X(40) VALUE 'SAMPLE COBOL PROGRAM \\#1 EXECUTION OUTPUT'. 05 FILLER PIC X(72) VALUE ' '. 01 RPT-HEADER-2. 05 FILLER PIC X(58) VALUE '*****---------- INPUT ADDRESS ------------***** *****-----'. 05 FILLER PIC X(58) VALUE '---------------- SELECTED OUTPUT ITEMS -------------------'. 05 FILLER PIC X(16) VALUE '----***** '. 01 RPT-HEADER-3. 05 FILLER PIC X(58) VALUE 'B HOUSE NUMBER IN-STREET-NAME ZIP CD N'. 05 FILLER PIC X(58) VALUE 'YPD-PCT SCHLDST LOW CROSS STREET HIGH CROSS STREE'. 05 FILLER PIC X(16) VALUE 'T '. 01 RPT-HEADER-4. 05 FILLER PIC X(58) VALUE '_ ____________ ________________________________ _____ __ \\_'. 05 FILLER PIC X(58) VALUE '_______ _______ _________________________ ________________'. 05 FILLER PIC X(16) VALUE '_________ '. 01 FLAGS. 05 DATA-FLAG PIC XXX VALUE 'YES'. 88 MORE-DATA VALUE 'YES'. 88 NO-DATA VALUE 'NO '. **************************************** PROCEDURE DIVISION. OPEN INPUT IN-FILE, OUTPUT RPT-FILE. WRITE RPT-LINE FROM RPT-HEADER-1 AFTER ADVANCING 1 LINES. WRITE RPT-LINE FROM RPT-HEADER-2 AFTER ADVANCING 2 LINES. WRITE RPT-LINE FROM RPT-HEADER-3 AFTER ADVANCING 2 LINES. WRITE RPT-LINE FROM RPT-HEADER-4 AFTER ADVANCING 0 LINES. READ IN-FILE AT END MOVE 'NO ' TO DATA-FLAG. PERFORM PROCESS THRU PROCESS-EX UNTIL NO-DATA. CLOSE IN-FILE, RPT-FILE. MOVE 0 TO RETURN-CODE STOP RUN. Process. ***************************************************************** \\* TO MAKE A FUNCTION 1 CALL: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET WA1'S FUNCTION CODE FIELD TO 1 * \\* (3) MOVE THE INPUT BORO TO WA1'S INPUT BORO CODE FIELD * \\* (4) MOVE THE INPUT HOUSE NUMBER TO WA1'S INPUT HOUSE NUMBER * \\* FIELD * \\* (5) MOVE THE INPUT STREET TO WA1'S INPUT STREET NAME FIELD * \\* (6) CALL GBI WITH 2 WORKAREAS * \\* (7) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ***************************************************************** ***************************************************************** \\* AS OF GEOSUPPORT 10.1, * \\* TO RECEIVE ROADBED-SPECIFIC INFORMATION, * \\* SET THE ROADBED REQUEST SWITCH TO 'R', AS FOLLOWS: * \\* MOVE 'R' TO GEO-WA1-IN-ROADBED-REQ-SWITCH. * ***************************************************************** MOVE SPACES TO WORK1. MOVE '1 ' TO GEO-WA1-IN-FUNCTION-CODE. MOVE IN-BORO-CODE TO GEO-WA1-IN-BORO OUT-BOR ERR-BOR WRN-BOR. MOVE IN-HOUSE-NUMBER TO GEO-WA1-IN-HOUSENUM OUT-HN ERR-HN WRN-HN. MOVE IN-STREET TO GEO-WA1-IN-STREET-1 OUT-ST ERR-ST WRN-ST. CALL 'GBI' USING WORK1 WORK2. IF GEO-WA1-OUT-RETURN-CODE NOT = 00 MOVE '1' TO ERR-FUNCTION WRN-FUNCTION PERFORM PRINT-ERROR-LINE THRU P-E-EX. IF (GEO-WA1-OUT-RETURN-CODE = 00) OR (GEO-WA1-OUT-RETURN-CODE = 01) PERFORM SUCCESSFUL-FUNC1 THRU S-F1-EX. READ IN-FILE AT END MOVE 'NO ' TO DATA-FLAG. PROCESS-EX. EXIT. SUCCESSFUL-FUNC1. *********************************************************** ***** REPLACE CODE BELOW WITH YOUR OWN CODE FOR *********** ***** PROCESSING SUCCESSFUL GEOSUPPORT CALLS ***** *********************************************************** MOVE GEO-WA2-FN1-ZIP TO OUT-ZIP. MOVE GEO-WA2-FN1-COMDIST-NUMBER TO OUT-CD. MOVE GEO-WA2-FN1-POL-PRECINCT TO OUT-NYPD-PCT. MOVE GEO-WA2-FN1-SCHOOLDIST TO OUT-SCHLDIST. IF GEO-WA1-OUT-RETURN-CODE = 00 WRITE RPT-LINE FROM RPT-DATA-LINE1 AFTER ADVANCING 2 LINES ELSE MOVE SPACES TO OUT-BOR OUT-HN OUT-ST WRITE RPT-LINE FROM RPT-DATA-LINE1 AFTER ADVANCING 1 LINES. ************************************************************ \\* THIS PROGRAM ASSUMES THERE EXISTS AT LEAST ONE HIGH AND * \\* ONE LOW CROSS STREET. TO GET THE STREET NAMES OF THE * \\* FIRST-LISTED HIGH AND FIRST-LISTED LOW CROSS STREETS * \\* FROM THE HIGH AND LOW STREET CODE LISTS CALL FUNCTION D: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET WA1'S FUNCTION CODE FIELD TO D * \\* (3) SET WA1'S STREET NAME LENGTH FIELD TO DESIRED * \\* VALUE (IN THIS CASE 25 BECAUSE THE REPORT LINE * \\* HAS SPACE FOR ONLY 25 CHARACTERS) * \\* (4) USE THE COMPACT STREET NAMES OPTION TO OBTAIN * \\* STREET NAMES FORMATTED FOR DISPLAY * \\* (5) MOVE WA2'S LOW PBSC FIELD TO WA1'S INPUT STREET * \\* CODE 1 FIELD * \\* (6) MOVE WA2'S HIGH PBSC FIELD TO WA1'S INPUT STREET * \\* CODE 2 FIELD * \\* (7) CALL GBI WITH 1 WORKAREA * \\* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ************************************************************ MOVE SPACES TO WORK1. MOVE 'D ' TO GEO-WA1-IN-FUNCTION-CODE. MOVE 'C' TO GEO-WA1-IN-COMPACT-NAME-FLAG. MOVE '25' TO GEO-WA1-IN-SNL. MOVE GEO-WA2-FN1-LOW-PBSC (1) TO GEO-WA1-IN-STREETCODE-1. MOVE GEO-WA2-FN1-HI-PBSC (1) TO GEO-WA1-IN-STREETCODE-2. CALL 'GBI' USING WORK1. IF GEO-WA1-OUT-RETURN-CODE NOT = 00 MOVE 'D' TO ERR-FUNCTION WRN-FUNCTION PERFORM PRINT-ERROR-LINE THRU P-E-EX. IF (GEO-WA1-OUT-RETURN-CODE = 00) OR (GEO-WA1-OUT-RETURN-CODE = 01) PERFORM SUCCESSFUL-FUNCD THRU S-FD-EX. S-F1-EX. EXIT. SUCCESSFUL-FUNCD. MOVE GEO-WA1-OUT-STREET-1 TO OUT-LO-X-STREET MOVE GEO-WA1-OUT-STREET-2 TO OUT-HI-X-STREET WRITE RPT-LINE FROM RPT-DATA-LINE2 AFTER ADVANCING 0 LINES. S-FD-EX. EXIT. PRINT-ERROR-LINE. MOVE GEO-WA1-OUT-RETURN-CODE TO ERR-GRC WRN-GRC. MOVE GEO-WA1-OUT-REASON-CODE TO ERR-REASON WRN-REASON. MOVE GEO-WA1-OUT-ERROR-MESSAGE TO OUT-ERR-MSG. IF GEO-WA1-OUT-RETURN-CODE = 01 **** INSERT YOUR OWN WARNING ROUTINE HERE **** WRITE RPT-LINE FROM RPT-WRN-LINE AFTER ADVANCING 2 LINES ELSE **** INSERT YOUR OWN WARNING ROUTINE HERE **** WRITE RPT-LINE FROM RPT-ERR-LINE-1 AFTER ADVANCING 2 LINES. WRITE RPT-LINE FROM RPT-ERR-LINE-2 AFTER ADVANCING 1 LINES. P-E-EX. EXIT. /* //LKED.SYSIN DD * INCLUDE INCLIB(GBI) //LKED.INCLIB DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //******************************************************************// //* \\*// //* AS OF GEOSUPPPORT VERSION 10.0, \\*// //* THE STEPLIB (OR JOBLIB) OF THE GEOSUPPORT EXECUTION STEP \\*// //* MUST INCLUDE THE FOLLOWING TWO CONCATENATED DATASETS: \\*// //* A030.GEO.SUPPORT.PDSE.LOADLIB \\*// //* A030.GEO.SUPPORT.LOADLIB \\*// //* \\*// //******************************************************************// //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR // DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* //******************************************************************// //* \\*// //* AS OF GEOSUPPPORT VERSION 10.0, \\*// //* DD STATEMENTS FOR GEOSUPPORT DATA FILES (E.G. GRID, PAD, ETC) \\*// //* ARE NO LONGER NEEDED AND ARE IGNORED. GEOSUPPORT IS TAILORED \\*// //* TO USE STANDARD GEOSUPPORT DATA SET NAMES. \\*// //* TO USE NON-STANDARD FILES, SEE YOUR SYSTEMS PROGRAMMER. \\*// //* \\*// //******************************************************************// //* //GO.SYSUDUMP DD SYSOUT=A,OUTLIM=3000 //GO.SYSOUT DD SYSOUT=A //GO.RPTFILE DD SYSOUT=A //GO.INFILE DD * 1 22 READE ST 1 500 DUANE ST 1 82-84 BROADWAY 4 165-100 BAISLEY BLVD 4 165-1000 BAISLEY BLVD /* // COBOL SAMPLE PROGRAM #1 \u2013 Job Stream - COW //COBC1SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //*** COBOL SAMPLE BATCH GEOSUPPORT USER APPLICATION PROGRAM #1 **** //*** COW FORMAT **** //******************************************************************** //STEP1 EXEC IGYWCLG,PARM.COBOL=(NOWORD,OPTIMIZE) //COBOL.SYSLIB DD DSN=A030.GEO.COPYLIB2,DISP=SHR // DD DSN=A030.GEO.COPYLIB,DISP=SHR //COBOL.SYSIN DD * ***************************************************************** \\* THIS PROGRAM MAKES FUNCTION 1 AND D CALLS TO GEOSUPPORT USING * \\* BORO, HOUSE NUMBER & STREET NAME SUPPLIED BY AN INSTREAM FILE.* \\* FUNCTION 1 RETURNS GEOGRAPHIC INFORMATION FOR AN ADDRESS. * \\* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. * \\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE * \\* ORIGINAL CALL TO FUNCTION 1, ALL THE CROSS STREET * \\* NAMES WOULD HAVE BEEN RETURNED BY FUNCTION 1. * ***************************************************************** * IDENTIFICATION DIVISION. PROGRAM-ID. COBS1JOB. **************************************** ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT IN-FILE ASSIGN TO INFILE. SELECT RPT-FILE ASSIGN TO RPTFILE. **************************************** DATA DIVISION. FILE SECTION. **** REPLACE CODE BELOW WITH YOUR OWN INPUT FILE DEFINTION ***** FD IN-FILE RECORDING MODE IS F RECORD CONTAINS 80 CHARACTERS LABEL RECORDS ARE OMITTED. 01 INPUT-TO-GEOSUPPORT. 05 IN-BORO-CODE PIC X. 05 FILLER PIC X. 05 IN-HOUSE-NUMBER PIC X(12). 05 FILLER PIC X. 05 IN-STREET PIC X(32). 05 FILLER PIC X(33). FD RPT-FILE RECORDING MODE IS F RECORD CONTAINS 132 CHARACTERS LABEL RECORDS ARE OMITTED. 01 RPT-LINE PIC X(132). WORKING-STORAGE SECTION. ***************************************************************** *** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE *** *** COPY STATEMENTS) IS STRONGLY ENCOURAGED. *** ***************************************************************** 01 WORK1. COPY P1COB. 01 WORK2. COPY P2COB. **** REPLACE CODE BELOW WITH YOUR OWN REPORT LAYOUT ********* 01 RPT-DATA-LINE1. 05 OUT-BOR PIC X. 05 FILLER PIC X VALUE ' '. 05 OUT-HN PIC X(12). 05 FILLER PIC X VALUE ' '. 05 OUT-ST PIC X(32). 05 FILLER PIC X VALUE ' '. 05 OUT-ZIP PIC X(5). 05 FILLER PIC X VALUE ' '. 05 OUT-CD PIC X(2). 05 FILLER PIC X VALUE ' '. 05 OUT-NYPD-PCT PIC X(3). 05 FILLER PIC X(6) VALUE ' '. 05 OUT-SCHLDIST PIC X(2). 05 FILLER PIC X(58) VALUE ' '. 01 RPT-DATA-LINE2. 05 FILLER PIC X(74) VALUE ' '. 05 OUT-LO-X-STREET PIC X(25). 05 FILLER PIC X VALUE ' '. 05 OUT-HI-X-STREET PIC X(25). 01 RPT-ERR-LINE-1. 05 ERR-BOR PIC X. 05 FILLER PIC X VALUE ' '. 05 ERR-HN PIC X(12). 05 FILLER PIC X VALUE ' '. 05 ERR-ST PIC X(32). 05 FILLER PIC X(14) VALUE ' *** FUNCTION '. 05 ERR-FUNCTION PIC X. 05 FILLER PIC X(7) VALUE ' GRC = '. 05 ERR-GRC PIC X(2). 05 FILLER PIC X(15) VALUE ' REASON CODE = '. 05 ERR-REASON PIC X. 05 FILLER PIC X(45) VALUE ' '. 01 RPT-ERR-LINE-2. 05 FILLER PIC X(48) VALUE ' '. 05 FILLER PIC X(4) VALUE '*** '. 05 OUT-ERR-MSG PIC X(80). 01 RPT-WRN-LINE. 05 WRN-BOR PIC X. 05 FILLER PIC X VALUE ' '. 05 WRN-HN PIC X(12). 05 FILLER PIC X VALUE ' '. 05 WRN-ST PIC X(32). 05 FILLER PIC X(14) VALUE ' *** FUNCTION '. 05 WRN-FUNCTION PIC X. 05 FILLER PIC X(16) VALUE ' WARNING, GRC = '. 05 WRN-GRC PIC X(2). 05 FILLER PIC X(15) VALUE ' REASON CODE = '. 05 WRN-REASON PIC X(1). 05 FILLER PIC X(36) VALUE ' '. 01 RPT-HEADER-1. 05 FILLER PIC X(40) VALUE 'SAMPLE COBOL PROGRAM \\#1 EXECUTION OUTPUT'. 05 FILLER PIC X(72) VALUE ' '. 01 RPT-HEADER-2. 05 FILLER PIC X(58) VALUE '*****---------- INPUT ADDRESS ------------***** *****-----'. 05 FILLER PIC X(58) VALUE '---------------- SELECTED OUTPUT ITEMS -------------------'. 05 FILLER PIC X(16) VALUE '----***** '. 01 RPT-HEADER-3. 05 FILLER PIC X(58) VALUE 'B HOUSE NUMBER IN-STREET-NAME ZIP CD N'. 05 FILLER PIC X(58) VALUE 'YPD-PCT SCHLDST LOW CROSS STREET HIGH CROSS STREE'. 05 FILLER PIC X(16) VALUE 'T '. 01 RPT-HEADER-4. 05 FILLER PIC X(58) VALUE '_ ____________ ________________________________ _____ __ \\_'. 05 FILLER PIC X(58) VALUE '_______ _______ _________________________ ________________'. 05 FILLER PIC X(16) VALUE '_________ '. 01 FLAGS. 05 DATA-FLAG PIC XXX VALUE 'YES'. 88 MORE-DATA VALUE 'YES'. 88 NO-DATA VALUE 'NO '. **************************************** PROCEDURE DIVISION. OPEN INPUT IN-FILE, OUTPUT RPT-FILE. WRITE RPT-LINE FROM RPT-HEADER-1 AFTER ADVANCING 1 LINES. WRITE RPT-LINE FROM RPT-HEADER-2 AFTER ADVANCING 2 LINES. WRITE RPT-LINE FROM RPT-HEADER-3 AFTER ADVANCING 2 LINES. WRITE RPT-LINE FROM RPT-HEADER-4 AFTER ADVANCING 0 LINES. READ IN-FILE AT END MOVE 'NO ' TO DATA-FLAG. PERFORM PROCESS THRU PROCESS-EX UNTIL NO-DATA. CLOSE IN-FILE, RPT-FILE. MOVE 0 TO RETURN-CODE STOP RUN. PROCESS. ***************************************************************** \\* TO MAKE A FUNCTION 1 CALL: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET WA1'S FUNCTION CODE FIELD TO 1 * \\* (3) SET THE PLATFORM INDICATOR SWITCH (NON-IBM-MAINFRAME) * \\* TO USE CHARACTER-ONLY WORK AREAS (COWS) * \\* (4) MOVE THE INPUT BORO TO WA1'S INPUT BORO CODE FIELD * \\* (5) MOVE THE INPUT HOUSE NUMBER TO WA1'S INPUT HOUSE NUMBER * \\* FIELD * \\* (6) MOVE THE INPUT STREET TO WA1'S INPUT STREET NAME FIELD * \\* (7) CALL GBI WITH 2 WORKAREAS * \\* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ***************************************************************** ***************************************************************** \\* AS OF GEOSUPPORT 10.1, * \\* TO RECEIVE ROADBED-SPECIFIC INFORMATION, * \\* SET THE ROADBED REQUEST SWITCH TO 'R', AS FOLLOWS: * \\* MOVE 'R' TO PIWA1-IN-ROADBED-REQ-SWITCH. * ***************************************************************** MOVE SPACES TO WORK1. MOVE '1 ' TO PIWA1-IN-FUNC-CODE. MOVE 'C' TO GEO-WA1-IN-NON-IBM-MAIN-FRAME. MOVE IN-BORO-CODE TO GEO-WA1-IN-BORO OUT-BOR ERR-BOR WRN-BOR. MOVE IN-HOUSE-NUMBER TO PIWA1-IN-HOUSENUM-DISPLAY OUT-HN ERR-HN WRN-HN. MOVE IN-STREET TO GEO-WA1-IN-STREET-1 OUT-ST ERR-ST WRN-ST. CALL 'GBI' USING WORK1 WORK2. IF GEO-WA1-OUT-RETURN-CODE NOT = 00 MOVE '1' TO ERR-FUNCTION WRN-FUNCTION PERFORM PRINT-ERROR-LINE THRU P-E-EX. IF (GEO-WA1-OUT-RETURN-CODE = 00) OR (GEO-WA1-OUT-RETURN-CODE = 01) PERFORM SUCCESSFUL-FUNC1 THRU S-F1-EX. READ IN-FILE AT END MOVE 'NO ' TO DATA-FLAG. PROCESS-EX. EXIT. SUCCESSFUL-FUNC1. *********************************************************** ***** REPLACE CODE BELOW WITH YOUR OWN CODE FOR *********** ***** PROCESSING SUCCESSFUL GEOSUPPORT CALLS ***** *********************************************************** MOVE GEO-WA2-FN1-ZIP TO OUT-ZIP. MOVE GEO-WA2-FN1-COMDIST-NUMBER TO OUT-CD. MOVE GEO-WA2-FN1-POL-PRECINCT TO OUT-NYPD-PCT. MOVE GEO-WA2-FN1-SCHOOLDIST TO OUT-SCHLDIST. IF GEO-WA1-OUT-RETURN-CODE = 00 WRITE RPT-LINE FROM RPT-DATA-LINE1 AFTER ADVANCING 2 LINES ELSE MOVE SPACES TO OUT-BOR OUT-HN OUT-ST WRITE RPT-LINE FROM RPT-DATA-LINE1 AFTER ADVANCING 1 LINES. **************************************************************** \\* THIS PROGRAM ASSUMES THERE EXISTS AT LEAST ONE HIGH AND * \\* ONE LOW CROSS STREET. TO GET THE STREET NAMES OF THE * \\* FIRST-LISTED HIGH AND FIRST-LISTED LOW CROSS STREETS * \\* FROM THE HIGH AND LOW STREET CODE LISTS CALL FUNCTION D: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET WA1'S FUNCTION CODE FIELD TO D * \\* (3) SET THE PLATFORM INDICATOR SWITCH (NON-IBM-MAINFRAME) * \\* TO USE CHARACTER-ONLY WORK AREAS (COWS) * \\* (4) SET WA1'S STREET NAME LENGTH FIELD TO DESIRED * \\* VALUE (IN THIS CASE 25 BECAUSE THE REPORT LINE * \\* HAS SPACE FOR ONLY 25 CHARACTERS) * \\* (5) USE THE COMPACT STREET NAMES OPTION TO OBTAIN * \\* STREET NAMES FORMATTED FOR DISPLAY * \\* (6) MOVE WA2'S LOW BSC FIELD TO WA1'S INPUT STREET * \\* CODE 1 FIELD * \\* (7) MOVE WA2'S HIGH BSC FIELD TO WA1'S INPUT STREET * \\* CODE 2 FIELD * \\* (8) CALL GBI WITH 1 WORKAREA * \\* (9) CHECK RETURN CODES FOR ERRORS OR WARNINGS * **************************************************************** MOVE SPACES TO WORK1. MOVE 'D ' TO PIWA1-IN-FUNC-CODE. MOVE 'C' TO GEO-WA1-IN-NON-IBM-MAIN-FRAME. MOVE 'C' TO GEO-WA1-IN-COMPACT-NAME-FLAG. MOVE '25' TO GEO-WA1-IN-SNL. MOVE PIWA2-FN1-LOW-B5SC (1) TO GEO-WA1-IN-10SC-1. MOVE PIWA2-FN1-HI-B5SC (1) TO GEO-WA1-IN-10SC-2. CALL 'GBI' USING WORK1. IF GEO-WA1-OUT-RETURN-CODE NOT = 00 MOVE 'D' TO ERR-FUNCTION WRN-FUNCTION PERFORM PRINT-ERROR-LINE THRU P-E-EX. IF (GEO-WA1-OUT-RETURN-CODE = 00) OR (GEO-WA1-OUT-RETURN-CODE = 01) PERFORM SUCCESSFUL-FUNCD THRU S-FD-EX. S-F1-EX. EXIT. SUCCESSFUL-FUNCD. MOVE GEO-WA1-OUT-STREET-1 TO OUT-LO-X-STREET MOVE GEO-WA1-OUT-STREET-2 TO OUT-HI-X-STREET WRITE RPT-LINE FROM RPT-DATA-LINE2 AFTER ADVANCING 0 LINES. S-FD-EX. EXIT. PRINT-ERROR-LINE. MOVE GEO-WA1-OUT-RETURN-CODE TO ERR-GRC WRN-GRC. MOVE GEO-WA1-OUT-REASON-CODE TO ERR-REASON WRN-REASON. MOVE GEO-WA1-OUT-ERROR-MESSAGE TO OUT-ERR-MSG. IF GEO-WA1-OUT-RETURN-CODE = 01 **** INSERT YOUR OWN WARNING ROUTINE HERE **** WRITE RPT-LINE FROM RPT-WRN-LINE AFTER ADVANCING 2 LINES ELSE **** INSERT YOUR OWN ERROR ROUTINE HERE **** WRITE RPT-LINE FROM RPT-ERR-LINE-1 AFTER ADVANCING 2 LINES. WRITE RPT-LINE FROM RPT-ERR-LINE-2 AFTER ADVANCING 1 LINES. P-E-EX. EXIT. /* //LKED.SYSIN DD * INCLUDE INCLIB(GBI) //LKED.INCLIB DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //******************************************************************// //* \\*// //* AS OF GEOSUPPPORT VERSION 10.0, \\*// //* THE STEPLIB (OR JOBLIB) OF THE GEOSUPPORT EXECUTION STEP \\*// //* MUST INCLUDE THE FOLLOWING TWO CONCATENATED DATASETS: \\*// //* A030.GEO.SUPPORT.PDSE.LOADLIB \\*// //* A030.GEO.SUPPORT.LOADLIB \\*// //* \\*// //******************************************************************// //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR // DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* //******************************************************************// //* \\*// //* AS OF GEOSUPPPORT VERSION 10.0, \\*// //* DD STATEMENTS FOR GEOSUPPORT DATA FILES (E.G. GRID, PAD, ETC) \\*// //* ARE NO LONGER NEEDED AND ARE IGNORED. GEOSUPPORT IS TAILORED \\*// //* TO USE STANDARD GEOSUPPORT DATA SET NAMES. \\*// //* TO USE NON-STANDARD FILES, SEE YOUR SYSTEMS PROGRAMMER. \\*// //* \\*// //******************************************************************// //* //GO.SYSUDUMP DD SYSOUT=A,OUTLIM=3000 //GO.SYSOUT DD SYSOUT=A //GO.RPTFILE DD SYSOUT=A //GO.INFILE DD * 1 22 READE ST 1 500 DUANE ST 1 82-84 BROADWAY 4 165-100 BAISLEY BLVD 4 165-1000 BAISLEY BLVD /* // COBOL SAMPLE PROGRAM #1 \u2013 Output Report SAMPLE COBOL PROGRAM \\#1 EXECUTION OUTPUT *****---------- INPUT ADDRESS ------------***** *****--------------------- SELECTED OUTPUT ITEMS -----------------------***** B HOUSE NUMBER IN-STREET-NAME ZIP CD NYPD-PCT SCHLDST LOW CROSS STREET HIGH CROSS STREET - ------------ -------------------------------- ----- -- -------- ------- ------------------------- ------------------------- 1 22 READE ST 10007 01 005 02 ELK STREET BROADWAY 1 500 DUANE ST *** FUNCTION 1 GRC = 42 REASON CODE = *** ADDRESS NUMBER OUT OF RANGE 1 82-84 BROADWAY *** FUNCTION 1 WARNING, GRC = 01 REASON CODE = 1 *** ADDR NUMBER ALTERED: RANGE ASSUMED. USING DIGITS BEFORE DASH ONLY 10005 01 001 02 RECTOR STREET WALL GREEN 4 165-100 BAISLEY BLVD 11434 12 113 28 SMITH STREET 166 STREET 4 165-1000 BAISLEY BLVD *** FUNCTION 1 GRC = 13 REASON CODE = 2 *** ADDRESS NBR 165-1000 HAS MORE THAN 3 DIGITS AFTER THE DASH. COBOL SAMPLE PROGRAM #2 - Input Job Stream - MSW - Input Job Stream - COW - Output Report - COW COBOL SAMPLE PROGRAM #2- Job Stream - MSW //COBF2SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //*** COBOL SAMPLE BATCH GEOSUPPORT USER APPLICATION PROGRAM \\#2 **** //*** MSW FORMAT **** //******************************************************************** //STEP1 EXEC IGYWCLG,PARM.COBOL=(NOWORD,OPTIMIZE) //COBOL.SYSLIB DD DSN=A030.GEO.COPYLIB2,DISP=SHR // DD DSN=A030.GEO.COPYLIB,DISP=SHR //COBOL.SYSIN DD * ***************************************************************** \\* THIS PROGRAM MAKES FUNCTION 2 AND D CALLS TO GEOSUPPORT USING * \\* TWO BOROS AND TWO STREET NAMES SUPPLIED BY AN INSTREAM FILE. * \\* FUNCTION 2 RETURNS GEOGRAPHIC INFORMATION FOR AN INTERSECTION.* \\* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. * \\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE * \\* ORIGINAL CALL TO FUNCTION 2, ALL THE CROSS STREET * \\* NAMES WOULD HAVE BEEN RETURNED BY FUNCTION 2. * ***************************************************************** * IDENTIFICATION DIVISION. PROGRAM-ID. COBS1JOB. **************************************** ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT IN-FILE ASSIGN TO INFILE. SELECT RPT-FILE ASSIGN TO RPTFILE. **************************************** DATA DIVISION. FILE SECTION. **** REPLACE CODE BELOW WITH YOUR OWN INPUT FILE DEFINTION ***** FD IN-FILE RECORDING MODE IS F RECORD CONTAINS 80 CHARACTERS LABEL RECORDS ARE OMITTED. 01 INPUT-TO-GEOSUPPORT. 05 IN-BOR1 PIC X. 05 FILLER PIC X. 05 IN-STREET1 PIC X(32). 05 FILLER PIC X. 05 IN-BOR2 PIC X. 05 FILLER PIC X. 05 IN-STREET2 PIC X(32). 05 FILLER PIC X(11). FD RPT-FILE RECORDING MODE IS F RECORD CONTAINS 132 CHARACTERS LABEL RECORDS ARE OMITTED. 01 RPT-LINE PIC X(132). WORKING-STORAGE SECTION. 77 I PIC 9 VALUE 0. ***************************************************************** *** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE *** *** COPY STATEMENTS) IS STRONGLY ENCOURAGED. *** ***************************************************************** 01 WORK1. COPY W1COB. 01 WORK2. COPY W2COB. **** REPLACE CODE BELOW WITH YOUR OWN REPORT LAYOUT ********* 01 RPT-DATA-LINE1. 05 OUT-BOR1 PIC X. 05 FILLER PIC X VALUE ' '. 05 OUT-ST1 PIC X(32). 05 FILLER PIC X VALUE ' '. 05 OUT-BOR2 PIC X. 05 FILLER PIC X VALUE ' '. 05 OUT-ST2 PIC X(32). 05 OUT-DETAIL. 10 FILLER PIC X VALUE ' '. 10 OUT-ZIP PIC X(5). 10 FILLER PIC X VALUE ' '. 10 OUT-CD PIC X(2). 10 FILLER PIC X VALUE ' '. 10 OUT-NYPD-PCT PIC X(3). 10 FILLER PIC X(6) VALUE ' '. 10 OUT-SCHLDIST PIC X(2). 10 FILLER PIC X(42) VALUE ' '. 01 RPT-DATA-LINE2. 05 FILLER PIC X(96) VALUE ' '. 05 OUT-ST PIC X(32). 05 FILLER PIC X(4) VALUE ' '. 01 RPT-ERR-LINE. 05 FILLER PIC X(15) VALUE '***** FUNCTION '. 05 ERR-FUNCTION PIC X. 05 FILLER PIC X(7) VALUE ' GRC = '. 05 ERR-GRC PIC X(2). 05 FILLER PIC X(15) VALUE ' REASON CODE = '. 05 ERR-REASON PIC X. 05 FILLER PIC X(2) VALUE '. '. 05 OUT-ERR-MSG PIC X(80). 05 FILLER PIC X(9) VALUE ' '. 01 RPT-WRN-LINE. 05 FILLER PIC X(15) VALUE '***** FUNCTION '. 05 WRN-FUNCTION PIC X. 05 FILLER PIC X(15) VALUE ' WARNING GRC = '. 05 WRN-GRC PIC X(2). 05 FILLER PIC X(15) VALUE ' REASON CODE = '. 05 WRN-REASON PIC X. 05 FILLER PIC X(2) VALUE '. '. 05 OUT-WRN-MSG PIC X(80). 05 FILLER PIC X VALUE ' '. 01 RPT-HEADER-1. 05 FILLER PIC X(40) VALUE 'SAMPLE COBOL PROGRAM \\#2 EXECUTION OUTPUT'. 05 FILLER PIC X(72) VALUE ' '. 01 RPT-HEADER-2. 05 FILLER PIC X(58) VALUE '*****----------------- INPUT INTERSECTION ----------------'. 05 FILLER PIC X(58) VALUE '------***** *****------------ SELECTED OUTPUT ITEMS ------'. 05 FILLER PIC X(16) VALUE '-------*****'. 01 RPT-HEADER-3. 05 FILLER PIC X(58) VALUE 'B IN-STREET-NAME-1 B IN-STREET-NAME-2 '. 05 FILLER PIC X(58) VALUE ' ZIP CD NYPD-PCT SCHLDST INTERSECTING STREET '. 05 FILLER PIC X(16) VALUE 'NAMES '. 01 RPT-HEADER-4. 05 FILLER PIC X(58) VALUE '_ ________________________________ _ _____________________'. 05 FILLER PIC X(58) VALUE '___________ _____ __ ________ _______ ____________________'. 05 FILLER PIC X(16) VALUE '____________ '. 01 FLAGS. 05 DATA-FLAG PIC XXX VALUE 'YES'. 88 MORE-DATA VALUE 'YES'. 88 NO-DATA VALUE 'NO '. **************************************** PROCEDURE DIVISION. OPEN INPUT IN-FILE, OUTPUT RPT-FILE. WRITE RPT-LINE FROM RPT-HEADER-1 AFTER ADVANCING 1 LINES. WRITE RPT-LINE FROM RPT-HEADER-2 AFTER ADVANCING 2 LINES. WRITE RPT-LINE FROM RPT-HEADER-3 AFTER ADVANCING 2 LINES. WRITE RPT-LINE FROM RPT-HEADER-4 AFTER ADVANCING 0 LINES. READ IN-FILE AT END MOVE 'NO ' TO DATA-FLAG. PERFORM PROCESS THRU PROCESS-EX UNTIL NO-DATA. CLOSE IN-FILE, RPT-FILE. MOVE 0 TO RETURN-CODE STOP RUN. PROCESS. ****************************************************************** \\* TO MAKE A FUNCTION 2 CALL: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET WA1'S FUNCTION-CODE TO 2 * \\* (3) MOVE THE 1ST INPUT BORO TO WA1'S INPUT BORO CODE FIELD * \\* (4) MOVE THE 1ST INPUT STREET TO WA1'S INPUT STREET NAME * \\* FIELD * \\* (5) MOVE THE 2ND INPUT BORO TO WA1'S INPUT BORO CODE 2 FIELD * \\* (6) MOVE THE 2ND INPUT STREET TO WA1'S INPUT STREET NAME 2 * \\* FIELD * \\* (7) CALL GBI WITH 2 WORKAREAS * \\* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ****************************************************************** MOVE SPACES TO WORK1. MOVE '2 ' TO GEO-WA1-IN-FUNCTION-CODE. MOVE IN-BOR1 TO GEO-WA1-IN-BORO OUT-BOR1. MOVE IN-BOR2 TO GEO-WA1-IN-BORO-2 OUT-BOR2. MOVE IN-STREET1 TO GEO-WA1-IN-STREET-1 OUT-ST1. MOVE IN-STREET2 TO GEO-WA1-IN-STREET-2 OUT-ST2. CALL 'GBI' USING WORK1 WORK2. IF GEO-WA1-OUT-RETURN-CODE NOT = 00 MOVE '2' TO ERR-FUNCTION WRN-FUNCTION PERFORM PRINT-ERROR-LINE THRU P-E-EX. IF (GEO-WA1-OUT-RETURN-CODE = 00) OR (GEO-WA1-OUT-RETURN-CODE = 01) PERFORM SUCCESSFUL-FUNC2 THRU S-F2-EX ELSE MOVE SPACES TO OUT-DETAIL WRITE RPT-LINE FROM RPT-DATA-LINE1 AFTER ADVANCING 1 LINES. READ IN-FILE AT END MOVE 'NO ' TO DATA-FLAG. PROCESS-EX. EXIT. SUCCESSFUL-FUNC2. *********************************************************** ***** REPLACE CODE BELOW WITH YOUR OWN CODE FOR *********** ***** PROCESSING SUCCESSFUL GEOSUPPORT CALLS ***** *********************************************************** MOVE GEO-WA2-FN2-ZIP TO OUT-ZIP. MOVE GEO-WA2-FN2-COMDIST-NUMBER TO OUT-CD. MOVE GEO-WA2-FN2-POL-PRECINCT TO OUT-NYPD-PCT. MOVE GEO-WA2-FN2-SCHOOLDIST TO OUT-SCHLDIST. \\* PROCESS CROSS STREET** CHECK FOR AT LEAST 1. WRITE RPT-LINE FROM RPT-DATA-LINE1 AFTER ADVANCING 2 LINES. PERFORM CALL-D THRU CALL-D-EX VARYING I FROM 1 BY 1 UNTIL (I > GEO-WA2-FN2-NUM-OF-INTERSECTS). S-F2-EX. EXIT. CALL-D. ******************************************************* \\* TO GET STREET NAMES FOR INTERSECTING STREET CODES * \\* MAKE A FUNCTION D CALL: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET THE WA1'S FUNCTION CODE FIELD TO D * \\* (3) USE THE COMPACT STREET NAMES OPTION TO OBTAIN * \\* STREET NAMES FORMATTED FOR DISPLAY * \\* (4) MOVE THE PACKED BORO AND STREET CODE TO * \\* WA1'S INPUT STREET CODE 1 FIELD * \\* (5) CALL GBI WITH 1 WORKAREA * \\* (6) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ******************************************************* MOVE SPACES TO WORK1. MOVE 'D ' TO GEO-WA1-IN-FUNCTION-CODE. MOVE 'C' TO GEO-WA1-IN-COMPACT-NAME-FLAG. MOVE '25' TO GEO-WA1-IN-SNL. MOVE GEO-WA2-FN2-INTERSECT-PBSC (I) TO GEO-WA1-IN-STREETCODE-1 CALL 'GBI' USING WORK1. IF GEO-WA1-OUT-RETURN-CODE NOT = 00 MOVE 'D' TO ERR-FUNCTION WRN-FUNCTION PERFORM PRINT-ERROR-LINE THRU P-E-EX. IF (GEO-WA1-OUT-RETURN-CODE = 00) OR (GEO-WA1-OUT-RETURN-CODE = 01) PERFORM SUCCESSFUL-FUNCD THRU S-FD-EX. CALL-D-EX. EXIT. SUCCESSFUL-FUNCD. MOVE GEO-WA1-OUT-STREET-1 TO OUT-ST IF I = 1 WRITE RPT-LINE FROM RPT-DATA-LINE2 AFTER ADVANCING 0 LINES ELSE WRITE RPT-LINE FROM RPT-DATA-LINE2 AFTER ADVANCING 1 LINES. S-FD-EX. EXIT. PRINT-ERROR-LINE. MOVE GEO-WA1-OUT-RETURN-CODE TO ERR-GRC WRN-GRC. MOVE GEO-WA1-OUT-REASON-CODE TO ERR-REASON WRN-REASON. MOVE GEO-WA1-OUT-ERROR-MESSAGE TO OUT-ERR-MSG OUT-WRN-MSG. IF GEO-WA1-OUT-RETURN-CODE = 01 **** INSERT YOUR OWN WARNING ROUTINE HERE **** WRITE RPT-LINE FROM RPT-WRN-LINE AFTER ADVANCING 2 LINES ELSE **** INSERT YOUR OWN WARNING ROUTINE HERE **** WRITE RPT-LINE FROM RPT-ERR-LINE AFTER ADVANCING 2 LINES. P-E-EX. EXIT. /* //LKED.SYSIN DD * INCLUDE INCLIB(GBI) //LKED.INCLIB DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //******************************************************************// //* \\*// //* AS OF GEOSUPPPORT VERSION 10.0, \\*// //* THE STEPLIB (OR JOBLIB) OF THE GEOSUPPORT EXECUTION STEP \\*// //* MUST INCLUDE THE FOLLOWING TWO CONCATENATED DATASETS: \\*// //* A030.GEO.SUPPORT.PDSE.LOADLIB \\*// //* A030.GEO.SUPPORT.LOADLIB \\*// //* \\*// //******************************************************************// //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR // DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* //******************************************************************// //* \\*// //* AS OF GEOSUPPPORT VERSION 10.0, \\*// //* DD STATEMENTS FOR GEOSUPPORT DATA FILES (E.G. GRID, PAD, ETC) \\*// //* ARE NO LONGER NEEDED AND ARE IGNORED. GEOSUPPORT IS TAILORED \\*// //* TO USE STANDARD GEOSUPPORT DATA SET NAMES. \\*// //* TO USE NON-STANDARD FILES, SEE YOUR SYSTEMS PROGRAMMER. \\*// /* \\*// //******************************************************************// //* //GO.SYSUDUMP DD SYSOUT=A,OUTLIM=3000 //GO.SYSOUT DD SYSOUT=A //GO.RPTFILE DD SYSOUT=A //GO.INFILE DD * 1 CHAMBERS ST 1 HUDSON ST 1 SIXTH AVE 1 W. 8 ST 1 DUANE ST 1 READE ST /* // COBOL SAMPLE PROGRAM #2- Job Stream- COW //COBC2SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //*** COBOL SAMPLE BATCH GEOSUPPORT USER APPLICATION PROGRAM #2 **** //*** COW FORMAT **** //******************************************************************** //STEP1 EXEC IGYWCLG,PARM.COBOL=(NOWORD,OPTIMIZE) //COBOL.SYSLIB DD DSN=A030.GEO.COPYLIB2,DISP=SHR // DD DSN=A030.GEO.COPYLIB,DISP=SHR //COBOL.SYSIN DD * ***************************************************************** * THIS PROGRAM MAKES FUNCTION 2 AND D CALLS TO GEOSUPPORT USING * * TWO BOROS AND TWO STREET NAMES SUPPLIED BY AN INSTREAM FILE. * * FUNCTION 2 RETURNS GEOGRAPHIC INFORMATION FOR AN INTERSECTION.* * FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE * * ORIGINAL CALL TO FUNCTION 2, ALL THE CROSS STREET * * NAMES WOULD HAVE BEEN RETURNED BY FUNCTION 2. * ***************************************************************** * IDENTIFICATION DIVISION. PROGRAM-ID. COBS1JOB. **************************************** ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT IN-FILE ASSIGN TO INFILE. SELECT RPT-FILE ASSIGN TO RPTFILE. **************************************** DATA DIVISION. FILE SECTION. **** REPLACE CODE BELOW WITH YOUR OWN INPUT FILE DEFINTION ***** FD IN-FILE RECORDING MODE IS F RECORD CONTAINS 80 CHARACTERS LABEL RECORDS ARE OMITTED. 01 INPUT-TO-GEOSUPPORT. 05 IN-BOR1 PIC X. 05 FILLER PIC X. 05 IN-STREET1 PIC X(32). 05 FILLER PIC X. 05 IN-BOR2 PIC X. 05 FILLER PIC X. 05 IN-STREET2 PIC X(32). 05 FILLER PIC X(11). FD RPT-FILE RECORDING MODE IS F RECORD CONTAINS 132 CHARACTERS LABEL RECORDS ARE OMITTED. 01 RPT-LINE PIC X(132). WORKING-STORAGE SECTION. 77 I PIC 9 VALUE 0. ***************************************************************** *** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE *** *** COPY STATEMENTS) IS STRONGLY ENCOURAGED. *** ***************************************************************** 01 WORK1. COPY P1COB. 01 WORK2. COPY P2COB. **** REPLACE CODE BELOW WITH YOUR OWN REPORT LAYOUT ********* 01 RPT-DATA-LINE1. 05 OUT-BOR1 PIC X. 05 FILLER PIC X VALUE ' '. 05 OUT-ST1 PIC X(32). 05 FILLER PIC X VALUE ' '. 05 OUT-BOR2 PIC X. 05 FILLER PIC X VALUE ' '. 05 OUT-ST2 PIC X(32). 05 OUT-DETAIL. 10 FILLER PIC X VALUE ' '. 10 OUT-ZIP PIC X(5). 10 FILLER PIC X VALUE ' '. 10 OUT-CD PIC X(2). 10 FILLER PIC X VALUE ' '. 10 OUT-NYPD-PCT PIC X(3). 10 FILLER PIC X(6) VALUE ' '. 10 OUT-SCHLDIST PIC X(2). 10 FILLER PIC X(42) VALUE ' '. 01 RPT-DATA-LINE2. 05 FILLER PIC X(96) VALUE ' '. 05 OUT-ST PIC X(32). 05 FILLER PIC X(4) VALUE ' '. 01 RPT-ERR-LINE. 05 FILLER PIC X(15) VALUE '***** FUNCTION '. 05 ERR-FUNCTION PIC X. 05 FILLER PIC X(7) VALUE ' GRC = '. 05 ERR-GRC PIC X(2). 05 FILLER PIC X(15) VALUE ' REASON CODE = '. 05 ERR-REASON PIC X. 05 FILLER PIC X(2) VALUE '. '. 05 OUT-ERR-MSG PIC X(80). 05 FILLER PIC X(9) VALUE ' '. 01 RPT-WRN-LINE. 05 FILLER PIC X(15) VALUE '***** FUNCTION '. 05 WRN-FUNCTION PIC X. 05 FILLER PIC X(15) VALUE ' WARNING GRC = '. 05 WRN-GRC PIC X(2). 05 FILLER PIC X(15) VALUE ' REASON CODE = '. 05 WRN-REASON PIC X. 05 FILLER PIC X(2) VALUE '. '. 05 OUT-WRN-MSG PIC X(80). 05 FILLER PIC X VALUE ' '. 01 RPT-HEADER-1. 05 FILLER PIC X(40) VALUE 'SAMPLE COBOL PROGRAM #2 EXECUTION OUTPUT'. 05 FILLER PIC X(72) VALUE ' '. 01 RPT-HEADER-2. 05 FILLER PIC X(58) VALUE '*****----------------- INPUT INTERSECTION ----------------'. 05 FILLER PIC X(58) VALUE '------***** *****------------ SELECTED OUTPUT ITEMS ------'. 05 FILLER PIC X(16) VALUE '-------*****'. 01 RPT-HEADER-3. 05 FILLER PIC X(58) VALUE 'B IN-STREET-NAME-1 B IN-STREET-NAME-2 '. 05 FILLER PIC X(58) VALUE ' ZIP CD NYPD-PCT SCHLDST INTERSECTING STREET '. 05 FILLER PIC X(16) VALUE 'NAMES '. 01 RPT-HEADER-4. 05 FILLER PIC X(58) VALUE '_ ________________________________ _ _____________________'. 05 FILLER PIC X(58) VALUE '___________ _____ __ ________ _______ ____________________'. 05 FILLER PIC X(16) VALUE '____________ '. 01 FLAGS. 05 DATA-FLAG PIC XXX VALUE 'YES'. 88 MORE-DATA VALUE 'YES'. 88 NO-DATA VALUE 'NO '. **************************************** PROCEDURE DIVISION. OPEN INPUT IN-FILE, OUTPUT RPT-FILE. WRITE RPT-LINE FROM RPT-HEADER-1 AFTER ADVANCING 1 LINES. WRITE RPT-LINE FROM RPT-HEADER-2 AFTER ADVANCING 2 LINES. WRITE RPT-LINE FROM RPT-HEADER-3 AFTER ADVANCING 2 LINES. WRITE RPT-LINE FROM RPT-HEADER-4 AFTER ADVANCING 0 LINES. READ IN-FILE AT END MOVE 'NO ' TO DATA-FLAG. PERFORM PROCESS THRU PROCESS-EX UNTIL NO-DATA. CLOSE IN-FILE, RPT-FILE. MOVE 0 TO RETURN-CODE STOP RUN. PROCESS. ****************************************************************** * TO MAKE A FUNCTION 2 CALL: * * (1) INITIALIZE WORKAREA 1 TO SPACES * * (2) SET WA1'S FUNCTION-CODE TO 2 * * (3) SET THE PLATFORM INDICATOR SWITCH (NON-IBM-MAINFRAME) * * TO USE CHARACTER-ONLY WORK AREAS (COWS) * * (4) MOVE THE 1ST INPUT BORO TO WA1'S INPUT BORO CODE FIELD * * (5) MOVE THE 1ST INPUT STREET TO WA1'S INPUT STREET NAME * * FIELD * * (6) MOVE THE 2ND INPUT BORO TO WA1'S INPUT BORO CODE 2 FIELD * * (7) MOVE THE 2ND INPUT STREET TO WA1'S INPUT STREET NAME 2 * * FIELD * * (8) CALL GBI WITH 2 WORKAREAS * * (9) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ****************************************************************** MOVE SPACES TO WORK1. MOVE '2 ' TO PIWA1-IN-FUNC-CODE. MOVE 'C' TO GEO-WA1-IN-NON-IBM-MAIN-FRAME. MOVE IN-BOR1 TO GEO-WA1-IN-BORO OUT-BOR1. MOVE IN-BOR2 TO GEO-WA1-IN-BORO-2 OUT-BOR2. MOVE IN-STREET1 TO GEO-WA1-IN-STREET-1 OUT-ST1. MOVE IN-STREET2 TO GEO-WA1-IN-STREET-2 OUT-ST2. CALL 'GBI' USING WORK1 WORK2. IF GEO-WA1-OUT-RETURN-CODE NOT = 00 MOVE '2' TO ERR-FUNCTION WRN-FUNCTION PERFORM PRINT-ERROR-LINE THRU P-E-EX. IF (GEO-WA1-OUT-RETURN-CODE = 00) OR (GEO-WA1-OUT-RETURN-CODE = 01) PERFORM SUCCESSFUL-FUNC2 THRU S-F2-EX ELSE MOVE SPACES TO OUT-DETAIL WRITE RPT-LINE FROM RPT-DATA-LINE1 AFTER ADVANCING 1 LINES. READ IN-FILE AT END MOVE 'NO ' TO DATA-FLAG. PROCESS-EX. EXIT. SUCCESSFUL-FUNC2. *********************************************************** ***** REPLACE CODE BELOW WITH YOUR OWN CODE FOR *********** ***** PROCESSING SUCCESSFUL GEOSUPPORT CALLS ***** *********************************************************** MOVE GEO-WA2-FN2-ZIP TO OUT-ZIP. MOVE GEO-WA2-FN2-COMDIST-NUMBER TO OUT-CD. MOVE GEO-WA2-FN2-POL-PRECINCT TO OUT-NYPD-PCT. MOVE GEO-WA2-FN2-SCHOOLDIST TO OUT-SCHLDIST. * PROCESS CROSS STREET** CHECK FOR AT LEAST 1. WRITE RPT-LINE FROM RPT-DATA-LINE1 AFTER ADVANCING 2 LINES. PERFORM CALL-D THRU CALL-D-EX VARYING I FROM 1 BY 1 UNTIL (I > GEO-WA2-FN2-NUM-OF-INTERSECTS). S-F2-EX. EXIT. CALL-D. ***************************************************************** * TO GET STREET NAMES FOR INTERSECTING STREET CODES * * MAKE A FUNCTION D CALL: * * (1) INITIALIZE WORKAREA 1 TO SPACES * * (2) SET THE WA1'S FUNCTION CODE FIELD TO D * * (3) SET THE PLATFORM INDICATOR SWITCH (NON-IBM-MAINFRAME) * * TO USE CHARACTER-ONLY WORK AREAS (COWS) * * (4) USE THE COMPACT STREET NAMES OPTION TO OBTAIN * * STREET NAMES FORMATTED FOR DISPLAY * * (5) MOVE THE BORO AND STREET CODE * * WA1'S INPUT STREET CODE 1 FIELD * * (6) CALL GBI WITH 1 WORKAREA * * (7) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ***************************************************************** MOVE SPACES TO WORK1. MOVE 'D ' TO PIWA1-IN-FUNC-CODE. MOVE 'C' TO GEO-WA1-IN-NON-IBM-MAIN-FRAME. MOVE 'C' TO GEO-WA1-IN-COMPACT-NAME-FLAG. MOVE '25' TO GEO-WA1-IN-SNL. MOVE PIWA2-FN2-INTERSECT-B5SC (I) TO GEO-WA1-IN-10SC-1 CALL 'GBI' USING WORK1. IF GEO-WA1-OUT-RETURN-CODE NOT = 00 MOVE 'D' TO ERR-FUNCTION WRN-FUNCTION PERFORM PRINT-ERROR-LINE THRU P-E-EX. IF (GEO-WA1-OUT-RETURN-CODE = 00) OR (GEO-WA1-OUT-RETURN-CODE = 01) PERFORM SUCCESSFUL-FUNCD THRU S-FD-EX. CALL-D-EX. EXIT. SUCCESSFUL-FUNCD. MOVE GEO-WA1-OUT-STREET-1 TO OUT-ST IF I = 1 WRITE RPT-LINE FROM RPT-DATA-LINE2 AFTER ADVANCING 0 LINES ELSE WRITE RPT-LINE FROM RPT-DATA-LINE2 AFTER ADVANCING 1 LINES. S-FD-EX. EXIT. PRINT-ERROR-LINE. MOVE GEO-WA1-OUT-RETURN-CODE TO ERR-GRC WRN-GRC. MOVE GEO-WA1-OUT-REASON-CODE TO ERR-REASON WRN-REASON. MOVE GEO-WA1-OUT-ERROR-MESSAGE TO OUT-ERR-MSG OUT-WRN-MSG. IF GEO-WA1-OUT-RETURN-CODE = 01 **** INSERT YOUR OWN WARNING ROUTINE HERE **** WRITE RPT-LINE FROM RPT-WRN-LINE AFTER ADVANCING 2 LINES ELSE **** INSERT YOUR OWN WARNING ROUTINE HERE **** WRITE RPT-LINE FROM RPT-ERR-LINE AFTER ADVANCING 2 LINES. P-E-EX. EXIT. /* //LKED.SYSIN DD * INCLUDE INCLIB(GBI) //LKED.INCLIB DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //******************************************************************// //* *// //* AS OF GEOSUPPPORT VERSION 10.0, *// //* THE STEPLIB (OR JOBLIB) OF THE GEOSUPPORT EXECUTION STEP *// //* MUST INCLUDE THE FOLLOWING TWO CONCATENATED DATASETS: *// //* A030.GEO.SUPPORT.PDSE.LOADLIB *// //* A030.GEO.SUPPORT.LOADLIB *// //* *// //******************************************************************// //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR // DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* //******************************************************************// //* *// //* AS OF GEOSUPPPORT VERSION 10.0, *// //* DD STATEMENTS FOR GEOSUPPORT DATA FILES (E.G. GRID, PAD, ETC) *// //* ARE NO LONGER NEEDED AND ARE IGNORED. GEOSUPPORT IS TAILORED *// //* TO USE STANDARD GEOSUPPORT DATA SET NAMES. *// //* TO USE NON-STANDARD FILES, SEE YOUR SYSTEMS PROGRAMMER. *// //* *// //******************************************************************// //* //GO.SYSUDUMP DD SYSOUT=A,OUTLIM=3000 //GO.SYSOUT DD SYSOUT=A //GO.RPTFILE DD SYSOUT=A //GO.INFILE DD * 1 CHAMBERS ST 1 HUDSON ST 1 SIXTH AVE 1 W. 8 ST 1 DUANE ST 1 READE ST /* // SAMPLE COBOL PROGRAM #2 EXECUTION OUTPUT *****----------------- INPUT INTERSECTION ----------------------***** *****------------ SELECTED OUTPUT ITEMS ---***** B IN-STREET-NAME-1 B IN-STREET-NAME-2 ZIP CD NYPD-PCT SCHLDST INTERSECTING STREET NM - -------------------------------- - -------------------------------- ----- -- -------- ------- ---------------------- 1 CHAMBERS ST 1 HUDSON ST 10007 01 001 02 CHAMBERS STREET HUDSON STREET WEST BROADWAY 1 SIXTH AVE 1 W. 8 ST 10014 02 006 02 6 AVENUE GREENWICH AVENUE WEST 8 STREET ***** FUNCTION 2 GRC = 62 REASON CODE = . READE STREET & DUANE STREET DO NOT INTERSECT 1 DUANE ST 1 READE ST ASSEMBLER SAMPLE PROGRAM #1 - Input Job Stream - MSW - Input Job Stream - COW - Output Report ASSEMBLER SAMPLE PROGRAM #1 \u2013Job Stream-MSW //ASMF1SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //** ASSEMBLER SAMPLE BATCH GEOSUPPORT USER APPLICATION PROGRAM \\#1 ** //** MSW FORMAT ** //******************************************************************** //STEP1 EXEC ASMACLG, // PARM.ASM='OBJECT,NODECK', // PARM.LKED='XREF,LET,LIST,NCAL' //ASM.SYSLIB DD DSN=A030.GEO.COPYLIB2,DISP=SHR // DD DSN=A030.GEO.COPYLIB,DISP=SHR // DD DSN=SYS1.MACLIB,DISP=SHR //ASM.SYSIN DD * ASMF1SRC TITLE 'SAMPLE GEOSUPPORT ASSEMBLER PROGRAM 1 - MSW FORMAT' ASMF1SRC CSECT ***************************************************************** \\* THIS PROGRAM MAKES FUNCTION 1 AND D CALLS TO GEOSUPPORT USING * \\* BORO, HOUSENUMBER, & STREET NAME SUPPLIED BY AN INSTREAM FILE.* \\* FUNCTION 1 RETURNS GEOGRAPHIC INFORMATION FOR AN ADDRESS. * \\* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. * \\* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * \\* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE * \\* ORIGINAL CALL TO FUNCTION 1, ALL THE CROSS STREET NAMES * \\* WOULD HAVE BEEN RETURNED BY FUNCTION 1. * ***************************************************************** * *********************************************************************** \\* * \\* This program will do the following: * \\* * \\* * Read an instream record containing a house number, * \\* street name, and borough code * \\* * \\* * Build Work Area 1 for a Function 1 call * \\* * \\* * Call Function 1 * \\* * \\* * Get ZIP code, community district, police precinct, school * \\* district, and lists of street codes of streets intersecting * \\* at the low and high ends of the input street address's block. * \\* These will be displayed along with the input address which * \\* consists of borough code, house number, and street name. * \\* * \\* * Call Function D to get the street names of the first * \\* intersecting street on both low and high ends. * \\* * \\* * Print the information * \\* * \\* NOTE that after each Geosupport call, the Return Code is checked. * \\* If it is greater than 01, an error message is printed, and * \\* the next input record, if any, is read. * \\* If it is 01, a warning message is printed, the input record is * \\* processed, and the next record is read. * \\* If it is zero, the input record is processed, and the next * \\* record is read. * \\* * *********************************************************************** SPACE STM R14,R12,12(R13) Save caller's registers LR R3,R15 LA R12,4095(,R3) (second base register LA R12,1(,R12) to accomodate Work Areas 1 and 2) USING ASMF1SRC,R3,R12 \\* Chain save areas LA R4,MYSAVE ST R13,4(,R4) Save caller's savearea address ST R4,8(,R13) Save pgm's savearea adr in caller savearea LR R13,R4 Ensure that R13 points to pgm's savearea SPACE 2 XR R15,R15 (set OS return code to zero) \\* Open input and output files OPEN (INFILE,,OUTFILE,(OUTPUT)) TM INFILE+48,X'10' Did input file open successfully? BNO INOPNERR (no..) TM OUTFILE+48,X'10' Did output file open successfully? BNO OUTOPNER (no..) \\* Print page and report header lines SPACE PUT OUTFILE,HDR1 PUT OUTFILE,HDR2 PUT OUTFILE,HDR3 PUT OUTFILE,HDR4 B NEXTREC SPACE 2 TITLE 'READ IN-STREAM INPUT AND PREPARE FUNCTION 1 CALL' \\* Read (next) input record NEXTREC DS 0H GET INFILE,INREC \\* Move input data to output record for display MVC DBORO,INBORO borough code MVC DHSE(L'W1IHSE#),INHOUSE house number MVC DSTRT,INSTREET street name SPACE ***************************************************************** \\* TO MAKE A FUNCTION 1 CALL: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET WA1'S FUNCTION CODE FIELD TO 1 * \\* (3) MOVE THE INPUT BORO TO WA1'S INPUT BORO CODE FIELD * \\* (4) MOVE THE INPUT HOUSE NUMBER TO WA1'S INPUT HOUSE NUMBER * \\* FIELD * \\* (5) MOVE THE INPUT STREET TO WA1'S INPUT STREET NAME FIELD * \\* (6) CALL GBI WITH 2 WORKAREAS * \\* (7) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ***************************************************************** \\* Clear WA1 to blanks LA R8,W1BAL \"To\" address for MVCL LA R9,W1LENGTH \"To\" length XR R11,R11 for blanking out std WA1, ICM R11,B'1000',=C' ' rather than moving data \\* ...since if the \"from\" length reg. has lo-order zeroes, MVCL will \\* pad the target area with the pad character of the \"from\" register \\* and do nothing else (the \"from\" address register is not used). MVCL R8,R10 SPACE \\* Prime Work Area 1 for Function 1 call MVC W1IFUNC,=CL2'1 ' Get function code MVC W1IBORO1,INBORO borough code MVC W1IHSE#(L'W1IHSE#),INHOUSE house number MVC W1ISTRT1,INSTREET street name MVC W1ISNL(L'W1ISNL),=C'25' Normalized street name length ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\* * \\* As of Geosupport Version 10.1, * \\* to receive roadbed-specific information, * \\* set the Roadbed Request Switch to 'R', as follows: * \\* MVC W1IRBRQS,C'R' * \\* * \\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\* Call Function 1 (2-Work-Area call) CALL GBI,(W1BAL,W2BAL),VL \\* Check Return code CLC W1ORC(2),=C'00' Good return? BE PROCESS Yes, process returned data \\* Handle errors and warnings ERREXIT DS 0H CLC W1ORC(2),=C'01' Warning condition? BE PUTWARN Yes, process warning \\* and then process input; \\* otherwise, process error MVC ERINPUT,DSPLYIN Boro code, hse no., street name MVC ERFUNC,W1IFUNC function code MVC ERRET(L'W1ORC),W1ORC return code MVC ERREAS(L'W1OREASN),W1OREASN reason code PUT OUTFILE,ERR1 Print error messages 1 B PUTMSG and 2 PUTWARN DS 0H MVC WRINPUT,DSPLYIN Boro code, hse no., street name MVC WRFUNC,W1IFUNC function code MVC WRRET(L'W1ORC),W1ORC return code MVC WRREAS(L'W1OREASN),W1OREASN reason code PUT OUTFILE,WRN1 Print warning messages 1 PUTMSG DS 0H and 2 MVC ERRWRN(L'W1OERROR),W1OERROR PUT OUTFILE,ERRWRN2 Print error/warning message 2 CLC W1ORC(2),=C'01' Warning condition? BNE NEXTREC No, get next record, if any MVI OINPUT,C' ' Yes, MVC OINPUT+1(L'OINPUT-1),OINPUT ensure input NOT displayd MVI OUTVALID,C' ' ensure single-spacing after warning B GETZIP and continue normal processing SPACE \\* Handle successful Geosupport calls (Return Code <= 01) PROCESS DS 0H MVC OINPUT,DSPLYIN Boro code, hse no., street name MVI OUTVALID,C'0' Ensure double-spacing GETZIP DS 0H MVC OZIP,W2F1ZIP ZIP code MVC OCOMM,W2F1CDN community district number MVC OPCT,W2F1POP police precinct MVC OSCHL,W2F1SCH school district ASSEMBLER SAMPLE PROGRAM #1- Job stream- MSW (continue ***** At this point, clear WA1 again, call Function D, and move ****** ***** its reported Low and High Instersecting Street Names to output * TITLE 'GET LOW, HIGH INTERSECTING STREETS, USING FUNCTION D' SPACE 2 ************************************************************* \\* THIS PROGRAM ASSUMES THERE EXISTS AT LEAST ONE HIGH AND * \\* ONE LOW CROSS STREET. TO GET THE STREET NAMES OF THE * \\* FIRST-LISTED HIGH AND FIRST-LISTED LOW CROSS STREETS * \\* FROM THE HIGH AND LOW STREET CODE LISTS CALL FUNCTION D: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET WA1'S FUNCTION CODE FIELD TO D * \\* (3) SET WA1'S STREET NAME LENGTH FIELD TO DESIRED * \\* VALUE (IN THIS CASE 25 BECAUSE THE REPORT LINE * \\* HAS SPACE FOR ONLY 25 CHARACTERS) * \\* (4) USE THE COMPACT STREET NAMES OPTION TO OBTAIN * \\* STREET NAMES FORMATTED FOR DISPLAY * \\* (5) MOVE WA2'S LOW PBSC FIELD TO WA1'S INPUT STREET * \\* CODE 1 FIELD * \\* (6) MOVE WA2'S HIGH PBSC FIELD TO WA1'S INPUT STREET * \\* CODE 2 FIELD * \\* (7) CALL GBI WITH 1 WORKAREA * \\* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ************************************************************* SPACE \\* Clear WA1 to blanks LA R8,W1BAL \"To\" address for MVCL LA R9,W1LENGTH \"To\" length XR R11,R11 for blanking out std WA1, ICM R11,B'1000',=C' ' rather than moving data \\* ...since if the \"from\" length reg. has lo-order zeroes, MVCL will \\* pad the target area with the pad character of the \"from\" register \\* and do nothing else (the \"from\" address register is not used). MVCL R8,R10 MVC W1ICDE1,W2F1CDEL MVC W1ICDE2,W2F1CDEH MVC W1IFUNC(2),=CL2'D ' MVC W1ISNL(L'W1ISNL),=C'25' normalized street name length MVI W1ICMPCT,C'C' streets to be compacted CALL GBI,W1BAL,VL Call Function D \\* Check Return code CLC W1ORC(2),=C'00' Good return? BNE ERREXIT No, error or warning \\* Yes, complete the record \\* and write it out PUTREC DS 0H MVC OLOSTRT,W1OSTRT1 MVC OHISTRT,W1OSTRT2 \\* Print an output record and get the next input record, if any PUT OUTFILE,OUTVALID B NEXTREC EXIT DS 0H OUTOPNER DS 0H CLOSE (INFILE) TM OUTFILE+48,X'10' Did OUTFILE open successfully? BNO INOPNERR No, bypass closing it CLOSE (OUTFILE) ASSEMBLER SAMPLE PROGRAM #1- Job stream- MSW (continue) INOPNERR DS 0H L R13,4(,R13) L R14,12(,R13) LM R0,R12,20(R13) BR R14 SPACE 2 PARAMERR DS 0H parameter error, missing or invalid LA R15,8 rc=8 B EXIT TITLE 'DATA SECTION - REGISTER ASSIGNMENTS' R0 EQU 0 R1 EQU 1 R2 EQU 2 R3 EQU 3 R4 EQU 4 R5 EQU 5 R6 EQU 6 R7 EQU 7 R8 EQU 8 R9 EQU 9 R10 EQU 10 R11 EQU 11 R12 EQU 12 R13 EQU 13 R14 EQU 14 R15 EQU 15 TITLE 'FILE AND RECORD DEFINITIONS' PUSH PRINT PRINT NOGEN INFILE DCB DSORG=PS,MACRF=(GM),DDNAME=INFILE, * RECFM=FB,LRECL=80,BLKSIZE=400,EODAD=EXIT SPACE OUTFILE DCB DSORG=PS,MACRF=(PM),DDNAME=SYSPRINT, * RECFM=FBA,LRECL=133,BLKSIZE=1330 * POP PRINT SPACE INREC DS 0CL80 Input record INBORO DS CL1 Borough code INHOUSE DS CL12 House number INSTREET DS CL32 Street name DC 35C' ' filler SPACE \\* Output records: error, warning, and normal ERR1 DS 0CL133 DC C'0' ERINPUT DS CL48 DC C'*** FUNCTION ' ERFUNC DS CL2 DC C' GRC = ' ERRET DS CL2 DC C' REASON CODE = ' ERREAS DS CL1 DC CL(133-89)' ' SPACE WRN1 DS 0CL133 DC C'0' WRINPUT DS CL48 DC C'*** FUNCTION ' WRFUNC DS CL2 DC C' WARNING, GRC = ' WRRET DS CL2 DC C' REASON CODE = ' WRREAS DS CL1 DC CL(133-98)' ' SPACE ERRWRN2 DS 0CL133 DC C' ' DC 48C' ' Boro Code, House Number, Street Name DC CL4'*** ' ERRWRN DS CL80 Error/Warning message SPACE HDR1 DC CL133'1SAMPLE ASSEMBLER \\#1 EXECUTION OUTPUT * ' HDR2 DC CL133'0*****---------- INPUT ADDRESS ------------***** \\*C ****--------------------- SELECTED OUTPUT ITEMS --------C ----------------------*****' HDR3 DC CL133'0B HOUSE NUMBER IN-STREET-NAME * ZIP CD NYPD-PCT SCHLDST LOW CROSS STREET HIGH * CROSS STREET ' HDR4 DC CL133' - ------------ -------------------------------- -* ---- -- -------- ------- ------------------------- -----* ---------------------------' OUTVALID DS 0CL133 \\* Borough code, house number, and street name are from input record DC C'0' OINPUT DS CL48 OZIP DS CL5 DC C' ' OCOMM DS CL2 DC C' ' OPCT DS CL3 DC 6C' ' OSCHL DS CL2 DC 6C' ' OLOSTRT DS CL25 Normalized name of intersecting street at low end DC C' ' OHISTRT DS CL25 Normalized name of intersecting street at high end DC 7C' ' TITLE 'WORKING VARIABLES, VALUES, ETC.' MYSAVE DC 18F'0' *********************************************************************** ***** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE *** ***** COPY STATEMENTS) IS STRONGLY ENCOURAGED. *** *********************************************************************** COPY W1BAL COPY WORK AREA 1 EJECT COPY W2BAL COPY WORK AREA 2 EJECT SPACE 2 DSPLYIN DS 0CL48 DBORO DS CL1 DC C' ' DHSE DS CL12 DC C' ' DSTRT DS CL32 DC C' ' SPACE 2 TITLE 'CONSTANTS AND LITERAL POOL' SPACE 2 LTORG END ASMF1SRC //LKED.SYSIN DD * INCLUDE INCLIB(GBI) /* //LKED.INCLIB DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* THE STEPLIB (OR JOBLIB) OF THE GEOSUPPORT EXECUTION STEP \\*// //* MUST INCLUDE THE FOLLOWING TWO CONCATENATED DATASETS: \\*// //* A030.GEO.SUPPORT.PDSE.LOADLIB \\*// //* A030.GEO.SUPPORT.LOADLIB \\*// //* \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR //* DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* DD STATEMENTS FOR GEOSUPPORT DATA FILES (E.G. GRID, PAD, \\*// //* ETC) ARE NO LONGER NEEDED AND ARE IGNORED. GEOSUPPORT \\*// //* IS TAILORED TO USE STANDARD GEOSUPPORT DATA SET NAMES. \\*// //* TO USE NON-STANDARD FILES, SEE YOUR SYSTEMS PROGRAMMER \\*// //* \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* //SYSUDUMP DD SYSOUT=\\*,OUTLIM=2000 //SYSPRINT DD SYSOUT=* //INFILE DD * 122 READE ST 1500 DUANE ST 12-4 BROADWAY 4165-100 BAISLEY BLVD 4165-1000 BAISLEY BLVD /* // ASSEMBLER SAMPLE PROGRAM #1 \u2013Job Stream-MSW //ASMC1SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //** ASSEMBLER SAMPLE BATCH GEOSUPPORT USER APPLICATION PROGRAM \\#1 ** //** COW FORMAT ** //******************************************************************** //STEP1 EXEC ASMACLG, // PARM.ASM='OBJECT,NODECK', // PARM.LKED='XREF,LET,LIST,NCAL' //ASM.SYSLIB DD DSN=A030.GEO.COPYLIB2,DISP=SHR // DD DSN=A030.GEO.COPYLIB,DISP=SHR // DD DSN=SYS1.MACLIB,DISP=SHR //ASM.SYSIN DD * ASMC1SRC TITLE 'SAMPLE GEOSUPPORT ASSEMBLER PROGRAM 1 - COW FORMAT' ASMC1SRC CSECT ***************************************************************** \\* THIS PROGRAM MAKES FUNCTION 1 AND D CALLS TO GEOSUPPORT USING * \\* BORO, HOUSENUMBER, & STREET NAME SUPPLIED BY AN INSTREAM FILE.* \\* FUNCTION 1 RETURNS GEOGRAPHIC INFORMATION FOR AN ADDRESS. * \\* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. * \\* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * \\* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE * \\* ORIGINAL CALL TO FUNCTION 1, ALL THE CROSS STREET NAMES * \\* WOULD HAVE BEEN RETURNED BY FUNCTION 1. * ***************************************************************** * *********************************************************************** \\* * \\* This program will do the following: * \\* * \\* * Read an instream record containing a house number, * \\* street name, and borough code * \\* * \\* * Build Work Area 1 for a Function 1 call * \\* * \\* * Call Function 1 * \\* * \\* * Get ZIP code, community district, police precinct, school * \\* district, and lists of street codes of streets intersecting * \\* at the low and high ends of the input street address's block. * \\* These will be displayed along with the input address which * \\* consists of borough code, house number, and street name. * \\* * \\* * Call Function D to get the street names of the first * \\* intersecting street on both low and high ends. * \\* * \\* * Print the information * \\* * \\* NOTE that after each Geosupport call, the Return Code is checked. * \\* If it is greater than 01, an error message is printed, and * \\* the next input record, if any, is read. * \\* If it is 01, a warning message is printed, the input record is * \\* processed, and the next record is read. * \\* If it is zero, the input record is processed, and the next * \\* record is read. * \\* * *********************************************************************** SPACE STM R14,R12,12(R13) Save caller's registers LR R3,R15 LA R12,4095(,R3) (second base register LA R12,1(,R12) to accomodate Work Areas 1 and 2) USING ASMC1SRC,R3,R12 \\* Chain save areas LA R4,MYSAVE ST R13,4(,R4) Save caller's savearea address ST R4,8(,R13) Save pgm's savearea adr in caller savearea LR R13,R4 Ensure that R13 points to pgm's savearea SPACE 2 XR R15,R15 (set OS return code to zero) \\* Open input and output files OPEN (INFILE,,OUTFILE,(OUTPUT)) TM INFILE+48,X'10' Did input file open successfully? BNO INOPNERR (no..) TM OUTFILE+48,X'10' Did output file open successfully? BNO OUTOPNER (no..) \\* Print page and report header lines SPACE PUT OUTFILE,HDR1 PUT OUTFILE,HDR2 PUT OUTFILE,HDR3 PUT OUTFILE,HDR4 B NEXTREC SPACE 2 TITLE 'READ IN-STREAM INPUT AND PREPARE FUNCTION 1 CALL' \\* Read (next) input record NEXTREC DS 0H GET INFILE,INREC \\* Move input data to output record for display MVC DBORO,INBORO borough code MVC DHSE(L'INHOUSE),INHOUSE house number MVC DSTRT,INSTREET street name SPACE ***************************************************************** \\* TO MAKE A FUNCTION 1 CALL: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET WA1'S FUNCTION CODE FIELD TO 1 * \\* (3) MOVE THE INPUT BORO TO WA1'S INPUT BORO CODE FIELD * \\* (4) MOVE THE INPUT HOUSE NUMBER TO WA1'S INPUT HOUSE NUMBER * \\* FIELD * \\* (5) MOVE THE INPUT STREET TO WA1'S INPUT STREET NAME FIELD * \\* (6) CALL GBI WITH 2 WORKAREAS * \\* (7) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ***************************************************************** \\* Clear WA1 to blanks LA R8,P1BAL \"To\" address for MVCL LA R9,P1LENGTH \"To\" length XR R11,R11 for blanking out std WA1, ICM R11,B'1000',=C' ' rather than moving data \\* ...since if the \"from\" length reg. has lo-order zeroes, MVCL will \\* pad the target area with the pad character of the \"from\" register \\* and do nothing else (the \"from\" address register is not used). MVCL R8,R10 SPACE \\* Prime Work Area 1 for Function 1 call MVI P1IPLIND,C'C' Set Work Area Format to COW MVC P1IFUNC,=CL2'1 ' Get function code MVC P1IBORO1,INBORO borough code * \\* Note COW - MSW: Display House # - P1IHSE# is a 16-byte field \\* W1IHSE# is a 12-byte field * MVC P1IHSE#(L'INHOUSE),INHOUSE house number MVC P1ISTRT1,INSTREET street name * \\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\* * \\* As of Geosupport Version 10.1, * \\* to receive roadbed-specific information, * \\* set the Roadbed Request Switch to 'R', as follows: * \\* MVC P1IRBRQS,C'R' * \\* * \\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * MVC P1ISNL(L'P1ISNL),=C'25' Normalized street name length \\* Call Function 1 (2-Work-Area call) CALL GBI,(P1BAL,P2BAL),VL \\* Check Return code CLC P1ORC(2),=C'00' Good return? BE PROCESS Yes, process returned data \\* Handle errors and warnings ERREXIT DS 0H CLC P1ORC(2),=C'01' Warning condition? BE PUTWARN Yes, process warning \\* and then process input; \\* otherwise, process error MVC ERINPUT,DSPLYIN Boro code, hse no., street name MVC ERFUNC,P1IFUNC function code MVC ERRET(L'P1ORC),P1ORC return code MVC ERREAS(L'P1OREASN),P1OREASN reason code PUT OUTFILE,ERR1 Print error messages 1 B PUTMSG and 2 PUTWARN DS 0H MVC WRINPUT,DSPLYIN Boro code, hse no., street name MVC WRFUNC,P1IFUNC function code MVC WRRET(L'P1ORC),P1ORC return code MVC WRREAS(L'P1OREASN),P1OREASN reason code PUT OUTFILE,WRN1 Print warning messages 1 PUTMSG DS 0H and 2 MVC ERRWRN(L'P1OERROR),P1OERROR PUT OUTFILE,ERRWRN2 Print error/warning message 2 CLC P1ORC(2),=C'01' Warning condition? BNE NEXTREC No, get next record, if any MVI OINPUT,C' ' Yes, MVC OINPUT+1(L'OINPUT-1),OINPUT ensure input NOT displayd MVI OUTVALID,C' ' ensure single-spacing after warning B GETZIP and continue normal processing SPACE \\* Handle successful Geosupport calls (Return Code <= 01) PROCESS DS 0H MVC OINPUT,DSPLYIN Boro code, hse no., street name MVI OUTVALID,C'0' Ensure double-spacing GETZIP DS 0H MVC OZIP,P2F1ZIP ZIP code MVC OCOMM,P2F1CDN community district number MVC OPCT,P2F1POP police precinct MVC OSCHL,P2F1SCH school district ***** At this point, clear WA1 again, call Function D, and move ****** ***** its reported Low and High Intersecting Street Names to output * TITLE 'GET LOW, HIGH INTERSECTING STREETS, USING FUNCTION D' SPACE 2 ************************************************************* \\* THIS PROGRAM ASSUMES THERE EXISTS AT LEAST ONE HIGH AND * \\* ONE LOW CROSS STREET. TO GET THE STREET NAMES OF THE * \\* FIRST-LISTED HIGH AND FIRST-LISTED LOW CROSS STREETS * \\* FROM THE HIGH AND LOW STREET CODE LISTS CALL FUNCTION D: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET WA1'S FUNCTION CODE FIELD TO D * \\* (3) SET WA1'S STREET NAME LENGTH FIELD TO DESIRED * \\* VALUE (IN THIS CASE 25 BECAUSE THE REPORT LINE * \\* HAS SPACE FOR ONLY 25 CHARACTERS) * \\* (4) USE THE COMPACT STREET NAMES OPTION TO OBTAIN * \\* STREET NAMES FORMATTED FOR DISPLAY * \\* (5) MOVE WA2'S LOW B5SC FIELD TO WA1'S INPUT STREET * \\* CODE 1 FIELD * \\* (6) MOVE WA2'S HIGH B5SC FIELD TO WA1'S INPUT STREET * \\* CODE 2 FIELD * \\* (7) CALL GBI WITH 1 WORKAREA * \\* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ************************************************************* SPACE \\* Clear WA1 to blanks LA R8,P1BAL \"To\" address for MVCL LA R9,P1LENGTH \"To\" length XR R11,R11 for blanking out std WA1, ICM R11,B'1000',=C' ' rather than moving data \\* ...since if the \"from\" length reg. has lo-order zeroes, MVCL will \\* pad the target area with the pad character of the \"from\" register and do nothing else (the \"from\" address register is not used). MVCL R8,R10 MVI P1IPLIND,C'C' Set Work Area Format to COW * \\* Note COW - MSW: P1ICDEx is the 10-digit street code (no boro) \\* P1IBCDx is the Boro and 10-digit street code \\* W1ICDEx is the packed Boro and 5-digit street code \\* P2F1CDEx is Boro and 5-digit street code list \\* W2F1CDEx is packed Boro and 5-digit street code list * MVC P1IBCD1(6),P2F1CDEL MVC P1IBCD2(6),P2F1CDEH MVC P1IFUNC(2),=CL2'D ' MVC P1ISNL(L'P1ISNL),=C'25' normalized street name length MVI P1ICMPCT,C'C' streets to be compacted CALL GBI,P1BAL,VL Call Function D \\* Check Return code CLC P1ORC(2),=C'00' Good return? BNE ERREXIT No, error or warning \\* Yes, complete the record \\* and write it out PUTREC DS 0H MVC OLOSTRT,P1OSTRT1 MVC OHISTRT,P1OSTRT2 \\* Print an output record and get the next input record, if any PUT OUTFILE,OUTVALID B NEXTREC EXIT DS 0H OUTOPNER DS 0H CLOSE (INFILE) TM OUTFILE+48,X'10' Did OUTFILE open successfully? BNO INOPNERR No, bypass closing it CLOSE (OUTFILE) INOPNERR DS 0H L R13,4(,R13) L R14,12(,R13) LM R0,R12,20(R13) BR R14 SPACE 2 PARAMERR DS 0H parameter error, missing or invalid LA R15,8 rc=8 B EXIT TITLE 'DATA SECTION - REGISTER ASSIGNMENTS' R0 EQU 0 R1 EQU 1 R2 EQU 2 R3 EQU 3 R4 EQU 4 R5 EQU 5 R6 EQU 6 R7 EQU 7 R8 EQU 8 R9 EQU 9 R10 EQU 10 R11 EQU 11 R12 EQU 12 R13 EQU 13 R14 EQU 14 R15 EQU 15 TITLE 'FILE AND RECORD DEFINITIONS' PUSH PRINT PRINT NOGEN INFILE DCB DSORG=PS,MACRF=(GM),DDNAME=INFILE, * RECFM=FB,LRECL=80,BLKSIZE=400,EODAD=EXIT SPACE OUTFILE DCB DSORG=PS,MACRF=(PM),DDNAME=SYSPRINT, * RECFM=FBA,LRECL=133,BLKSIZE=1330 * POP PRINT SPACE INREC DS 0CL80 Input record INBORO DS CL1 Borough code INHOUSE DS CL12 House number INSTREET DS CL32 Street name DC 35C' ' filler SPACE \\* Output records: error, warning, and normal ERR1 DS 0CL133 DC C'0' ERINPUT DS CL48 DC C'*** FUNCTION ' ERFUNC DS CL2 DC C' GRC = ' ERRET DS CL2 DC C' REASON CODE = ' ERREAS DS CL1 DC CL(133-89)' ' SPACE WRN1 DS 0CL133 DC C'0' WRINPUT DS CL48 DC C'*** FUNCTION ' WRFUNC DS CL2 DC C' WARNING, GRC = ' WRRET DS CL2 DC C' REASON CODE = ' WRREAS DS CL1 DC CL(133-98)' ' SPACE ERRWRN2 DS 0CL133 DC C' ' DC 48C' ' Boro Code, House Number, Street Name DC CL4'*** ' ERRWRN DS CL80 Error/Warning message SPACE HDR1 DC CL133'1SAMPLE ASSEMBLER \\#1 EXECUTION OUTPUT * ' HDR2 DC CL133'0*****---------- INPUT ADDRESS ------------***** \\*C ****--------------------- SELECTED OUTPUT ITEMS --------C ----------------------*****' HDR3 DC CL133'0B HOUSE NUMBER IN-STREET-NAME * ZIP CD NYPD-PCT SCHLDST LOW CROSS STREET HIGH * CROSS STREET ' HDR4 DC CL133' - ------------ -------------------------------- -* ---- -- -------- ------- ------------------------- -----* ---------------------------' OUTVALID DS 0CL133 \\* Borough code, house number, and street name are from input record DC C'0' OINPUT DS CL48 OZIP DS CL5 DC C' ' OCOMM DS CL2 DC C' ' OPCT DS CL3 DC 6C' ' OSCHL DS CL2 DC 6C' ' OLOSTRT DS CL25 Normalized name of intersecting street at low end DC C' ' OHISTRT DS CL25 Normalized name of intersecting street at high end DC 7C' ' TITLE 'WORKING VARIABLES, VALUES, ETC.' MYSAVE DC 18F'0' *********************************************************************** ***** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE *** ***** COPY STATEMENTS) IS STRONGLY ENCOURAGED. *** *********************************************************************** COPY P1BAL COPY WORK AREA 1 EJECT COPY P2BAL COPY WORK AREA 2 EJECT SPACE 2 DSPLYIN DS 0CL48 DBORO DS CL1 DC C' ' DHSE DS CL12 DC C' ' DSTRT DS CL32 DC C' ' SPACE 2 TITLE 'CONSTANTS AND LITERAL POOL' SPACE 2 LTORG END ASMC1SRC //LKED.SYSIN DD * INCLUDE INCLIB(GBI) /* //LKED.INCLIB DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* GEO.SUPPORT.PDSE.LOADLIB AND GEO.SUPPORT.LOADLIB \\*// //* ARE REQUIRED IN THE STEPLIB (OR JOBLIB) OF THE \\*// //* GEOSUPPORT EXECUTION STEP. \\*// //* \\*// //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR //* DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* DD STATEMENTS ARE NO LONGER USED TO DEFINE? \\*// //* GEOSUPPORT DATA FILES. \\*// //* DD STATEMENTS ARE NO LONGER INCLUDED FOR THE \\*// //* GEOSUPPORT FOREGROUND FILES. \\*// //* TO USE NON-STANDARD FILES, SEE YOUR SYSTEMS PROGRAMMER \\*// //* \\*// //SYSUDUMP DD SYSOUT=\\*,OUTLIM=2000 //SYSPRINT DD SYSOUT=* //INFILE DD * 122 READE ST 1500 DUANE ST 12-4 BROADWAY 4165-100 BAISLEY BLVD 4165-1000 BAISLEY BLVD /* //
ASSEMBLER SAMPLE PROGRAM \\#1 \u2013Job Stream-COW
//ASMC1SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //** ASSEMBLER SAMPLE BATCH GEOSUPPORT USER APPLICATION PROGRAM \\#1 ** //** COW FORMAT ** //******************************************************************** //STEP1 EXEC ASMACLG, // PARM.ASM='OBJECT,NODECK', // PARM.LKED='XREF,LET,LIST,NCAL' //ASM.SYSLIB DD DSN=A030.GEO.COPYLIB2,DISP=SHR // DD DSN=A030.GEO.COPYLIB,DISP=SHR // DD DSN=SYS1.MACLIB,DISP=SHR //ASM.SYSIN DD * ASMC1SRC TITLE 'SAMPLE GEOSUPPORT ASSEMBLER PROGRAM 1 - COW FORMAT' ASMC1SRC CSECT ***************************************************************** \\* THIS PROGRAM MAKES FUNCTION 1 AND D CALLS TO GEOSUPPORT USING * \\* BORO, HOUSENUMBER, & STREET NAME SUPPLIED BY AN INSTREAM FILE.* \\* FUNCTION 1 RETURNS GEOGRAPHIC INFORMATION FOR AN ADDRESS. * \\* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. * \\* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * \\* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE * \\* ORIGINAL CALL TO FUNCTION 1, ALL THE CROSS STREET NAMES * \\* WOULD HAVE BEEN RETURNED BY FUNCTION 1. * ***************************************************************** * *********************************************************************** \\* * \\* This program will do the following: * \\* * \\* * Read an instream record containing a house number, * \\* street name, and borough code * \\* * \\* * Build Work Area 1 for a Function 1 call * \\* * \\* * Call Function 1 * \\* * \\* * Get ZIP code, community district, police precinct, school * \\* district, and lists of street codes of streets intersecting * \\* at the low and high ends of the input street address's block. * \\* These will be displayed along with the input address which * \\* consists of borough code, house number, and street name. * \\* * \\* * Call Function D to get the street names of the first * \\* intersecting street on both low and high ends. * \\* * \\* * Print the information * \\* * \\* NOTE that after each Geosupport call, the Return Code is checked. * \\* If it is greater than 01, an error message is printed, and * \\* the next input record, if any, is read. * \\* If it is 01, a warning message is printed, the input record is * \\* processed, and the next record is read. * \\* If it is zero, the input record is processed, and the next * \\* record is read. * \\* * *********************************************************************** SPACE STM R14,R12,12(R13) Save caller's registers LR R3,R15 LA R12,4095(,R3) (second base register LA R12,1(,R12) to accomodate Work Areas 1 and 2) USING ASMC1SRC,R3,R12 \\* Chain save areas LA R4,MYSAVE ST R13,4(,R4) Save caller's savearea address ST R4,8(,R13) Save pgm's savearea adr in caller savearea LR R13,R4 Ensure that R13 points to pgm's savearea SPACE 2 XR R15,R15 (set OS return code to zero) \\* Open input and output files OPEN (INFILE,,OUTFILE,(OUTPUT)) TM INFILE+48,X'10' Did input file open successfully? BNO INOPNERR (no..) TM OUTFILE+48,X'10' Did output file open successfully? BNO OUTOPNER (no..) \\* Print page and report header lines SPACE PUT OUTFILE,HDR1 PUT OUTFILE,HDR2 PUT OUTFILE,HDR3 PUT OUTFILE,HDR4 B NEXTREC SPACE 2 TITLE 'READ IN-STREAM INPUT AND PREPARE FUNCTION 1 CALL' \\* Read (next) input record NEXTREC DS 0H GET INFILE,INREC \\* Move input data to output record for display MVC DBORO,INBORO borough code MVC DHSE(L'INHOUSE),INHOUSE house number MVC DSTRT,INSTREET street name SPACE ***************************************************************** \\* TO MAKE A FUNCTION 1 CALL: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET WA1'S FUNCTION CODE FIELD TO 1 * \\* (3) MOVE THE INPUT BORO TO WA1'S INPUT BORO CODE FIELD * \\* (4) MOVE THE INPUT HOUSE NUMBER TO WA1'S INPUT HOUSE NUMBER * \\* FIELD * \\* (5) MOVE THE INPUT STREET TO WA1'S INPUT STREET NAME FIELD * \\* (6) CALL GBI WITH 2 WORKAREAS * \\* (7) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ***************************************************************** \\* Clear WA1 to blanks LA R8,P1BAL \"To\" address for MVCL LA R9,P1LENGTH \"To\" length XR R11,R11 for blanking out std WA1, ICM R11,B'1000',=C' ' rather than moving data \\* ...since if the \"from\" length reg. has lo-order zeroes, MVCL will \\* pad the target area with the pad character of the \"from\" register \\* and do nothing else (the \"from\" address register is not used). MVCL R8,R10 SPACE \\* Prime Work Area 1 for Function 1 call MVI P1IPLIND,C'C' Set Work Area Format to COW MVC P1IFUNC,=CL2'1 ' Get function code MVC P1IBORO1,INBORO borough code * \\* Note COW - MSW: Display House # - P1IHSE# is a 16-byte field \\* W1IHSE# is a 12-byte field * MVC P1IHSE#(L'INHOUSE),INHOUSE house number MVC P1ISTRT1,INSTREET street name * \\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\* * \\* As of Geosupport Version 10.1, * \\* to receive roadbed-specific information, * \\* set the Roadbed Request Switch to 'R', as follows: * \\* MVC P1IRBRQS,C'R' * \\* * \\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * MVC P1ISNL(L'P1ISNL),=C'25' Normalized street name length \\* Call Function 1 (2-Work-Area call) CALL GBI,(P1BAL,P2BAL),VL \\* Check Return code CLC P1ORC(2),=C'00' Good return? BE PROCESS Yes, process returned data \\* Handle errors and warnings ERREXIT DS 0H CLC P1ORC(2),=C'01' Warning condition? BE PUTWARN Yes, process warning \\* and then process input; \\* otherwise, process error MVC ERINPUT,DSPLYIN Boro code, hse no., street name MVC ERFUNC,P1IFUNC function code MVC ERRET(L'P1ORC),P1ORC return code MVC ERREAS(L'P1OREASN),P1OREASN reason code PUT OUTFILE,ERR1 Print error messages 1 B PUTMSG and 2 PUTWARN DS 0H MVC WRINPUT,DSPLYIN Boro code, hse no., street name MVC WRFUNC,P1IFUNC function code MVC WRRET(L'P1ORC),P1ORC return code MVC WRREAS(L'P1OREASN),P1OREASN reason code PUT OUTFILE,WRN1 Print warning messages 1 PUTMSG DS 0H and 2 MVC ERRWRN(L'P1OERROR),P1OERROR PUT OUTFILE,ERRWRN2 Print error/warning message 2 CLC P1ORC(2),=C'01' Warning condition? BNE NEXTREC No, get next record, if any MVI OINPUT,C' ' Yes, MVC OINPUT+1(L'OINPUT-1),OINPUT ensure input NOT displayd MVI OUTVALID,C' ' ensure single-spacing after warning B GETZIP and continue normal processing SPACE \\* Handle successful Geosupport calls (Return Code <= 01) PROCESS DS 0H MVC OINPUT,DSPLYIN Boro code, hse no., street name MVI OUTVALID,C'0' Ensure double-spacing GETZIP DS 0H MVC OZIP,P2F1ZIP ZIP code MVC OCOMM,P2F1CDN community district number MVC OPCT,P2F1POP police precinct MVC OSCHL,P2F1SCH school district ***** At this point, clear WA1 again, call Function D, and move ****** ***** its reported Low and High Intersecting Street Names to output * TITLE 'GET LOW, HIGH INTERSECTING STREETS, USING FUNCTION D' SPACE 2 ************************************************************* \\* THIS PROGRAM ASSUMES THERE EXISTS AT LEAST ONE HIGH AND * \\* ONE LOW CROSS STREET. TO GET THE STREET NAMES OF THE * \\* FIRST-LISTED HIGH AND FIRST-LISTED LOW CROSS STREETS * \\* FROM THE HIGH AND LOW STREET CODE LISTS CALL FUNCTION D: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET WA1'S FUNCTION CODE FIELD TO D * \\* (3) SET WA1'S STREET NAME LENGTH FIELD TO DESIRED * \\* VALUE (IN THIS CASE 25 BECAUSE THE REPORT LINE * \\* HAS SPACE FOR ONLY 25 CHARACTERS) * \\* (4) USE THE COMPACT STREET NAMES OPTION TO OBTAIN * \\* STREET NAMES FORMATTED FOR DISPLAY * \\* (5) MOVE WA2'S LOW B5SC FIELD TO WA1'S INPUT STREET * \\* CODE 1 FIELD * \\* (6) MOVE WA2'S HIGH B5SC FIELD TO WA1'S INPUT STREET * \\* CODE 2 FIELD * \\* (7) CALL GBI WITH 1 WORKAREA * \\* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ************************************************************* SPACE \\* Clear WA1 to blanks LA R8,P1BAL \"To\" address for MVCL LA R9,P1LENGTH \"To\" length XR R11,R11 for blanking out std WA1, ICM R11,B'1000',=C' ' rather than moving data \\* ...since if the \"from\" length reg. has lo-order zeroes, MVCL will \\* pad the target area with the pad character of the \"from\" register and do nothing else (the \"from\" address register is not used). MVCL R8,R10 MVI P1IPLIND,C'C' Set Work Area Format to COW * \\* Note COW - MSW: P1ICDEx is the 10-digit street code (no boro) \\* P1IBCDx is the Boro and 10-digit street code \\* W1ICDEx is the packed Boro and 5-digit street code \\* P2F1CDEx is Boro and 5-digit street code list \\* W2F1CDEx is packed Boro and 5-digit street code list * MVC P1IBCD1(6),P2F1CDEL MVC P1IBCD2(6),P2F1CDEH MVC P1IFUNC(2),=CL2'D ' MVC P1ISNL(L'P1ISNL),=C'25' normalized street name length MVI P1ICMPCT,C'C' streets to be compacted CALL GBI,P1BAL,VL Call Function D \\* Check Return code CLC P1ORC(2),=C'00' Good return? BNE ERREXIT No, error or warning \\* Yes, complete the record \\* and write it out PUTREC DS 0H MVC OLOSTRT,P1OSTRT1 MVC OHISTRT,P1OSTRT2 \\* Print an output record and get the next input record, if any PUT OUTFILE,OUTVALID B NEXTREC EXIT DS 0H OUTOPNER DS 0H CLOSE (INFILE) TM OUTFILE+48,X'10' Did OUTFILE open successfully? BNO INOPNERR No, bypass closing it CLOSE (OUTFILE) INOPNERR DS 0H L R13,4(,R13) L R14,12(,R13) LM R0,R12,20(R13) BR R14 SPACE 2 PARAMERR DS 0H parameter error, missing or invalid LA R15,8 rc=8 B EXIT TITLE 'DATA SECTION - REGISTER ASSIGNMENTS' R0 EQU 0 R1 EQU 1 R2 EQU 2 R3 EQU 3 R4 EQU 4 R5 EQU 5 R6 EQU 6 R7 EQU 7 R8 EQU 8 R9 EQU 9 R10 EQU 10 R11 EQU 11 R12 EQU 12 R13 EQU 13 R14 EQU 14 R15 EQU 15 TITLE 'FILE AND RECORD DEFINITIONS' PUSH PRINT PRINT NOGEN INFILE DCB DSORG=PS,MACRF=(GM),DDNAME=INFILE, * RECFM=FB,LRECL=80,BLKSIZE=400,EODAD=EXIT SPACE OUTFILE DCB DSORG=PS,MACRF=(PM),DDNAME=SYSPRINT, * RECFM=FBA,LRECL=133,BLKSIZE=1330 * POP PRINT SPACE INREC DS 0CL80 Input record INBORO DS CL1 Borough code INHOUSE DS CL12 House number INSTREET DS CL32 Street name DC 35C' ' filler SPACE \\* Output records: error, warning, and normal ERR1 DS 0CL133 DC C'0' ERINPUT DS CL48 DC C'*** FUNCTION ' ERFUNC DS CL2 DC C' GRC = ' ERRET DS CL2 DC C' REASON CODE = ' ERREAS DS CL1 DC CL(133-89)' ' SPACE WRN1 DS 0CL133 DC C'0' WRINPUT DS CL48 DC C'*** FUNCTION ' WRFUNC DS CL2 DC C' WARNING, GRC = ' WRRET DS CL2 DC C' REASON CODE = ' WRREAS DS CL1 DC CL(133-98)' ' SPACE ERRWRN2 DS 0CL133 DC C' ' DC 48C' ' Boro Code, House Number, Street Name DC CL4'*** ' ERRWRN DS CL80 Error/Warning message SPACE HDR1 DC CL133'1SAMPLE ASSEMBLER \\#1 EXECUTION OUTPUT * ' HDR2 DC CL133'0*****---------- INPUT ADDRESS ------------***** \\*C ****--------------------- SELECTED OUTPUT ITEMS --------C ----------------------*****' HDR3 DC CL133'0B HOUSE NUMBER IN-STREET-NAME * ZIP CD NYPD-PCT SCHLDST LOW CROSS STREET HIGH * CROSS STREET ' HDR4 DC CL133' - ------------ -------------------------------- -* ---- -- -------- ------- ------------------------- -----* ---------------------------' OUTVALID DS 0CL133 \\* Borough code, house number, and street name are from input record DC C'0' OINPUT DS CL48 OZIP DS CL5 DC C' ' OCOMM DS CL2 DC C' ' OPCT DS CL3 DC 6C' ' OSCHL DS CL2 DC 6C' ' OLOSTRT DS CL25 Normalized name of intersecting street at low end DC C' ' OHISTRT DS CL25 Normalized name of intersecting street at high end DC 7C' ' TITLE 'WORKING VARIABLES, VALUES, ETC.' MYSAVE DC 18F'0' *********************************************************************** ***** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE *** ***** COPY STATEMENTS) IS STRONGLY ENCOURAGED. *** *********************************************************************** COPY P1BAL COPY WORK AREA 1 EJECT COPY P2BAL COPY WORK AREA 2 EJECT SPACE 2 DSPLYIN DS 0CL48 DBORO DS CL1 DC C' ' DHSE DS CL12 DC C' ' DSTRT DS CL32 DC C' ' SPACE 2 TITLE 'CONSTANTS AND LITERAL POOL' SPACE 2 LTORG END ASMC1SRC //LKED.SYSIN DD * INCLUDE INCLIB(GBI) /* //LKED.INCLIB DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* GEO.SUPPORT.PDSE.LOADLIB AND GEO.SUPPORT.LOADLIB \\*// //* ARE REQUIRED IN THE STEPLIB (OR JOBLIB) OF THE \\*// //* GEOSUPPORT EXECUTION STEP. \\*// //* \\*// //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR //* DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* DD STATEMENTS ARE NO LONGER USED TO DEFINE? \\*// //* GEOSUPPORT DATA FILES. \\*// //* DD STATEMENTS ARE NO LONGER INCLUDED FOR THE \\*// //* GEOSUPPORT FOREGROUND FILES. \\*// //* TO USE NON-STANDARD FILES, SEE YOUR SYSTEMS PROGRAMMER \\*// //* \\*// //SYSUDUMP DD SYSOUT=\\*,OUTLIM=2000 //SYSPRINT DD SYSOUT=* //INFILE DD * 122 READE ST 1500 DUANE ST 12-4 BROADWAY 4165-100 BAISLEY BLVD 4165-1000 BAISLEY BLVD /* // ASSEMBLER SAMPLE PROGRAM #1 \u2013Job Stream-COW //ASMC1SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //** ASSEMBLER SAMPLE BATCH GEOSUPPORT USER APPLICATION PROGRAM \\#1 ** //** COW FORMAT ** //******************************************************************** //STEP1 EXEC ASMACLG, // PARM.ASM='OBJECT,NODECK', // PARM.LKED='XREF,LET,LIST,NCAL' //ASM.SYSLIB DD DSN=A030.GEO.COPYLIB2,DISP=SHR // DD DSN=A030.GEO.COPYLIB,DISP=SHR // DD DSN=SYS1.MACLIB,DISP=SHR //ASM.SYSIN DD * ASMC1SRC TITLE 'SAMPLE GEOSUPPORT ASSEMBLER PROGRAM 1 - COW FORMAT' ASMC1SRC CSECT ***************************************************************** \\* THIS PROGRAM MAKES FUNCTION 1 AND D CALLS TO GEOSUPPORT USING * \\* BORO, HOUSENUMBER, & STREET NAME SUPPLIED BY AN INSTREAM FILE.* \\* FUNCTION 1 RETURNS GEOGRAPHIC INFORMATION FOR AN ADDRESS. * \\* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. * \\* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * \\* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE * \\* ORIGINAL CALL TO FUNCTION 1, ALL THE CROSS STREET NAMES * \\* WOULD HAVE BEEN RETURNED BY FUNCTION 1. * ***************************************************************** * *********************************************************************** \\* * \\* This program will do the following: * \\* * \\* * Read an instream record containing a house number, * \\* street name, and borough code * \\* * \\* * Build Work Area 1 for a Function 1 call * \\* * \\* * Call Function 1 * \\* * \\* * Get ZIP code, community district, police precinct, school * \\* district, and lists of street codes of streets intersecting * \\* at the low and high ends of the input street address's block. * \\* These will be displayed along with the input address which * \\* consists of borough code, house number, and street name. * \\* * \\* * Call Function D to get the street names of the first * \\* intersecting street on both low and high ends. * \\* * \\* * Print the information * \\* * \\* NOTE that after each Geosupport call, the Return Code is checked. * \\* If it is greater than 01, an error message is printed, and * \\* the next input record, if any, is read. * \\* If it is 01, a warning message is printed, the input record is * \\* processed, and the next record is read. * \\* If it is zero, the input record is processed, and the next * \\* record is read. * \\* * *********************************************************************** SPACE STM R14,R12,12(R13) Save caller's registers LR R3,R15 LA R12,4095(,R3) (second base register LA R12,1(,R12) to accomodate Work Areas 1 and 2) USING ASMC1SRC,R3,R12 \\* Chain save areas LA R4,MYSAVE ST R13,4(,R4) Save caller's savearea address ST R4,8(,R13) Save pgm's savearea adr in caller savearea LR R13,R4 Ensure that R13 points to pgm's savearea SPACE 2 XR R15,R15 (set OS return code to zero) \\* Open input and output files OPEN (INFILE,,OUTFILE,(OUTPUT)) TM INFILE+48,X'10' Did input file open successfully? BNO INOPNERR (no..) TM OUTFILE+48,X'10' Did output file open successfully? BNO OUTOPNER (no..) \\* Print page and report header lines SPACE PUT OUTFILE,HDR1 PUT OUTFILE,HDR2 PUT OUTFILE,HDR3 PUT OUTFILE,HDR4 B NEXTREC SPACE 2 TITLE 'READ IN-STREAM INPUT AND PREPARE FUNCTION 1 CALL' \\* Read (next) input record NEXTREC DS 0H GET INFILE,INREC \\* Move input data to output record for display MVC DBORO,INBORO borough code MVC DHSE(L'INHOUSE),INHOUSE house number MVC DSTRT,INSTREET street name SPACE ***************************************************************** \\* TO MAKE A FUNCTION 1 CALL: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET WA1'S FUNCTION CODE FIELD TO 1 * \\* (3) MOVE THE INPUT BORO TO WA1'S INPUT BORO CODE FIELD * \\* (4) MOVE THE INPUT HOUSE NUMBER TO WA1'S INPUT HOUSE NUMBER * \\* FIELD * \\* (5) MOVE THE INPUT STREET TO WA1'S INPUT STREET NAME FIELD * \\* (6) CALL GBI WITH 2 WORKAREAS * \\* (7) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ***************************************************************** \\* Clear WA1 to blanks LA R8,P1BAL \"To\" address for MVCL LA R9,P1LENGTH \"To\" length XR R11,R11 for blanking out std WA1, ICM R11,B'1000',=C' ' rather than moving data \\* ...since if the \"from\" length reg. has lo-order zeroes, MVCL will \\* pad the target area with the pad character of the \"from\" register \\* and do nothing else (the \"from\" address register is not used). MVCL R8,R10 SPACE \\* Prime Work Area 1 for Function 1 call MVI P1IPLIND,C'C' Set Work Area Format to COW MVC P1IFUNC,=CL2'1 ' Get function code MVC P1IBORO1,INBORO borough code * \\* Note COW - MSW: Display House # - P1IHSE# is a 16-byte field \\* W1IHSE# is a 12-byte field * MVC P1IHSE#(L'INHOUSE),INHOUSE house number MVC P1ISTRT1,INSTREET street name * \\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\* * \\* As of Geosupport Version 10.1, * \\* to receive roadbed-specific information, * \\* set the Roadbed Request Switch to 'R', as follows: * \\* MVC P1IRBRQS,C'R' * \\* * \\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * MVC P1ISNL(L'P1ISNL),=C'25' Normalized street name length \\* Call Function 1 (2-Work-Area call) CALL GBI,(P1BAL,P2BAL),VL \\* Check Return code CLC P1ORC(2),=C'00' Good return? BE PROCESS Yes, process returned data \\* Handle errors and warnings ERREXIT DS 0H CLC P1ORC(2),=C'01' Warning condition? BE PUTWARN Yes, process warning \\* and then process input; \\* otherwise, process error MVC ERINPUT,DSPLYIN Boro code, hse no., street name MVC ERFUNC,P1IFUNC function code MVC ERRET(L'P1ORC),P1ORC return code MVC ERREAS(L'P1OREASN),P1OREASN reason code PUT OUTFILE,ERR1 Print error messages 1 B PUTMSG and 2 PUTWARN DS 0H MVC WRINPUT,DSPLYIN Boro code, hse no., street name MVC WRFUNC,P1IFUNC function code MVC WRRET(L'P1ORC),P1ORC return code MVC WRREAS(L'P1OREASN),P1OREASN reason code PUT OUTFILE,WRN1 Print warning messages 1 PUTMSG DS 0H and 2 MVC ERRWRN(L'P1OERROR),P1OERROR PUT OUTFILE,ERRWRN2 Print error/warning message 2 CLC P1ORC(2),=C'01' Warning condition? BNE NEXTREC No, get next record, if any MVI OINPUT,C' ' Yes, MVC OINPUT+1(L'OINPUT-1),OINPUT ensure input NOT displayd MVI OUTVALID,C' ' ensure single-spacing after warning B GETZIP and continue normal processing SPACE \\* Handle successful Geosupport calls (Return Code <= 01) PROCESS DS 0H MVC OINPUT,DSPLYIN Boro code, hse no., street name MVI OUTVALID,C'0' Ensure double-spacing GETZIP DS 0H MVC OZIP,P2F1ZIP ZIP code MVC OCOMM,P2F1CDN community district number MVC OPCT,P2F1POP police precinct MVC OSCHL,P2F1SCH school district ***** At this point, clear WA1 again, call Function D, and move ****** ***** its reported Low and High Intersecting Street Names to output * TITLE 'GET LOW, HIGH INTERSECTING STREETS, USING FUNCTION D' SPACE 2 ************************************************************* \\* THIS PROGRAM ASSUMES THERE EXISTS AT LEAST ONE HIGH AND * \\* ONE LOW CROSS STREET. TO GET THE STREET NAMES OF THE * \\* FIRST-LISTED HIGH AND FIRST-LISTED LOW CROSS STREETS * \\* FROM THE HIGH AND LOW STREET CODE LISTS CALL FUNCTION D: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET WA1'S FUNCTION CODE FIELD TO D * \\* (3) SET WA1'S STREET NAME LENGTH FIELD TO DESIRED * \\* VALUE (IN THIS CASE 25 BECAUSE THE REPORT LINE * \\* HAS SPACE FOR ONLY 25 CHARACTERS) * \\* (4) USE THE COMPACT STREET NAMES OPTION TO OBTAIN * \\* STREET NAMES FORMATTED FOR DISPLAY * \\* (5) MOVE WA2'S LOW B5SC FIELD TO WA1'S INPUT STREET * \\* CODE 1 FIELD * \\* (6) MOVE WA2'S HIGH B5SC FIELD TO WA1'S INPUT STREET * \\* CODE 2 FIELD * \\* (7) CALL GBI WITH 1 WORKAREA * \\* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ************************************************************* SPACE \\* Clear WA1 to blanks LA R8,P1BAL \"To\" address for MVCL LA R9,P1LENGTH \"To\" length XR R11,R11 for blanking out std WA1, ICM R11,B'1000',=C' ' rather than moving data \\* ...since if the \"from\" length reg. has lo-order zeroes, MVCL will \\* pad the target area with the pad character of the \"from\" register and do nothing else (the \"from\" address register is not used). MVCL R8,R10 MVI P1IPLIND,C'C' Set Work Area Format to COW * \\* Note COW - MSW: P1ICDEx is the 10-digit street code (no boro) \\* P1IBCDx is the Boro and 10-digit street code \\* W1ICDEx is the packed Boro and 5-digit street code \\* P2F1CDEx is Boro and 5-digit street code list \\* W2F1CDEx is packed Boro and 5-digit street code list * MVC P1IBCD1(6),P2F1CDEL MVC P1IBCD2(6),P2F1CDEH MVC P1IFUNC(2),=CL2'D ' MVC P1ISNL(L'P1ISNL),=C'25' normalized street name length MVI P1ICMPCT,C'C' streets to be compacted CALL GBI,P1BAL,VL Call Function D \\* Check Return code CLC P1ORC(2),=C'00' Good return? BNE ERREXIT No, error or warning \\* Yes, complete the record \\* and write it out PUTREC DS 0H MVC OLOSTRT,P1OSTRT1 MVC OHISTRT,P1OSTRT2 \\* Print an output record and get the next input record, if any PUT OUTFILE,OUTVALID B NEXTREC EXIT DS 0H OUTOPNER DS 0H CLOSE (INFILE) TM OUTFILE+48,X'10' Did OUTFILE open successfully? BNO INOPNERR No, bypass closing it CLOSE (OUTFILE) INOPNERR DS 0H L R13,4(,R13) L R14,12(,R13) LM R0,R12,20(R13) BR R14 SPACE 2 PARAMERR DS 0H parameter error, missing or invalid LA R15,8 rc=8 B EXIT TITLE 'DATA SECTION - REGISTER ASSIGNMENTS' R0 EQU 0 R1 EQU 1 R2 EQU 2 R3 EQU 3 R4 EQU 4 R5 EQU 5 R6 EQU 6 R7 EQU 7 R8 EQU 8 R9 EQU 9 R10 EQU 10 R11 EQU 11 R12 EQU 12 R13 EQU 13 R14 EQU 14 R15 EQU 15 TITLE 'FILE AND RECORD DEFINITIONS' PUSH PRINT PRINT NOGEN INFILE DCB DSORG=PS,MACRF=(GM),DDNAME=INFILE, * RECFM=FB,LRECL=80,BLKSIZE=400,EODAD=EXIT SPACE OUTFILE DCB DSORG=PS,MACRF=(PM),DDNAME=SYSPRINT, * RECFM=FBA,LRECL=133,BLKSIZE=1330 * POP PRINT SPACE INREC DS 0CL80 Input record INBORO DS CL1 Borough code INHOUSE DS CL12 House number INSTREET DS CL32 Street name DC 35C' ' filler SPACE \\* Output records: error, warning, and normal ERR1 DS 0CL133 DC C'0' ERINPUT DS CL48 DC C'*** FUNCTION ' ERFUNC DS CL2 DC C' GRC = ' ERRET DS CL2 DC C' REASON CODE = ' ERREAS DS CL1 DC CL(133-89)' ' SPACE WRN1 DS 0CL133 DC C'0' WRINPUT DS CL48 DC C'*** FUNCTION ' WRFUNC DS CL2 DC C' WARNING, GRC = ' WRRET DS CL2 DC C' REASON CODE = ' WRREAS DS CL1 DC CL(133-98)' ' SPACE ERRWRN2 DS 0CL133 DC C' ' DC 48C' ' Boro Code, House Number, Street Name DC CL4'*** ' ERRWRN DS CL80 Error/Warning message SPACE HDR1 DC CL133'1SAMPLE ASSEMBLER \\#1 EXECUTION OUTPUT * ' HDR2 DC CL133'0*****---------- INPUT ADDRESS ------------***** \\*C ****--------------------- SELECTED OUTPUT ITEMS --------C ----------------------*****' HDR3 DC CL133'0B HOUSE NUMBER IN-STREET-NAME * ZIP CD NYPD-PCT SCHLDST LOW CROSS STREET HIGH * CROSS STREET ' HDR4 DC CL133' - ------------ -------------------------------- -* ---- -- -------- ------- ------------------------- -----* ---------------------------' OUTVALID DS 0CL133 \\* Borough code, house number, and street name are from input record DC C'0' OINPUT DS CL48 OZIP DS CL5 DC C' ' OCOMM DS CL2 DC C' ' OPCT DS CL3 DC 6C' ' OSCHL DS CL2 DC 6C' ' OLOSTRT DS CL25 Normalized name of intersecting street at low end DC C' ' OHISTRT DS CL25 Normalized name of intersecting street at high end DC 7C' ' TITLE 'WORKING VARIABLES, VALUES, ETC.' MYSAVE DC 18F'0' *********************************************************************** ***** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE *** ***** COPY STATEMENTS) IS STRONGLY ENCOURAGED. *** *********************************************************************** COPY P1BAL COPY WORK AREA 1 EJECT COPY P2BAL COPY WORK AREA 2 EJECT SPACE 2 DSPLYIN DS 0CL48 DBORO DS CL1 DC C' ' DHSE DS CL12 DC C' ' DSTRT DS CL32 DC C' ' SPACE 2 TITLE 'CONSTANTS AND LITERAL POOL' SPACE 2 LTORG END ASMC1SRC //LKED.SYSIN DD * INCLUDE INCLIB(GBI) /* //LKED.INCLIB DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* GEO.SUPPORT.PDSE.LOADLIB AND GEO.SUPPORT.LOADLIB \\*// //* ARE REQUIRED IN THE STEPLIB (OR JOBLIB) OF THE \\*// //* GEOSUPPORT EXECUTION STEP. \\*// //* \\*// //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR //* DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* DD STATEMENTS ARE NO LONGER USED TO DEFINE? \\*// //* GEOSUPPORT DATA FILES. \\*// //* DD STATEMENTS ARE NO LONGER INCLUDED FOR THE \\*// //* GEOSUPPORT FOREGROUND FILES. \\*// //* TO USE NON-STANDARD FILES, SEE YOUR SYSTEMS PROGRAMMER \\*// //* \\*// //SYSUDUMP DD SYSOUT=\\*,OUTLIM=2000 //SYSPRINT DD SYSOUT=* //INFILE DD * 122 READE ST 1500 DUANE ST 12-4 BROADWAY 4165-100 BAISLEY BLVD 4165-1000 BAISLEY BLVD /* // SAMPLE ASSEMBLER #1 EXECUTION OUTPUT *****---------- INPUT ADDRESS ------------***** *****--------------------- SELECTED OUTPUT ITEMS ----------------***** B HOUSE NUMBER IN-STREET-NAME ZIP CD NYPD-PCT SCHLDST LOW CROSS STREET HIGH CROSS STREET - ------------ -------------------------------- ----- -- -------- ------- ------------------------- ------------------ 1 22 READE ST 10007 01 005 02 ELK STREET BROADWAY 1 500 DUANE ST *** FUNCTION 1 GRC = 42 REASON CODE = *** ADDRESS NUMBER OUT OF RANGE 1 2-4 BROADWAY *** FUNCTION 1 WARNING, GRC = 01 REASON CODE = 1 *** ADDR NUMBER ALTERED: RANGE ASSUMED. USING DIGITS BEFORE DASH ONLY 10004 01 001 02 STONE STREET BOWLING GREEN 4 165-100 BAISLEY BLVD 11434 12 113 28 GUY R BREWER BOULEVARD BEDELL STREET 4 165-1000 BAISLEY BLVD *** FUNCTION 1 GRC = 13 REASON CODE = 2 *** ADDRESS NBR 165-1000 HAS MORE THAN 3 DIGITS AFTER THE DASH. ASSEMBLER SAMPLE PROGRAM #1 - Input Job Stream - MSW - Input Job Stream - COW - Output Report ASSEMBLER SAMPLE PROGRAM #2- Job Stream -MSW //ASMF2SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //** ASSEMBLER SAMPLE BATCH GEOSUPPORT USER APPLICATION PROGRAM \\#2 ** //** MSW FORMAT ** //******************************************************************** //STEP1 EXEC ASMACLG, // PARM.ASM='OBJECT,NODECK', // PARM.LKED='XREF,LET,LIST,NCAL' //ASM.SYSLIB DD DSN=A030.GEO.COPYLIB2,DISP=SHR // DD DSN=A030.GEO.COPYLIB,DISP=SHR // DD DSN=SYS1.MACLIB,DISP=SHR //ASM.SYSIN DD * ASMF2SRC TITLE 'SAMPLE GEOSUPPORT ASSEMBLER PROGRAM 2 - MSW FORMAT' ASMF2SRC CSECT ****************************************************************** \\* THIS PROGRAM MAKES FUNCTION 2 AND D CALLS TO GEOSUPPORT USING * \\* TWO BOROS AND TWO STREET NAMES SUPPLIED BY AN INSTREAM FILE. * \\* FUNCTION 2 RETURNS GEOGRAPHIC INFORMATION FOR AN INTERSECTION. * \\* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. * \\* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * \\* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE * \\* ORIGINAL CALL TO FUNCTION 2, ALL THE CROSS STREET NAMES * \\* WOULD HAVE BEEN RETURNED BY FUNCTION 2. * ****************************************************************** * *********************************************************************** \\* * \\* This program will do the following: * \\* * Read an instream record containing 2 borough codes * \\* and two street names * \\* * \\* * Build Work Area 1 for a Function 2 call * \\* * \\* * Call Function 2 * \\* * \\* * Get ZIP code, community district, police precinct, school * \\* district, and lists of intersecting street codes. * \\* These will be displayed along with the input intersection * \\* which consists of 2 borough codes, and 2 street names. * \\* * \\* * Call Function D to get the street names of all intersecting * \\* streets. * \\* * \\* If it is greater than 01, an error message is printed, and * \\* the next input record, if any, is read. * \\* If it is 01, a warning message is printed, the input record is * \\* processed, and the next record is read. * \\* If it is zero, the input record is processed, and the next * \\* record is read. * \\* * *********************************************************************** SPACE STM R14,R12,12(R13) Save caller's registers LR R3,R15 LA R12,4095(,R3) (second base register LA R12,1(,R12) to accommodate Work Areas 1 and 2) USING ASMF2SRC,R3,R12 \\* Chain save areas LA R4,MYSAVE ST R13,4(,R4) Save caller's savearea address ST R4,8(,R13) Save pgm's savearea adr in caller savearea LR R13,R4 Ensure that R13 points to pgm's savearea SPACE 2 XR R15,R15 (set OS return code to zero) \\* Open input and output files OPEN (INFILE,,OUTFILE,(OUTPUT)) TM INFILE+48,X'10' Did input file open successfully? BNO INOPNERR (no..) TM OUTFILE+48,X'10' Did output file open successfully? BNO OUTOPNER (no..) \\* Print report header lines SPACE PUT OUTFILE,HDR1 PUT OUTFILE,HDR2 PUT OUTFILE,HDR3 PUT OUTFILE,HDR4 B NEXTREC SPACE 2 TITLE 'READ IN-STREAM INPUT AND PREPARE FUNCTION 2 CALL' \\* Read (next) input record NEXTREC DS 0H GET INFILE,INREC \\* Move input data to output record for display MVC DBORO1,INBORO1 First borough code MVC DSTRT1,INSTRT1 First street name MVC DBORO2,INBORO2 Second borough code MVC DSTRT2,INSTRT2 Second street name SPACE ****************************************************************** \\* TO MAKE A FUNCTION 2 CALL: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET WA1'S FUNCTION CODE FIELD TO 2 * \\* (3) MOVE THE 1ST INPUT BORO TO WA1'S INPUT BORO CODE FIELD * \\* (4) MOVE THE 1ST INPUT STREET TO WA1'S INPUT STREET NAME * \\* (5) MOVE THE 2ND INPUT BORO TO WA1'S INPUT BORO CODE 2 FIELD * \\* (6) MOVE THE 2ND INPUT STREET TO WA1'S INPUT STREET NAME 2 * \\* (7) CALL GBI WITH 2 WORKAREAS * \\* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ****************************************************************** \\* Clear WA1 to blanks LA R8,W1BAL \"To\" address for MVCL LA R9,W1LENGTH \"To\" length XR R11,R11 for blanking out std WA1, ICM R11,B'1000',=C' ' rather than moving data \\* ...since if the \"from\" length reg. has lo-order zeroes, MVCL will \\* pad the target area with the pad character of the \"from\" register \\* and do nothing else (the \"from\" address register is not used). MVCL R8,R10 SPACE \\* Prime Work Area 1 for Function 2 call MVC W1IFUNC,=CL2'2 ' Get function code MVC W1IBORO1,INBORO1 borough code 1 MVC W1ISTRT1,INSTRT1 street name 1 MVC W1IBORO2,INBORO2 borough code 2 MVC W1ISTRT2,INSTRT2 street name 2 MVC W1ISNL(L'W1ISNL),=C'25' Normalized street name length \\* Call Function 2 (2-Work-Area call) CALL GBI,(W1BAL,W2BAL),VL \\* Check Return code CLC W1ORC(2),=C'00' Good return? BE PROCESS Yes, process returned data \\* Handle errors and warnings ERREXIT DS 0H CLC W1ORC(2),=C'01' Warning condition? BE PUTWARN Yes, process warning \\* and then process input; \\* otherwise, process error MVC ERFUNC,W1IFUNC function code MVC ERRET(L'W1ORC),W1ORC return code MVC ERREAS(L'W1OREASN),W1OREASN reason code MVC ERRMSG(L'W1OERROR),W1OERROR Geosupport error message PUT OUTFILE,ERR1 Print error message 1 MVC ERINPUT,DSPLYIN 2 boro codes and 2 street names PUT OUTFILE,ERR2 Print error message 2 B NEXTREC PUTWARN DS 0H MVC WRFUNC,W1IFUNC function code MVC WRRET(L'W1ORC),W1ORC return code MVC WRREAS(L'W1OREASN),W1OREASN reason code MVC WRNMSG(L'W1OERROR),W1OERROR Geosupport warning message PUT OUTFILE,WARN Print warning message SPACE \\* Handle successful Geosupport calls (Return Code <= 01) PROCESS DS 0H MVI OUTFIXED,C'0' Init. carriage control to dbl-space CLC W1ORC(2),=C'01' Was a warning issued? BNE MOVEOUT No.. MVI OUTFIXED,C' ' Yes, single-space output instead MOVEOUT DS 0H MVC OINPUT,DSPLYIN Pair of boro codes and street names MVC OZIP,W2F2ZIP ZIP code MVC OCOMM,W2F2CDN community district number MVC OPCT,W2F2POP police precinct MVC OSCHL,W2F2SCH school district ***** At this point, clear WA1 again, call Function D, and move ****** ***** all reported Intersecting Street Names to output ****** TITLE 'GET INTERSECTING STREET NAMES, USING FUNCTION D' SPACE 2 ************************************************************* \\* TO GET THE STREET NAMES FOR INTERSECTING STREET CODES * \\* MAKE A FUNCTION D CALL: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET THE WA1'S FUNCTION CODE FIELD TO D * \\* (3) USE THE COMPACT STREET NAMES OPTION TO OBTAIN * \\* STREET NAMES FORMATTED FOR DISPLAY * \\* (4) MOVE THE PACKED BORO AND STREET CODE TO * \\* WA1'S INPUT STREET CODE 1 FIELD * \\* (5) CALL GBI WITH 1 WORKAREA * \\* (6) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ************************************************************* SPACE \\* For each street code of intersecting streets, including those input, \\* call Function D to get the corresponding street name XR R4,R4 MVC INTWK,W2F2#INT get count of intersecting streets. NI INTWK,X'0F' remove zone, leaving numeric IC R4,INTWK count of intersecting streets. LA R5,W2F2CODE point to street code(s). SPACE INTRLOOP DS 0H \\* Clear WA1 to blanks LA R8,W1BAL \"To\" address for MVCL LA R9,W1LENGTH \"To\" length XR R11,R11 for blanking out std WA1, ICM R11,B'1000',=C' ' rather than moving data \\* ...since if the \"from\" length reg. has lo-order zeroes, MVCL will \\* pad the target area with the pad character of the \"from\" register \\* and do nothing else (the \"from\" address register is not used). MVCL R8,R10 SPACE MVC W1IFUNC(2),=CL2'D ' MVC W1ISNL(L'W1ISNL),=C'25' normalized street name length MVI W1ICMPCT,C'C' streets to be compacted MVC W1ICDE1(L'W1ICDE1),0(R5) Intersecting street code CALL GBI,W1BAL,VL Call Function D \\* Check Return code CLC W1ORC(2),=C'00' Good return? BNE ERREXIT No, error or warning \\* Yes, complete the record \\* and write it out PFIX NOP PVAR OI PFIX+1,X'F0' MVC OINTRSC1,W1OSTRT1 \\* put out the initial output including the first intersecting street PUT OUTFILE,OUTFIXED B NEXTSC Now get the rest of the street codes, if any PVAR DS 0H MVC OINTRSCN,W1OSTRT1 \\* Print an output record and get the next intersecting street, if any PUT OUTFILE,OUTVAR NEXTSC DS 0H LA R5,4(,R5) point to next intersecting street code BCT R4,INTRLOOP if any, and process it; NI PFIX+1,X'0F' reset 1st-time (fixed/variable) switch B NEXTREC then, process next input record, if any SPACE EXIT DS 0H OUTOPNER DS 0H CLOSE (INFILE) TM OUTFILE+48,X'10' Did OUTFILE open successfully? BNO INOPNERR No, bypass closing it CLOSE (OUTFILE) INOPNERR DS 0H L R13,4(,R13) L R14,12(,R13) LM R0,R12,20(R13) BR R14 SPACE 2 PARAMERR DS 0H parameter error, missing or invalid LA R15,8 rc=8 B EXIT TITLE 'DATA SECTION - REGISTER ASSIGNMENTS' R0 EQU 0 R1 EQU 1 R2 EQU 2 R3 EQU 3 R4 EQU 4 R5 EQU 5 R6 EQU 6 R7 EQU 7 R8 EQU 8 R9 EQU 9 R10 EQU 10 R11 EQU 11 R12 EQU 12 R13 EQU 13 R14 EQU 14 R15 EQU 15 TITLE 'FILE AND RECORD DEFINITIONS' PUSH PRINT PRINT NOGEN INFILE DCB DSORG=PS,MACRF=(GM),DDNAME=INFILE, * RECFM=FB,LRECL=80,BLKSIZE=400,EODAD=EXIT SPACE OUTFILE DCB DSORG=PS,MACRF=(PM),DDNAME=SYSPRINT, * RECFM=FBA,LRECL=133,BLKSIZE=1330 * POP PRINT SPACE INREC DS 0CL80 Input record INBORO1 DS CL1 First borough code INSTRT1 DS CL32 First street name INBORO2 DS CL1 Second borough code INSTRT2 DS CL32 Second street name DC 14C' ' filler SPACE \\* Output records: header, normal, warning, and error SPACE \\* header records HDR1 DC CL133'1SAMPLE ASSEMBLER \\#2 EXECUTION OUTPUT * * ' HDR2 DC CL133'0*****----------------- INPUT INTERSECTION -------C --------------***** *****--------------- SELECTED OUTPUT* ITEMS ---------------*****' HDR3 DC CL133'0B IN-STREET-NAME-1 B IN-STREET-NA* ME-2 ZIP CD NYPD-PCT SCHLDST INTERSECTI* NG STREET NAMES ' HDR4 DC CL133' - -------------------------------- - ------------* ------------------- ----- -- -------- ------- ----------* ---------------------------' SPACE \\* normal records, i.e., output for valid data OUTFIXED DS 0CL133 Fixed output \\* Borough codes and street names for each of 2 streets are from input DC C'0' OINPUT DS CL69 OZIP DS CL5 DC C' ' OCOMM DS CL2 DC C' ' OPCT DS CL3 DC 6C' ' OSCHL DS CL2 DC 6C' ' OINTRSC1 DS CL25 Normalized name of first intersecting street SPACE OUTVAR DS 0CL133 Output line repeated per No. of Intersecting Sts. DC C' ' DC 95C' ' OINTRSCN DS CL25 Normalized name of additional intersecting street DC (133-121)C' ' SPACE \\* warning record WARN DS 0CL133 DC C'0' DC C'**** FUNCTION ' WRFUNC DS CL2 DC C' WARNING, GRC = ' WRRET DS CL2 DC C' REASON CODE = ' WRREAS DS CL1 DC C'. ' WRNMSG DS CL80 Warning message SPACE \\* error records ERR1 DS 0CL133 DC C'0' DC C'***** FUNCTION ' ERFUNC DS CL2 DC C' GRC = ' ERRET DS CL2 DC C' REASON = ' ERREAS DS CL1 DC C'. ' ERRMSG DS CL80 Error message DC CL(133-120)' ' SPACE ERR2 DS 0CL133 DC C' ' ERINPUT DS CL69 DC CL(133-70)' ' TITLE 'WORKING VARIABLES, VALUES, ETC.' #INTER DS D Working field for no. of intersecting streets MYSAVE DC 18F'0' *********************************************************************** ***** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE *** ***** COPY STATEMENTS) IS STRONGLY ENCOURAGED. *** *********************************************************************** COPY W1BAL COPY WORK AREA 1 EJECT COPY W2BAL COPY WORK AREA 2 EJECT SPACE 2 DSPLYIN DS 0CL69 DBORO1 DS CL1 DC C' ' DSTRT1 DS CL32 DC C' ' DBORO2 DS CL1 DC C' ' DSTRT2 DS CL32 SPACE 2 INTWK DS XL1 work field for number of intersecting streets TITLE 'CONSTANTS AND LITERAL POOL' SPACE 2 LTORG END ASMF2SRC //LKED.SYSIN DD * INCLUDE INCLIB(GBI) /* //LKED.INCLIB DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* THE STEPLIB (OR JOBLIB) OF THE GEOSUPPORT EXECUTION STEP \\*// //* MUST INCLUDE THE FOLLOWING TWO CONCATENATED DATASETS: \\*// //* A030.GEO.SUPPORT.PDSE.LOADLIB \\*// //* A030.GEO.SUPPORT.LOADLIB \\*// //* \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR // DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* DD STATEMENTS FOR GEOSUPPORT DATA FILES (E.G. GRID, PAD, \\*// //* ETC) ARE NO LONGER NEEDED AND ARE IGNORED. GEOSUPPORT \\*// //* IS TAILORED TO USE STANDARD GEOSUPPORT DATA SET NAMES. \\*// //* TO USE NON-STANDARD FILES, SEE YOUR SYSTEMS PROGRAMMER. \\*// //* \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* //SYSUDUMP DD SYSOUT=\\*,OUTLIM=2000 //SYSPRINT DD SYSOUT=* //INFILE DD * 1CHAMBERS ST 1HUDSON ST 1SIXTH AVE 1W. 8 ST 1DUANE ST 1READE ST /* // ASSEMBLER SAMPLE PROGRAM #2- Job Stream - COW //ASMC2SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //** ASSEMBLER SAMPLE BATCH GEOSUPPORT USER APPLICATION PROGRAM \\#2 ** //** COW FORMAT ** //******************************************************************** //STEP1 EXEC ASMACLG, // PARM.ASM='OBJECT,NODECK', // PARM.LKED='XREF,LET,LIST,NCAL' //ASM.SYSLIB DD DSN=A030.GEO.COPYLIB2,DISP=SHR // DD DSN=A030.GEO.COPYLIB,DISP=SHR // DD DSN=SYS1.MACLIB,DISP=SHR //ASM.SYSIN DD * ASMC2SRC TITLE 'SAMPLE GEOSUPPORT ASSEMBLER PROGRAM 2 - COW FORMAT' ASMC2SRC CSECT ****************************************************************** \\* THIS PROGRAM MAKES FUNCTION 2 AND D CALLS TO GEOSUPPORT USING * \\* TWO BOROS AND TWO STREET NAMES SUPPLIED BY AN INSTREAM FILE. * \\* FUNCTION 2 RETURNS GEOGRAPHIC INFORMATION FOR AN INTERSECTION. * \\* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. * \\* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * \\* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE * \\* ORIGINAL CALL TO FUNCTION 2, ALL THE CROSS STREET NAMES * \\* WOULD HAVE BEEN RETURNED BY FUNCTION 2. * ****************************************************************** * *********************************************************************** \\* * \\* This program will do the following: * \\* * Read an instream record containing 2 borough codes * \\* and two street names * \\* * \\* * Build Work Area 1 for a Function 2 call * \\* * \\* * Call Function 2 * \\* * \\* * Get ZIP code, community district, police precinct, school * \\* district, and lists of intersecting street codes. * \\* These will be displayed along with the input intersection * \\* which consists of 2 borough codes, and 2 street names. * \\* * \\* * Call Function D to get the street names of all intersecting * \\* streets. * \\* * \\* If it is greater than 01, an error message is printed, and * \\* the next input record, if any, is read. * \\* If it is 01, a warning message is printed, the input record is * \\* processed, and the next record is read. * \\* If it is zero, the input record is processed, and the next * \\* record is read. * \\* * *********************************************************************** SPACE STM R14,R12,12(R13) Save caller's registers LR R3,R15 LA R12,4095(,R3) (second base register LA R12,1(,R12) to accommodate Work Areas 1 and 2) USING ASMC2SRC,R3,R12 \\* Chain save areas LA R4,MYSAVE ST R13,4(,R4) Save caller's savearea address ST R4,8(,R13) Save pgm's savearea adr in caller savearea LR R13,R4 Ensure that R13 points to pgm's savearea SPACE 2 XR R15,R15 (set OS return code to zero) \\* Open input and output files OPEN (INFILE,,OUTFILE,(OUTPUT)) TM INFILE+48,X'10' Did input file open successfully? BNO INOPNERR (no..) TM OUTFILE+48,X'10' Did output file open successfully? BNO OUTOPNER (no..) \\* Print report header lines SPACE PUT OUTFILE,HDR1 PUT OUTFILE,HDR2 PUT OUTFILE,HDR3 PUT OUTFILE,HDR4 B NEXTREC SPACE 2 TITLE 'READ IN-STREAM INPUT AND PREPARE FUNCTION 2 CALL' \\* Read (next) input record NEXTREC DS 0H GET INFILE,INREC \\* Move input data to output record for display MVC DBORO1,INBORO1 First borough code MVC DSTRT1,INSTRT1 First street name MVC DBORO2,INBORO2 Second borough code MVC DSTRT2,INSTRT2 Second street name SPACE ****************************************************************** \\* TO MAKE A COW FORMAT FUNCTION 2 CALL: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* AND SET WORK AREA FORMAT FLAG TO 'C' * \\* (2) SET WA1'S FUNCTION CODE FIELD TO 2 * \\* (3) MOVE THE 1ST INPUT BORO TO WA1'S INPUT BORO CODE FIELD * \\* (4) MOVE THE 1ST INPUT STREET TO WA1'S INPUT STREET NAME * \\* (5) MOVE THE 2ND INPUT BORO TO WA1'S INPUT BORO CODE 2 FIELD * \\* (6) MOVE THE 2ND INPUT STREET TO WA1'S INPUT STREET NAME 2 * \\* (7) CALL GBI WITH 2 WORKAREAS * \\* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ****************************************************************** \\* Clear WA1 to blanks LA R8,P1BAL \"To\" address for MVCL LA R9,P1LENGTH \"To\" length XR R11,R11 for blanking out std WA1, ICM R11,B'1000',=C' ' rather than moving data \\* ...since if the \"from\" length reg. has lo-order zeroes, MVCL will \\* pad the target area with the pad character of the \"from\" register \\* and do nothing else (the \"from\" address register is not used). MVCL R8,R10 * MVI P1IPLIND,C'C' set work area format indicator to COW * SPACE \\* Prime Work Area 1 for Function 2 call MVC P1IFUNC,=CL2'2 ' Get function code MVC P1IBORO1,INBORO1 borough code 1 MVC P1ISTRT1,INSTRT1 street name 1 MVC P1IBORO2,INBORO2 borough code 2 MVC P1ISTRT2,INSTRT2 street name 2 MVC P1ISNL(L'P1ISNL),=C'25' Normalized street name length \\* Call Function 2 (2-Work-Area call) CALL GBI,(P1BAL,P2BAL),VL \\* Check Return code CLC P1ORC(2),=C'00' Good return? BE PROCESS Yes, process returned data \\* Handle errors and warnings ERREXIT DS 0H CLC P1ORC(2),=C'01' Warning condition? BE PUTWARN Yes, process warning \\* and then process input; \\* otherwise, process error MVC ERFUNC,P1IFUNC function code MVC ERRET(L'P1ORC),P1ORC return code MVC ERREAS(L'P1OREASN),P1OREASN reason code MVC ERRMSG(L'P1OERROR),P1OERROR Geosupport error message PUT OUTFILE,ERR1 Print error message 1 MVC ERINPUT,DSPLYIN 2 boro codes and 2 street names PUT OUTFILE,ERR2 Print error message 2 B NEXTREC PUTWARN DS 0H MVC WRFUNC,P1IFUNC function code MVC WRRET(L'P1ORC),P1ORC return code MVC WRREAS(L'P1OREASN),P1OREASN reason code MVC WRNMSG(L'P1OERROR),P1OERROR Geosupport warning message PUT OUTFILE,WARN Print warning message SPACE \\* Handle successful Geosupport calls (Return Code <= 01) PROCESS DS 0H MVI OUTFIXED,C'0' Init. carriage control to dbl-space CLC P1ORC(2),=C'01' Was a warning issued? BNE MOVEOUT No.. MVI OUTFIXED,C' ' Yes, single-space output instead MOVEOUT DS 0H MVC OINPUT,DSPLYIN Pair of boro codes and street names MVC OZIP,P2F2ZIP ZIP code MVC OCOMM,P2F2CDN community district number MVC OPCT,P2F2POP police precinct MVC OSCHL,P2F2SCH school district ***** At this point, clear WA1 again, call Function D, and move ****** ***** all reported Intersecting Street Names to output ****** TITLE 'GET INTERSECTING STREET NAMES, USING FUNCTION D' SPACE 2 ************************************************************* \\* TO GET THE STREET NAMES FOR INTERSECTING STREET CODES * \\* MAKE A FUNCTION D CALL: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* AND SET WORK AREA FORMAT FLAG TO 'C' * \\* (2) SET THE WA1'S FUNCTION CODE FIELD TO D * \\* (3) USE THE COMPACT STREET NAMES OPTION TO OBTAIN * \\* STREET NAMES FORMATTED FOR DISPLAY * \\* (4) MOVE THE PACKED BORO AND STREET CODE TO * \\* WA1'S INPUT STREET CODE 1 FIELD * \\* (5) CALL GBI WITH 1 WORKAREA * \\* (6) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ************************************************************* SPACE \\* For each street code of intersecting streets, including those input, \\* call Function D to get the corresponding street name XR R4,R4 MVC INTWK,P2F2#INT get count of intersecting streets. NI INTWK,X'0F' remove zone, leaving numeric IC R4,INTWK count of intersecting streets. LA R5,P2F2CODE point to street code(s). SPACE INTRLOOP DS 0H \\* Clear WA1 to blanks LA R8,P1BAL \"To\" address for MVCL LA R9,P1LENGTH \"To\" length XR R11,R11 for blanking out std WA1, ICM R11,B'1000',=C' ' rather than moving data \\* ...since if the \"from\" length reg. has lo-order zeroes, MVCL will \\* pad the target area with the pad character of the \"from\" register \\* and do nothing else (the \"from\" address register is not used). MVCL R8,R10 * MVI P1IPLIND,C'C' set work area format indicator to COW * SPACE MVC P1IFUNC(2),=CL2'D ' MVC P1ISNL(L'P1ISNL),=C'25' normalized street name length MVI P1ICMPCT,C'C' streets to be compacted * \\* Note COW - MSW: P1ICDEx is the 10-digit street code (no boro) \\* P1IBCDx is the Boro and 10-digit street code \\* W1ICDEx is the packed Boro and 5-digit street code \\* P2F2CODE is Boro and 5-digit street code list \\* W2F2CODE is packed Boro and 5-digit street code list * MVC P1IBCD1(LB5SC),0(R5) Intersecting boro and street code CALL GBI,P1BAL,VL Call Function D \\* Check Return code CLC P1ORC(2),=C'00' Good return? BNE ERREXIT No, error or warning \\* Yes, complete the record \\* and write it out PFIX NOP PVAR OI PFIX+1,X'F0' MVC OINTRSC1,P1OSTRT1 \\* put out the initial output including the first intersecting street PUT OUTFILE,OUTFIXED B NEXTSC Now get the rest of the street codes, if any PVAR DS 0H MVC OINTRSCN,P1OSTRT1 \\* Print an output record and get the next intersecting street, if any PUT OUTFILE,OUTVAR NEXTSC DS 0H LA R5,LB5SC(,R5) point to next intersecting street code BCT R4,INTRLOOP if any, and process it; NI PFIX+1,X'0F' reset 1st-time (fixed/variable) switch B NEXTREC then, process next input record, if any SPACE EXIT DS 0H OUTOPNER DS 0H CLOSE (INFILE) TM OUTFILE+48,X'10' Did OUTFILE open successfully? BNO INOPNERR No, bypass closing it CLOSE (OUTFILE) INOPNERR DS 0H L R13,4(,R13) L R14,12(,R13) LM R0,R12,20(R13) BR R14 SPACE 2 PARAMERR DS 0H parameter error, missing or invalid LA R15,8 rc=8 B EXIT TITLE 'DATA SECTION - REGISTER ASSIGNMENTS' R0 EQU 0 R1 EQU 1 R2 EQU 2 R3 EQU 3 R4 EQU 4 R5 EQU 5 R6 EQU 6 R7 EQU 7 R8 EQU 8 R9 EQU 9 R10 EQU 10 R11 EQU 11 R12 EQU 12 R13 EQU 13 R14 EQU 14 R15 EQU 15 TITLE 'FILE AND RECORD DEFINITIONS' PUSH PRINT PRINT NOGEN INFILE DCB DSORG=PS,MACRF=(GM),DDNAME=INFILE, * RECFM=FB,LRECL=80,BLKSIZE=400,EODAD=EXIT SPACE OUTFILE DCB DSORG=PS,MACRF=(PM),DDNAME=SYSPRINT, * RECFM=FBA,LRECL=133,BLKSIZE=1330 * POP PRINT SPACE INREC DS 0CL80 Input record INBORO1 DS CL1 First borough code INSTRT1 DS CL32 First street name INBORO2 DS CL1 Second borough code INSTRT2 DS CL32 Second street name DC 14C' ' filler SPACE \\* Output records: header, normal, warning, and error SPACE \\* header records HDR1 DC CL133'1SAMPLE ASSEMBLER \\#2 EXECUTION OUTPUT * * ' HDR2 DC CL133'0*****----------------- INPUT INTERSECTION -------C --------------***** *****--------------- SELECTED OUTPUT* ITEMS ---------------*****' HDR3 DC CL133'0B IN-STREET-NAME-1 B IN-STREET-NA* ME-2 ZIP CD NYPD-PCT SCHLDST INTERSECTI* NG STREET NAMES ' HDR4 DC CL133' - -------------------------------- - ------------* ------------------- ----- -- -------- ------- ----------* ---------------------------' SPACE \\* normal records, i.e., output for valid data OUTFIXED DS 0CL133 Fixed output \\* Borough codes and street names for each of 2 streets are from input DC C'0' OINPUT DS CL69 OZIP DS CL5 DC C' ' OCOMM DS CL2 DC C' ' OPCT DS CL3 DC 6C' ' OSCHL DS CL2 DC 6C' ' OINTRSC1 DS CL25 Normalized name of first intersecting street SPACE OUTVAR DS 0CL133 Output line repeated per No. of Intersecting Sts. DC C' ' DC 95C' ' OINTRSCN DS CL25 Normalized name of additional intersecting street DC (133-121)C' ' SPACE \\* warning record WARN DS 0CL133 DC C'0' DC C'**** FUNCTION ' WRFUNC DS CL2 DC C' WARNING, GRC = ' WRRET DS CL2 DC C' REASON CODE = ' WRREAS DS CL1 DC C'. ' WRNMSG DS CL80 Warning message SPACE \\* error records ERR1 DS 0CL133 DC C'0' DC C'***** FUNCTION ' ERFUNC DS CL2 DC C' GRC = ' ERRET DS CL2 DC C' REASON = ' ERREAS DS CL1 DC C'. ' ERRMSG DS CL80 Error message DC CL(133-120)' ' SPACE ERR2 DS 0CL133 DC C' ' ERINPUT DS CL69 DC CL(133-70)' ' TITLE 'WORKING VARIABLES, VALUES, ETC.' #INTER DS D Working field for no. of intersecting streets MYSAVE DC 18F'0' *********************************************************************** ***** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE *** ***** COPY STATEMENTS) IS STRONGLY ENCOURAGED. *** *********************************************************************** COPY P1BAL COPY WORK AREA 1 EJECT COPY P2BAL COPY WORK AREA 2 EJECT SPACE 2 DSPLYIN DS 0CL69 DBORO1 DS CL1 DC C' ' DSTRT1 DS CL32 DC C' ' DBORO2 DS CL1 DC C' ' DSTRT2 DS CL32 SPACE 2 INTWK DS XL1 work field for number of intersecting streets LB5SC EQU 6 length of Boro and 5-digit street code TITLE 'CONSTANTS AND LITERAL POOL' SPACE 2 LTORG END ASMC2SRC //LKED.SYSIN DD * INCLUDE INCLIB(GBI) /* //LKED.INCLIB DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* THE STEPLIB (OR JOBLIB) OF THE GEOSUPPORT EXECUTION STEP \\*// //* MUST INCLUDE THE FOLLOWING TWO CONCATENATED DATASETS: \\*// //* A030.GEO.SUPPORT.PDSE.LOADLIB \\*// //* A030.GEO.SUPPORT.LOADLIB \\*// //* \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR // DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* DD STATEMENTS FOR GEOSUPPORT DATA FILES (E.G. GRID, PAD, \\*// //* ETC) ARE NO LONGER NEEDED AND ARE IGNORED. GEOSUPPORT \\*// //* IS TAILORED TO USE STANDARD GEOSUPPORT DATA SET NAMES. \\*// //* TO USE NON-STANDARD FILES, SEE YOUR SYSTEMS PROGRAMMER. \\*// //* \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* //SYSUDUMP DD SYSOUT=\\*,OUTLIM=2000 //SYSPRINT DD SYSOUT=* //INFILE DD * 1CHAMBERS ST 1HUDSON ST 1SIXTH AVE 1W. 8 ST 1DUANE ST 1READE ST /* // SAMPLE ASSEMBLER #2 EXECUTION OUTPUT *****----------------- INPUT INTERSECTION ---------------------***** *****--------------- SELECTED OUTPUT ITEMS ---------------***** B IN-STREET-NAME-1 B IN-STREET-NAME-2 ZIP CD NYPD-PCT SCHLDST INTERSECTING STREET NAMES \\- -------------------------------- - ------------------------------- ----- -- -------- ------- ------------------------------------- 1 CHAMBERS ST 1 HUDSON ST 10007 01 001 02 CHAMBERS STREET HUDSON STREET WEST BROADWAY 1 SIXTH AVE 1 W. 8 ST 10014 02 006 02 6 AVENUE GREENWICH AVENUE WEST 8 STREET ***** FUNCTION 2 GRC = 62 REASON = . READE STREET & DUANE STREET DO NOT INTERSECT 1 DUANE ST 1 READE ST PL/1 SAMPLE PROGRAM #1 - Input Job Stream - MSW - Input Job Stream - COW - Output Report PL/1 SAMPLE PROGRAM #1 \u2013 Job Stream - MSW //PL1F1BAT JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //*** PL1 SAMPLE BATCH GEOSUPPORT USER APPLICATION PROGRAM \\#1. ****** //*** (MSW FORMAT) ****** //******************************************************************** //STEP1 EXEC IBMZCPLG,REGION=0M,GOPGM='PL1F1SC', // PARM.PLI='S,GS,INCLUDE', // PARM.LKED='AMODE(31)' //PLI.SYSLIB DD DSN=A030.GEO.COPYLIB2,DISP=SHR // DD DSN=A030.GEO.COPYLIB,DISP=SHR //SYSIN DD * PL1F1SC: PROC OPTIONS(MAIN); /*****************************************************************/ /* THIS PROGRAM MAKES FUNCTION 1 AND D CALLS TO GEOSUPPORT USING \\*/ /* BORO, HOUSENUMBER, & STREET NAME SUPPLIED BY AN INSTREAM FILE.\\*/ /* FUNCTION 1 RETURNS GEOGRAPHIC INFORMATION FOR AN ADDRESS. \\*/ /* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. \\*/ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*/ /* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE \\*/ /* ORIGINAL CALL TO FUNCTION 1, ALL THE CROSS STREET \\*/ /* NAMES WOULD HAVE BEEN RETURNED BY FUNCTION 1. \\*/ /*****************************************************************/ DCL EOF BIT(1) INIT('0'B), YES BIT(1) INIT('1'B), NO BIT(1) INIT('0'B), ADDR BUILTIN, (I,J) FIXED BIN(15) INIT(0); /*******************************************************************/ /************** GBI DECLARATION BELOW IS REQUIRED **************/ /*** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE *****/ /*** %INCLUDE STATEMENTS) IS STRONGLY ENCOURAGED. *******/ /*******************************************************************/ DCL GBI ENTRY OPTIONS(ASM,INTER); %INCLUDE W1PL1; %INCLUDE W2PL1; /***** REPLACE CODE BELOW WITH YOUR OWN INPUT FILE DECLARATION *****/ DCL INFILE FILE STREAM INPUT; DCL IN_BORO CHAR(01), IN_HOUSENUM CHAR(12), IN_STREET_NAME CHAR(32); /******** REPLACE CODE BELOW WITH YOUR OWN REPORT LAYOUT *********/ DCL SYSPRINT FILE STREAM OUTPUT PRINT; ON ENDPAGE(SYSPRINT) PUT EDIT('SAMPLE PL1 PROGRAM \\#1 EXECUTION OUTPUT', '*****---------- INPUT ADDRESS ------------***** '|| '*****---------------------'|| ' SELECTED OUTPUT ITEMS -----------------------*****', 'B HOUSE NUMBER IN-STREET-NAME '|| ' ZIP CD NYPD-PCT SCHLDST '|| 'LOW CROSS STREET HIGH CROSS STREET ', '_ ____________ '||(32)'_'||' '|| '_____ __ ________ _______ '|| (25)'_'||' '||(25)'_') (PAGE,COL(1),A,SKIP(2),COL(1),A,COL(1),A,SKIP(0),COL(1),A); OPEN FILE(SYSPRINT) LINESIZE(133); SIGNAL ENDPAGE(SYSPRINT); /*****************************************************************/ ON ENDFILE(INFILE) BEGIN; EOF=YES; GOTO ENDLOOP; END; OPEN FILE(INFILE); DO WHILE (EOF = NO); /********** REPLACE CODE BELOW WITH YOUR OWN INPUT *************/ GET FILE(INFILE) EDIT(IN_BORO,IN_HOUSENUM,IN_STREET_NAME) (COL(1),A(1),X(1),A(12),X(1),A(32)); /*****************************************************************/ /* TO MAKE A FUNCTION 1 CALL: \\*/ /* (1) INITIALIZE WORKAREA 1 TO SPACES \\*/ /* (2) SET WA1'S FUNCTION CODE FIELD TO 1 \\*/ /* (3) MOVE THE INPUT BORO TO WA1'S INPUT BORO CODE FIELD \\*/ /* (4) MOVE THE INPUT HOUSE NUMBER TO WA1'S INPUT HOUSE NUMBER \\*/ /* FIELD \\*/ /* (5) MOVE THE INPUT STREET TO WA1'S INPUT STREET NAME FIELD \\*/ /* (6) CALL GBI WITH 2 WORKAREAS \\*/ /* (7) CHECK RETURN CODES FOR ERRORS OR WARNINGS \\*/ /*****************************************************************/ WORK1PL1 = ' '; GEO_WA1_IN_FUNCTION_1 = '1'; GEO_WA1_IN_BORO = IN_BORO; GEO_WA1_IN_HOUSENUM = IN_HOUSENUM; GEO_WA1_IN_STREET_1 = IN_STREET_NAME; CALL GBI(W1PL1,W2PL1); IF GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2 \u00ac= '00' & GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2 \u00ac= '01' THEN DO; /******** INSERT YOUR OWN ERROR HANDLING ROUTINE HERE *****/ PUT EDIT(IN_BORO,IN_HOUSENUM,IN_STREET_NAME, '*** FUNCTION 1 GRC =', GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2, 'REASON CODE =',GEO_WA1_OUT_REASON_CODE, '*** ',GEO_WA1_OUT_ERROR_MESSAGE) (SKIP(2),COL(1),(7)(A,X(1)),SKIP(1),COL(49),A,A); END; ELSE DO; PUT EDIT(IN_BORO,IN_HOUSENUM,IN_STREET_NAME) (SKIP(2),COL(1),(3)(A,X(1))); IF GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2 = '01' THEN DO; /** INSERT YOUR OWN WARNING HANDLING ROUTINE HERE \\**/ PUT EDIT('*** FUNCTION 1 WARNING, GRC =', GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2, 'REASON CODE =',GEO_WA1_OUT_REASON_CODE, '*** ',GEO_WA1_OUT_ERROR_MESSAGE) (COL(49),(4)(A,X(1)),SKIP(1),COL(49),A,A); END; /****************************************************/ /***** REPLACE CODE BELOW WITH YOUR OWN CODE FOR ****/ /***** PROCESSING SUCCESSFUL GEOSUPPORT CALLS ****/ /****************************************************/ PUT EDIT(GEO_WA2_FN1_ZIP,GEO_WA2_FN1_COMDIST_NUMBER, GEO_WA2_FN1_POL_PRECINCT,GEO_WA2_FN1_SCHOOLDIST) (COL(49),(3)(A,X(1)),X(5),A); /***********************************************************/ /* THIS PROGRAM ASSUMES THERE EXISTS AT LEAST ONE HIGH AND \\*/ /* ONE LOW CROSS STREET. TO GET THE STREET NAMES OF THE \\*/ /* FIRST-LISTED HIGH AND FIRST-LISTED LOW CROSS STREETS \\*/ /* FROM THE HIGH AND LOW STREET CODE LISTS CALL \\*/ /* FUNCTION D: \\*/ /* (1) INITIALIZE WORKAREA 1 TO SPACES \\*/ /* (2) SET WA1'S FUNCTION CODE FIELD TO D \\*/ /* (3) SET WA1'S STREET NAME LENGTH FIELD TO DESIRED \\*/ /* VALUE (IN THIS CASE 25 BECAUSE THE REPORT LINE \\*/ /* HAS SPACE FOR ONLY 25 CHARACTERS) \\*/ /* (4) USE THE COMPACT STREET NAMES OPTION TO OBTAIN \\*/ /* STREET NAMES FORMATTED FOR DISPLAY \\*/ /* (5) MOVE WA2'S LOW PBSC FIELD TO WA1'S INPUT STREET \\*/ /* CODE 1 FIELD \\*/ /* (6) MOVE WA2'S HIGH PBSC FIELD TO WA1'S INPUT STREET \\*/ /* CODE 2 FIELD \\*/ /* (7) CALL GBI WITH 1 WORKAREA \\*/ /* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS \\*/ /***********************************************************/ WORK1PL1 = ' '; GEO_WA1_IN_FUNCTION_1 = 'D'; GEO_WA1_IN_SNL = '25'; GEO_WA1_IN_COMPACT_NAME_FLAG = 'C'; GEO_WA1_IN_STREETCODE_1 = GEO_WA2_FN1_LOW_PBSC(1); GEO_WA1_IN_STREETCODE_2 = GEO_WA2_FN1_HI_PBSC(1); CALL GBI(W1PL1); IF GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2 = '00' THEN DO; /******** INSERT YOUR OWN CODE HERE *******/ PUT EDIT(GEO_WA1_OUT_STREET_1,GEO_WA1_OUT_STREET_2) (COL(75),A(25),X(1),A(25)); END; ELSE DO; /*** INSERT YOUR OWN ERROR HANDLING ROUTINE HERE \\***/ PUT EDIT(IN_BORO,IN_HOUSENUM,IN_STREET_NAME, '*** FUNCTION D GRC =', GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2, 'REASON CODE =',GEO_WA1_OUT_REASON_CODE,',', '*** ',GEO_WA1_OUT_ERROR_MESSAGE) (SKIP(2),COL(1),(8)(A,X(1)), SKIP(1),COL(49),A,A); END; END; ENDLOOP: END; CLOSE FILE(INFILE); END PL1F1SC; /* //LKED.SYSIN DD * INCLUDE INCLIB(GBI) /* //INCLIB DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* THE STEPLIB (OR JOBLIB) OF THE GEOSUPPORT EXECUTION STEP \\*// //* MUST INCLUDE THE FOLLOWING TWO CONCATENATED DATASETS: \\*// //* A030.GEO.SUPPORT.PDSE.LOADLIB \\*// //* A030.GEO.SUPPORT.LOADLIB \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR // DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //GO.SYSLMOD DD DSN=&&GOSET,DISP=(OLD,DELETE) //* //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* DD STATEMENTS FOR GEOSUPPORT DATA FILES (E.G. GRID, PAD, \\*// //* ETC) ARE NO LONGER NEEDED AND ARE IGNORED. GEOSUPPORT \\*// //* IS TAILORD TO USE STANDARD GEOSUPPORT DATA SET NAMES. \\*// //* TO USE NON-STANDARD FILES, SEE YOUR SYSTEMS PROGRAMMER. \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* //GO.SYSPRINT DD SYSOUT=A //GO.INFILE DD * 1 22 READE ST 1 500 DUANE ST 1 2-4 BROADWAY 4 165-100 BAISLEY BLVD 4 165-1000 BAISLEY BLVD /* // PL/1 SAMPLE PROGRAM #1 \u2013 Job Stream - COW //PL1C1SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //*** PL1 SAMPLE BATCH GEOSUPPORT USER APPLICATION PROGRAM \\#1. ****** //*** (COW FORMAT) ****** //******************************************************************** //STEP1 EXEC IBMZCPLG,REGION=0M,GOPGM='PL1C1SC', // PARM.PLI='S,GS,INCLUDE', // PARM.LKED='AMODE(31),LIST' //PLI.SYSLIB DD DSN=A030.GEO.COPYLIB2,DISP=SHR // DD DSN=A030.GEO.COPYLIB,DISP=SHR //SYSIN DD * PL1C1SC: PROC OPTIONS(MAIN); /*****************************************************************/ /* THIS PROGRAM MAKES FUNCTION 1 AND D CALLS TO GEOSUPPORT USING \\*/ /* BORO, HOUSENUMBER, & STREET NAME SUPPLIED BY AN INSTREAM FILE.\\*/ /* FUNCTION 1 RETURNS GEOGRAPHIC INFORMATION FOR AN ADDRESS. \\*/ /* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. \\*/ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*/ /* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE \\*/ /* ORIGINAL CALL TO FUNCTION 1, ALL THE CROSS STREET \\*/ /* NAMES WOULD HAVE BEEN RETURNED BY FUNCTION 1. \\*/ /*****************************************************************/ DCL EOF BIT(1) INIT('0'B), YES BIT(1) INIT('1'B), NO BIT(1) INIT('0'B), ADDR BUILTIN, (I,J) FIXED BIN(15) INIT(0); /*******************************************************************/ /************** GBI DECLARATION BELOW IS REQUIRED **************/ /*** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE *****/ /*** %INCLUDE STATEMENTS) IS STRONGLY ENCOURAGED. *******/ /*******************************************************************/ DCL GBI ENTRY OPTIONS(ASM,INTER); %INCLUDE P1PL1; %INCLUDE P2PL1; /***** REPLACE CODE BELOW WITH YOUR OWN INPUT FILE DECLARATION *****/ DCL INFILE FILE STREAM INPUT; DCL IN_BORO CHAR(01), IN_HOUSENUM CHAR(12), IN_STREET_NAME CHAR(32); /******** REPLACE CODE BELOW WITH YOUR OWN REPORT LAYOUT *********/ DCL SYSPRINT FILE STREAM OUTPUT PRINT; ON ENDPAGE(SYSPRINT) PUT EDIT('SAMPLE PL1 PROGRAM \\#1 EXECUTION OUTPUT', '*****---------- INPUT ADDRESS ------------***** '|| '*****---------------------'|| ' SELECTED OUTPUT ITEMS -----------------------*****', 'B HOUSE NUMBER IN-STREET-NAME '|| ' ZIP CD NYPD-PCT SCHLDST '|| 'LOW CROSS STREET HIGH CROSS STREET ', '_ ____________ '||(32)'_'||' '|| '_____ __ ________ _______ '|| (25)'_'||' '||(25)'_') (PAGE,COL(1),A,SKIP(2),COL(1),A,COL(1),A,SKIP(0),COL(1),A); OPEN FILE(SYSPRINT) LINESIZE(133); SIGNAL ENDPAGE(SYSPRINT); *****************************************************************/ ON ENDFILE(INFILE) BEGIN; EOF=YES; GOTO ENDLOOP; END; OPEN FILE(INFILE); DO WHILE (EOF = NO); /********** REPLACE CODE BELOW WITH YOUR OWN INPUT *************/ GET FILE(INFILE) EDIT(IN_BORO,IN_HOUSENUM,IN_STREET_NAME) (COL(1),A(1),X(1),A(12),X(1),A(32)); /*****************************************************************/ /* TO MAKE A FUNCTION 1 CALL: \\*/ /* (1) INITIALIZE WORKAREA 1 TO SPACES \\*/ /* (2) SET WA1'S FUNCTION CODE FIELD TO 1 \\*/ /* (3) MOVE THE INPUT BORO TO WA1'S INPUT BORO CODE FIELD \\*/ /* (4) MOVE THE INPUT HOUSE NUMBER TO WA1'S INPUT HOUSE NUMBER \\*/ /* FIELD \\*/ /* (5) MOVE THE INPUT STREET TO WA1'S INPUT STREET NAME FIELD \\*/ /* (6) CALL GBI WITH 2 WORKAREAS \\*/ /* (7) CHECK RETURN CODES FOR ERRORS OR WARNINGS \\*/ /*****************************************************************/ WORK1PL1 = ' '; PIWA1_IN_FUNCTION_1 = '1'; PIWA1_IN_BORO_1 = IN_BORO; /* for cow format the field house_number has length=16 \\*/ PIWA1_IN_HOUSENUM_DISPLAY = IN_HOUSENUM; PIWA1_IN_STREET_1 = IN_STREET_NAME; PIWA1_IN_PLATFORM_INDICATOR = 'C'; /***************************************************************/ /***************************************************************/ /* AS OF GEOSUPPORT 10.1, \\*/ /* TO RECEIVE ROADBED-SPECIFIC INFORMATION, \\*/ /* SET THE ROADBED REQUEST SWITCH TO 'R', AS FOLLOWS: \\*/ /* PIWA1_IN_ROADBED_REQ_SWITCH = 'R'; \\*/ /***************************************************************/ CALL GBI(P1PL1,P2PL1); IF PIWA1_OUT_RETURN_CODE \u00ac= '00' & PIWA1_OUT_RETURN_CODE \u00ac= '01' THEN DO; /******** INSERT YOUR OWN ERROR HANDLING ROUTINE HERE *****/ PUT EDIT(IN_BORO,IN_HOUSENUM,IN_STREET_NAME, '*** FUNCTION 1 GRC =',PIWA1_OUT_RETURN_CODE, 'REASON CODE =',PIWA1_OUT_REASON_CODE, '*** ',PIWA1_OUT_ERROR_MESSAGE) (SKIP(2),COL(1),(7)(A,X(1)),SKIP(1),COL(49),A,A); END; ELSE DO; PUT EDIT(IN_BORO,IN_HOUSENUM,IN_STREET_NAME) (SKIP(2),COL(1),(3)(A,X(1))); IF PIWA1_OUT_RETURN_CODE = '01' THEN DO; /** INSERT YOUR OWN WARNING HANDLING ROUTINE HERE \\**/ PUT EDIT('*** FUNCTION 1 WARNING, GRC =', PIWA1_OUT_RETURN_CODE, 'REASON CODE =',PIWA1_OUT_REASON_CODE, '*** ',PIWA1_OUT_ERROR_MESSAGE) (COL(49),(4)(A,X(1)),SKIP(1),COL(49),A,A); END; /****************************************************/ /***** REPLACE CODE BELOW WITH YOUR OWN CODE FOR ****/ /***** PROCESSING SUCCESSFUL GEOSUPPORT CALLS ****/ /****************************************************/ PUT EDIT(PIWA2_FN1_ZIP,PIWA2_FN1_COM_DIST_NUM, PIWA2_FN1_POL_PRECINCT,PIWA2_FN1_SCHL_DIST) (COL(49),(3)(A,X(1)),X(5),A); /***********************************************************/ /* THIS PROGRAM ASSUMES THERE EXISTS AT LEAST ONE HIGH AND \\*/ /* ONE LOW CROSS STREET. TO GET THE STREET NAMES OF THE \\*/ /* FIRST-LISTED HIGH AND FIRST-LISTED LOW CROSS STREETS \\*/ /* FROM THE HIGH AND LOW STREET CODE LISTS CALL \\*/ /* FUNCTION D: \\*/ /* (1) INITIALIZE WORKAREA 1 TO SPACES \\*/ /* (2) SET WA1'S FUNCTION CODE FIELD TO D \\*/ /* (3) SET WA1'S STREET NAME LENGTH FIELD TO DESIRED \\*/ /* VALUE (IN THIS CASE 25 BECAUSE THE REPORT LINE \\*/ /* HAS SPACE FOR ONLY 25 CHARACTERS) \\*/ /* (4) USE THE COMPACT STREET NAMES OPTION TO OBTAIN \\*/ /* STREET NAMES FORMATTED FOR DISPLAY \\*/ /* (5) MOVE WA2'S LOW B5SC FIELD TO WA1'S INPUT STREET \\*/ /* CODE 1 FIELD \\*/ /* (6) MOVE WA2'S HIGH B5SC FIELD TO WA1'S INPUT STREET \\*/ /* CODE 2 FIELD \\*/ /* (7) CALL GBI WITH 1 WORKAREA \\*/ /* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS \\*/ /***********************************************************/ WORK1PL1 = ' '; PIWA1_IN_PLATFORM_INDICATOR = 'C'; PIWA1_IN_FUNCTION_1 = 'D'; PIWA1_IN_SNL = '25'; PIWA1_IN_SN_NORM_FORMAT = 'C'; PIWA1_IN_BORO_1 = SUBSTR(PIWA2_FN1_LOW_B5SC(1),1,1); PIWA1_IN_10SC_1 = SUBSTR(PIWA2_FN1_LOW_B5SC(1),2,5); PIWA1_IN_BORO_2 = SUBSTR(PIWA2_FN1_HI_B5SC(1),1,1); PIWA1_IN_10SC_2 = SUBSTR(PIWA2_FN1_HI_B5SC(1),2,5); CALL GBI(P1PL1); IF PIWA1_OUT_RETURN_CODE = '00' THEN DO; /******** INSERT YOUR OWN CODE HERE *******/ PUT EDIT(PIWA1_OUT_STREET_1,PIWA1_OUT_STREET_2) (COL(75),A(25),X(1),A(25)); END; ELSE DO; /*** INSERT YOUR OWN ERROR HANDLING ROUTINE HERE \\***/ PUT EDIT(IN_BORO,IN_HOUSENUM,IN_STREET_NAME, '*** FUNCTION D GRC =', PIWA1_OUT_RETURN_CODE, 'REASON CODE =',PIWA1_OUT_REASON_CODE,',', '*** ',PIWA1_OUT_ERROR_MESSAGE) (SKIP(2),COL(1),(8)(A,X(1)), SKIP(1),COL(49),A,A); END; END; ENDLOOP: END; CLOSE FILE(INFILE); END PL1C1SC; /* //LKED.SYSIN DD * INCLUDE INCLIB(GBI) /* //INCLIB DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* THE STEPLIB (OR JOBLIB) OF THE GEOSUPPORT EXECUTION STEP \\*// //* MUST INCLUDE THE FOLLOWING TWO CONCATENATED DATASETS: \\*// //* A030.GEO.SUPPORT.PDSE.LOADLIB \\*// //* A030.GEO.SUPPORT.LOADLIB \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR // DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //GO.SYSLMOD DD DSN=&&GOSET,DISP=(OLD,DELETE) //* //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* DD STATEMENTS FOR GEOSUPPORT DATA FILES (E.G. GRID, PAD, \\*// //* ETC) ARE NO LONGER NEEDED AND ARE IGNORED. GEOSUPPORT \\*// //* IS TAILORD TO USE STANDARD GEOSUPPORT DATA SET NAMES. \\*// //* TO USE NON-STANDARD FILES, SEE YOUR SYSTEMS PROGRAMMER. \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* //GO.SYSPRINT DD SYSOUT=A //GO.INFILE DD * 1 22 READE ST 1 500 DUANE ST 1 2-4 BROADWAY 4 165-100 BAISLEY BLVD 4 165-1000 BAISLEY BLVD /* // SAMPLE PL/1 PROGRAM #1 EXECUTION OUTPUT *****---------- INPUT ADDRESS ------------***** *****--------------------- SELECTED OUTPUT ITEMS -----------------------***** B HOUSE NUMBER IN-STREET-NAME ZIP CD NYPD-PCT SCHLDST LOW CROSS STREET HIGH CROSS STREET - ------------ -------------------------------- ----- -- -------- ------- ------------------------- ------------------------- 1 22 READE ST 10007 01 005 02 ELK STREET BROADWAY 1 500 DUANE ST *** FUNCTION 1 GRC = 42 REASON CODE = *** ADDRESS NUMBER OUT OF RANGE 1 2-4 BROADWAY *** FUNCTION 1 WARNING, GRC = 01 REASON CODE = 1 *** ADDR NUMBER ALTERED: RANGE ASSUMED. USING DIGITS BEFORE DASH ONLY 10004 01 001 02 STONE STREET BOWLING GREEN 4 165-100 BAISLEY BLVD 11434 12 113 28 GUY R BREWER BOULEVARD BEDELL STREET 4 165-1000 BAISLEY BLVD *** FUNCTION 1 GRC = 13 REASON CODE = 2 *** ADDRESS NBR 165-1000 HAS MORE THAN 3 DIGITS AFTER THE DASH. PL/1 SAMPLE PROGRAM #2 - Input Job Stream - MSW - Input Job Stream - COW - Output Report PL/1 SAMPLE PROGRAM #2 \u2013Job Stream - MSW //PL1F2SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //*** PL1 SAMPLE BATCH GEOSUPPORT USER APPLICATION PROGRAM \\#2. ****** //*** (MSW FORMAT) ****** //******************************************************************** //STEP1 EXEC IBMZCPLG,REGION=0M,GOPGM='PL1F2SR', // PARM.PLI='S,GS,INCLUDE', // PARM.LKED='AMODE(31)' //PLI.SYSLIB DD DSN=A030.GEO.COPYLIB2,DISP=SHR // DD DSN=A030.GEO.COPYLIB,DISP=SHR //SYSIN DD * PL1F2SR: PROC OPTIONS(MAIN); /******************************************************************/ /* THIS PROGRAM MAKES FUNCTION 2 AND D CALLS TO GEOSUPPORT USING \\*/ /* TWO BOROS AND TWO STREET NAMES SUPPLIED BY AN INSTREAM FILE. \\*/ /* FUNCTION 2 RETURNS GEOGRAPHIC INFORMATION FOR AN INTERSECTION. \\*/ /* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. \\*/ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*/ /* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE \\*/ /* ORIGINAL CALL TO FUNCTION 2, ALL THE CROSS STREET \\*/ /* NAMES WOULD HAVE BEEN RETURNED BY FUNCTION 2. \\*/ /******************************************************************/ DCL EOF BIT(1) INIT('0'B), YES BIT(1) INIT('1'B), NO BIT(1) INIT('0'B), ADDR BUILTIN, (I,J) FIXED BIN(15) INIT(0); /**************** GBI DECLARATION BELOW IS REQUIRED ****************/ DCL GBI ENTRY OPTIONS(ASM,INTER); /*******************************************************************/ /** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BY THE %INCLUDE \\**/ /** STATEMENTS) IS STRONGLY ENCOURAGED \\**/ /*******************************************************************/ %INCLUDE W1PL1; %INCLUDE W2PL1; /***** REPLACE CODE BELOW WITH YOUR OWN INPUT FILE DECLARATION *****/ DCL INFILE FILE STREAM INPUT; DCL IN_BORO1 CHAR(01), IN_STREET_NAME1 CHAR(32), IN_BORO2 CHAR(01), IN_STREET_NAME2 CHAR(32); /******** REPLACE CODE BELOW WITH YOUR OWN REPORT LAYOUT *********/ DCL SYSPRINT FILE STREAM OUTPUT PRINT; ON ENDPAGE(SYSPRINT) PUT EDIT('SAMPLE PL1 PROGRAM \\#2 EXECUTION OUTPUT', '*****----------------- INPUT INTERSECTION '||(22)'-'||'***** '|| '*****------------ SELECTED OUTPUT ITEMS -------------*****', 'B IN-STREET-NAME-1'||(17)' '||'B IN-STREET-NAME-2'||(17)' '|| ' ZIP CD NYPD-PCT SCHLDST INTERSECTING STREET NAMES ', '_ '||(32)'\\_'||' _ '||(32)'\\_'||' '|| '_____ __ ________ _______ '||(32)'\\_') (PAGE,COL(1),A,SKIP(2),COL(1),A,COL(1),A,SKIP(0),COL(1),A); OPEN FILE(SYSPRINT) LINESIZE(133); SIGNAL ENDPAGE(SYSPRINT); /*****************************************************************/ ON ENDFILE(INFILE) BEGIN; EOF=YES; GOTO ENDLOOP; END; OPEN FILE(INFILE); DO WHILE (EOF = NO); /********** REPLACE CODE BELOW WITH YOUR OWN INPUT *************/ GET FILE(INFILE) EDIT(IN_BORO1,IN_STREET_NAME1, IN_BORO2,IN_STREET_NAME2) (COL(1),A(1),X(1),A(32),X(1),A(1),X(1),A(32)); /******************************************************************/ /* TO MAKE A FUNCTION 2 CALL: \\*/ /* (1) INITIALIZE WORKAREA 1 TO SPACES \\*/ /* (2) SET WA1'S FUNCTION-CODE TO 2 \\*/ /* (3) MOVE THE 1ST INPUT BORO TO WA1'S INPUT BORO CODE FIELD \\*/ /* (4) MOVE THE 1ST INPUT STREET TO WA1'S INPUT STREET NAME \\*/ /* FIELD \\*/ /* (5) MOVE THE 2ND INPUT BORO TO WA1'S INPUT BORO CODE 2 FIELD \\*/ /* (6) MOVE THE 2ND INPUT STREET TO WA1'S INPUT STREET NAME 2 \\*/ /* FIELD \\*/ /* (7) CALL GBI WITH 2 WORKAREAS \\*/ /* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS \\*/ /******************************************************************/ WORK1PL1 = ' '; GEO_WA1_IN_FUNCTION_1 = '2'; GEO_WA1_IN_BORO = IN_BORO1; GEO_WA1_IN_STREET_1 = IN_STREET_NAME1; GEO_WA1_IN_BORO_2 = IN_BORO2; GEO_WA1_IN_STREET_2 = IN_STREET_NAME2; CALL GBI(W1PL1,W2PL1); IF GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2 \u00ac= '00' & GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2 \u00ac= '01' THEN DO; /****** INSERT YOUR OWN ERROR HANDLING ROUTINE HERE *******/ PUT EDIT('***** FUNCTION 2 GRC =', GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2, 'REASON =',GEO_WA1_OUT_REASON_CODE,',', GEO_WA1_OUT_ERROR_MESSAGE, IN_BORO1,IN_STREET_NAME1,IN_BORO2,IN_STREET_NAME2) (SKIP(2),COL(1),(3)(A,X(1)),A,A,X(1),A, SKIP(1),(4)(A,X(1))); END; ELSE IF GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2 = '01' THEN DO; /*** INSERT YOUR OWN WARNING HANDLING ROUTINE HERE ****/ PUT EDIT('***** FUNCTION 2 WARNING, GRC = '|| GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2||', '|| 'REASON CODE = '||GEO_WA1_OUT_REASON_CODE|| ', '||GEO_WA1_OUT_ERROR_MESSAGE, IN_BORO1,IN_STREET_NAME1, IN_BORO2,IN_STREET_NAME2) (SKIP(2),COL(1),A,SKIP(1),(4)(A,X(1))); END; IF GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2 = '00'| GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2 = '01' THEN DO; /***********************************************************/ /***** REPLACE CODE BELOW WITH YOUR OWN CODE FOR ***********/ /***** PROCESSING SUCCESSFUL GEOSUPPORT CALLS. *****/ /***********************************************************/ PUT EDIT(IN_BORO1,IN_STREET_NAME1,IN_BORO2,IN_STREET_NAME2, GEO_WA2_FN2_ZIP,GEO_WA2_FN2_COMDIST_NUMBER, GEO_WA2_FN2_POL_PRECINCT,GEO_WA2_FN2_SCHOOLDIST) (SKIP(2),COL(1),(7)(A,X(1)),X(5),A); DO J = 1 TO GEO_WA2_FN2_NUM_OF_INTERSECTS; /*******************************************************/ /* TO GET STREET NAMES FOR INTERSECTING STREET CODES \\*/ /* MAKE A FUNCTION D CALL: \\*/ /* (1) INITIALIZE WORKAREA 1 TO SPACES \\*/ /* (2) SET THE WA1'S FUNCTION CODE FIELD TO D \\*/ /* (3) USE THE COMPACT STREET NAMES OPTION TO OBTAIN \\*/ /* STREET NAMES FORMATTED FOR DISPLAY \\*/ /* (4) MOVE THE PACKED BORO AND STREET CODE TO \\*/ /* WA1'S INPUT STREET CODE 1 FIELD \\*/ /* (5) CALL GBI WITH 1 WORKAREA \\*/ /* (6) CHECK RETURN CODES FOR ERRORS OR WARNINGS \\*/ /*******************************************************/ WORK1PL1 = ' '; GEO_WA1_IN_FUNCTION_1 = 'D'; GEO_WA1_IN_COMPACT_NAME_FLAG = 'C'; GEO_WA1_IN_STREETCODE_1 = GEO_WA2_FN2_INTERSECT_PBSC(J); CALL GBI(W1PL1); IF GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2 = '00' THEN DO; /******** INSERT YOUR OWN CODE HERE *******/ PUT EDIT(GEO_WA1_OUT_STREET_1) (COL(97),A); END; ELSE DO; /** INSERT YOUR OWN ERROR HANDLING ROUTINE HERE \\**/ PUT EDIT('***** FUNCTION D GRC =', GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2, 'REASON =',GEO_WA1_OUT_REASON_CODE,',', GEO_WA1_OUT_ERROR_MESSAGE) (SKIP(2),COL(1),(6)(A,X(1))); END; END; END; ENDLOOP: END; CLOSE FILE(INFILE); END PL1F2SR; /* //LKED.SYSIN DD * INCLUDE INCLIB(GBI) /* //INCLIB DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* THE STEPLIB (OR JOBLIB) OF THE GEOSUPPORT EXECUTION STEP \\*// //* MUST INCLUDE THE FOLLOWING TWO CONCATENATED DATASETS: \\*// //* A030.GEO.SUPPORT.PDSE.LOADLIB \\*// //* A030.GEO.SUPPORT.LOADLIB \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR // DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //GO.SYSLMOD DD DSN=&&GOSET,DISP=(OLD,DELETE) //* //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* DD STATEMENTS FOR GEOSUPPORT DATA FILES (E.G. GRID, PAD, \\*// //* ETC) ARE NO LONGER NEEDED AND ARE IGNORED. GEOSUPPORT \\*// //* IS TAILORD TO USE STANDARD GEOSUPPORT DATA SET NAMES. \\*// //* TO USE NON-STANDARD FILES, SEE YOUR SYSTEMS PROGRAMMER. \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* //GO.SYSPRINT DD SYSOUT=A //GO.INFILE DD * 1 CHAMBERS ST 1 HUDSON ST 1 SIXTH AVE 1 W. 8 ST 1 DUANE ST 1 READE ST /* // SAMPLE PL1 PROGRAM #2 EXECUTION OUTPUT *****----------------- INPUT INTERSECTION ----------------------***** *****------------ SELECTED OUTPUT ITEMS -------------***** B IN-STREET-NAME-1 B IN-STREET-NAME-2 ZIP CD NYPD-PCT SCHLDST INTERSECTING STREET NAMES \\- -------------------------------- - -------------------------------- ----- -- -------- -------- -------------------------------- 1 CHAMBERS ST 1 HUDSON ST 10007 01 001 02 CHAMBERS STREET HUDSON STREET WEST BROADWAY 1 SIXTH AVE 1 W. 8 ST 10014 02 006 02 6 AVENUE GREENWICH AVENUE WEST 8 STREET ***** FUNCTION 2 GRC = 62 REASON = , READE STREET & DUANE STREET DO NOT INTERSECT 1 DUANE ST 1 READE ST C SAMPLE PROGRAM #1 - Input Job Stream - MSW - Input Job Stream - COW - Output Report C SAMPLE PROGRAM #1 \u2013 Job Stream -MSW //CCCF1SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //*** C SAMPLE MSW BATCH GEOSUPPORT USER APPLICATION PROGRAM \\#1 **** //******************************************************************** //STEP1 EXEC EDCCLG, // CPARM='SS,OPT,OFFSET,SOURCE,XREF,LIST' //COMPILE.SYSPRINT DD SYSOUT=A //COMPILE.SYSLIB DD // DD // DD DSNAME=A030.GEO.COPYLIB,DISP=SHR //COMPILE.SYSIN DD * /*****************************************************************/ /* THIS PROGRAM MAKES FUNCTION 1 AND D CALLS TO GEOSUPPORT USING \\*/ /* BORO, HOUSENUMBER, & STREET NAME SUPPLIED BY AN INSTREAM FILE.\\*/ /* FUNCTION 1 RETURNS GEOGRAPHIC INFORMATION FOR AN ADDRESS. \\*/ /* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. \\*/ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*/ /* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE \\*/ /* ORIGINAL CALL TO FUNCTION 1, ALL THE CROSS STREET \\*/ /* NAMES WOULD HAVE BEEN RETURNED BY FUNCTION 1. \\*/ /*****************************************************************/ #include #include /*********************************************************************/ /*** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE \\***/ /*** #INCLUDE STATEMENTS) IS STRONGLY ENCOURAGED. \\***/ /*********************************************************************/ #include /************** GBI OS LINKAGE BELOW IS REQUIRED **************/ #pragma linkage (GBI,OS) long GBI(void \\*, ...); /***** THE WORK AREA LAYOUTS MUST BE DECLARED USING THE TYPEDEFS \\***/ /***** IN THE GEOSUPPORT COPY FILE. \\***/ C_WA1 wa1; C_WA2_F1 wa2_f1; void main () { /***** REPLACE CODE BELOW WITH YOUR OWN INPUT FILE DECLARATION *****/ FILE \\*inpdat; struct tag { char in_boro; char filler1; char in_housenum [12]; char filler2; char in_street_name [32]; char filler3 [33]; } recin ; inpdat = fopen(\"DD:INPDAT\",\"rb\"); if (inpdat == NULL) {printf(\"INPDAT Data Set did not open.\\n\"); return;} /***** REPLACE CODE BELOW WITH YOUR OWN REPORT LAYOUT *****/ printf(\"\\fSAMPLE C PROGRAM \\#1 EXECUTION OUTPUT \"); printf(\"\\n\\n*****---------- INPUT ADDRESS ------------***** \\***\"); printf(\"\\**--------------------- SELECTED OUTPUT ITEMS ---------\"); printf(\"--------------*****\"); printf(\"\\n\\nB HOUSE NUMBER IN-STREET-NAME \"); printf(\" ZIP CD NYPD-PCT SCHLDST LOW CROSS STREET \"); printf(\" HIGH CROSS STREET \"); printf(\"\\r_ ____________ ____________________________\"); printf(\"____ _____ __ ________ _______ _________________\"); printf(\"________ _________________________\"); /*** REPLACE CODE BELOW WITH YOUR OWN INPUT \\***/ while (fread(&recin,1,sizeof(recin),inpdat)) { /*****************************************************************/ /* TO MAKE A FUNCTION 1 CALL: \\*/ /* (1) INITIALIZE WORKAREA 1 TO SPACES \\*/ /* (2) SET WA1'S FUNCTION CODE FIELD TO 1 \\*/ /* (3) MOVE THE INPUT BORO TO WA1'S INPUT BORO CODE FIELD \\*/ /* (4) MOVE THE INPUT HOUSE NUMBER TO WA1'S INPUT HOUSE NUMBER \\*/ /* FIELD \\*/ /* (5) MOVE THE INPUT STREET TO WA1'S INPUT STREET NAME FIELD \\*/ /* (6) CALL GBI WITH 2 WORKAREAS \\*/ /* (7) CHECK RETURN CODES FOR ERRORS OR WARNINGS \\*/ /*****************************************************************/ memset(&wa1,' ',sizeof(wa1)); memcpy(wa1.input.func_code,\"1 \",2); wa1.input.boro_1 = recin.in_boro ; memcpy(wa1.input.street_name_1,recin.in_street_name,32); memcpy(wa1.input.hse_nbr_disp,recin.in_housenum,12); /* /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*/ /* As of Geosupport Version 10.1, \\*/ /* to receive roadbed-specific information, \\*/ /* set the Roadbed Request Switch to 'R', as follows: \\*/ /* wa1.input.roadbedreq = 'R'; \\*/ /* \\*/ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*/ /* \\*/ GBI(&wa1,&wa2_f1); if ( (memcmp(wa1.output.ret_code,\"01\",2)) > 0 || (memcmp(wa1.output.ret_code,\"00\",2)) < 0 ) /******** INSERT YOUR OWN ERROR HANDLING ROUTINE HERE *****/ { printf(\"\\n\\n%c %.12s %.32s *** FUNCTION 1 GRC = %.2s\" \" REASON CODE = %c\", recin.in_boro,recin.in_housenum,recin.in_street_name, wa1.output.ret_code,wa1.output.reject_reason_code) ; printf (\"\\n%51.5s %.80s\", \"\\***\", wa1.output.msg) ; } if ( (memcmp(wa1.output.ret_code,\"01\",2)) == 0 ) /******** INSERT YOUR OWN WARNING HANDLING ROUTINE HERE *****/ { printf(\"\\n\\n%c %.12s %.32s *** FUNCTION 1 WARNING, GRC = %.2s\" \" REASON CODE = %c\", recin.in_boro,recin.in_housenum,recin.in_street_name, wa1.output.ret_code,wa1.output.reject_reason_code) ; printf (\"\\n%51.5s %.80s\", \"\\***\", wa1.output.msg) ; printf(\"\\n%47.1s %.5s %.2s %.3s %.2s\", \" \",wa2_f1.zip_code, wa2_f1.com_dist+1,wa2_f1.police_pre,wa2_f1.com_schl_dist) ; } if ( (memcmp(wa1.output.ret_code,\"00\",2)) == 0 ) /***********************************************************/ /***** REPLACE CODE BELOW WITH YOUR OWN CODE FOR ***********/ /***** PROCESSING SUCCESSFUL GEOSUPPORT CALLS *****/ /***********************************************************/ printf(\"\\n\\n%c %.12s %.31s %.5s %.2s %.3s %.2s\", recin.in_boro,recin.in_housenum,recin.in_street_name, wa2_f1.zip_code, wa2_f1.com_dist+1,wa2_f1.police_pre,wa2_f1.com_schl_dist) ; /************************************************************/ /* THIS PROGRAM ASSUMES THERE EXISTS AT LEAST ONE HIGH AND \\*/ /* ONE LOW CROSS STREET. TO GET THE STREET NAMES OF THE \\*/ /* FIRST-LISTED HIGH AND FIRST-LISTED LOW CROSS STREETS \\*/ /* FROM THE HIGH AND LOW STREET CODE LISTS CALL FUNCTION D: \\*/ /* (1) INITIALIZE WORKAREA 1 TO SPACES \\*/ /* (2) SET WA1'S FUNCTION CODE FIELD TO D \\*/ /* (3) SET WA1'S STREET NAME LENGTH FIELD TO DESIRED \\*/ /* VALUE (IN THIS CASE 25 BECAUSE THE REPORT LINE \\*/ /* HAS SPACE FOR ONLY 25 CHARACTERS) \\*/ /* (4) USE THE COMPACT STREET NAMES OPTION TO OBTAIN \\*/ /* STREET NAMES FORMATTED FOR DISPLAY \\*/ /* (5) MOVE WA2'S LOW PBSC FIELD TO WA1'S INPUT STREET \\*/ /* CODE 1 FIELD \\*/ /* (6) MOVE WA2'S HIGH PBSC FIELD TO WA1'S INPUT STREET \\*/ /* CODE 2 FIELD \\*/ /* (7) CALL GBI WITH 1 WORKAREA \\*/ /* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS \\*/ /************************************************************/ if ( (memcmp(wa1.output.ret_code,\"00\",2)) == 0 || (memcmp(wa1.output.ret_code,\"01\",2)) == 0 ) { memset(&wa1,' ',sizeof(wa1)); /* Clear Work area 1 \\*/ wa1.input.func_code[0] = 'D' ; wa1.input.compact_flag = 'C' ; memcpy(wa1.input.snl,\"25\",2) ; memcpy(wa1.input.PB5SC_1,wa2_f1.l_x_sts[0],4) ; memcpy(wa1.input.PB5SC_2,wa2_f1.h_x_sts[0],4) ; GBI(&wa1); if ( (memcmp(wa1.output.ret_code,\"00\",2)) == 0 ) /***** INSERT YOUR OWN CODE HERE ***********/ printf(\" %.25s %.25s\",wa1.output.street_name_1, wa1.output.street_name_2) ; else /******** INSERT YOUR OWN ERROR HANDLING ROUTINE HERE *****/ { printf(\"\\n\\n%c %.12s %.32s *** FUNCTION D GRC = %.2s\" \" REASON CODE = %c\", recin.in_boro,recin.in_housenum,recin.in_street_name, wa1.output.ret_code,wa1.output.reject_reason_code) ; printf (\"\\n%51.5s %.80s\", \"\\***\", wa1.output.msg) ; } } } } /* //LKED.SYSIN DD * INCLUDE DD1(GBI) /* //LKED.DD1 DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //*************************************************************** //* //* AS OF GEOSUPPORT VERSION 10.0, THE STEPLIB OR JOBLIB //* STATEMENTS OF THE GEOSUPPORT EXECUTION STEP MUST INCLUDE //* THE FOLLOWING TWO CONCATENATED DATA SETS IN THE SPECIFIED //* ORDER: //* A030.GEO.SUPPORT.PDSE.LOADLIB //* A030.GEO.SUPPORT.LOADLIB //* //*************************************************************** //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR // DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //*************************************************************** //* //* AS OF GEOSUPPORT VERSION 10.0, DD STATEMENTS FOR GEOSUPPORT //* DATA FILES (E.G. GRID, PAD, ETC) ARE NO LONGER NEEDED AND //* ARE IGNORED. GEOSUPPORT IS TAILORED TO USE STANDARD //* GEOSUPPORT DATA SETS. TO USE NON-STANDARD FILES, SEE YOUR //* SYSTEMS PROGRAMMER. //* //*************************************************************** //GO.SYSPRINT DD SYSOUT=A //GO.INPDAT DD \\*,DCB=LRECL=80 1 22 READE ST 1 500 DUANE ST 1 2-4 BROADWAY 4 165-100 BAISLEY BLVD 4 165-1000 BAISLEY BLVD /* // C SAMPLE PROGRAM #1 \u2013Job Stream - COW //CCCC1SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //*** C SAMPLE COW BATCH GEOSUPPORT USER APPLICATION PROGRAM \\#1 **** //******************************************************************** //* //STEP1 EXEC EDCCLG, // CPARM='SS,OPT,OFFSET,SOURCE,XREF,LIST' //COMPILE.SYSPRINT DD SYSOUT=A //COMPILE.SYSLIB DD // DD // DD DSNAME=A030.GEO.COPYLIB,DISP=SHR //COMPILE.SYSIN DD * /*****************************************************************/ /* THIS PROGRAM MAKES FUNCTION 1 AND D CALLS TO GEOSUPPORT USING \\*/ /* BORO, HOUSENUMBER, & STREET NAME SUPPLIED BY AN INSTREAM FILE.\\*/ /* FUNCTION 1 RETURNS GEOGRAPHIC INFORMATION FOR AN ADDRESS. \\*/ /* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. \\*/ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*/ /* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE \\*/ /* ORIGINAL CALL TO FUNCTION 1, ALL THE CROSS STREET \\*/ /* NAMES WOULD HAVE BEEN RETURNED BY FUNCTION 1. \\*/ /*****************************************************************/ #include #include /*********************************************************************/ /*** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE \\***/ /*** #INCLUDE STATEMENTS) IS STRONGLY ENCOURAGED. \\***/ /*********************************************************************/ #include /************** GBI OS LINKAGE BELOW IS REQUIRED **************/ #pragma linkage (GBI,OS) long GBI(void \\*, ...); /***** THE WORK AREA LAYOUTS MUST BE DECLARED USING THE TYPEDEFS \\***/ /***** IN THE GEOSUPPORT COPY FILE. \\***/ C_WA1 wa1; C_WA2_F1 wa2_f1; void main () /***** REPLACE CODE BELOW WITH YOUR OWN INPUT FILE DECLARATION *****/ FILE \\*inpdat; struct tag { char in_boro; char filler1; char in_housenum [12]; char filler2; char in_street_name [32]; char filler3 [33]; } recin ; inpdat = fopen(\"DD:INPDAT\",\"rb\"); if (inpdat == NULL) {printf(\"INPDAT Data Set did not open.\\n\"); return;} /***** REPLACE CODE BELOW WITH YOUR OWN REPORT LAYOUT *****/ printf(\"\\fSAMPLE C PROGRAM \\#1 EXECUTION OUTPUT \"); printf(\"\\n\\n*****---------- INPUT ADDRESS ------------***** \\***\"); printf(\"\\**--------------------- SELECTED OUTPUT ITEMS ---------\"); printf(\"--------------*****\"); printf(\"\\n\\nB HOUSE NUMBER IN-STREET-NAME \"); printf(\" ZIP CD NYPD-PCT SCHLDST LOW CROSS STREET \"); printf(\" HIGH CROSS STREET \"); printf(\"\\r_ ____________ ____________________________\"); printf(\"____ _____ __ ________ _______ _________________\"); printf(\"________ _________________________\"); /*** REPLACE CODE BELOW WITH YOUR OWN INPUT \\***/ while (fread(&recin,1,sizeof(recin),inpdat)) { /*****************************************************************/ /* TO MAKE A FUNCTION 1 CALL: \\*/ /* (1) INITIALIZE WORKAREA 1 TO SPACES \\*/ /* (2) SET WA1'S FUNCTION CODE FIELD TO 1 \\*/ /* (3) MOVE THE INPUT BORO TO WA1'S INPUT BORO CODE FIELD \\*/ /* (4) MOVE THE INPUT HOUSE NUMBER TO WA1'S INPUT HOUSE NUMBER \\*/ /* FIELD \\*/ /* (5) MOVE THE INPUT STREET TO WA1'S INPUT STREET NAME FIELD \\*/ /* (6) CALL GBI WITH 2 WORKAREAS \\*/ /* (7) CHECK RETURN CODES FOR ERRORS OR WARNINGS \\*/ /*****************************************************************/ memset(&wa1,' ',sizeof(wa1)); memcpy(wa1.input.func_code,\"1 \",2); wa1.input.sti??(0??).boro = recin.in_boro ; memcpy(wa1.input.sti??(0??).Street_name,recin.in_street_name,32); /* Please note that the house number field is actually \\*/ /* 16 bytes. If you are only using 12 bytes, it is \\*/ /* critical that you blank out the work area before \\*/ /* you move in the house number \\*/ memcpy(wa1.input.hse_nbr_disp,recin.in_housenum,12); wa1.input.platform_ind = 'C'; /* Tells Geosupport that you \\*/ /* are using the character \\*/ /* /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*/ /* As of Geosupport Version 10.1, \\*/ /* to receive roadbed-specific information, \\*/ /* set the Roadbed Request Switch to 'R', as follows: \\*/ /* wa1.input.roadbedrequest = 'R'; \\*/ /* \\*/ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*/ /* \\*/ GBI(&wa1,&wa2_f1); if ( (memcmp(wa1.output.ret_code,\"01\",2)) > 0 || (memcmp(wa1.output.ret_code,\"00\",2)) < 0 ) /******** INSERT YOUR OWN ERROR HANDLING ROUTINE HERE *****/ { printf(\"\\n\\n%c %.12s %.32s *** FUNCTION 1 GRC = %.2s\" \" REASON CODE = %c\", recin.in_boro,recin.in_housenum,recin.in_street_name, wa1.output.ret_code,wa1.output.reason_code) ; printf (\"\\n%51.5s %.80s\", \"\\***\", wa1.output.msg) ; } if ( (memcmp(wa1.output.ret_code,\"01\",2)) == 0 ) /******** INSERT YOUR OWN WARNING HANDLING ROUTINE HERE *****/ { printf(\"\\n\\n%c %.12s %.32s *** FUNCTION 1 WARNING, GRC = %.2s\" \" REASON CODE = %c\", recin.in_boro,recin.in_housenum,recin.in_street_name, wa1.output.ret_code,wa1.output.reason_code) ; printf (\"\\n%51.5s %.80s\", \"\\***\", wa1.output.msg) ; printf(\"\\n%47.1s %.5s %.2s %.3s %.2s\", \" \",wa2_f1.zip_code, wa2_f1.com_dist+1,wa2_f1.police_pre,wa2_f1.com_schl_dist) ; } if ( (memcmp(wa1.output.ret_code,\"00\",2)) == 0 ) /***********************************************************/ /***** REPLACE CODE BELOW WITH YOUR OWN CODE FOR ***********/ /***** PROCESSING SUCCESSFUL GEOSUPPORT CALLS *****/ /***********************************************************/ printf(\"\\n\\n%c %.12s %.31s %.5s %.2s %.3s %.2s\", recin.in_boro,recin.in_housenum,recin.in_street_name, wa2_f1.zip_code, wa2_f1.com_dist+1,wa2_f1.police_pre,wa2_f1.com_schl_dist) ; /************************************************************/ /* THIS PROGRAM ASSUMES THERE EXISTS AT LEAST ONE HIGH AND \\*/ /* ONE LOW CROSS STREET. TO GET THE STREET NAMES OF THE \\*/ /* FIRST-LISTED HIGH AND FIRST-LISTED LOW CROSS STREETS \\*/ /* FROM THE HIGH AND LOW STREET CODE LISTS CALL FUNCTION D: \\*/ /* (1) INITIALIZE WORKAREA 1 TO SPACES \\*/ /* (2) SET WA1'S FUNCTION CODE FIELD TO D \\*/ /* (3) SET WA1'S STREET NAME LENGTH FIELD TO DESIRED \\*/ /* VALUE (IN THIS CASE 25 BECAUSE THE REPORT LINE \\*/ /* HAS SPACE FOR ONLY 25 CHARACTERS) \\*/ /* (4) USE THE COMPACT STREET NAMES OPTION TO OBTAIN \\*/ /* STREET NAMES FORMATTED FOR DISPLAY \\*/ /* (5) MOVE WA2'S LOW PBSC FIELD TO WA1'S INPUT STREET \\*/ /* CODE 1 FIELD \\*/ /* (6) MOVE WA2'S HIGH PBSC FIELD TO WA1'S INPUT STREET \\*/ /* CODE 2 FIELD \\*/ /* (7) CALL GBI WITH 1 WORKAREA \\*/ /* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS \\*/ /************************************************************/ if ( (memcmp(wa1.output.ret_code,\"00\",2)) == 0 || (memcmp(wa1.output.ret_code,\"01\",2)) == 0 ) { memset(&wa1,' ',sizeof(wa1)); /* Clear Work area 1 \\*/ wa1.input.func_code[0] = 'D' ; wa1.input.st_name_norm = 'C' ; memcpy(wa1.input.snl,\"25\",2) ; wa1.input.platform_ind = 'C'; wa1.input.sti??(0??).boro=wa2_f1.st??(0??).B5SC??(0??)??(0??); memcpy(wa1.input.sti??(0??).SC10, wa2_f1.st??(0??).B5SC??(0??)+1,5); wa1.input.sti??(1??).boro=wa2_f1.st??(1??).B5SC??(0??)??(0??); memcpy(wa1.input.sti??(1??).SC10, wa2_f1.st??(1??).B5SC??(0??)+1,5); GBI(&wa1); if ( (memcmp(wa1.output.ret_code,\"00\",2)) == 0 ) /***** INSERT YOUR OWN CODE HERE ***********/ printf(\" %.25s %.25s\",wa1.output.sto??(0??).Street_name, wa1.output.sto??(1??).Street_name) ; else /******** INSERT YOUR OWN ERROR HANDLING ROUTINE HERE *****/ { printf(\"\\n\\n%c %.12s %.32s *** FUNCTION D GRC = %.2s\" \" REASON CODE = %c\", recin.in_boro,recin.in_housenum,recin.in_street_name, wa1.output.ret_code,wa1.output.reason_code) ; printf (\"\\n%51.5s %.80s\", \"\\***\", wa1.output.msg) ; } } } } /* //LKED.SYSIN DD * INCLUDE DD1(GBI) /* //LKED.DD1 DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //*************************************************************** //* //* AS OF GEOSUPPORT VERSION 10.0, THE STEPLIB OR JOBLIB //* STATEMENTS OF THE GEOSUPPORT EXECUTION STEP MUST INCLUDE //* THE FOLLOWING TWO CONCATENATED DATA SETS IN THE SPECIFIED //* ORDER: //* A030.GEO.SUPPORT.PDSE.LOADLIB //* A030.GEO.SUPPORT.LOADLIB //* //*************************************************************** //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR // DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //*************************************************************** //* //* AS OF GEOSUPPORT VERSION 10.0, DD STATEMENTS FOR GEOSUPPORT //* DATA FILES (E.G. GRID, PAD, ETC) ARE NO LONGER NEEDED AND //* ARE IGNORED. GEOSUPPORT IS TAILORED TO USE STANDARD //* GEOSUPPORT DATA SETS. TO USE NON-STANDARD FILES, SEE YOUR //* SYSTEMS PROGRAMMER. //* //*************************************************************** //GO.SYSPRINT DD SYSOUT=A //GO.INPDAT DD \\*,DCB=LRECL=80 1 22 READE ST 1 500 DUANE ST 1 2-4 BROADWAY 4 165-100 BAISLEY BLVD 4 165-1000 BAISLEY BLVD /* // C SAMPLE PROGRAM #1 \u2013 Output Report *****---------- INPUT ADDRESS ------------***** *****--------------------- SELECTED OUTPUT ITEMS -----------------------***** B HOUSE NUMBER IN-STREET-NAME ZIP CD NYPD-PCT SCHLDST LOW CROSS STREET HIGH CROSS STREET \\- ------------ -------------------------------- ----- -- -------- ------- ------------------------- ------------------------- 1 22 READE ST 10007 01 005 02 ELK STREET BROADWAY 1 500 DUANE ST *** FUNCTION 1 GRC = 42 REASON CODE = *** ADDRESS NUMBER OUT OF RANGE 1 2-4 BROADWAY *** FUNCTION 1 WARNING, GRC = 01 REASON CODE = 1 *** ADDR NUMBER ALTERED: RANGE ASSUMED. USING DIGITS BEFORE DASH ONLY 10004 01 001 02 STONE STREET BOWLING GREEN 4 165-100 BAISLEY BLVD 11434 12 113 28 GUY R BREWER BOULEVARD BEDELL STREET 4 165-1000 BAISLEY BLVD *** FUNCTION 1 GRC = 13 REASON CODE = 2 *** ADDRESS NBR 165-1000 HAS MORE THAN 3 DIGITS AFTER THE DASH. C SAMPLE PROGRAM #2 - Input Job Stream - MSW - Input Job Stream - COW - Output Report C SAMPLE PROGRAM #2 \u2013 Job Stream - MSW //CCCF2SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //*** C SAMPLE MSW BATCH GEOSUPPORT USER APPLICATION PROGRAM \\#2 **** //******************************************************************** //* //STEP1 EXEC EDCCLG, // CPARM='SS,OPT,OFFSET,SOURCE,XREF,LIST' //COMPILE.SYSPRINT DD SYSOUT=A //COMPILE.SYSLIB DD // DD // DD DSNAME=A030.GEO.COPYLIB,DISP=SHR //COMPILE.SYSIN DD * /*****************************************************************/ /* THIS PROGRAM MAKES FUNCTION 2 AND D CALLS TO GEOSUPPORT USING \\*/ /* TWO BOROS AND TWO STREET NAMES SUPPLIED BY AN INSTREAM FILE. \\*/ /* FUNCTION 2 RETURNS GEOGRAPHIC INFORMATION FOR AN INTERSECTION.\\*/ /* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. \\*/ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*/ /* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE \\*/ /* ORIGINAL CALL TO FUNCTION 2, ALL THE CROSS STREET \\*/ /* NAMES WOULD HAVE BEEN RETURNED BY FUNCTION 2. \\*/ /*****************************************************************/ #include #include #include /*********************************************************************/ /*** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE \\***/ /*** #INCLUDE STATEMENTS) IS STRONGLY ENCOURAGED. \\***/ /*********************************************************************/ #include /************** GBI DECLARATION BELOW IS REQUIRED **************/ #pragma linkage (GBI,OS) long GBI(void \\*, ...); /***** THE WORK AREA LAYOUTS MUST BE DECLARED USING THE TYPEDEFS \\***/ /***** IN THE GEOSUPPORT COPY FILE. \\***/ C_WA1 wa1; C_WA2_F2 wa2_f2; void main () { /***** REPLACE CODE BELOW WITH YOUR OWN INPUT FILE DECLARATION *****/ FILE \\*infile; struct tag { char in_boro1; char filler1; char in_street_name1 [32]; char filler2; char in_boro2; char filler3; char in_street_name2 [32]; char filler4 [11]; } recin ; short int j, i; char temp [2]; if ((infile = fopen(\"DD:INFILE\",\"rb\")) == NULL) {printf(\"INFILE Data Set did not open.\\n\"); return;} /***** REPLACE CODE BELOW WITH YOUR OWN REPRORT LAYOUT *****/ printf(\"\\fSAMPLE C PROGRAM \\#2 EXECUTION OUTPUT \"); printf(\"\\n\\n*****----------------- INPUT INTERSECTION ---------\"); printf(\"-------------***** *****------------ SELECTED OUTPUT \"); printf(\"ITEMS -------------*****\"); printf(\"\\n\\nB IN-STREET-NAME-1 \"); printf(\" B IN-STREET-NAME-2 ZIP CD\"); printf(\" NYPD-PCT SCHLDST INTERSECTING STREET NAMES\"); printf( \"\\r_ ____________________________\"); printf(\"____ _ ________________________________ _____ \\__\"); printf(\" ________ _______ _________________________________\"); /*** REPLACE CODE BELOW WITH YOUR OWN INPUT \\***/ while (fread(&recin,1,sizeof(recin),infile)) { /******************************************************************/ /* TO MAKE A FUNCTION 2 CALL: \\*/ /* (1) INITIALIZE WORKAREA 1 TO SPACES \\*/ /* (2) SET WA1'S FUNCTION-CODE TO 2 \\*/ /* (3) MOVE THE 1ST INPUT BORO TO WA1'S INPUT BORO CODE FIELD \\*/ /* (4) MOVE THE 1ST INPUT STREET TO WA1'S INPUT STREET NAME \\*/ /* FIELD \\*/ /* (5) MOVE THE 2ND INPUT BORO TO WA1'S INPUT BORO CODE 2 FIELD \\*/ /* (6) MOVE THE 2ND INPUT STREET TO WA1'S INPUT STREET NAME 2 \\*/ /* FIELD \\*/ /* (7) CALL GBI WITH 2 WORKAREAS \\*/ /* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS \\*/ /******************************************************************/ memset(&wa1,' ',sizeof(wa1)); memcpy(wa1.input.func_code,\"2 \",2); wa1.input.boro_1 = recin.in_boro1 ; memcpy(wa1.input.street_name_1,recin.in_street_name1,32); wa1.input.boro_2 = recin.in_boro2 ; memcpy(wa1.input.street_name_2,recin.in_street_name2,32); GBI(&wa1,&wa2_f2); if ( (memcmp(wa1.output.ret_code,\"01\",2)) > 0 || (memcmp(wa1.output.ret_code,\"00\",2)) < 0 ) /******** INSERT YOUR OWN ERROR HANDLING ROUTINE HERE *****/ { printf(\"\\n\\n***** FUNCTION 2 GRC = %.2s\" \" REASON CODE = %c. %.80s\", wa1.output.ret_code,wa1.output.reject_reason_code, wa1.output.msg) ; printf (\"\\n%c %.32s %c %.32s \", recin.in_boro1,recin.in_street_name1,recin.in_boro2, recin.in_street_name2) ; } if ( (memcmp(wa1.output.ret_code,\"01\",2)) == 0 ) /******** INSERT YOUR OWN WARNING HANDLING ROUTINE HERE *****/ { printf(\"\\n\\n***** FUNCTION 2 WARNING GRC = %.2s\" \" REASON CODE = %c. %.80s\", wa1.output.ret_code,wa1.output.reject_reason_code, wa1.output.msg) ; printf (\"\\n%c %.32s %c %.32s \", recin.in_boro1,recin.in_street_name1,recin.in_boro2, recin.in_street_name2) ; } if ( (memcmp(wa1.output.ret_code,\"00\",2)) == 0 || (memcmp(wa1.output.ret_code,\"01\",2)) == 0 ) /***********************************************************/ /***** REPLACE CODE BELOW WITH YOUR OWN CODE FOR ***********/ /***** PROCESSING SUCCESSFUL GEOSUPPORT CALLS *****/ /***********************************************************/ { printf(\"\\n\\n%c %.32s %c %.32s %.5s %.2s %.3s %.2s \", recin.in_boro1,recin.in_street_name1,recin.in_boro2, recin.in_street_name2,wa2_f2.zip_code, wa2_f2.com_dist+1,wa2_f2.police_pre,wa2_f2.com_schl_dist) ; temp [0] = wa2_f2.nbr_x_sts ; temp [1] = 0; i = atoi(temp) ; for (j=0; j #include #include /*********************************************************************/ /*** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE \\***/ /*** #INCLUDE STATEMENTS) IS STRONGLY ENCOURAGED. \\***/ /*********************************************************************/ #include /************** GBI DECLARATION BELOW IS REQUIRED **************/ #pragma linkage (GBI,OS) long GBI(void \\*, ...); /***** THE WORK AREA LAYOUTS MUST BE DECLARED USING THE TYPEDEFS \\***/ /***** IN THE GEOSUPPORT COPY FILE. \\***/ C_WA1 wa1; C_WA2_F2 wa2_f2; void main () { /***** REPLACE CODE BELOW WITH YOUR OWN INPUT FILE DECLARATION *****/ FILE \\*infile; struct tag { char in_boro1; char filler1; char in_street_name1 [32]; char filler2; char in_boro2; char filler3; char in_street_name2 [32]; char filler4 [11]; } recin ; short int j, i; char temp [2]; if ((infile = fopen(\"DD:INFILE\",\"rb\")) == NULL) {printf(\"INFILE Data Set did not open.\\n\"); return;} /***** REPLACE CODE BELOW WITH YOUR OWN REPRORT LAYOUT *****/ printf(\"\\fSAMPLE C PROGRAM \\#2 EXECUTION OUTPUT \"); printf(\"\\n\\n*****----------------- INPUT INTERSECTION ---------\"); printf(\"-------------***** *****------------ SELECTED OUTPUT \"); printf(\"ITEMS -------------*****\"); printf(\"\\n\\nB IN-STREET-NAME-1 \"); printf(\" B IN-STREET-NAME-2 ZIP CD\"); printf(\" NYPD-PCT SCHLDST INTERSECTING STREET NAMES\"); printf( \"\\r_ ____________________________\"); printf(\"____ _ ________________________________ _____ \\__\"); printf(\" ________ _______ _________________________________\"); /*** REPLACE CODE BELOW WITH YOUR OWN INPUT \\***/ while (fread(&recin,1,sizeof(recin),infile)) { /******************************************************************/ /* TO MAKE A FUNCTION 2 CALL: \\*/ /* (1) INITIALIZE WORKAREA 1 TO SPACES \\*/ /* (2) SET WA1'S FUNCTION-CODE TO 2 \\*/ /* (3) MOVE THE 1ST INPUT BORO TO WA1'S INPUT BORO CODE FIELD \\*/ /* (4) MOVE THE 1ST INPUT STREET TO WA1'S INPUT STREET NAME \\*/ /* FIELD \\*/ /* (5) MOVE THE 2ND INPUT BORO TO WA1'S INPUT BORO CODE 2 FIELD \\*/ /* (6) MOVE THE 2ND INPUT STREET TO WA1'S INPUT STREET NAME 2 \\*/ /* FIELD \\*/ /* (7) CALL GBI WITH 2 WORKAREAS \\*/ /* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS \\*/ /******************************************************************/ memset(&wa1,' ',sizeof(wa1)); memcpy(wa1.input.func_code,\"2 \",2); wa1.input.sti??(0??).boro = recin.in_boro1 ; memcpy(wa1.input.sti??(0??).Street_name,recin.in_street_name1,32); wa1.input.sti??(1??).boro = recin.in_boro2 ; memcpy(wa1.input.sti??(1??).Street_name,recin.in_street_name2,32); wa1.input.platform_ind = 'C'; /* Tells Geosupport that you \\*/ /* are using the character \\*/ /* only work areas \\*/ GBI(&wa1,&wa2_f2); if ( (memcmp(wa1.output.ret_code,\"01\",2)) > 0 || (memcmp(wa1.output.ret_code,\"00\",2)) < 0 ) /******** INSERT YOUR OWN ERROR HANDLING ROUTINE HERE *****/ { printf(\"\\n\\n***** FUNCTION 2 GRC = %.2s\" \" REASON CODE = %c. %.80s\", wa1.output.ret_code,wa1.output.reason_code, wa1.output.msg) ; printf (\"\\n%c %.32s %c %.32s \", recin.in_boro1,recin.in_street_name1,recin.in_boro2, recin.in_street_name2) ; } if ( (memcmp(wa1.output.ret_code,\"01\",2)) == 0 ) /******** INSERT YOUR OWN WARNING HANDLING ROUTINE HERE *****/ { printf(\"\\n\\n***** FUNCTION 2 WARNING GRC = %.2s\" \" REASON CODE = %c. %.80s\", wa1.output.ret_code,wa1.output.reason_code, wa1.output.msg) ; printf (\"\\n%c %.32s %c %.32s \", recin.in_boro1,recin.in_street_name1,recin.in_boro2, recin.in_street_name2) ; } if ( (memcmp(wa1.output.ret_code,\"00\",2)) == 0 || (memcmp(wa1.output.ret_code,\"01\",2)) == 0 ) /***********************************************************/ /***** REPLACE CODE BELOW WITH YOUR OWN CODE FOR ***********/ /***** PROCESSING SUCCESSFUL GEOSUPPORT CALLS *****/ /***********************************************************/ { printf(\"\\n\\n%c %.32s %c %.32s %.5s %.2s %.3s %.2s \", recin.in_boro1,recin.in_street_name1,recin.in_boro2, recin.in_street_name2,wa2_f2.zip_code, wa2_f2.com_dist+1,wa2_f2.police_pre,wa2_f2.com_schl_dist) ; temp [0] = wa2_f2.inter.nbr_sts ; temp [1] = 0; i = atoi(temp) ; for (j=0; j GEO-WA2-FN2-NUM-OF-INTERSECTS). S-F2-EX. EXIT. CALL-D. ******************************************************* \\* TO GET STREET NAMES FOR INTERSECTING STREET CODES * \\* MAKE A FUNCTION D CALL: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET THE WA1'S FUNCTION CODE FIELD TO D * \\* (3) USE THE COMPACT STREET NAMES OPTION TO OBTAIN * \\* STREET NAMES FORMATTED FOR DISPLAY * \\* (4) MOVE THE PACKED BORO AND STREET CODE TO * \\* WA1'S INPUT STREET CODE 1 FIELD * \\* (5) CALL GBI WITH 1 WORKAREA * \\* (6) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ******************************************************* MOVE SPACES TO WORK1. MOVE 'D ' TO GEO-WA1-IN-FUNCTION-CODE. MOVE 'C' TO GEO-WA1-IN-COMPACT-NAME-FLAG. MOVE '25' TO GEO-WA1-IN-SNL. MOVE GEO-WA2-FN2-INTERSECT-PBSC (I) TO GEO-WA1-IN-STREETCODE-1 CALL 'GBI' USING WORK1. IF GEO-WA1-OUT-RETURN-CODE NOT = 00 MOVE 'D' TO ERR-FUNCTION WRN-FUNCTION PERFORM PRINT-ERROR-LINE THRU P-E-EX. IF (GEO-WA1-OUT-RETURN-CODE = 00) OR (GEO-WA1-OUT-RETURN-CODE = 01) PERFORM SUCCESSFUL-FUNCD THRU S-FD-EX. CALL-D-EX. EXIT. SUCCESSFUL-FUNCD. MOVE GEO-WA1-OUT-STREET-1 TO OUT-ST IF I = 1 WRITE RPT-LINE FROM RPT-DATA-LINE2 AFTER ADVANCING 0 LINES ELSE WRITE RPT-LINE FROM RPT-DATA-LINE2 AFTER ADVANCING 1 LINES. S-FD-EX. EXIT. PRINT-ERROR-LINE. MOVE GEO-WA1-OUT-RETURN-CODE TO ERR-GRC WRN-GRC. MOVE GEO-WA1-OUT-REASON-CODE TO ERR-REASON WRN-REASON. MOVE GEO-WA1-OUT-ERROR-MESSAGE TO OUT-ERR-MSG OUT-WRN-MSG. IF GEO-WA1-OUT-RETURN-CODE = 01 **** INSERT YOUR OWN WARNING ROUTINE HERE **** WRITE RPT-LINE FROM RPT-WRN-LINE AFTER ADVANCING 2 LINES ELSE **** INSERT YOUR OWN WARNING ROUTINE HERE **** WRITE RPT-LINE FROM RPT-ERR-LINE AFTER ADVANCING 2 LINES. P-E-EX. EXIT. /* //LKED.SYSIN DD * INCLUDE INCLIB(GBI) //LKED.INCLIB DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //******************************************************************// //* \\*// //* AS OF GEOSUPPPORT VERSION 10.0, \\*// //* THE STEPLIB (OR JOBLIB) OF THE GEOSUPPORT EXECUTION STEP \\*// //* MUST INCLUDE THE FOLLOWING TWO CONCATENATED DATASETS: \\*// //* A030.GEO.SUPPORT.PDSE.LOADLIB \\*// //* A030.GEO.SUPPORT.LOADLIB \\*// //* \\*// //******************************************************************// //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR // DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* //******************************************************************// //* \\*// //* AS OF GEOSUPPPORT VERSION 10.0, \\*// //* DD STATEMENTS FOR GEOSUPPORT DATA FILES (E.G. GRID, PAD, ETC) \\*// //* ARE NO LONGER NEEDED AND ARE IGNORED. GEOSUPPORT IS TAILORED \\*// //* TO USE STANDARD GEOSUPPORT DATA SET NAMES. \\*// //* TO USE NON-STANDARD FILES, SEE YOUR SYSTEMS PROGRAMMER. \\*// /* \\*// //******************************************************************// //* //GO.SYSUDUMP DD SYSOUT=A,OUTLIM=3000 //GO.SYSOUT DD SYSOUT=A //GO.RPTFILE DD SYSOUT=A //GO.INFILE DD * 1 CHAMBERS ST 1 HUDSON ST 1 SIXTH AVE 1 W. 8 ST 1 DUANE ST 1 READE ST /* // COBOL SAMPLE PROGRAM #2- Job Stream- COW //COBC2SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //*** COBOL SAMPLE BATCH GEOSUPPORT USER APPLICATION PROGRAM #2 **** //*** COW FORMAT **** //******************************************************************** //STEP1 EXEC IGYWCLG,PARM.COBOL=(NOWORD,OPTIMIZE) //COBOL.SYSLIB DD DSN=A030.GEO.COPYLIB2,DISP=SHR // DD DSN=A030.GEO.COPYLIB,DISP=SHR //COBOL.SYSIN DD * ***************************************************************** * THIS PROGRAM MAKES FUNCTION 2 AND D CALLS TO GEOSUPPORT USING * * TWO BOROS AND TWO STREET NAMES SUPPLIED BY AN INSTREAM FILE. * * FUNCTION 2 RETURNS GEOGRAPHIC INFORMATION FOR AN INTERSECTION.* * FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE * * ORIGINAL CALL TO FUNCTION 2, ALL THE CROSS STREET * * NAMES WOULD HAVE BEEN RETURNED BY FUNCTION 2. * ***************************************************************** * IDENTIFICATION DIVISION. PROGRAM-ID. COBS1JOB. **************************************** ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT IN-FILE ASSIGN TO INFILE. SELECT RPT-FILE ASSIGN TO RPTFILE. **************************************** DATA DIVISION. FILE SECTION. **** REPLACE CODE BELOW WITH YOUR OWN INPUT FILE DEFINTION ***** FD IN-FILE RECORDING MODE IS F RECORD CONTAINS 80 CHARACTERS LABEL RECORDS ARE OMITTED. 01 INPUT-TO-GEOSUPPORT. 05 IN-BOR1 PIC X. 05 FILLER PIC X. 05 IN-STREET1 PIC X(32). 05 FILLER PIC X. 05 IN-BOR2 PIC X. 05 FILLER PIC X. 05 IN-STREET2 PIC X(32). 05 FILLER PIC X(11). FD RPT-FILE RECORDING MODE IS F RECORD CONTAINS 132 CHARACTERS LABEL RECORDS ARE OMITTED. 01 RPT-LINE PIC X(132). WORKING-STORAGE SECTION. 77 I PIC 9 VALUE 0. ***************************************************************** *** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE *** *** COPY STATEMENTS) IS STRONGLY ENCOURAGED. *** ***************************************************************** 01 WORK1. COPY P1COB. 01 WORK2. COPY P2COB. **** REPLACE CODE BELOW WITH YOUR OWN REPORT LAYOUT ********* 01 RPT-DATA-LINE1. 05 OUT-BOR1 PIC X. 05 FILLER PIC X VALUE ' '. 05 OUT-ST1 PIC X(32). 05 FILLER PIC X VALUE ' '. 05 OUT-BOR2 PIC X. 05 FILLER PIC X VALUE ' '. 05 OUT-ST2 PIC X(32). 05 OUT-DETAIL. 10 FILLER PIC X VALUE ' '. 10 OUT-ZIP PIC X(5). 10 FILLER PIC X VALUE ' '. 10 OUT-CD PIC X(2). 10 FILLER PIC X VALUE ' '. 10 OUT-NYPD-PCT PIC X(3). 10 FILLER PIC X(6) VALUE ' '. 10 OUT-SCHLDIST PIC X(2). 10 FILLER PIC X(42) VALUE ' '. 01 RPT-DATA-LINE2. 05 FILLER PIC X(96) VALUE ' '. 05 OUT-ST PIC X(32). 05 FILLER PIC X(4) VALUE ' '. 01 RPT-ERR-LINE. 05 FILLER PIC X(15) VALUE '***** FUNCTION '. 05 ERR-FUNCTION PIC X. 05 FILLER PIC X(7) VALUE ' GRC = '. 05 ERR-GRC PIC X(2). 05 FILLER PIC X(15) VALUE ' REASON CODE = '. 05 ERR-REASON PIC X. 05 FILLER PIC X(2) VALUE '. '. 05 OUT-ERR-MSG PIC X(80). 05 FILLER PIC X(9) VALUE ' '. 01 RPT-WRN-LINE. 05 FILLER PIC X(15) VALUE '***** FUNCTION '. 05 WRN-FUNCTION PIC X. 05 FILLER PIC X(15) VALUE ' WARNING GRC = '. 05 WRN-GRC PIC X(2). 05 FILLER PIC X(15) VALUE ' REASON CODE = '. 05 WRN-REASON PIC X. 05 FILLER PIC X(2) VALUE '. '. 05 OUT-WRN-MSG PIC X(80). 05 FILLER PIC X VALUE ' '. 01 RPT-HEADER-1. 05 FILLER PIC X(40) VALUE 'SAMPLE COBOL PROGRAM #2 EXECUTION OUTPUT'. 05 FILLER PIC X(72) VALUE ' '. 01 RPT-HEADER-2. 05 FILLER PIC X(58) VALUE '*****----------------- INPUT INTERSECTION ----------------'. 05 FILLER PIC X(58) VALUE '------***** *****------------ SELECTED OUTPUT ITEMS ------'. 05 FILLER PIC X(16) VALUE '-------*****'. 01 RPT-HEADER-3. 05 FILLER PIC X(58) VALUE 'B IN-STREET-NAME-1 B IN-STREET-NAME-2 '. 05 FILLER PIC X(58) VALUE ' ZIP CD NYPD-PCT SCHLDST INTERSECTING STREET '. 05 FILLER PIC X(16) VALUE 'NAMES '. 01 RPT-HEADER-4. 05 FILLER PIC X(58) VALUE '_ ________________________________ _ _____________________'. 05 FILLER PIC X(58) VALUE '___________ _____ __ ________ _______ ____________________'. 05 FILLER PIC X(16) VALUE '____________ '. 01 FLAGS. 05 DATA-FLAG PIC XXX VALUE 'YES'. 88 MORE-DATA VALUE 'YES'. 88 NO-DATA VALUE 'NO '. **************************************** PROCEDURE DIVISION. OPEN INPUT IN-FILE, OUTPUT RPT-FILE. WRITE RPT-LINE FROM RPT-HEADER-1 AFTER ADVANCING 1 LINES. WRITE RPT-LINE FROM RPT-HEADER-2 AFTER ADVANCING 2 LINES. WRITE RPT-LINE FROM RPT-HEADER-3 AFTER ADVANCING 2 LINES. WRITE RPT-LINE FROM RPT-HEADER-4 AFTER ADVANCING 0 LINES. READ IN-FILE AT END MOVE 'NO ' TO DATA-FLAG. PERFORM PROCESS THRU PROCESS-EX UNTIL NO-DATA. CLOSE IN-FILE, RPT-FILE. MOVE 0 TO RETURN-CODE STOP RUN. PROCESS. ****************************************************************** * TO MAKE A FUNCTION 2 CALL: * * (1) INITIALIZE WORKAREA 1 TO SPACES * * (2) SET WA1'S FUNCTION-CODE TO 2 * * (3) SET THE PLATFORM INDICATOR SWITCH (NON-IBM-MAINFRAME) * * TO USE CHARACTER-ONLY WORK AREAS (COWS) * * (4) MOVE THE 1ST INPUT BORO TO WA1'S INPUT BORO CODE FIELD * * (5) MOVE THE 1ST INPUT STREET TO WA1'S INPUT STREET NAME * * FIELD * * (6) MOVE THE 2ND INPUT BORO TO WA1'S INPUT BORO CODE 2 FIELD * * (7) MOVE THE 2ND INPUT STREET TO WA1'S INPUT STREET NAME 2 * * FIELD * * (8) CALL GBI WITH 2 WORKAREAS * * (9) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ****************************************************************** MOVE SPACES TO WORK1. MOVE '2 ' TO PIWA1-IN-FUNC-CODE. MOVE 'C' TO GEO-WA1-IN-NON-IBM-MAIN-FRAME. MOVE IN-BOR1 TO GEO-WA1-IN-BORO OUT-BOR1. MOVE IN-BOR2 TO GEO-WA1-IN-BORO-2 OUT-BOR2. MOVE IN-STREET1 TO GEO-WA1-IN-STREET-1 OUT-ST1. MOVE IN-STREET2 TO GEO-WA1-IN-STREET-2 OUT-ST2. CALL 'GBI' USING WORK1 WORK2. IF GEO-WA1-OUT-RETURN-CODE NOT = 00 MOVE '2' TO ERR-FUNCTION WRN-FUNCTION PERFORM PRINT-ERROR-LINE THRU P-E-EX. IF (GEO-WA1-OUT-RETURN-CODE = 00) OR (GEO-WA1-OUT-RETURN-CODE = 01) PERFORM SUCCESSFUL-FUNC2 THRU S-F2-EX ELSE MOVE SPACES TO OUT-DETAIL WRITE RPT-LINE FROM RPT-DATA-LINE1 AFTER ADVANCING 1 LINES. READ IN-FILE AT END MOVE 'NO ' TO DATA-FLAG. PROCESS-EX. EXIT. SUCCESSFUL-FUNC2. *********************************************************** ***** REPLACE CODE BELOW WITH YOUR OWN CODE FOR *********** ***** PROCESSING SUCCESSFUL GEOSUPPORT CALLS ***** *********************************************************** MOVE GEO-WA2-FN2-ZIP TO OUT-ZIP. MOVE GEO-WA2-FN2-COMDIST-NUMBER TO OUT-CD. MOVE GEO-WA2-FN2-POL-PRECINCT TO OUT-NYPD-PCT. MOVE GEO-WA2-FN2-SCHOOLDIST TO OUT-SCHLDIST. * PROCESS CROSS STREET** CHECK FOR AT LEAST 1. WRITE RPT-LINE FROM RPT-DATA-LINE1 AFTER ADVANCING 2 LINES. PERFORM CALL-D THRU CALL-D-EX VARYING I FROM 1 BY 1 UNTIL (I > GEO-WA2-FN2-NUM-OF-INTERSECTS). S-F2-EX. EXIT. CALL-D. ***************************************************************** * TO GET STREET NAMES FOR INTERSECTING STREET CODES * * MAKE A FUNCTION D CALL: * * (1) INITIALIZE WORKAREA 1 TO SPACES * * (2) SET THE WA1'S FUNCTION CODE FIELD TO D * * (3) SET THE PLATFORM INDICATOR SWITCH (NON-IBM-MAINFRAME) * * TO USE CHARACTER-ONLY WORK AREAS (COWS) * * (4) USE THE COMPACT STREET NAMES OPTION TO OBTAIN * * STREET NAMES FORMATTED FOR DISPLAY * * (5) MOVE THE BORO AND STREET CODE * * WA1'S INPUT STREET CODE 1 FIELD * * (6) CALL GBI WITH 1 WORKAREA * * (7) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ***************************************************************** MOVE SPACES TO WORK1. MOVE 'D ' TO PIWA1-IN-FUNC-CODE. MOVE 'C' TO GEO-WA1-IN-NON-IBM-MAIN-FRAME. MOVE 'C' TO GEO-WA1-IN-COMPACT-NAME-FLAG. MOVE '25' TO GEO-WA1-IN-SNL. MOVE PIWA2-FN2-INTERSECT-B5SC (I) TO GEO-WA1-IN-10SC-1 CALL 'GBI' USING WORK1. IF GEO-WA1-OUT-RETURN-CODE NOT = 00 MOVE 'D' TO ERR-FUNCTION WRN-FUNCTION PERFORM PRINT-ERROR-LINE THRU P-E-EX. IF (GEO-WA1-OUT-RETURN-CODE = 00) OR (GEO-WA1-OUT-RETURN-CODE = 01) PERFORM SUCCESSFUL-FUNCD THRU S-FD-EX. CALL-D-EX. EXIT. SUCCESSFUL-FUNCD. MOVE GEO-WA1-OUT-STREET-1 TO OUT-ST IF I = 1 WRITE RPT-LINE FROM RPT-DATA-LINE2 AFTER ADVANCING 0 LINES ELSE WRITE RPT-LINE FROM RPT-DATA-LINE2 AFTER ADVANCING 1 LINES. S-FD-EX. EXIT. PRINT-ERROR-LINE. MOVE GEO-WA1-OUT-RETURN-CODE TO ERR-GRC WRN-GRC. MOVE GEO-WA1-OUT-REASON-CODE TO ERR-REASON WRN-REASON. MOVE GEO-WA1-OUT-ERROR-MESSAGE TO OUT-ERR-MSG OUT-WRN-MSG. IF GEO-WA1-OUT-RETURN-CODE = 01 **** INSERT YOUR OWN WARNING ROUTINE HERE **** WRITE RPT-LINE FROM RPT-WRN-LINE AFTER ADVANCING 2 LINES ELSE **** INSERT YOUR OWN WARNING ROUTINE HERE **** WRITE RPT-LINE FROM RPT-ERR-LINE AFTER ADVANCING 2 LINES. P-E-EX. EXIT. /* //LKED.SYSIN DD * INCLUDE INCLIB(GBI) //LKED.INCLIB DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //******************************************************************// //* *// //* AS OF GEOSUPPPORT VERSION 10.0, *// //* THE STEPLIB (OR JOBLIB) OF THE GEOSUPPORT EXECUTION STEP *// //* MUST INCLUDE THE FOLLOWING TWO CONCATENATED DATASETS: *// //* A030.GEO.SUPPORT.PDSE.LOADLIB *// //* A030.GEO.SUPPORT.LOADLIB *// //* *// //******************************************************************// //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR // DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* //******************************************************************// //* *// //* AS OF GEOSUPPPORT VERSION 10.0, *// //* DD STATEMENTS FOR GEOSUPPORT DATA FILES (E.G. GRID, PAD, ETC) *// //* ARE NO LONGER NEEDED AND ARE IGNORED. GEOSUPPORT IS TAILORED *// //* TO USE STANDARD GEOSUPPORT DATA SET NAMES. *// //* TO USE NON-STANDARD FILES, SEE YOUR SYSTEMS PROGRAMMER. *// //* *// //******************************************************************// //* //GO.SYSUDUMP DD SYSOUT=A,OUTLIM=3000 //GO.SYSOUT DD SYSOUT=A //GO.RPTFILE DD SYSOUT=A //GO.INFILE DD * 1 CHAMBERS ST 1 HUDSON ST 1 SIXTH AVE 1 W. 8 ST 1 DUANE ST 1 READE ST /* // SAMPLE COBOL PROGRAM #2 EXECUTION OUTPUT *****----------------- INPUT INTERSECTION ----------------------***** *****------------ SELECTED OUTPUT ITEMS ---***** B IN-STREET-NAME-1 B IN-STREET-NAME-2 ZIP CD NYPD-PCT SCHLDST INTERSECTING STREET NM - -------------------------------- - -------------------------------- ----- -- -------- ------- ---------------------- 1 CHAMBERS ST 1 HUDSON ST 10007 01 001 02 CHAMBERS STREET HUDSON STREET WEST BROADWAY 1 SIXTH AVE 1 W. 8 ST 10014 02 006 02 6 AVENUE GREENWICH AVENUE WEST 8 STREET ***** FUNCTION 2 GRC = 62 REASON CODE = . READE STREET & DUANE STREET DO NOT INTERSECT 1 DUANE ST 1 READE ST","title":"COBOL SAMPLE PROGRAM #2"},{"location":"appendices/appendix08/#assembler-sample-program-1","text":"- Input Job Stream - MSW - Input Job Stream - COW - Output Report ASSEMBLER SAMPLE PROGRAM #1 \u2013Job Stream-MSW //ASMF1SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //** ASSEMBLER SAMPLE BATCH GEOSUPPORT USER APPLICATION PROGRAM \\#1 ** //** MSW FORMAT ** //******************************************************************** //STEP1 EXEC ASMACLG, // PARM.ASM='OBJECT,NODECK', // PARM.LKED='XREF,LET,LIST,NCAL' //ASM.SYSLIB DD DSN=A030.GEO.COPYLIB2,DISP=SHR // DD DSN=A030.GEO.COPYLIB,DISP=SHR // DD DSN=SYS1.MACLIB,DISP=SHR //ASM.SYSIN DD * ASMF1SRC TITLE 'SAMPLE GEOSUPPORT ASSEMBLER PROGRAM 1 - MSW FORMAT' ASMF1SRC CSECT ***************************************************************** \\* THIS PROGRAM MAKES FUNCTION 1 AND D CALLS TO GEOSUPPORT USING * \\* BORO, HOUSENUMBER, & STREET NAME SUPPLIED BY AN INSTREAM FILE.* \\* FUNCTION 1 RETURNS GEOGRAPHIC INFORMATION FOR AN ADDRESS. * \\* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. * \\* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * \\* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE * \\* ORIGINAL CALL TO FUNCTION 1, ALL THE CROSS STREET NAMES * \\* WOULD HAVE BEEN RETURNED BY FUNCTION 1. * ***************************************************************** * *********************************************************************** \\* * \\* This program will do the following: * \\* * \\* * Read an instream record containing a house number, * \\* street name, and borough code * \\* * \\* * Build Work Area 1 for a Function 1 call * \\* * \\* * Call Function 1 * \\* * \\* * Get ZIP code, community district, police precinct, school * \\* district, and lists of street codes of streets intersecting * \\* at the low and high ends of the input street address's block. * \\* These will be displayed along with the input address which * \\* consists of borough code, house number, and street name. * \\* * \\* * Call Function D to get the street names of the first * \\* intersecting street on both low and high ends. * \\* * \\* * Print the information * \\* * \\* NOTE that after each Geosupport call, the Return Code is checked. * \\* If it is greater than 01, an error message is printed, and * \\* the next input record, if any, is read. * \\* If it is 01, a warning message is printed, the input record is * \\* processed, and the next record is read. * \\* If it is zero, the input record is processed, and the next * \\* record is read. * \\* * *********************************************************************** SPACE STM R14,R12,12(R13) Save caller's registers LR R3,R15 LA R12,4095(,R3) (second base register LA R12,1(,R12) to accomodate Work Areas 1 and 2) USING ASMF1SRC,R3,R12 \\* Chain save areas LA R4,MYSAVE ST R13,4(,R4) Save caller's savearea address ST R4,8(,R13) Save pgm's savearea adr in caller savearea LR R13,R4 Ensure that R13 points to pgm's savearea SPACE 2 XR R15,R15 (set OS return code to zero) \\* Open input and output files OPEN (INFILE,,OUTFILE,(OUTPUT)) TM INFILE+48,X'10' Did input file open successfully? BNO INOPNERR (no..) TM OUTFILE+48,X'10' Did output file open successfully? BNO OUTOPNER (no..) \\* Print page and report header lines SPACE PUT OUTFILE,HDR1 PUT OUTFILE,HDR2 PUT OUTFILE,HDR3 PUT OUTFILE,HDR4 B NEXTREC SPACE 2 TITLE 'READ IN-STREAM INPUT AND PREPARE FUNCTION 1 CALL' \\* Read (next) input record NEXTREC DS 0H GET INFILE,INREC \\* Move input data to output record for display MVC DBORO,INBORO borough code MVC DHSE(L'W1IHSE#),INHOUSE house number MVC DSTRT,INSTREET street name SPACE ***************************************************************** \\* TO MAKE A FUNCTION 1 CALL: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET WA1'S FUNCTION CODE FIELD TO 1 * \\* (3) MOVE THE INPUT BORO TO WA1'S INPUT BORO CODE FIELD * \\* (4) MOVE THE INPUT HOUSE NUMBER TO WA1'S INPUT HOUSE NUMBER * \\* FIELD * \\* (5) MOVE THE INPUT STREET TO WA1'S INPUT STREET NAME FIELD * \\* (6) CALL GBI WITH 2 WORKAREAS * \\* (7) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ***************************************************************** \\* Clear WA1 to blanks LA R8,W1BAL \"To\" address for MVCL LA R9,W1LENGTH \"To\" length XR R11,R11 for blanking out std WA1, ICM R11,B'1000',=C' ' rather than moving data \\* ...since if the \"from\" length reg. has lo-order zeroes, MVCL will \\* pad the target area with the pad character of the \"from\" register \\* and do nothing else (the \"from\" address register is not used). MVCL R8,R10 SPACE \\* Prime Work Area 1 for Function 1 call MVC W1IFUNC,=CL2'1 ' Get function code MVC W1IBORO1,INBORO borough code MVC W1IHSE#(L'W1IHSE#),INHOUSE house number MVC W1ISTRT1,INSTREET street name MVC W1ISNL(L'W1ISNL),=C'25' Normalized street name length ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\* * \\* As of Geosupport Version 10.1, * \\* to receive roadbed-specific information, * \\* set the Roadbed Request Switch to 'R', as follows: * \\* MVC W1IRBRQS,C'R' * \\* * \\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\* Call Function 1 (2-Work-Area call) CALL GBI,(W1BAL,W2BAL),VL \\* Check Return code CLC W1ORC(2),=C'00' Good return? BE PROCESS Yes, process returned data \\* Handle errors and warnings ERREXIT DS 0H CLC W1ORC(2),=C'01' Warning condition? BE PUTWARN Yes, process warning \\* and then process input; \\* otherwise, process error MVC ERINPUT,DSPLYIN Boro code, hse no., street name MVC ERFUNC,W1IFUNC function code MVC ERRET(L'W1ORC),W1ORC return code MVC ERREAS(L'W1OREASN),W1OREASN reason code PUT OUTFILE,ERR1 Print error messages 1 B PUTMSG and 2 PUTWARN DS 0H MVC WRINPUT,DSPLYIN Boro code, hse no., street name MVC WRFUNC,W1IFUNC function code MVC WRRET(L'W1ORC),W1ORC return code MVC WRREAS(L'W1OREASN),W1OREASN reason code PUT OUTFILE,WRN1 Print warning messages 1 PUTMSG DS 0H and 2 MVC ERRWRN(L'W1OERROR),W1OERROR PUT OUTFILE,ERRWRN2 Print error/warning message 2 CLC W1ORC(2),=C'01' Warning condition? BNE NEXTREC No, get next record, if any MVI OINPUT,C' ' Yes, MVC OINPUT+1(L'OINPUT-1),OINPUT ensure input NOT displayd MVI OUTVALID,C' ' ensure single-spacing after warning B GETZIP and continue normal processing SPACE \\* Handle successful Geosupport calls (Return Code <= 01) PROCESS DS 0H MVC OINPUT,DSPLYIN Boro code, hse no., street name MVI OUTVALID,C'0' Ensure double-spacing GETZIP DS 0H MVC OZIP,W2F1ZIP ZIP code MVC OCOMM,W2F1CDN community district number MVC OPCT,W2F1POP police precinct MVC OSCHL,W2F1SCH school district ASSEMBLER SAMPLE PROGRAM #1- Job stream- MSW (continue ***** At this point, clear WA1 again, call Function D, and move ****** ***** its reported Low and High Instersecting Street Names to output * TITLE 'GET LOW, HIGH INTERSECTING STREETS, USING FUNCTION D' SPACE 2 ************************************************************* \\* THIS PROGRAM ASSUMES THERE EXISTS AT LEAST ONE HIGH AND * \\* ONE LOW CROSS STREET. TO GET THE STREET NAMES OF THE * \\* FIRST-LISTED HIGH AND FIRST-LISTED LOW CROSS STREETS * \\* FROM THE HIGH AND LOW STREET CODE LISTS CALL FUNCTION D: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET WA1'S FUNCTION CODE FIELD TO D * \\* (3) SET WA1'S STREET NAME LENGTH FIELD TO DESIRED * \\* VALUE (IN THIS CASE 25 BECAUSE THE REPORT LINE * \\* HAS SPACE FOR ONLY 25 CHARACTERS) * \\* (4) USE THE COMPACT STREET NAMES OPTION TO OBTAIN * \\* STREET NAMES FORMATTED FOR DISPLAY * \\* (5) MOVE WA2'S LOW PBSC FIELD TO WA1'S INPUT STREET * \\* CODE 1 FIELD * \\* (6) MOVE WA2'S HIGH PBSC FIELD TO WA1'S INPUT STREET * \\* CODE 2 FIELD * \\* (7) CALL GBI WITH 1 WORKAREA * \\* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ************************************************************* SPACE \\* Clear WA1 to blanks LA R8,W1BAL \"To\" address for MVCL LA R9,W1LENGTH \"To\" length XR R11,R11 for blanking out std WA1, ICM R11,B'1000',=C' ' rather than moving data \\* ...since if the \"from\" length reg. has lo-order zeroes, MVCL will \\* pad the target area with the pad character of the \"from\" register \\* and do nothing else (the \"from\" address register is not used). MVCL R8,R10 MVC W1ICDE1,W2F1CDEL MVC W1ICDE2,W2F1CDEH MVC W1IFUNC(2),=CL2'D ' MVC W1ISNL(L'W1ISNL),=C'25' normalized street name length MVI W1ICMPCT,C'C' streets to be compacted CALL GBI,W1BAL,VL Call Function D \\* Check Return code CLC W1ORC(2),=C'00' Good return? BNE ERREXIT No, error or warning \\* Yes, complete the record \\* and write it out PUTREC DS 0H MVC OLOSTRT,W1OSTRT1 MVC OHISTRT,W1OSTRT2 \\* Print an output record and get the next input record, if any PUT OUTFILE,OUTVALID B NEXTREC EXIT DS 0H OUTOPNER DS 0H CLOSE (INFILE) TM OUTFILE+48,X'10' Did OUTFILE open successfully? BNO INOPNERR No, bypass closing it CLOSE (OUTFILE) ASSEMBLER SAMPLE PROGRAM #1- Job stream- MSW (continue) INOPNERR DS 0H L R13,4(,R13) L R14,12(,R13) LM R0,R12,20(R13) BR R14 SPACE 2 PARAMERR DS 0H parameter error, missing or invalid LA R15,8 rc=8 B EXIT TITLE 'DATA SECTION - REGISTER ASSIGNMENTS' R0 EQU 0 R1 EQU 1 R2 EQU 2 R3 EQU 3 R4 EQU 4 R5 EQU 5 R6 EQU 6 R7 EQU 7 R8 EQU 8 R9 EQU 9 R10 EQU 10 R11 EQU 11 R12 EQU 12 R13 EQU 13 R14 EQU 14 R15 EQU 15 TITLE 'FILE AND RECORD DEFINITIONS' PUSH PRINT PRINT NOGEN INFILE DCB DSORG=PS,MACRF=(GM),DDNAME=INFILE, * RECFM=FB,LRECL=80,BLKSIZE=400,EODAD=EXIT SPACE OUTFILE DCB DSORG=PS,MACRF=(PM),DDNAME=SYSPRINT, * RECFM=FBA,LRECL=133,BLKSIZE=1330 * POP PRINT SPACE INREC DS 0CL80 Input record INBORO DS CL1 Borough code INHOUSE DS CL12 House number INSTREET DS CL32 Street name DC 35C' ' filler SPACE \\* Output records: error, warning, and normal ERR1 DS 0CL133 DC C'0' ERINPUT DS CL48 DC C'*** FUNCTION ' ERFUNC DS CL2 DC C' GRC = ' ERRET DS CL2 DC C' REASON CODE = ' ERREAS DS CL1 DC CL(133-89)' ' SPACE WRN1 DS 0CL133 DC C'0' WRINPUT DS CL48 DC C'*** FUNCTION ' WRFUNC DS CL2 DC C' WARNING, GRC = ' WRRET DS CL2 DC C' REASON CODE = ' WRREAS DS CL1 DC CL(133-98)' ' SPACE ERRWRN2 DS 0CL133 DC C' ' DC 48C' ' Boro Code, House Number, Street Name DC CL4'*** ' ERRWRN DS CL80 Error/Warning message SPACE HDR1 DC CL133'1SAMPLE ASSEMBLER \\#1 EXECUTION OUTPUT * ' HDR2 DC CL133'0*****---------- INPUT ADDRESS ------------***** \\*C ****--------------------- SELECTED OUTPUT ITEMS --------C ----------------------*****' HDR3 DC CL133'0B HOUSE NUMBER IN-STREET-NAME * ZIP CD NYPD-PCT SCHLDST LOW CROSS STREET HIGH * CROSS STREET ' HDR4 DC CL133' - ------------ -------------------------------- -* ---- -- -------- ------- ------------------------- -----* ---------------------------' OUTVALID DS 0CL133 \\* Borough code, house number, and street name are from input record DC C'0' OINPUT DS CL48 OZIP DS CL5 DC C' ' OCOMM DS CL2 DC C' ' OPCT DS CL3 DC 6C' ' OSCHL DS CL2 DC 6C' ' OLOSTRT DS CL25 Normalized name of intersecting street at low end DC C' ' OHISTRT DS CL25 Normalized name of intersecting street at high end DC 7C' ' TITLE 'WORKING VARIABLES, VALUES, ETC.' MYSAVE DC 18F'0' *********************************************************************** ***** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE *** ***** COPY STATEMENTS) IS STRONGLY ENCOURAGED. *** *********************************************************************** COPY W1BAL COPY WORK AREA 1 EJECT COPY W2BAL COPY WORK AREA 2 EJECT SPACE 2 DSPLYIN DS 0CL48 DBORO DS CL1 DC C' ' DHSE DS CL12 DC C' ' DSTRT DS CL32 DC C' ' SPACE 2 TITLE 'CONSTANTS AND LITERAL POOL' SPACE 2 LTORG END ASMF1SRC //LKED.SYSIN DD * INCLUDE INCLIB(GBI) /* //LKED.INCLIB DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* THE STEPLIB (OR JOBLIB) OF THE GEOSUPPORT EXECUTION STEP \\*// //* MUST INCLUDE THE FOLLOWING TWO CONCATENATED DATASETS: \\*// //* A030.GEO.SUPPORT.PDSE.LOADLIB \\*// //* A030.GEO.SUPPORT.LOADLIB \\*// //* \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR //* DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* DD STATEMENTS FOR GEOSUPPORT DATA FILES (E.G. GRID, PAD, \\*// //* ETC) ARE NO LONGER NEEDED AND ARE IGNORED. GEOSUPPORT \\*// //* IS TAILORED TO USE STANDARD GEOSUPPORT DATA SET NAMES. \\*// //* TO USE NON-STANDARD FILES, SEE YOUR SYSTEMS PROGRAMMER \\*// //* \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* //SYSUDUMP DD SYSOUT=\\*,OUTLIM=2000 //SYSPRINT DD SYSOUT=* //INFILE DD * 122 READE ST 1500 DUANE ST 12-4 BROADWAY 4165-100 BAISLEY BLVD 4165-1000 BAISLEY BLVD /* // ASSEMBLER SAMPLE PROGRAM #1 \u2013Job Stream-MSW //ASMC1SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //** ASSEMBLER SAMPLE BATCH GEOSUPPORT USER APPLICATION PROGRAM \\#1 ** //** COW FORMAT ** //******************************************************************** //STEP1 EXEC ASMACLG, // PARM.ASM='OBJECT,NODECK', // PARM.LKED='XREF,LET,LIST,NCAL' //ASM.SYSLIB DD DSN=A030.GEO.COPYLIB2,DISP=SHR // DD DSN=A030.GEO.COPYLIB,DISP=SHR // DD DSN=SYS1.MACLIB,DISP=SHR //ASM.SYSIN DD * ASMC1SRC TITLE 'SAMPLE GEOSUPPORT ASSEMBLER PROGRAM 1 - COW FORMAT' ASMC1SRC CSECT ***************************************************************** \\* THIS PROGRAM MAKES FUNCTION 1 AND D CALLS TO GEOSUPPORT USING * \\* BORO, HOUSENUMBER, & STREET NAME SUPPLIED BY AN INSTREAM FILE.* \\* FUNCTION 1 RETURNS GEOGRAPHIC INFORMATION FOR AN ADDRESS. * \\* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. * \\* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * \\* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE * \\* ORIGINAL CALL TO FUNCTION 1, ALL THE CROSS STREET NAMES * \\* WOULD HAVE BEEN RETURNED BY FUNCTION 1. * ***************************************************************** * *********************************************************************** \\* * \\* This program will do the following: * \\* * \\* * Read an instream record containing a house number, * \\* street name, and borough code * \\* * \\* * Build Work Area 1 for a Function 1 call * \\* * \\* * Call Function 1 * \\* * \\* * Get ZIP code, community district, police precinct, school * \\* district, and lists of street codes of streets intersecting * \\* at the low and high ends of the input street address's block. * \\* These will be displayed along with the input address which * \\* consists of borough code, house number, and street name. * \\* * \\* * Call Function D to get the street names of the first * \\* intersecting street on both low and high ends. * \\* * \\* * Print the information * \\* * \\* NOTE that after each Geosupport call, the Return Code is checked. * \\* If it is greater than 01, an error message is printed, and * \\* the next input record, if any, is read. * \\* If it is 01, a warning message is printed, the input record is * \\* processed, and the next record is read. * \\* If it is zero, the input record is processed, and the next * \\* record is read. * \\* * *********************************************************************** SPACE STM R14,R12,12(R13) Save caller's registers LR R3,R15 LA R12,4095(,R3) (second base register LA R12,1(,R12) to accomodate Work Areas 1 and 2) USING ASMC1SRC,R3,R12 \\* Chain save areas LA R4,MYSAVE ST R13,4(,R4) Save caller's savearea address ST R4,8(,R13) Save pgm's savearea adr in caller savearea LR R13,R4 Ensure that R13 points to pgm's savearea SPACE 2 XR R15,R15 (set OS return code to zero) \\* Open input and output files OPEN (INFILE,,OUTFILE,(OUTPUT)) TM INFILE+48,X'10' Did input file open successfully? BNO INOPNERR (no..) TM OUTFILE+48,X'10' Did output file open successfully? BNO OUTOPNER (no..) \\* Print page and report header lines SPACE PUT OUTFILE,HDR1 PUT OUTFILE,HDR2 PUT OUTFILE,HDR3 PUT OUTFILE,HDR4 B NEXTREC SPACE 2 TITLE 'READ IN-STREAM INPUT AND PREPARE FUNCTION 1 CALL' \\* Read (next) input record NEXTREC DS 0H GET INFILE,INREC \\* Move input data to output record for display MVC DBORO,INBORO borough code MVC DHSE(L'INHOUSE),INHOUSE house number MVC DSTRT,INSTREET street name SPACE ***************************************************************** \\* TO MAKE A FUNCTION 1 CALL: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET WA1'S FUNCTION CODE FIELD TO 1 * \\* (3) MOVE THE INPUT BORO TO WA1'S INPUT BORO CODE FIELD * \\* (4) MOVE THE INPUT HOUSE NUMBER TO WA1'S INPUT HOUSE NUMBER * \\* FIELD * \\* (5) MOVE THE INPUT STREET TO WA1'S INPUT STREET NAME FIELD * \\* (6) CALL GBI WITH 2 WORKAREAS * \\* (7) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ***************************************************************** \\* Clear WA1 to blanks LA R8,P1BAL \"To\" address for MVCL LA R9,P1LENGTH \"To\" length XR R11,R11 for blanking out std WA1, ICM R11,B'1000',=C' ' rather than moving data \\* ...since if the \"from\" length reg. has lo-order zeroes, MVCL will \\* pad the target area with the pad character of the \"from\" register \\* and do nothing else (the \"from\" address register is not used). MVCL R8,R10 SPACE \\* Prime Work Area 1 for Function 1 call MVI P1IPLIND,C'C' Set Work Area Format to COW MVC P1IFUNC,=CL2'1 ' Get function code MVC P1IBORO1,INBORO borough code * \\* Note COW - MSW: Display House # - P1IHSE# is a 16-byte field \\* W1IHSE# is a 12-byte field * MVC P1IHSE#(L'INHOUSE),INHOUSE house number MVC P1ISTRT1,INSTREET street name * \\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\* * \\* As of Geosupport Version 10.1, * \\* to receive roadbed-specific information, * \\* set the Roadbed Request Switch to 'R', as follows: * \\* MVC P1IRBRQS,C'R' * \\* * \\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * MVC P1ISNL(L'P1ISNL),=C'25' Normalized street name length \\* Call Function 1 (2-Work-Area call) CALL GBI,(P1BAL,P2BAL),VL \\* Check Return code CLC P1ORC(2),=C'00' Good return? BE PROCESS Yes, process returned data \\* Handle errors and warnings ERREXIT DS 0H CLC P1ORC(2),=C'01' Warning condition? BE PUTWARN Yes, process warning \\* and then process input; \\* otherwise, process error MVC ERINPUT,DSPLYIN Boro code, hse no., street name MVC ERFUNC,P1IFUNC function code MVC ERRET(L'P1ORC),P1ORC return code MVC ERREAS(L'P1OREASN),P1OREASN reason code PUT OUTFILE,ERR1 Print error messages 1 B PUTMSG and 2 PUTWARN DS 0H MVC WRINPUT,DSPLYIN Boro code, hse no., street name MVC WRFUNC,P1IFUNC function code MVC WRRET(L'P1ORC),P1ORC return code MVC WRREAS(L'P1OREASN),P1OREASN reason code PUT OUTFILE,WRN1 Print warning messages 1 PUTMSG DS 0H and 2 MVC ERRWRN(L'P1OERROR),P1OERROR PUT OUTFILE,ERRWRN2 Print error/warning message 2 CLC P1ORC(2),=C'01' Warning condition? BNE NEXTREC No, get next record, if any MVI OINPUT,C' ' Yes, MVC OINPUT+1(L'OINPUT-1),OINPUT ensure input NOT displayd MVI OUTVALID,C' ' ensure single-spacing after warning B GETZIP and continue normal processing SPACE \\* Handle successful Geosupport calls (Return Code <= 01) PROCESS DS 0H MVC OINPUT,DSPLYIN Boro code, hse no., street name MVI OUTVALID,C'0' Ensure double-spacing GETZIP DS 0H MVC OZIP,P2F1ZIP ZIP code MVC OCOMM,P2F1CDN community district number MVC OPCT,P2F1POP police precinct MVC OSCHL,P2F1SCH school district ***** At this point, clear WA1 again, call Function D, and move ****** ***** its reported Low and High Intersecting Street Names to output * TITLE 'GET LOW, HIGH INTERSECTING STREETS, USING FUNCTION D' SPACE 2 ************************************************************* \\* THIS PROGRAM ASSUMES THERE EXISTS AT LEAST ONE HIGH AND * \\* ONE LOW CROSS STREET. TO GET THE STREET NAMES OF THE * \\* FIRST-LISTED HIGH AND FIRST-LISTED LOW CROSS STREETS * \\* FROM THE HIGH AND LOW STREET CODE LISTS CALL FUNCTION D: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET WA1'S FUNCTION CODE FIELD TO D * \\* (3) SET WA1'S STREET NAME LENGTH FIELD TO DESIRED * \\* VALUE (IN THIS CASE 25 BECAUSE THE REPORT LINE * \\* HAS SPACE FOR ONLY 25 CHARACTERS) * \\* (4) USE THE COMPACT STREET NAMES OPTION TO OBTAIN * \\* STREET NAMES FORMATTED FOR DISPLAY * \\* (5) MOVE WA2'S LOW B5SC FIELD TO WA1'S INPUT STREET * \\* CODE 1 FIELD * \\* (6) MOVE WA2'S HIGH B5SC FIELD TO WA1'S INPUT STREET * \\* CODE 2 FIELD * \\* (7) CALL GBI WITH 1 WORKAREA * \\* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ************************************************************* SPACE \\* Clear WA1 to blanks LA R8,P1BAL \"To\" address for MVCL LA R9,P1LENGTH \"To\" length XR R11,R11 for blanking out std WA1, ICM R11,B'1000',=C' ' rather than moving data \\* ...since if the \"from\" length reg. has lo-order zeroes, MVCL will \\* pad the target area with the pad character of the \"from\" register and do nothing else (the \"from\" address register is not used). MVCL R8,R10 MVI P1IPLIND,C'C' Set Work Area Format to COW * \\* Note COW - MSW: P1ICDEx is the 10-digit street code (no boro) \\* P1IBCDx is the Boro and 10-digit street code \\* W1ICDEx is the packed Boro and 5-digit street code \\* P2F1CDEx is Boro and 5-digit street code list \\* W2F1CDEx is packed Boro and 5-digit street code list * MVC P1IBCD1(6),P2F1CDEL MVC P1IBCD2(6),P2F1CDEH MVC P1IFUNC(2),=CL2'D ' MVC P1ISNL(L'P1ISNL),=C'25' normalized street name length MVI P1ICMPCT,C'C' streets to be compacted CALL GBI,P1BAL,VL Call Function D \\* Check Return code CLC P1ORC(2),=C'00' Good return? BNE ERREXIT No, error or warning \\* Yes, complete the record \\* and write it out PUTREC DS 0H MVC OLOSTRT,P1OSTRT1 MVC OHISTRT,P1OSTRT2 \\* Print an output record and get the next input record, if any PUT OUTFILE,OUTVALID B NEXTREC EXIT DS 0H OUTOPNER DS 0H CLOSE (INFILE) TM OUTFILE+48,X'10' Did OUTFILE open successfully? BNO INOPNERR No, bypass closing it CLOSE (OUTFILE) INOPNERR DS 0H L R13,4(,R13) L R14,12(,R13) LM R0,R12,20(R13) BR R14 SPACE 2 PARAMERR DS 0H parameter error, missing or invalid LA R15,8 rc=8 B EXIT TITLE 'DATA SECTION - REGISTER ASSIGNMENTS' R0 EQU 0 R1 EQU 1 R2 EQU 2 R3 EQU 3 R4 EQU 4 R5 EQU 5 R6 EQU 6 R7 EQU 7 R8 EQU 8 R9 EQU 9 R10 EQU 10 R11 EQU 11 R12 EQU 12 R13 EQU 13 R14 EQU 14 R15 EQU 15 TITLE 'FILE AND RECORD DEFINITIONS' PUSH PRINT PRINT NOGEN INFILE DCB DSORG=PS,MACRF=(GM),DDNAME=INFILE, * RECFM=FB,LRECL=80,BLKSIZE=400,EODAD=EXIT SPACE OUTFILE DCB DSORG=PS,MACRF=(PM),DDNAME=SYSPRINT, * RECFM=FBA,LRECL=133,BLKSIZE=1330 * POP PRINT SPACE INREC DS 0CL80 Input record INBORO DS CL1 Borough code INHOUSE DS CL12 House number INSTREET DS CL32 Street name DC 35C' ' filler SPACE \\* Output records: error, warning, and normal ERR1 DS 0CL133 DC C'0' ERINPUT DS CL48 DC C'*** FUNCTION ' ERFUNC DS CL2 DC C' GRC = ' ERRET DS CL2 DC C' REASON CODE = ' ERREAS DS CL1 DC CL(133-89)' ' SPACE WRN1 DS 0CL133 DC C'0' WRINPUT DS CL48 DC C'*** FUNCTION ' WRFUNC DS CL2 DC C' WARNING, GRC = ' WRRET DS CL2 DC C' REASON CODE = ' WRREAS DS CL1 DC CL(133-98)' ' SPACE ERRWRN2 DS 0CL133 DC C' ' DC 48C' ' Boro Code, House Number, Street Name DC CL4'*** ' ERRWRN DS CL80 Error/Warning message SPACE HDR1 DC CL133'1SAMPLE ASSEMBLER \\#1 EXECUTION OUTPUT * ' HDR2 DC CL133'0*****---------- INPUT ADDRESS ------------***** \\*C ****--------------------- SELECTED OUTPUT ITEMS --------C ----------------------*****' HDR3 DC CL133'0B HOUSE NUMBER IN-STREET-NAME * ZIP CD NYPD-PCT SCHLDST LOW CROSS STREET HIGH * CROSS STREET ' HDR4 DC CL133' - ------------ -------------------------------- -* ---- -- -------- ------- ------------------------- -----* ---------------------------' OUTVALID DS 0CL133 \\* Borough code, house number, and street name are from input record DC C'0' OINPUT DS CL48 OZIP DS CL5 DC C' ' OCOMM DS CL2 DC C' ' OPCT DS CL3 DC 6C' ' OSCHL DS CL2 DC 6C' ' OLOSTRT DS CL25 Normalized name of intersecting street at low end DC C' ' OHISTRT DS CL25 Normalized name of intersecting street at high end DC 7C' ' TITLE 'WORKING VARIABLES, VALUES, ETC.' MYSAVE DC 18F'0' *********************************************************************** ***** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE *** ***** COPY STATEMENTS) IS STRONGLY ENCOURAGED. *** *********************************************************************** COPY P1BAL COPY WORK AREA 1 EJECT COPY P2BAL COPY WORK AREA 2 EJECT SPACE 2 DSPLYIN DS 0CL48 DBORO DS CL1 DC C' ' DHSE DS CL12 DC C' ' DSTRT DS CL32 DC C' ' SPACE 2 TITLE 'CONSTANTS AND LITERAL POOL' SPACE 2 LTORG END ASMC1SRC //LKED.SYSIN DD * INCLUDE INCLIB(GBI) /* //LKED.INCLIB DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* GEO.SUPPORT.PDSE.LOADLIB AND GEO.SUPPORT.LOADLIB \\*// //* ARE REQUIRED IN THE STEPLIB (OR JOBLIB) OF THE \\*// //* GEOSUPPORT EXECUTION STEP. \\*// //* \\*// //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR //* DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* DD STATEMENTS ARE NO LONGER USED TO DEFINE? \\*// //* GEOSUPPORT DATA FILES. \\*// //* DD STATEMENTS ARE NO LONGER INCLUDED FOR THE \\*// //* GEOSUPPORT FOREGROUND FILES. \\*// //* TO USE NON-STANDARD FILES, SEE YOUR SYSTEMS PROGRAMMER \\*// //* \\*// //SYSUDUMP DD SYSOUT=\\*,OUTLIM=2000 //SYSPRINT DD SYSOUT=* //INFILE DD * 122 READE ST 1500 DUANE ST 12-4 BROADWAY 4165-100 BAISLEY BLVD 4165-1000 BAISLEY BLVD /* //
ASSEMBLER SAMPLE PROGRAM \\#1 \u2013Job Stream-COW
//ASMC1SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //** ASSEMBLER SAMPLE BATCH GEOSUPPORT USER APPLICATION PROGRAM \\#1 ** //** COW FORMAT ** //******************************************************************** //STEP1 EXEC ASMACLG, // PARM.ASM='OBJECT,NODECK', // PARM.LKED='XREF,LET,LIST,NCAL' //ASM.SYSLIB DD DSN=A030.GEO.COPYLIB2,DISP=SHR // DD DSN=A030.GEO.COPYLIB,DISP=SHR // DD DSN=SYS1.MACLIB,DISP=SHR //ASM.SYSIN DD * ASMC1SRC TITLE 'SAMPLE GEOSUPPORT ASSEMBLER PROGRAM 1 - COW FORMAT' ASMC1SRC CSECT ***************************************************************** \\* THIS PROGRAM MAKES FUNCTION 1 AND D CALLS TO GEOSUPPORT USING * \\* BORO, HOUSENUMBER, & STREET NAME SUPPLIED BY AN INSTREAM FILE.* \\* FUNCTION 1 RETURNS GEOGRAPHIC INFORMATION FOR AN ADDRESS. * \\* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. * \\* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * \\* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE * \\* ORIGINAL CALL TO FUNCTION 1, ALL THE CROSS STREET NAMES * \\* WOULD HAVE BEEN RETURNED BY FUNCTION 1. * ***************************************************************** * *********************************************************************** \\* * \\* This program will do the following: * \\* * \\* * Read an instream record containing a house number, * \\* street name, and borough code * \\* * \\* * Build Work Area 1 for a Function 1 call * \\* * \\* * Call Function 1 * \\* * \\* * Get ZIP code, community district, police precinct, school * \\* district, and lists of street codes of streets intersecting * \\* at the low and high ends of the input street address's block. * \\* These will be displayed along with the input address which * \\* consists of borough code, house number, and street name. * \\* * \\* * Call Function D to get the street names of the first * \\* intersecting street on both low and high ends. * \\* * \\* * Print the information * \\* * \\* NOTE that after each Geosupport call, the Return Code is checked. * \\* If it is greater than 01, an error message is printed, and * \\* the next input record, if any, is read. * \\* If it is 01, a warning message is printed, the input record is * \\* processed, and the next record is read. * \\* If it is zero, the input record is processed, and the next * \\* record is read. * \\* * *********************************************************************** SPACE STM R14,R12,12(R13) Save caller's registers LR R3,R15 LA R12,4095(,R3) (second base register LA R12,1(,R12) to accomodate Work Areas 1 and 2) USING ASMC1SRC,R3,R12 \\* Chain save areas LA R4,MYSAVE ST R13,4(,R4) Save caller's savearea address ST R4,8(,R13) Save pgm's savearea adr in caller savearea LR R13,R4 Ensure that R13 points to pgm's savearea SPACE 2 XR R15,R15 (set OS return code to zero) \\* Open input and output files OPEN (INFILE,,OUTFILE,(OUTPUT)) TM INFILE+48,X'10' Did input file open successfully? BNO INOPNERR (no..) TM OUTFILE+48,X'10' Did output file open successfully? BNO OUTOPNER (no..) \\* Print page and report header lines SPACE PUT OUTFILE,HDR1 PUT OUTFILE,HDR2 PUT OUTFILE,HDR3 PUT OUTFILE,HDR4 B NEXTREC SPACE 2 TITLE 'READ IN-STREAM INPUT AND PREPARE FUNCTION 1 CALL' \\* Read (next) input record NEXTREC DS 0H GET INFILE,INREC \\* Move input data to output record for display MVC DBORO,INBORO borough code MVC DHSE(L'INHOUSE),INHOUSE house number MVC DSTRT,INSTREET street name SPACE ***************************************************************** \\* TO MAKE A FUNCTION 1 CALL: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET WA1'S FUNCTION CODE FIELD TO 1 * \\* (3) MOVE THE INPUT BORO TO WA1'S INPUT BORO CODE FIELD * \\* (4) MOVE THE INPUT HOUSE NUMBER TO WA1'S INPUT HOUSE NUMBER * \\* FIELD * \\* (5) MOVE THE INPUT STREET TO WA1'S INPUT STREET NAME FIELD * \\* (6) CALL GBI WITH 2 WORKAREAS * \\* (7) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ***************************************************************** \\* Clear WA1 to blanks LA R8,P1BAL \"To\" address for MVCL LA R9,P1LENGTH \"To\" length XR R11,R11 for blanking out std WA1, ICM R11,B'1000',=C' ' rather than moving data \\* ...since if the \"from\" length reg. has lo-order zeroes, MVCL will \\* pad the target area with the pad character of the \"from\" register \\* and do nothing else (the \"from\" address register is not used). MVCL R8,R10 SPACE \\* Prime Work Area 1 for Function 1 call MVI P1IPLIND,C'C' Set Work Area Format to COW MVC P1IFUNC,=CL2'1 ' Get function code MVC P1IBORO1,INBORO borough code * \\* Note COW - MSW: Display House # - P1IHSE# is a 16-byte field \\* W1IHSE# is a 12-byte field * MVC P1IHSE#(L'INHOUSE),INHOUSE house number MVC P1ISTRT1,INSTREET street name * \\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\* * \\* As of Geosupport Version 10.1, * \\* to receive roadbed-specific information, * \\* set the Roadbed Request Switch to 'R', as follows: * \\* MVC P1IRBRQS,C'R' * \\* * \\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * MVC P1ISNL(L'P1ISNL),=C'25' Normalized street name length \\* Call Function 1 (2-Work-Area call) CALL GBI,(P1BAL,P2BAL),VL \\* Check Return code CLC P1ORC(2),=C'00' Good return? BE PROCESS Yes, process returned data \\* Handle errors and warnings ERREXIT DS 0H CLC P1ORC(2),=C'01' Warning condition? BE PUTWARN Yes, process warning \\* and then process input; \\* otherwise, process error MVC ERINPUT,DSPLYIN Boro code, hse no., street name MVC ERFUNC,P1IFUNC function code MVC ERRET(L'P1ORC),P1ORC return code MVC ERREAS(L'P1OREASN),P1OREASN reason code PUT OUTFILE,ERR1 Print error messages 1 B PUTMSG and 2 PUTWARN DS 0H MVC WRINPUT,DSPLYIN Boro code, hse no., street name MVC WRFUNC,P1IFUNC function code MVC WRRET(L'P1ORC),P1ORC return code MVC WRREAS(L'P1OREASN),P1OREASN reason code PUT OUTFILE,WRN1 Print warning messages 1 PUTMSG DS 0H and 2 MVC ERRWRN(L'P1OERROR),P1OERROR PUT OUTFILE,ERRWRN2 Print error/warning message 2 CLC P1ORC(2),=C'01' Warning condition? BNE NEXTREC No, get next record, if any MVI OINPUT,C' ' Yes, MVC OINPUT+1(L'OINPUT-1),OINPUT ensure input NOT displayd MVI OUTVALID,C' ' ensure single-spacing after warning B GETZIP and continue normal processing SPACE \\* Handle successful Geosupport calls (Return Code <= 01) PROCESS DS 0H MVC OINPUT,DSPLYIN Boro code, hse no., street name MVI OUTVALID,C'0' Ensure double-spacing GETZIP DS 0H MVC OZIP,P2F1ZIP ZIP code MVC OCOMM,P2F1CDN community district number MVC OPCT,P2F1POP police precinct MVC OSCHL,P2F1SCH school district ***** At this point, clear WA1 again, call Function D, and move ****** ***** its reported Low and High Intersecting Street Names to output * TITLE 'GET LOW, HIGH INTERSECTING STREETS, USING FUNCTION D' SPACE 2 ************************************************************* \\* THIS PROGRAM ASSUMES THERE EXISTS AT LEAST ONE HIGH AND * \\* ONE LOW CROSS STREET. TO GET THE STREET NAMES OF THE * \\* FIRST-LISTED HIGH AND FIRST-LISTED LOW CROSS STREETS * \\* FROM THE HIGH AND LOW STREET CODE LISTS CALL FUNCTION D: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET WA1'S FUNCTION CODE FIELD TO D * \\* (3) SET WA1'S STREET NAME LENGTH FIELD TO DESIRED * \\* VALUE (IN THIS CASE 25 BECAUSE THE REPORT LINE * \\* HAS SPACE FOR ONLY 25 CHARACTERS) * \\* (4) USE THE COMPACT STREET NAMES OPTION TO OBTAIN * \\* STREET NAMES FORMATTED FOR DISPLAY * \\* (5) MOVE WA2'S LOW B5SC FIELD TO WA1'S INPUT STREET * \\* CODE 1 FIELD * \\* (6) MOVE WA2'S HIGH B5SC FIELD TO WA1'S INPUT STREET * \\* CODE 2 FIELD * \\* (7) CALL GBI WITH 1 WORKAREA * \\* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ************************************************************* SPACE \\* Clear WA1 to blanks LA R8,P1BAL \"To\" address for MVCL LA R9,P1LENGTH \"To\" length XR R11,R11 for blanking out std WA1, ICM R11,B'1000',=C' ' rather than moving data \\* ...since if the \"from\" length reg. has lo-order zeroes, MVCL will \\* pad the target area with the pad character of the \"from\" register and do nothing else (the \"from\" address register is not used). MVCL R8,R10 MVI P1IPLIND,C'C' Set Work Area Format to COW * \\* Note COW - MSW: P1ICDEx is the 10-digit street code (no boro) \\* P1IBCDx is the Boro and 10-digit street code \\* W1ICDEx is the packed Boro and 5-digit street code \\* P2F1CDEx is Boro and 5-digit street code list \\* W2F1CDEx is packed Boro and 5-digit street code list * MVC P1IBCD1(6),P2F1CDEL MVC P1IBCD2(6),P2F1CDEH MVC P1IFUNC(2),=CL2'D ' MVC P1ISNL(L'P1ISNL),=C'25' normalized street name length MVI P1ICMPCT,C'C' streets to be compacted CALL GBI,P1BAL,VL Call Function D \\* Check Return code CLC P1ORC(2),=C'00' Good return? BNE ERREXIT No, error or warning \\* Yes, complete the record \\* and write it out PUTREC DS 0H MVC OLOSTRT,P1OSTRT1 MVC OHISTRT,P1OSTRT2 \\* Print an output record and get the next input record, if any PUT OUTFILE,OUTVALID B NEXTREC EXIT DS 0H OUTOPNER DS 0H CLOSE (INFILE) TM OUTFILE+48,X'10' Did OUTFILE open successfully? BNO INOPNERR No, bypass closing it CLOSE (OUTFILE) INOPNERR DS 0H L R13,4(,R13) L R14,12(,R13) LM R0,R12,20(R13) BR R14 SPACE 2 PARAMERR DS 0H parameter error, missing or invalid LA R15,8 rc=8 B EXIT TITLE 'DATA SECTION - REGISTER ASSIGNMENTS' R0 EQU 0 R1 EQU 1 R2 EQU 2 R3 EQU 3 R4 EQU 4 R5 EQU 5 R6 EQU 6 R7 EQU 7 R8 EQU 8 R9 EQU 9 R10 EQU 10 R11 EQU 11 R12 EQU 12 R13 EQU 13 R14 EQU 14 R15 EQU 15 TITLE 'FILE AND RECORD DEFINITIONS' PUSH PRINT PRINT NOGEN INFILE DCB DSORG=PS,MACRF=(GM),DDNAME=INFILE, * RECFM=FB,LRECL=80,BLKSIZE=400,EODAD=EXIT SPACE OUTFILE DCB DSORG=PS,MACRF=(PM),DDNAME=SYSPRINT, * RECFM=FBA,LRECL=133,BLKSIZE=1330 * POP PRINT SPACE INREC DS 0CL80 Input record INBORO DS CL1 Borough code INHOUSE DS CL12 House number INSTREET DS CL32 Street name DC 35C' ' filler SPACE \\* Output records: error, warning, and normal ERR1 DS 0CL133 DC C'0' ERINPUT DS CL48 DC C'*** FUNCTION ' ERFUNC DS CL2 DC C' GRC = ' ERRET DS CL2 DC C' REASON CODE = ' ERREAS DS CL1 DC CL(133-89)' ' SPACE WRN1 DS 0CL133 DC C'0' WRINPUT DS CL48 DC C'*** FUNCTION ' WRFUNC DS CL2 DC C' WARNING, GRC = ' WRRET DS CL2 DC C' REASON CODE = ' WRREAS DS CL1 DC CL(133-98)' ' SPACE ERRWRN2 DS 0CL133 DC C' ' DC 48C' ' Boro Code, House Number, Street Name DC CL4'*** ' ERRWRN DS CL80 Error/Warning message SPACE HDR1 DC CL133'1SAMPLE ASSEMBLER \\#1 EXECUTION OUTPUT * ' HDR2 DC CL133'0*****---------- INPUT ADDRESS ------------***** \\*C ****--------------------- SELECTED OUTPUT ITEMS --------C ----------------------*****' HDR3 DC CL133'0B HOUSE NUMBER IN-STREET-NAME * ZIP CD NYPD-PCT SCHLDST LOW CROSS STREET HIGH * CROSS STREET ' HDR4 DC CL133' - ------------ -------------------------------- -* ---- -- -------- ------- ------------------------- -----* ---------------------------' OUTVALID DS 0CL133 \\* Borough code, house number, and street name are from input record DC C'0' OINPUT DS CL48 OZIP DS CL5 DC C' ' OCOMM DS CL2 DC C' ' OPCT DS CL3 DC 6C' ' OSCHL DS CL2 DC 6C' ' OLOSTRT DS CL25 Normalized name of intersecting street at low end DC C' ' OHISTRT DS CL25 Normalized name of intersecting street at high end DC 7C' ' TITLE 'WORKING VARIABLES, VALUES, ETC.' MYSAVE DC 18F'0' *********************************************************************** ***** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE *** ***** COPY STATEMENTS) IS STRONGLY ENCOURAGED. *** *********************************************************************** COPY P1BAL COPY WORK AREA 1 EJECT COPY P2BAL COPY WORK AREA 2 EJECT SPACE 2 DSPLYIN DS 0CL48 DBORO DS CL1 DC C' ' DHSE DS CL12 DC C' ' DSTRT DS CL32 DC C' ' SPACE 2 TITLE 'CONSTANTS AND LITERAL POOL' SPACE 2 LTORG END ASMC1SRC //LKED.SYSIN DD * INCLUDE INCLIB(GBI) /* //LKED.INCLIB DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* GEO.SUPPORT.PDSE.LOADLIB AND GEO.SUPPORT.LOADLIB \\*// //* ARE REQUIRED IN THE STEPLIB (OR JOBLIB) OF THE \\*// //* GEOSUPPORT EXECUTION STEP. \\*// //* \\*// //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR //* DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* DD STATEMENTS ARE NO LONGER USED TO DEFINE? \\*// //* GEOSUPPORT DATA FILES. \\*// //* DD STATEMENTS ARE NO LONGER INCLUDED FOR THE \\*// //* GEOSUPPORT FOREGROUND FILES. \\*// //* TO USE NON-STANDARD FILES, SEE YOUR SYSTEMS PROGRAMMER \\*// //* \\*// //SYSUDUMP DD SYSOUT=\\*,OUTLIM=2000 //SYSPRINT DD SYSOUT=* //INFILE DD * 122 READE ST 1500 DUANE ST 12-4 BROADWAY 4165-100 BAISLEY BLVD 4165-1000 BAISLEY BLVD /* // ASSEMBLER SAMPLE PROGRAM #1 \u2013Job Stream-COW //ASMC1SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //** ASSEMBLER SAMPLE BATCH GEOSUPPORT USER APPLICATION PROGRAM \\#1 ** //** COW FORMAT ** //******************************************************************** //STEP1 EXEC ASMACLG, // PARM.ASM='OBJECT,NODECK', // PARM.LKED='XREF,LET,LIST,NCAL' //ASM.SYSLIB DD DSN=A030.GEO.COPYLIB2,DISP=SHR // DD DSN=A030.GEO.COPYLIB,DISP=SHR // DD DSN=SYS1.MACLIB,DISP=SHR //ASM.SYSIN DD * ASMC1SRC TITLE 'SAMPLE GEOSUPPORT ASSEMBLER PROGRAM 1 - COW FORMAT' ASMC1SRC CSECT ***************************************************************** \\* THIS PROGRAM MAKES FUNCTION 1 AND D CALLS TO GEOSUPPORT USING * \\* BORO, HOUSENUMBER, & STREET NAME SUPPLIED BY AN INSTREAM FILE.* \\* FUNCTION 1 RETURNS GEOGRAPHIC INFORMATION FOR AN ADDRESS. * \\* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. * \\* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * \\* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE * \\* ORIGINAL CALL TO FUNCTION 1, ALL THE CROSS STREET NAMES * \\* WOULD HAVE BEEN RETURNED BY FUNCTION 1. * ***************************************************************** * *********************************************************************** \\* * \\* This program will do the following: * \\* * \\* * Read an instream record containing a house number, * \\* street name, and borough code * \\* * \\* * Build Work Area 1 for a Function 1 call * \\* * \\* * Call Function 1 * \\* * \\* * Get ZIP code, community district, police precinct, school * \\* district, and lists of street codes of streets intersecting * \\* at the low and high ends of the input street address's block. * \\* These will be displayed along with the input address which * \\* consists of borough code, house number, and street name. * \\* * \\* * Call Function D to get the street names of the first * \\* intersecting street on both low and high ends. * \\* * \\* * Print the information * \\* * \\* NOTE that after each Geosupport call, the Return Code is checked. * \\* If it is greater than 01, an error message is printed, and * \\* the next input record, if any, is read. * \\* If it is 01, a warning message is printed, the input record is * \\* processed, and the next record is read. * \\* If it is zero, the input record is processed, and the next * \\* record is read. * \\* * *********************************************************************** SPACE STM R14,R12,12(R13) Save caller's registers LR R3,R15 LA R12,4095(,R3) (second base register LA R12,1(,R12) to accomodate Work Areas 1 and 2) USING ASMC1SRC,R3,R12 \\* Chain save areas LA R4,MYSAVE ST R13,4(,R4) Save caller's savearea address ST R4,8(,R13) Save pgm's savearea adr in caller savearea LR R13,R4 Ensure that R13 points to pgm's savearea SPACE 2 XR R15,R15 (set OS return code to zero) \\* Open input and output files OPEN (INFILE,,OUTFILE,(OUTPUT)) TM INFILE+48,X'10' Did input file open successfully? BNO INOPNERR (no..) TM OUTFILE+48,X'10' Did output file open successfully? BNO OUTOPNER (no..) \\* Print page and report header lines SPACE PUT OUTFILE,HDR1 PUT OUTFILE,HDR2 PUT OUTFILE,HDR3 PUT OUTFILE,HDR4 B NEXTREC SPACE 2 TITLE 'READ IN-STREAM INPUT AND PREPARE FUNCTION 1 CALL' \\* Read (next) input record NEXTREC DS 0H GET INFILE,INREC \\* Move input data to output record for display MVC DBORO,INBORO borough code MVC DHSE(L'INHOUSE),INHOUSE house number MVC DSTRT,INSTREET street name SPACE ***************************************************************** \\* TO MAKE A FUNCTION 1 CALL: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET WA1'S FUNCTION CODE FIELD TO 1 * \\* (3) MOVE THE INPUT BORO TO WA1'S INPUT BORO CODE FIELD * \\* (4) MOVE THE INPUT HOUSE NUMBER TO WA1'S INPUT HOUSE NUMBER * \\* FIELD * \\* (5) MOVE THE INPUT STREET TO WA1'S INPUT STREET NAME FIELD * \\* (6) CALL GBI WITH 2 WORKAREAS * \\* (7) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ***************************************************************** \\* Clear WA1 to blanks LA R8,P1BAL \"To\" address for MVCL LA R9,P1LENGTH \"To\" length XR R11,R11 for blanking out std WA1, ICM R11,B'1000',=C' ' rather than moving data \\* ...since if the \"from\" length reg. has lo-order zeroes, MVCL will \\* pad the target area with the pad character of the \"from\" register \\* and do nothing else (the \"from\" address register is not used). MVCL R8,R10 SPACE \\* Prime Work Area 1 for Function 1 call MVI P1IPLIND,C'C' Set Work Area Format to COW MVC P1IFUNC,=CL2'1 ' Get function code MVC P1IBORO1,INBORO borough code * \\* Note COW - MSW: Display House # - P1IHSE# is a 16-byte field \\* W1IHSE# is a 12-byte field * MVC P1IHSE#(L'INHOUSE),INHOUSE house number MVC P1ISTRT1,INSTREET street name * \\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\* * \\* As of Geosupport Version 10.1, * \\* to receive roadbed-specific information, * \\* set the Roadbed Request Switch to 'R', as follows: * \\* MVC P1IRBRQS,C'R' * \\* * \\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * MVC P1ISNL(L'P1ISNL),=C'25' Normalized street name length \\* Call Function 1 (2-Work-Area call) CALL GBI,(P1BAL,P2BAL),VL \\* Check Return code CLC P1ORC(2),=C'00' Good return? BE PROCESS Yes, process returned data \\* Handle errors and warnings ERREXIT DS 0H CLC P1ORC(2),=C'01' Warning condition? BE PUTWARN Yes, process warning \\* and then process input; \\* otherwise, process error MVC ERINPUT,DSPLYIN Boro code, hse no., street name MVC ERFUNC,P1IFUNC function code MVC ERRET(L'P1ORC),P1ORC return code MVC ERREAS(L'P1OREASN),P1OREASN reason code PUT OUTFILE,ERR1 Print error messages 1 B PUTMSG and 2 PUTWARN DS 0H MVC WRINPUT,DSPLYIN Boro code, hse no., street name MVC WRFUNC,P1IFUNC function code MVC WRRET(L'P1ORC),P1ORC return code MVC WRREAS(L'P1OREASN),P1OREASN reason code PUT OUTFILE,WRN1 Print warning messages 1 PUTMSG DS 0H and 2 MVC ERRWRN(L'P1OERROR),P1OERROR PUT OUTFILE,ERRWRN2 Print error/warning message 2 CLC P1ORC(2),=C'01' Warning condition? BNE NEXTREC No, get next record, if any MVI OINPUT,C' ' Yes, MVC OINPUT+1(L'OINPUT-1),OINPUT ensure input NOT displayd MVI OUTVALID,C' ' ensure single-spacing after warning B GETZIP and continue normal processing SPACE \\* Handle successful Geosupport calls (Return Code <= 01) PROCESS DS 0H MVC OINPUT,DSPLYIN Boro code, hse no., street name MVI OUTVALID,C'0' Ensure double-spacing GETZIP DS 0H MVC OZIP,P2F1ZIP ZIP code MVC OCOMM,P2F1CDN community district number MVC OPCT,P2F1POP police precinct MVC OSCHL,P2F1SCH school district ***** At this point, clear WA1 again, call Function D, and move ****** ***** its reported Low and High Intersecting Street Names to output * TITLE 'GET LOW, HIGH INTERSECTING STREETS, USING FUNCTION D' SPACE 2 ************************************************************* \\* THIS PROGRAM ASSUMES THERE EXISTS AT LEAST ONE HIGH AND * \\* ONE LOW CROSS STREET. TO GET THE STREET NAMES OF THE * \\* FIRST-LISTED HIGH AND FIRST-LISTED LOW CROSS STREETS * \\* FROM THE HIGH AND LOW STREET CODE LISTS CALL FUNCTION D: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET WA1'S FUNCTION CODE FIELD TO D * \\* (3) SET WA1'S STREET NAME LENGTH FIELD TO DESIRED * \\* VALUE (IN THIS CASE 25 BECAUSE THE REPORT LINE * \\* HAS SPACE FOR ONLY 25 CHARACTERS) * \\* (4) USE THE COMPACT STREET NAMES OPTION TO OBTAIN * \\* STREET NAMES FORMATTED FOR DISPLAY * \\* (5) MOVE WA2'S LOW B5SC FIELD TO WA1'S INPUT STREET * \\* CODE 1 FIELD * \\* (6) MOVE WA2'S HIGH B5SC FIELD TO WA1'S INPUT STREET * \\* CODE 2 FIELD * \\* (7) CALL GBI WITH 1 WORKAREA * \\* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ************************************************************* SPACE \\* Clear WA1 to blanks LA R8,P1BAL \"To\" address for MVCL LA R9,P1LENGTH \"To\" length XR R11,R11 for blanking out std WA1, ICM R11,B'1000',=C' ' rather than moving data \\* ...since if the \"from\" length reg. has lo-order zeroes, MVCL will \\* pad the target area with the pad character of the \"from\" register and do nothing else (the \"from\" address register is not used). MVCL R8,R10 MVI P1IPLIND,C'C' Set Work Area Format to COW * \\* Note COW - MSW: P1ICDEx is the 10-digit street code (no boro) \\* P1IBCDx is the Boro and 10-digit street code \\* W1ICDEx is the packed Boro and 5-digit street code \\* P2F1CDEx is Boro and 5-digit street code list \\* W2F1CDEx is packed Boro and 5-digit street code list * MVC P1IBCD1(6),P2F1CDEL MVC P1IBCD2(6),P2F1CDEH MVC P1IFUNC(2),=CL2'D ' MVC P1ISNL(L'P1ISNL),=C'25' normalized street name length MVI P1ICMPCT,C'C' streets to be compacted CALL GBI,P1BAL,VL Call Function D \\* Check Return code CLC P1ORC(2),=C'00' Good return? BNE ERREXIT No, error or warning \\* Yes, complete the record \\* and write it out PUTREC DS 0H MVC OLOSTRT,P1OSTRT1 MVC OHISTRT,P1OSTRT2 \\* Print an output record and get the next input record, if any PUT OUTFILE,OUTVALID B NEXTREC EXIT DS 0H OUTOPNER DS 0H CLOSE (INFILE) TM OUTFILE+48,X'10' Did OUTFILE open successfully? BNO INOPNERR No, bypass closing it CLOSE (OUTFILE) INOPNERR DS 0H L R13,4(,R13) L R14,12(,R13) LM R0,R12,20(R13) BR R14 SPACE 2 PARAMERR DS 0H parameter error, missing or invalid LA R15,8 rc=8 B EXIT TITLE 'DATA SECTION - REGISTER ASSIGNMENTS' R0 EQU 0 R1 EQU 1 R2 EQU 2 R3 EQU 3 R4 EQU 4 R5 EQU 5 R6 EQU 6 R7 EQU 7 R8 EQU 8 R9 EQU 9 R10 EQU 10 R11 EQU 11 R12 EQU 12 R13 EQU 13 R14 EQU 14 R15 EQU 15 TITLE 'FILE AND RECORD DEFINITIONS' PUSH PRINT PRINT NOGEN INFILE DCB DSORG=PS,MACRF=(GM),DDNAME=INFILE, * RECFM=FB,LRECL=80,BLKSIZE=400,EODAD=EXIT SPACE OUTFILE DCB DSORG=PS,MACRF=(PM),DDNAME=SYSPRINT, * RECFM=FBA,LRECL=133,BLKSIZE=1330 * POP PRINT SPACE INREC DS 0CL80 Input record INBORO DS CL1 Borough code INHOUSE DS CL12 House number INSTREET DS CL32 Street name DC 35C' ' filler SPACE \\* Output records: error, warning, and normal ERR1 DS 0CL133 DC C'0' ERINPUT DS CL48 DC C'*** FUNCTION ' ERFUNC DS CL2 DC C' GRC = ' ERRET DS CL2 DC C' REASON CODE = ' ERREAS DS CL1 DC CL(133-89)' ' SPACE WRN1 DS 0CL133 DC C'0' WRINPUT DS CL48 DC C'*** FUNCTION ' WRFUNC DS CL2 DC C' WARNING, GRC = ' WRRET DS CL2 DC C' REASON CODE = ' WRREAS DS CL1 DC CL(133-98)' ' SPACE ERRWRN2 DS 0CL133 DC C' ' DC 48C' ' Boro Code, House Number, Street Name DC CL4'*** ' ERRWRN DS CL80 Error/Warning message SPACE HDR1 DC CL133'1SAMPLE ASSEMBLER \\#1 EXECUTION OUTPUT * ' HDR2 DC CL133'0*****---------- INPUT ADDRESS ------------***** \\*C ****--------------------- SELECTED OUTPUT ITEMS --------C ----------------------*****' HDR3 DC CL133'0B HOUSE NUMBER IN-STREET-NAME * ZIP CD NYPD-PCT SCHLDST LOW CROSS STREET HIGH * CROSS STREET ' HDR4 DC CL133' - ------------ -------------------------------- -* ---- -- -------- ------- ------------------------- -----* ---------------------------' OUTVALID DS 0CL133 \\* Borough code, house number, and street name are from input record DC C'0' OINPUT DS CL48 OZIP DS CL5 DC C' ' OCOMM DS CL2 DC C' ' OPCT DS CL3 DC 6C' ' OSCHL DS CL2 DC 6C' ' OLOSTRT DS CL25 Normalized name of intersecting street at low end DC C' ' OHISTRT DS CL25 Normalized name of intersecting street at high end DC 7C' ' TITLE 'WORKING VARIABLES, VALUES, ETC.' MYSAVE DC 18F'0' *********************************************************************** ***** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE *** ***** COPY STATEMENTS) IS STRONGLY ENCOURAGED. *** *********************************************************************** COPY P1BAL COPY WORK AREA 1 EJECT COPY P2BAL COPY WORK AREA 2 EJECT SPACE 2 DSPLYIN DS 0CL48 DBORO DS CL1 DC C' ' DHSE DS CL12 DC C' ' DSTRT DS CL32 DC C' ' SPACE 2 TITLE 'CONSTANTS AND LITERAL POOL' SPACE 2 LTORG END ASMC1SRC //LKED.SYSIN DD * INCLUDE INCLIB(GBI) /* //LKED.INCLIB DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* GEO.SUPPORT.PDSE.LOADLIB AND GEO.SUPPORT.LOADLIB \\*// //* ARE REQUIRED IN THE STEPLIB (OR JOBLIB) OF THE \\*// //* GEOSUPPORT EXECUTION STEP. \\*// //* \\*// //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR //* DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* DD STATEMENTS ARE NO LONGER USED TO DEFINE? \\*// //* GEOSUPPORT DATA FILES. \\*// //* DD STATEMENTS ARE NO LONGER INCLUDED FOR THE \\*// //* GEOSUPPORT FOREGROUND FILES. \\*// //* TO USE NON-STANDARD FILES, SEE YOUR SYSTEMS PROGRAMMER \\*// //* \\*// //SYSUDUMP DD SYSOUT=\\*,OUTLIM=2000 //SYSPRINT DD SYSOUT=* //INFILE DD * 122 READE ST 1500 DUANE ST 12-4 BROADWAY 4165-100 BAISLEY BLVD 4165-1000 BAISLEY BLVD /* // SAMPLE ASSEMBLER #1 EXECUTION OUTPUT *****---------- INPUT ADDRESS ------------***** *****--------------------- SELECTED OUTPUT ITEMS ----------------***** B HOUSE NUMBER IN-STREET-NAME ZIP CD NYPD-PCT SCHLDST LOW CROSS STREET HIGH CROSS STREET - ------------ -------------------------------- ----- -- -------- ------- ------------------------- ------------------ 1 22 READE ST 10007 01 005 02 ELK STREET BROADWAY 1 500 DUANE ST *** FUNCTION 1 GRC = 42 REASON CODE = *** ADDRESS NUMBER OUT OF RANGE 1 2-4 BROADWAY *** FUNCTION 1 WARNING, GRC = 01 REASON CODE = 1 *** ADDR NUMBER ALTERED: RANGE ASSUMED. USING DIGITS BEFORE DASH ONLY 10004 01 001 02 STONE STREET BOWLING GREEN 4 165-100 BAISLEY BLVD 11434 12 113 28 GUY R BREWER BOULEVARD BEDELL STREET 4 165-1000 BAISLEY BLVD *** FUNCTION 1 GRC = 13 REASON CODE = 2 *** ADDRESS NBR 165-1000 HAS MORE THAN 3 DIGITS AFTER THE DASH.","title":"ASSEMBLER SAMPLE PROGRAM #1"},{"location":"appendices/appendix08/#assembler-sample-program-1_1","text":"- Input Job Stream - MSW - Input Job Stream - COW - Output Report ASSEMBLER SAMPLE PROGRAM #2- Job Stream -MSW //ASMF2SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //** ASSEMBLER SAMPLE BATCH GEOSUPPORT USER APPLICATION PROGRAM \\#2 ** //** MSW FORMAT ** //******************************************************************** //STEP1 EXEC ASMACLG, // PARM.ASM='OBJECT,NODECK', // PARM.LKED='XREF,LET,LIST,NCAL' //ASM.SYSLIB DD DSN=A030.GEO.COPYLIB2,DISP=SHR // DD DSN=A030.GEO.COPYLIB,DISP=SHR // DD DSN=SYS1.MACLIB,DISP=SHR //ASM.SYSIN DD * ASMF2SRC TITLE 'SAMPLE GEOSUPPORT ASSEMBLER PROGRAM 2 - MSW FORMAT' ASMF2SRC CSECT ****************************************************************** \\* THIS PROGRAM MAKES FUNCTION 2 AND D CALLS TO GEOSUPPORT USING * \\* TWO BOROS AND TWO STREET NAMES SUPPLIED BY AN INSTREAM FILE. * \\* FUNCTION 2 RETURNS GEOGRAPHIC INFORMATION FOR AN INTERSECTION. * \\* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. * \\* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * \\* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE * \\* ORIGINAL CALL TO FUNCTION 2, ALL THE CROSS STREET NAMES * \\* WOULD HAVE BEEN RETURNED BY FUNCTION 2. * ****************************************************************** * *********************************************************************** \\* * \\* This program will do the following: * \\* * Read an instream record containing 2 borough codes * \\* and two street names * \\* * \\* * Build Work Area 1 for a Function 2 call * \\* * \\* * Call Function 2 * \\* * \\* * Get ZIP code, community district, police precinct, school * \\* district, and lists of intersecting street codes. * \\* These will be displayed along with the input intersection * \\* which consists of 2 borough codes, and 2 street names. * \\* * \\* * Call Function D to get the street names of all intersecting * \\* streets. * \\* * \\* If it is greater than 01, an error message is printed, and * \\* the next input record, if any, is read. * \\* If it is 01, a warning message is printed, the input record is * \\* processed, and the next record is read. * \\* If it is zero, the input record is processed, and the next * \\* record is read. * \\* * *********************************************************************** SPACE STM R14,R12,12(R13) Save caller's registers LR R3,R15 LA R12,4095(,R3) (second base register LA R12,1(,R12) to accommodate Work Areas 1 and 2) USING ASMF2SRC,R3,R12 \\* Chain save areas LA R4,MYSAVE ST R13,4(,R4) Save caller's savearea address ST R4,8(,R13) Save pgm's savearea adr in caller savearea LR R13,R4 Ensure that R13 points to pgm's savearea SPACE 2 XR R15,R15 (set OS return code to zero) \\* Open input and output files OPEN (INFILE,,OUTFILE,(OUTPUT)) TM INFILE+48,X'10' Did input file open successfully? BNO INOPNERR (no..) TM OUTFILE+48,X'10' Did output file open successfully? BNO OUTOPNER (no..) \\* Print report header lines SPACE PUT OUTFILE,HDR1 PUT OUTFILE,HDR2 PUT OUTFILE,HDR3 PUT OUTFILE,HDR4 B NEXTREC SPACE 2 TITLE 'READ IN-STREAM INPUT AND PREPARE FUNCTION 2 CALL' \\* Read (next) input record NEXTREC DS 0H GET INFILE,INREC \\* Move input data to output record for display MVC DBORO1,INBORO1 First borough code MVC DSTRT1,INSTRT1 First street name MVC DBORO2,INBORO2 Second borough code MVC DSTRT2,INSTRT2 Second street name SPACE ****************************************************************** \\* TO MAKE A FUNCTION 2 CALL: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET WA1'S FUNCTION CODE FIELD TO 2 * \\* (3) MOVE THE 1ST INPUT BORO TO WA1'S INPUT BORO CODE FIELD * \\* (4) MOVE THE 1ST INPUT STREET TO WA1'S INPUT STREET NAME * \\* (5) MOVE THE 2ND INPUT BORO TO WA1'S INPUT BORO CODE 2 FIELD * \\* (6) MOVE THE 2ND INPUT STREET TO WA1'S INPUT STREET NAME 2 * \\* (7) CALL GBI WITH 2 WORKAREAS * \\* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ****************************************************************** \\* Clear WA1 to blanks LA R8,W1BAL \"To\" address for MVCL LA R9,W1LENGTH \"To\" length XR R11,R11 for blanking out std WA1, ICM R11,B'1000',=C' ' rather than moving data \\* ...since if the \"from\" length reg. has lo-order zeroes, MVCL will \\* pad the target area with the pad character of the \"from\" register \\* and do nothing else (the \"from\" address register is not used). MVCL R8,R10 SPACE \\* Prime Work Area 1 for Function 2 call MVC W1IFUNC,=CL2'2 ' Get function code MVC W1IBORO1,INBORO1 borough code 1 MVC W1ISTRT1,INSTRT1 street name 1 MVC W1IBORO2,INBORO2 borough code 2 MVC W1ISTRT2,INSTRT2 street name 2 MVC W1ISNL(L'W1ISNL),=C'25' Normalized street name length \\* Call Function 2 (2-Work-Area call) CALL GBI,(W1BAL,W2BAL),VL \\* Check Return code CLC W1ORC(2),=C'00' Good return? BE PROCESS Yes, process returned data \\* Handle errors and warnings ERREXIT DS 0H CLC W1ORC(2),=C'01' Warning condition? BE PUTWARN Yes, process warning \\* and then process input; \\* otherwise, process error MVC ERFUNC,W1IFUNC function code MVC ERRET(L'W1ORC),W1ORC return code MVC ERREAS(L'W1OREASN),W1OREASN reason code MVC ERRMSG(L'W1OERROR),W1OERROR Geosupport error message PUT OUTFILE,ERR1 Print error message 1 MVC ERINPUT,DSPLYIN 2 boro codes and 2 street names PUT OUTFILE,ERR2 Print error message 2 B NEXTREC PUTWARN DS 0H MVC WRFUNC,W1IFUNC function code MVC WRRET(L'W1ORC),W1ORC return code MVC WRREAS(L'W1OREASN),W1OREASN reason code MVC WRNMSG(L'W1OERROR),W1OERROR Geosupport warning message PUT OUTFILE,WARN Print warning message SPACE \\* Handle successful Geosupport calls (Return Code <= 01) PROCESS DS 0H MVI OUTFIXED,C'0' Init. carriage control to dbl-space CLC W1ORC(2),=C'01' Was a warning issued? BNE MOVEOUT No.. MVI OUTFIXED,C' ' Yes, single-space output instead MOVEOUT DS 0H MVC OINPUT,DSPLYIN Pair of boro codes and street names MVC OZIP,W2F2ZIP ZIP code MVC OCOMM,W2F2CDN community district number MVC OPCT,W2F2POP police precinct MVC OSCHL,W2F2SCH school district ***** At this point, clear WA1 again, call Function D, and move ****** ***** all reported Intersecting Street Names to output ****** TITLE 'GET INTERSECTING STREET NAMES, USING FUNCTION D' SPACE 2 ************************************************************* \\* TO GET THE STREET NAMES FOR INTERSECTING STREET CODES * \\* MAKE A FUNCTION D CALL: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* (2) SET THE WA1'S FUNCTION CODE FIELD TO D * \\* (3) USE THE COMPACT STREET NAMES OPTION TO OBTAIN * \\* STREET NAMES FORMATTED FOR DISPLAY * \\* (4) MOVE THE PACKED BORO AND STREET CODE TO * \\* WA1'S INPUT STREET CODE 1 FIELD * \\* (5) CALL GBI WITH 1 WORKAREA * \\* (6) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ************************************************************* SPACE \\* For each street code of intersecting streets, including those input, \\* call Function D to get the corresponding street name XR R4,R4 MVC INTWK,W2F2#INT get count of intersecting streets. NI INTWK,X'0F' remove zone, leaving numeric IC R4,INTWK count of intersecting streets. LA R5,W2F2CODE point to street code(s). SPACE INTRLOOP DS 0H \\* Clear WA1 to blanks LA R8,W1BAL \"To\" address for MVCL LA R9,W1LENGTH \"To\" length XR R11,R11 for blanking out std WA1, ICM R11,B'1000',=C' ' rather than moving data \\* ...since if the \"from\" length reg. has lo-order zeroes, MVCL will \\* pad the target area with the pad character of the \"from\" register \\* and do nothing else (the \"from\" address register is not used). MVCL R8,R10 SPACE MVC W1IFUNC(2),=CL2'D ' MVC W1ISNL(L'W1ISNL),=C'25' normalized street name length MVI W1ICMPCT,C'C' streets to be compacted MVC W1ICDE1(L'W1ICDE1),0(R5) Intersecting street code CALL GBI,W1BAL,VL Call Function D \\* Check Return code CLC W1ORC(2),=C'00' Good return? BNE ERREXIT No, error or warning \\* Yes, complete the record \\* and write it out PFIX NOP PVAR OI PFIX+1,X'F0' MVC OINTRSC1,W1OSTRT1 \\* put out the initial output including the first intersecting street PUT OUTFILE,OUTFIXED B NEXTSC Now get the rest of the street codes, if any PVAR DS 0H MVC OINTRSCN,W1OSTRT1 \\* Print an output record and get the next intersecting street, if any PUT OUTFILE,OUTVAR NEXTSC DS 0H LA R5,4(,R5) point to next intersecting street code BCT R4,INTRLOOP if any, and process it; NI PFIX+1,X'0F' reset 1st-time (fixed/variable) switch B NEXTREC then, process next input record, if any SPACE EXIT DS 0H OUTOPNER DS 0H CLOSE (INFILE) TM OUTFILE+48,X'10' Did OUTFILE open successfully? BNO INOPNERR No, bypass closing it CLOSE (OUTFILE) INOPNERR DS 0H L R13,4(,R13) L R14,12(,R13) LM R0,R12,20(R13) BR R14 SPACE 2 PARAMERR DS 0H parameter error, missing or invalid LA R15,8 rc=8 B EXIT TITLE 'DATA SECTION - REGISTER ASSIGNMENTS' R0 EQU 0 R1 EQU 1 R2 EQU 2 R3 EQU 3 R4 EQU 4 R5 EQU 5 R6 EQU 6 R7 EQU 7 R8 EQU 8 R9 EQU 9 R10 EQU 10 R11 EQU 11 R12 EQU 12 R13 EQU 13 R14 EQU 14 R15 EQU 15 TITLE 'FILE AND RECORD DEFINITIONS' PUSH PRINT PRINT NOGEN INFILE DCB DSORG=PS,MACRF=(GM),DDNAME=INFILE, * RECFM=FB,LRECL=80,BLKSIZE=400,EODAD=EXIT SPACE OUTFILE DCB DSORG=PS,MACRF=(PM),DDNAME=SYSPRINT, * RECFM=FBA,LRECL=133,BLKSIZE=1330 * POP PRINT SPACE INREC DS 0CL80 Input record INBORO1 DS CL1 First borough code INSTRT1 DS CL32 First street name INBORO2 DS CL1 Second borough code INSTRT2 DS CL32 Second street name DC 14C' ' filler SPACE \\* Output records: header, normal, warning, and error SPACE \\* header records HDR1 DC CL133'1SAMPLE ASSEMBLER \\#2 EXECUTION OUTPUT * * ' HDR2 DC CL133'0*****----------------- INPUT INTERSECTION -------C --------------***** *****--------------- SELECTED OUTPUT* ITEMS ---------------*****' HDR3 DC CL133'0B IN-STREET-NAME-1 B IN-STREET-NA* ME-2 ZIP CD NYPD-PCT SCHLDST INTERSECTI* NG STREET NAMES ' HDR4 DC CL133' - -------------------------------- - ------------* ------------------- ----- -- -------- ------- ----------* ---------------------------' SPACE \\* normal records, i.e., output for valid data OUTFIXED DS 0CL133 Fixed output \\* Borough codes and street names for each of 2 streets are from input DC C'0' OINPUT DS CL69 OZIP DS CL5 DC C' ' OCOMM DS CL2 DC C' ' OPCT DS CL3 DC 6C' ' OSCHL DS CL2 DC 6C' ' OINTRSC1 DS CL25 Normalized name of first intersecting street SPACE OUTVAR DS 0CL133 Output line repeated per No. of Intersecting Sts. DC C' ' DC 95C' ' OINTRSCN DS CL25 Normalized name of additional intersecting street DC (133-121)C' ' SPACE \\* warning record WARN DS 0CL133 DC C'0' DC C'**** FUNCTION ' WRFUNC DS CL2 DC C' WARNING, GRC = ' WRRET DS CL2 DC C' REASON CODE = ' WRREAS DS CL1 DC C'. ' WRNMSG DS CL80 Warning message SPACE \\* error records ERR1 DS 0CL133 DC C'0' DC C'***** FUNCTION ' ERFUNC DS CL2 DC C' GRC = ' ERRET DS CL2 DC C' REASON = ' ERREAS DS CL1 DC C'. ' ERRMSG DS CL80 Error message DC CL(133-120)' ' SPACE ERR2 DS 0CL133 DC C' ' ERINPUT DS CL69 DC CL(133-70)' ' TITLE 'WORKING VARIABLES, VALUES, ETC.' #INTER DS D Working field for no. of intersecting streets MYSAVE DC 18F'0' *********************************************************************** ***** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE *** ***** COPY STATEMENTS) IS STRONGLY ENCOURAGED. *** *********************************************************************** COPY W1BAL COPY WORK AREA 1 EJECT COPY W2BAL COPY WORK AREA 2 EJECT SPACE 2 DSPLYIN DS 0CL69 DBORO1 DS CL1 DC C' ' DSTRT1 DS CL32 DC C' ' DBORO2 DS CL1 DC C' ' DSTRT2 DS CL32 SPACE 2 INTWK DS XL1 work field for number of intersecting streets TITLE 'CONSTANTS AND LITERAL POOL' SPACE 2 LTORG END ASMF2SRC //LKED.SYSIN DD * INCLUDE INCLIB(GBI) /* //LKED.INCLIB DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* THE STEPLIB (OR JOBLIB) OF THE GEOSUPPORT EXECUTION STEP \\*// //* MUST INCLUDE THE FOLLOWING TWO CONCATENATED DATASETS: \\*// //* A030.GEO.SUPPORT.PDSE.LOADLIB \\*// //* A030.GEO.SUPPORT.LOADLIB \\*// //* \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR // DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* DD STATEMENTS FOR GEOSUPPORT DATA FILES (E.G. GRID, PAD, \\*// //* ETC) ARE NO LONGER NEEDED AND ARE IGNORED. GEOSUPPORT \\*// //* IS TAILORED TO USE STANDARD GEOSUPPORT DATA SET NAMES. \\*// //* TO USE NON-STANDARD FILES, SEE YOUR SYSTEMS PROGRAMMER. \\*// //* \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* //SYSUDUMP DD SYSOUT=\\*,OUTLIM=2000 //SYSPRINT DD SYSOUT=* //INFILE DD * 1CHAMBERS ST 1HUDSON ST 1SIXTH AVE 1W. 8 ST 1DUANE ST 1READE ST /* // ASSEMBLER SAMPLE PROGRAM #2- Job Stream - COW //ASMC2SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //** ASSEMBLER SAMPLE BATCH GEOSUPPORT USER APPLICATION PROGRAM \\#2 ** //** COW FORMAT ** //******************************************************************** //STEP1 EXEC ASMACLG, // PARM.ASM='OBJECT,NODECK', // PARM.LKED='XREF,LET,LIST,NCAL' //ASM.SYSLIB DD DSN=A030.GEO.COPYLIB2,DISP=SHR // DD DSN=A030.GEO.COPYLIB,DISP=SHR // DD DSN=SYS1.MACLIB,DISP=SHR //ASM.SYSIN DD * ASMC2SRC TITLE 'SAMPLE GEOSUPPORT ASSEMBLER PROGRAM 2 - COW FORMAT' ASMC2SRC CSECT ****************************************************************** \\* THIS PROGRAM MAKES FUNCTION 2 AND D CALLS TO GEOSUPPORT USING * \\* TWO BOROS AND TWO STREET NAMES SUPPLIED BY AN INSTREAM FILE. * \\* FUNCTION 2 RETURNS GEOGRAPHIC INFORMATION FOR AN INTERSECTION. * \\* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. * \\* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * \\* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE * \\* ORIGINAL CALL TO FUNCTION 2, ALL THE CROSS STREET NAMES * \\* WOULD HAVE BEEN RETURNED BY FUNCTION 2. * ****************************************************************** * *********************************************************************** \\* * \\* This program will do the following: * \\* * Read an instream record containing 2 borough codes * \\* and two street names * \\* * \\* * Build Work Area 1 for a Function 2 call * \\* * \\* * Call Function 2 * \\* * \\* * Get ZIP code, community district, police precinct, school * \\* district, and lists of intersecting street codes. * \\* These will be displayed along with the input intersection * \\* which consists of 2 borough codes, and 2 street names. * \\* * \\* * Call Function D to get the street names of all intersecting * \\* streets. * \\* * \\* If it is greater than 01, an error message is printed, and * \\* the next input record, if any, is read. * \\* If it is 01, a warning message is printed, the input record is * \\* processed, and the next record is read. * \\* If it is zero, the input record is processed, and the next * \\* record is read. * \\* * *********************************************************************** SPACE STM R14,R12,12(R13) Save caller's registers LR R3,R15 LA R12,4095(,R3) (second base register LA R12,1(,R12) to accommodate Work Areas 1 and 2) USING ASMC2SRC,R3,R12 \\* Chain save areas LA R4,MYSAVE ST R13,4(,R4) Save caller's savearea address ST R4,8(,R13) Save pgm's savearea adr in caller savearea LR R13,R4 Ensure that R13 points to pgm's savearea SPACE 2 XR R15,R15 (set OS return code to zero) \\* Open input and output files OPEN (INFILE,,OUTFILE,(OUTPUT)) TM INFILE+48,X'10' Did input file open successfully? BNO INOPNERR (no..) TM OUTFILE+48,X'10' Did output file open successfully? BNO OUTOPNER (no..) \\* Print report header lines SPACE PUT OUTFILE,HDR1 PUT OUTFILE,HDR2 PUT OUTFILE,HDR3 PUT OUTFILE,HDR4 B NEXTREC SPACE 2 TITLE 'READ IN-STREAM INPUT AND PREPARE FUNCTION 2 CALL' \\* Read (next) input record NEXTREC DS 0H GET INFILE,INREC \\* Move input data to output record for display MVC DBORO1,INBORO1 First borough code MVC DSTRT1,INSTRT1 First street name MVC DBORO2,INBORO2 Second borough code MVC DSTRT2,INSTRT2 Second street name SPACE ****************************************************************** \\* TO MAKE A COW FORMAT FUNCTION 2 CALL: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* AND SET WORK AREA FORMAT FLAG TO 'C' * \\* (2) SET WA1'S FUNCTION CODE FIELD TO 2 * \\* (3) MOVE THE 1ST INPUT BORO TO WA1'S INPUT BORO CODE FIELD * \\* (4) MOVE THE 1ST INPUT STREET TO WA1'S INPUT STREET NAME * \\* (5) MOVE THE 2ND INPUT BORO TO WA1'S INPUT BORO CODE 2 FIELD * \\* (6) MOVE THE 2ND INPUT STREET TO WA1'S INPUT STREET NAME 2 * \\* (7) CALL GBI WITH 2 WORKAREAS * \\* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ****************************************************************** \\* Clear WA1 to blanks LA R8,P1BAL \"To\" address for MVCL LA R9,P1LENGTH \"To\" length XR R11,R11 for blanking out std WA1, ICM R11,B'1000',=C' ' rather than moving data \\* ...since if the \"from\" length reg. has lo-order zeroes, MVCL will \\* pad the target area with the pad character of the \"from\" register \\* and do nothing else (the \"from\" address register is not used). MVCL R8,R10 * MVI P1IPLIND,C'C' set work area format indicator to COW * SPACE \\* Prime Work Area 1 for Function 2 call MVC P1IFUNC,=CL2'2 ' Get function code MVC P1IBORO1,INBORO1 borough code 1 MVC P1ISTRT1,INSTRT1 street name 1 MVC P1IBORO2,INBORO2 borough code 2 MVC P1ISTRT2,INSTRT2 street name 2 MVC P1ISNL(L'P1ISNL),=C'25' Normalized street name length \\* Call Function 2 (2-Work-Area call) CALL GBI,(P1BAL,P2BAL),VL \\* Check Return code CLC P1ORC(2),=C'00' Good return? BE PROCESS Yes, process returned data \\* Handle errors and warnings ERREXIT DS 0H CLC P1ORC(2),=C'01' Warning condition? BE PUTWARN Yes, process warning \\* and then process input; \\* otherwise, process error MVC ERFUNC,P1IFUNC function code MVC ERRET(L'P1ORC),P1ORC return code MVC ERREAS(L'P1OREASN),P1OREASN reason code MVC ERRMSG(L'P1OERROR),P1OERROR Geosupport error message PUT OUTFILE,ERR1 Print error message 1 MVC ERINPUT,DSPLYIN 2 boro codes and 2 street names PUT OUTFILE,ERR2 Print error message 2 B NEXTREC PUTWARN DS 0H MVC WRFUNC,P1IFUNC function code MVC WRRET(L'P1ORC),P1ORC return code MVC WRREAS(L'P1OREASN),P1OREASN reason code MVC WRNMSG(L'P1OERROR),P1OERROR Geosupport warning message PUT OUTFILE,WARN Print warning message SPACE \\* Handle successful Geosupport calls (Return Code <= 01) PROCESS DS 0H MVI OUTFIXED,C'0' Init. carriage control to dbl-space CLC P1ORC(2),=C'01' Was a warning issued? BNE MOVEOUT No.. MVI OUTFIXED,C' ' Yes, single-space output instead MOVEOUT DS 0H MVC OINPUT,DSPLYIN Pair of boro codes and street names MVC OZIP,P2F2ZIP ZIP code MVC OCOMM,P2F2CDN community district number MVC OPCT,P2F2POP police precinct MVC OSCHL,P2F2SCH school district ***** At this point, clear WA1 again, call Function D, and move ****** ***** all reported Intersecting Street Names to output ****** TITLE 'GET INTERSECTING STREET NAMES, USING FUNCTION D' SPACE 2 ************************************************************* \\* TO GET THE STREET NAMES FOR INTERSECTING STREET CODES * \\* MAKE A FUNCTION D CALL: * \\* (1) INITIALIZE WORKAREA 1 TO SPACES * \\* AND SET WORK AREA FORMAT FLAG TO 'C' * \\* (2) SET THE WA1'S FUNCTION CODE FIELD TO D * \\* (3) USE THE COMPACT STREET NAMES OPTION TO OBTAIN * \\* STREET NAMES FORMATTED FOR DISPLAY * \\* (4) MOVE THE PACKED BORO AND STREET CODE TO * \\* WA1'S INPUT STREET CODE 1 FIELD * \\* (5) CALL GBI WITH 1 WORKAREA * \\* (6) CHECK RETURN CODES FOR ERRORS OR WARNINGS * ************************************************************* SPACE \\* For each street code of intersecting streets, including those input, \\* call Function D to get the corresponding street name XR R4,R4 MVC INTWK,P2F2#INT get count of intersecting streets. NI INTWK,X'0F' remove zone, leaving numeric IC R4,INTWK count of intersecting streets. LA R5,P2F2CODE point to street code(s). SPACE INTRLOOP DS 0H \\* Clear WA1 to blanks LA R8,P1BAL \"To\" address for MVCL LA R9,P1LENGTH \"To\" length XR R11,R11 for blanking out std WA1, ICM R11,B'1000',=C' ' rather than moving data \\* ...since if the \"from\" length reg. has lo-order zeroes, MVCL will \\* pad the target area with the pad character of the \"from\" register \\* and do nothing else (the \"from\" address register is not used). MVCL R8,R10 * MVI P1IPLIND,C'C' set work area format indicator to COW * SPACE MVC P1IFUNC(2),=CL2'D ' MVC P1ISNL(L'P1ISNL),=C'25' normalized street name length MVI P1ICMPCT,C'C' streets to be compacted * \\* Note COW - MSW: P1ICDEx is the 10-digit street code (no boro) \\* P1IBCDx is the Boro and 10-digit street code \\* W1ICDEx is the packed Boro and 5-digit street code \\* P2F2CODE is Boro and 5-digit street code list \\* W2F2CODE is packed Boro and 5-digit street code list * MVC P1IBCD1(LB5SC),0(R5) Intersecting boro and street code CALL GBI,P1BAL,VL Call Function D \\* Check Return code CLC P1ORC(2),=C'00' Good return? BNE ERREXIT No, error or warning \\* Yes, complete the record \\* and write it out PFIX NOP PVAR OI PFIX+1,X'F0' MVC OINTRSC1,P1OSTRT1 \\* put out the initial output including the first intersecting street PUT OUTFILE,OUTFIXED B NEXTSC Now get the rest of the street codes, if any PVAR DS 0H MVC OINTRSCN,P1OSTRT1 \\* Print an output record and get the next intersecting street, if any PUT OUTFILE,OUTVAR NEXTSC DS 0H LA R5,LB5SC(,R5) point to next intersecting street code BCT R4,INTRLOOP if any, and process it; NI PFIX+1,X'0F' reset 1st-time (fixed/variable) switch B NEXTREC then, process next input record, if any SPACE EXIT DS 0H OUTOPNER DS 0H CLOSE (INFILE) TM OUTFILE+48,X'10' Did OUTFILE open successfully? BNO INOPNERR No, bypass closing it CLOSE (OUTFILE) INOPNERR DS 0H L R13,4(,R13) L R14,12(,R13) LM R0,R12,20(R13) BR R14 SPACE 2 PARAMERR DS 0H parameter error, missing or invalid LA R15,8 rc=8 B EXIT TITLE 'DATA SECTION - REGISTER ASSIGNMENTS' R0 EQU 0 R1 EQU 1 R2 EQU 2 R3 EQU 3 R4 EQU 4 R5 EQU 5 R6 EQU 6 R7 EQU 7 R8 EQU 8 R9 EQU 9 R10 EQU 10 R11 EQU 11 R12 EQU 12 R13 EQU 13 R14 EQU 14 R15 EQU 15 TITLE 'FILE AND RECORD DEFINITIONS' PUSH PRINT PRINT NOGEN INFILE DCB DSORG=PS,MACRF=(GM),DDNAME=INFILE, * RECFM=FB,LRECL=80,BLKSIZE=400,EODAD=EXIT SPACE OUTFILE DCB DSORG=PS,MACRF=(PM),DDNAME=SYSPRINT, * RECFM=FBA,LRECL=133,BLKSIZE=1330 * POP PRINT SPACE INREC DS 0CL80 Input record INBORO1 DS CL1 First borough code INSTRT1 DS CL32 First street name INBORO2 DS CL1 Second borough code INSTRT2 DS CL32 Second street name DC 14C' ' filler SPACE \\* Output records: header, normal, warning, and error SPACE \\* header records HDR1 DC CL133'1SAMPLE ASSEMBLER \\#2 EXECUTION OUTPUT * * ' HDR2 DC CL133'0*****----------------- INPUT INTERSECTION -------C --------------***** *****--------------- SELECTED OUTPUT* ITEMS ---------------*****' HDR3 DC CL133'0B IN-STREET-NAME-1 B IN-STREET-NA* ME-2 ZIP CD NYPD-PCT SCHLDST INTERSECTI* NG STREET NAMES ' HDR4 DC CL133' - -------------------------------- - ------------* ------------------- ----- -- -------- ------- ----------* ---------------------------' SPACE \\* normal records, i.e., output for valid data OUTFIXED DS 0CL133 Fixed output \\* Borough codes and street names for each of 2 streets are from input DC C'0' OINPUT DS CL69 OZIP DS CL5 DC C' ' OCOMM DS CL2 DC C' ' OPCT DS CL3 DC 6C' ' OSCHL DS CL2 DC 6C' ' OINTRSC1 DS CL25 Normalized name of first intersecting street SPACE OUTVAR DS 0CL133 Output line repeated per No. of Intersecting Sts. DC C' ' DC 95C' ' OINTRSCN DS CL25 Normalized name of additional intersecting street DC (133-121)C' ' SPACE \\* warning record WARN DS 0CL133 DC C'0' DC C'**** FUNCTION ' WRFUNC DS CL2 DC C' WARNING, GRC = ' WRRET DS CL2 DC C' REASON CODE = ' WRREAS DS CL1 DC C'. ' WRNMSG DS CL80 Warning message SPACE \\* error records ERR1 DS 0CL133 DC C'0' DC C'***** FUNCTION ' ERFUNC DS CL2 DC C' GRC = ' ERRET DS CL2 DC C' REASON = ' ERREAS DS CL1 DC C'. ' ERRMSG DS CL80 Error message DC CL(133-120)' ' SPACE ERR2 DS 0CL133 DC C' ' ERINPUT DS CL69 DC CL(133-70)' ' TITLE 'WORKING VARIABLES, VALUES, ETC.' #INTER DS D Working field for no. of intersecting streets MYSAVE DC 18F'0' *********************************************************************** ***** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE *** ***** COPY STATEMENTS) IS STRONGLY ENCOURAGED. *** *********************************************************************** COPY P1BAL COPY WORK AREA 1 EJECT COPY P2BAL COPY WORK AREA 2 EJECT SPACE 2 DSPLYIN DS 0CL69 DBORO1 DS CL1 DC C' ' DSTRT1 DS CL32 DC C' ' DBORO2 DS CL1 DC C' ' DSTRT2 DS CL32 SPACE 2 INTWK DS XL1 work field for number of intersecting streets LB5SC EQU 6 length of Boro and 5-digit street code TITLE 'CONSTANTS AND LITERAL POOL' SPACE 2 LTORG END ASMC2SRC //LKED.SYSIN DD * INCLUDE INCLIB(GBI) /* //LKED.INCLIB DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* THE STEPLIB (OR JOBLIB) OF THE GEOSUPPORT EXECUTION STEP \\*// //* MUST INCLUDE THE FOLLOWING TWO CONCATENATED DATASETS: \\*// //* A030.GEO.SUPPORT.PDSE.LOADLIB \\*// //* A030.GEO.SUPPORT.LOADLIB \\*// //* \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR // DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* DD STATEMENTS FOR GEOSUPPORT DATA FILES (E.G. GRID, PAD, \\*// //* ETC) ARE NO LONGER NEEDED AND ARE IGNORED. GEOSUPPORT \\*// //* IS TAILORED TO USE STANDARD GEOSUPPORT DATA SET NAMES. \\*// //* TO USE NON-STANDARD FILES, SEE YOUR SYSTEMS PROGRAMMER. \\*// //* \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* //SYSUDUMP DD SYSOUT=\\*,OUTLIM=2000 //SYSPRINT DD SYSOUT=* //INFILE DD * 1CHAMBERS ST 1HUDSON ST 1SIXTH AVE 1W. 8 ST 1DUANE ST 1READE ST /* // SAMPLE ASSEMBLER #2 EXECUTION OUTPUT *****----------------- INPUT INTERSECTION ---------------------***** *****--------------- SELECTED OUTPUT ITEMS ---------------***** B IN-STREET-NAME-1 B IN-STREET-NAME-2 ZIP CD NYPD-PCT SCHLDST INTERSECTING STREET NAMES \\- -------------------------------- - ------------------------------- ----- -- -------- ------- ------------------------------------- 1 CHAMBERS ST 1 HUDSON ST 10007 01 001 02 CHAMBERS STREET HUDSON STREET WEST BROADWAY 1 SIXTH AVE 1 W. 8 ST 10014 02 006 02 6 AVENUE GREENWICH AVENUE WEST 8 STREET ***** FUNCTION 2 GRC = 62 REASON = . READE STREET & DUANE STREET DO NOT INTERSECT 1 DUANE ST 1 READE ST","title":"ASSEMBLER SAMPLE PROGRAM #1"},{"location":"appendices/appendix08/#pl1-sample-program-1","text":"- Input Job Stream - MSW - Input Job Stream - COW - Output Report PL/1 SAMPLE PROGRAM #1 \u2013 Job Stream - MSW //PL1F1BAT JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //*** PL1 SAMPLE BATCH GEOSUPPORT USER APPLICATION PROGRAM \\#1. ****** //*** (MSW FORMAT) ****** //******************************************************************** //STEP1 EXEC IBMZCPLG,REGION=0M,GOPGM='PL1F1SC', // PARM.PLI='S,GS,INCLUDE', // PARM.LKED='AMODE(31)' //PLI.SYSLIB DD DSN=A030.GEO.COPYLIB2,DISP=SHR // DD DSN=A030.GEO.COPYLIB,DISP=SHR //SYSIN DD * PL1F1SC: PROC OPTIONS(MAIN); /*****************************************************************/ /* THIS PROGRAM MAKES FUNCTION 1 AND D CALLS TO GEOSUPPORT USING \\*/ /* BORO, HOUSENUMBER, & STREET NAME SUPPLIED BY AN INSTREAM FILE.\\*/ /* FUNCTION 1 RETURNS GEOGRAPHIC INFORMATION FOR AN ADDRESS. \\*/ /* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. \\*/ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*/ /* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE \\*/ /* ORIGINAL CALL TO FUNCTION 1, ALL THE CROSS STREET \\*/ /* NAMES WOULD HAVE BEEN RETURNED BY FUNCTION 1. \\*/ /*****************************************************************/ DCL EOF BIT(1) INIT('0'B), YES BIT(1) INIT('1'B), NO BIT(1) INIT('0'B), ADDR BUILTIN, (I,J) FIXED BIN(15) INIT(0); /*******************************************************************/ /************** GBI DECLARATION BELOW IS REQUIRED **************/ /*** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE *****/ /*** %INCLUDE STATEMENTS) IS STRONGLY ENCOURAGED. *******/ /*******************************************************************/ DCL GBI ENTRY OPTIONS(ASM,INTER); %INCLUDE W1PL1; %INCLUDE W2PL1; /***** REPLACE CODE BELOW WITH YOUR OWN INPUT FILE DECLARATION *****/ DCL INFILE FILE STREAM INPUT; DCL IN_BORO CHAR(01), IN_HOUSENUM CHAR(12), IN_STREET_NAME CHAR(32); /******** REPLACE CODE BELOW WITH YOUR OWN REPORT LAYOUT *********/ DCL SYSPRINT FILE STREAM OUTPUT PRINT; ON ENDPAGE(SYSPRINT) PUT EDIT('SAMPLE PL1 PROGRAM \\#1 EXECUTION OUTPUT', '*****---------- INPUT ADDRESS ------------***** '|| '*****---------------------'|| ' SELECTED OUTPUT ITEMS -----------------------*****', 'B HOUSE NUMBER IN-STREET-NAME '|| ' ZIP CD NYPD-PCT SCHLDST '|| 'LOW CROSS STREET HIGH CROSS STREET ', '_ ____________ '||(32)'_'||' '|| '_____ __ ________ _______ '|| (25)'_'||' '||(25)'_') (PAGE,COL(1),A,SKIP(2),COL(1),A,COL(1),A,SKIP(0),COL(1),A); OPEN FILE(SYSPRINT) LINESIZE(133); SIGNAL ENDPAGE(SYSPRINT); /*****************************************************************/ ON ENDFILE(INFILE) BEGIN; EOF=YES; GOTO ENDLOOP; END; OPEN FILE(INFILE); DO WHILE (EOF = NO); /********** REPLACE CODE BELOW WITH YOUR OWN INPUT *************/ GET FILE(INFILE) EDIT(IN_BORO,IN_HOUSENUM,IN_STREET_NAME) (COL(1),A(1),X(1),A(12),X(1),A(32)); /*****************************************************************/ /* TO MAKE A FUNCTION 1 CALL: \\*/ /* (1) INITIALIZE WORKAREA 1 TO SPACES \\*/ /* (2) SET WA1'S FUNCTION CODE FIELD TO 1 \\*/ /* (3) MOVE THE INPUT BORO TO WA1'S INPUT BORO CODE FIELD \\*/ /* (4) MOVE THE INPUT HOUSE NUMBER TO WA1'S INPUT HOUSE NUMBER \\*/ /* FIELD \\*/ /* (5) MOVE THE INPUT STREET TO WA1'S INPUT STREET NAME FIELD \\*/ /* (6) CALL GBI WITH 2 WORKAREAS \\*/ /* (7) CHECK RETURN CODES FOR ERRORS OR WARNINGS \\*/ /*****************************************************************/ WORK1PL1 = ' '; GEO_WA1_IN_FUNCTION_1 = '1'; GEO_WA1_IN_BORO = IN_BORO; GEO_WA1_IN_HOUSENUM = IN_HOUSENUM; GEO_WA1_IN_STREET_1 = IN_STREET_NAME; CALL GBI(W1PL1,W2PL1); IF GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2 \u00ac= '00' & GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2 \u00ac= '01' THEN DO; /******** INSERT YOUR OWN ERROR HANDLING ROUTINE HERE *****/ PUT EDIT(IN_BORO,IN_HOUSENUM,IN_STREET_NAME, '*** FUNCTION 1 GRC =', GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2, 'REASON CODE =',GEO_WA1_OUT_REASON_CODE, '*** ',GEO_WA1_OUT_ERROR_MESSAGE) (SKIP(2),COL(1),(7)(A,X(1)),SKIP(1),COL(49),A,A); END; ELSE DO; PUT EDIT(IN_BORO,IN_HOUSENUM,IN_STREET_NAME) (SKIP(2),COL(1),(3)(A,X(1))); IF GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2 = '01' THEN DO; /** INSERT YOUR OWN WARNING HANDLING ROUTINE HERE \\**/ PUT EDIT('*** FUNCTION 1 WARNING, GRC =', GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2, 'REASON CODE =',GEO_WA1_OUT_REASON_CODE, '*** ',GEO_WA1_OUT_ERROR_MESSAGE) (COL(49),(4)(A,X(1)),SKIP(1),COL(49),A,A); END; /****************************************************/ /***** REPLACE CODE BELOW WITH YOUR OWN CODE FOR ****/ /***** PROCESSING SUCCESSFUL GEOSUPPORT CALLS ****/ /****************************************************/ PUT EDIT(GEO_WA2_FN1_ZIP,GEO_WA2_FN1_COMDIST_NUMBER, GEO_WA2_FN1_POL_PRECINCT,GEO_WA2_FN1_SCHOOLDIST) (COL(49),(3)(A,X(1)),X(5),A); /***********************************************************/ /* THIS PROGRAM ASSUMES THERE EXISTS AT LEAST ONE HIGH AND \\*/ /* ONE LOW CROSS STREET. TO GET THE STREET NAMES OF THE \\*/ /* FIRST-LISTED HIGH AND FIRST-LISTED LOW CROSS STREETS \\*/ /* FROM THE HIGH AND LOW STREET CODE LISTS CALL \\*/ /* FUNCTION D: \\*/ /* (1) INITIALIZE WORKAREA 1 TO SPACES \\*/ /* (2) SET WA1'S FUNCTION CODE FIELD TO D \\*/ /* (3) SET WA1'S STREET NAME LENGTH FIELD TO DESIRED \\*/ /* VALUE (IN THIS CASE 25 BECAUSE THE REPORT LINE \\*/ /* HAS SPACE FOR ONLY 25 CHARACTERS) \\*/ /* (4) USE THE COMPACT STREET NAMES OPTION TO OBTAIN \\*/ /* STREET NAMES FORMATTED FOR DISPLAY \\*/ /* (5) MOVE WA2'S LOW PBSC FIELD TO WA1'S INPUT STREET \\*/ /* CODE 1 FIELD \\*/ /* (6) MOVE WA2'S HIGH PBSC FIELD TO WA1'S INPUT STREET \\*/ /* CODE 2 FIELD \\*/ /* (7) CALL GBI WITH 1 WORKAREA \\*/ /* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS \\*/ /***********************************************************/ WORK1PL1 = ' '; GEO_WA1_IN_FUNCTION_1 = 'D'; GEO_WA1_IN_SNL = '25'; GEO_WA1_IN_COMPACT_NAME_FLAG = 'C'; GEO_WA1_IN_STREETCODE_1 = GEO_WA2_FN1_LOW_PBSC(1); GEO_WA1_IN_STREETCODE_2 = GEO_WA2_FN1_HI_PBSC(1); CALL GBI(W1PL1); IF GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2 = '00' THEN DO; /******** INSERT YOUR OWN CODE HERE *******/ PUT EDIT(GEO_WA1_OUT_STREET_1,GEO_WA1_OUT_STREET_2) (COL(75),A(25),X(1),A(25)); END; ELSE DO; /*** INSERT YOUR OWN ERROR HANDLING ROUTINE HERE \\***/ PUT EDIT(IN_BORO,IN_HOUSENUM,IN_STREET_NAME, '*** FUNCTION D GRC =', GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2, 'REASON CODE =',GEO_WA1_OUT_REASON_CODE,',', '*** ',GEO_WA1_OUT_ERROR_MESSAGE) (SKIP(2),COL(1),(8)(A,X(1)), SKIP(1),COL(49),A,A); END; END; ENDLOOP: END; CLOSE FILE(INFILE); END PL1F1SC; /* //LKED.SYSIN DD * INCLUDE INCLIB(GBI) /* //INCLIB DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* THE STEPLIB (OR JOBLIB) OF THE GEOSUPPORT EXECUTION STEP \\*// //* MUST INCLUDE THE FOLLOWING TWO CONCATENATED DATASETS: \\*// //* A030.GEO.SUPPORT.PDSE.LOADLIB \\*// //* A030.GEO.SUPPORT.LOADLIB \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR // DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //GO.SYSLMOD DD DSN=&&GOSET,DISP=(OLD,DELETE) //* //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* DD STATEMENTS FOR GEOSUPPORT DATA FILES (E.G. GRID, PAD, \\*// //* ETC) ARE NO LONGER NEEDED AND ARE IGNORED. GEOSUPPORT \\*// //* IS TAILORD TO USE STANDARD GEOSUPPORT DATA SET NAMES. \\*// //* TO USE NON-STANDARD FILES, SEE YOUR SYSTEMS PROGRAMMER. \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* //GO.SYSPRINT DD SYSOUT=A //GO.INFILE DD * 1 22 READE ST 1 500 DUANE ST 1 2-4 BROADWAY 4 165-100 BAISLEY BLVD 4 165-1000 BAISLEY BLVD /* // PL/1 SAMPLE PROGRAM #1 \u2013 Job Stream - COW //PL1C1SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //*** PL1 SAMPLE BATCH GEOSUPPORT USER APPLICATION PROGRAM \\#1. ****** //*** (COW FORMAT) ****** //******************************************************************** //STEP1 EXEC IBMZCPLG,REGION=0M,GOPGM='PL1C1SC', // PARM.PLI='S,GS,INCLUDE', // PARM.LKED='AMODE(31),LIST' //PLI.SYSLIB DD DSN=A030.GEO.COPYLIB2,DISP=SHR // DD DSN=A030.GEO.COPYLIB,DISP=SHR //SYSIN DD * PL1C1SC: PROC OPTIONS(MAIN); /*****************************************************************/ /* THIS PROGRAM MAKES FUNCTION 1 AND D CALLS TO GEOSUPPORT USING \\*/ /* BORO, HOUSENUMBER, & STREET NAME SUPPLIED BY AN INSTREAM FILE.\\*/ /* FUNCTION 1 RETURNS GEOGRAPHIC INFORMATION FOR AN ADDRESS. \\*/ /* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. \\*/ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*/ /* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE \\*/ /* ORIGINAL CALL TO FUNCTION 1, ALL THE CROSS STREET \\*/ /* NAMES WOULD HAVE BEEN RETURNED BY FUNCTION 1. \\*/ /*****************************************************************/ DCL EOF BIT(1) INIT('0'B), YES BIT(1) INIT('1'B), NO BIT(1) INIT('0'B), ADDR BUILTIN, (I,J) FIXED BIN(15) INIT(0); /*******************************************************************/ /************** GBI DECLARATION BELOW IS REQUIRED **************/ /*** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE *****/ /*** %INCLUDE STATEMENTS) IS STRONGLY ENCOURAGED. *******/ /*******************************************************************/ DCL GBI ENTRY OPTIONS(ASM,INTER); %INCLUDE P1PL1; %INCLUDE P2PL1; /***** REPLACE CODE BELOW WITH YOUR OWN INPUT FILE DECLARATION *****/ DCL INFILE FILE STREAM INPUT; DCL IN_BORO CHAR(01), IN_HOUSENUM CHAR(12), IN_STREET_NAME CHAR(32); /******** REPLACE CODE BELOW WITH YOUR OWN REPORT LAYOUT *********/ DCL SYSPRINT FILE STREAM OUTPUT PRINT; ON ENDPAGE(SYSPRINT) PUT EDIT('SAMPLE PL1 PROGRAM \\#1 EXECUTION OUTPUT', '*****---------- INPUT ADDRESS ------------***** '|| '*****---------------------'|| ' SELECTED OUTPUT ITEMS -----------------------*****', 'B HOUSE NUMBER IN-STREET-NAME '|| ' ZIP CD NYPD-PCT SCHLDST '|| 'LOW CROSS STREET HIGH CROSS STREET ', '_ ____________ '||(32)'_'||' '|| '_____ __ ________ _______ '|| (25)'_'||' '||(25)'_') (PAGE,COL(1),A,SKIP(2),COL(1),A,COL(1),A,SKIP(0),COL(1),A); OPEN FILE(SYSPRINT) LINESIZE(133); SIGNAL ENDPAGE(SYSPRINT); *****************************************************************/ ON ENDFILE(INFILE) BEGIN; EOF=YES; GOTO ENDLOOP; END; OPEN FILE(INFILE); DO WHILE (EOF = NO); /********** REPLACE CODE BELOW WITH YOUR OWN INPUT *************/ GET FILE(INFILE) EDIT(IN_BORO,IN_HOUSENUM,IN_STREET_NAME) (COL(1),A(1),X(1),A(12),X(1),A(32)); /*****************************************************************/ /* TO MAKE A FUNCTION 1 CALL: \\*/ /* (1) INITIALIZE WORKAREA 1 TO SPACES \\*/ /* (2) SET WA1'S FUNCTION CODE FIELD TO 1 \\*/ /* (3) MOVE THE INPUT BORO TO WA1'S INPUT BORO CODE FIELD \\*/ /* (4) MOVE THE INPUT HOUSE NUMBER TO WA1'S INPUT HOUSE NUMBER \\*/ /* FIELD \\*/ /* (5) MOVE THE INPUT STREET TO WA1'S INPUT STREET NAME FIELD \\*/ /* (6) CALL GBI WITH 2 WORKAREAS \\*/ /* (7) CHECK RETURN CODES FOR ERRORS OR WARNINGS \\*/ /*****************************************************************/ WORK1PL1 = ' '; PIWA1_IN_FUNCTION_1 = '1'; PIWA1_IN_BORO_1 = IN_BORO; /* for cow format the field house_number has length=16 \\*/ PIWA1_IN_HOUSENUM_DISPLAY = IN_HOUSENUM; PIWA1_IN_STREET_1 = IN_STREET_NAME; PIWA1_IN_PLATFORM_INDICATOR = 'C'; /***************************************************************/ /***************************************************************/ /* AS OF GEOSUPPORT 10.1, \\*/ /* TO RECEIVE ROADBED-SPECIFIC INFORMATION, \\*/ /* SET THE ROADBED REQUEST SWITCH TO 'R', AS FOLLOWS: \\*/ /* PIWA1_IN_ROADBED_REQ_SWITCH = 'R'; \\*/ /***************************************************************/ CALL GBI(P1PL1,P2PL1); IF PIWA1_OUT_RETURN_CODE \u00ac= '00' & PIWA1_OUT_RETURN_CODE \u00ac= '01' THEN DO; /******** INSERT YOUR OWN ERROR HANDLING ROUTINE HERE *****/ PUT EDIT(IN_BORO,IN_HOUSENUM,IN_STREET_NAME, '*** FUNCTION 1 GRC =',PIWA1_OUT_RETURN_CODE, 'REASON CODE =',PIWA1_OUT_REASON_CODE, '*** ',PIWA1_OUT_ERROR_MESSAGE) (SKIP(2),COL(1),(7)(A,X(1)),SKIP(1),COL(49),A,A); END; ELSE DO; PUT EDIT(IN_BORO,IN_HOUSENUM,IN_STREET_NAME) (SKIP(2),COL(1),(3)(A,X(1))); IF PIWA1_OUT_RETURN_CODE = '01' THEN DO; /** INSERT YOUR OWN WARNING HANDLING ROUTINE HERE \\**/ PUT EDIT('*** FUNCTION 1 WARNING, GRC =', PIWA1_OUT_RETURN_CODE, 'REASON CODE =',PIWA1_OUT_REASON_CODE, '*** ',PIWA1_OUT_ERROR_MESSAGE) (COL(49),(4)(A,X(1)),SKIP(1),COL(49),A,A); END; /****************************************************/ /***** REPLACE CODE BELOW WITH YOUR OWN CODE FOR ****/ /***** PROCESSING SUCCESSFUL GEOSUPPORT CALLS ****/ /****************************************************/ PUT EDIT(PIWA2_FN1_ZIP,PIWA2_FN1_COM_DIST_NUM, PIWA2_FN1_POL_PRECINCT,PIWA2_FN1_SCHL_DIST) (COL(49),(3)(A,X(1)),X(5),A); /***********************************************************/ /* THIS PROGRAM ASSUMES THERE EXISTS AT LEAST ONE HIGH AND \\*/ /* ONE LOW CROSS STREET. TO GET THE STREET NAMES OF THE \\*/ /* FIRST-LISTED HIGH AND FIRST-LISTED LOW CROSS STREETS \\*/ /* FROM THE HIGH AND LOW STREET CODE LISTS CALL \\*/ /* FUNCTION D: \\*/ /* (1) INITIALIZE WORKAREA 1 TO SPACES \\*/ /* (2) SET WA1'S FUNCTION CODE FIELD TO D \\*/ /* (3) SET WA1'S STREET NAME LENGTH FIELD TO DESIRED \\*/ /* VALUE (IN THIS CASE 25 BECAUSE THE REPORT LINE \\*/ /* HAS SPACE FOR ONLY 25 CHARACTERS) \\*/ /* (4) USE THE COMPACT STREET NAMES OPTION TO OBTAIN \\*/ /* STREET NAMES FORMATTED FOR DISPLAY \\*/ /* (5) MOVE WA2'S LOW B5SC FIELD TO WA1'S INPUT STREET \\*/ /* CODE 1 FIELD \\*/ /* (6) MOVE WA2'S HIGH B5SC FIELD TO WA1'S INPUT STREET \\*/ /* CODE 2 FIELD \\*/ /* (7) CALL GBI WITH 1 WORKAREA \\*/ /* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS \\*/ /***********************************************************/ WORK1PL1 = ' '; PIWA1_IN_PLATFORM_INDICATOR = 'C'; PIWA1_IN_FUNCTION_1 = 'D'; PIWA1_IN_SNL = '25'; PIWA1_IN_SN_NORM_FORMAT = 'C'; PIWA1_IN_BORO_1 = SUBSTR(PIWA2_FN1_LOW_B5SC(1),1,1); PIWA1_IN_10SC_1 = SUBSTR(PIWA2_FN1_LOW_B5SC(1),2,5); PIWA1_IN_BORO_2 = SUBSTR(PIWA2_FN1_HI_B5SC(1),1,1); PIWA1_IN_10SC_2 = SUBSTR(PIWA2_FN1_HI_B5SC(1),2,5); CALL GBI(P1PL1); IF PIWA1_OUT_RETURN_CODE = '00' THEN DO; /******** INSERT YOUR OWN CODE HERE *******/ PUT EDIT(PIWA1_OUT_STREET_1,PIWA1_OUT_STREET_2) (COL(75),A(25),X(1),A(25)); END; ELSE DO; /*** INSERT YOUR OWN ERROR HANDLING ROUTINE HERE \\***/ PUT EDIT(IN_BORO,IN_HOUSENUM,IN_STREET_NAME, '*** FUNCTION D GRC =', PIWA1_OUT_RETURN_CODE, 'REASON CODE =',PIWA1_OUT_REASON_CODE,',', '*** ',PIWA1_OUT_ERROR_MESSAGE) (SKIP(2),COL(1),(8)(A,X(1)), SKIP(1),COL(49),A,A); END; END; ENDLOOP: END; CLOSE FILE(INFILE); END PL1C1SC; /* //LKED.SYSIN DD * INCLUDE INCLIB(GBI) /* //INCLIB DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* THE STEPLIB (OR JOBLIB) OF THE GEOSUPPORT EXECUTION STEP \\*// //* MUST INCLUDE THE FOLLOWING TWO CONCATENATED DATASETS: \\*// //* A030.GEO.SUPPORT.PDSE.LOADLIB \\*// //* A030.GEO.SUPPORT.LOADLIB \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR // DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //GO.SYSLMOD DD DSN=&&GOSET,DISP=(OLD,DELETE) //* //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* DD STATEMENTS FOR GEOSUPPORT DATA FILES (E.G. GRID, PAD, \\*// //* ETC) ARE NO LONGER NEEDED AND ARE IGNORED. GEOSUPPORT \\*// //* IS TAILORD TO USE STANDARD GEOSUPPORT DATA SET NAMES. \\*// //* TO USE NON-STANDARD FILES, SEE YOUR SYSTEMS PROGRAMMER. \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* //GO.SYSPRINT DD SYSOUT=A //GO.INFILE DD * 1 22 READE ST 1 500 DUANE ST 1 2-4 BROADWAY 4 165-100 BAISLEY BLVD 4 165-1000 BAISLEY BLVD /* // SAMPLE PL/1 PROGRAM #1 EXECUTION OUTPUT *****---------- INPUT ADDRESS ------------***** *****--------------------- SELECTED OUTPUT ITEMS -----------------------***** B HOUSE NUMBER IN-STREET-NAME ZIP CD NYPD-PCT SCHLDST LOW CROSS STREET HIGH CROSS STREET - ------------ -------------------------------- ----- -- -------- ------- ------------------------- ------------------------- 1 22 READE ST 10007 01 005 02 ELK STREET BROADWAY 1 500 DUANE ST *** FUNCTION 1 GRC = 42 REASON CODE = *** ADDRESS NUMBER OUT OF RANGE 1 2-4 BROADWAY *** FUNCTION 1 WARNING, GRC = 01 REASON CODE = 1 *** ADDR NUMBER ALTERED: RANGE ASSUMED. USING DIGITS BEFORE DASH ONLY 10004 01 001 02 STONE STREET BOWLING GREEN 4 165-100 BAISLEY BLVD 11434 12 113 28 GUY R BREWER BOULEVARD BEDELL STREET 4 165-1000 BAISLEY BLVD *** FUNCTION 1 GRC = 13 REASON CODE = 2 *** ADDRESS NBR 165-1000 HAS MORE THAN 3 DIGITS AFTER THE DASH.","title":"PL/1 SAMPLE PROGRAM #1"},{"location":"appendices/appendix08/#pl1-sample-program-2","text":"- Input Job Stream - MSW - Input Job Stream - COW - Output Report PL/1 SAMPLE PROGRAM #2 \u2013Job Stream - MSW //PL1F2SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //*** PL1 SAMPLE BATCH GEOSUPPORT USER APPLICATION PROGRAM \\#2. ****** //*** (MSW FORMAT) ****** //******************************************************************** //STEP1 EXEC IBMZCPLG,REGION=0M,GOPGM='PL1F2SR', // PARM.PLI='S,GS,INCLUDE', // PARM.LKED='AMODE(31)' //PLI.SYSLIB DD DSN=A030.GEO.COPYLIB2,DISP=SHR // DD DSN=A030.GEO.COPYLIB,DISP=SHR //SYSIN DD * PL1F2SR: PROC OPTIONS(MAIN); /******************************************************************/ /* THIS PROGRAM MAKES FUNCTION 2 AND D CALLS TO GEOSUPPORT USING \\*/ /* TWO BOROS AND TWO STREET NAMES SUPPLIED BY AN INSTREAM FILE. \\*/ /* FUNCTION 2 RETURNS GEOGRAPHIC INFORMATION FOR AN INTERSECTION. \\*/ /* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. \\*/ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*/ /* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE \\*/ /* ORIGINAL CALL TO FUNCTION 2, ALL THE CROSS STREET \\*/ /* NAMES WOULD HAVE BEEN RETURNED BY FUNCTION 2. \\*/ /******************************************************************/ DCL EOF BIT(1) INIT('0'B), YES BIT(1) INIT('1'B), NO BIT(1) INIT('0'B), ADDR BUILTIN, (I,J) FIXED BIN(15) INIT(0); /**************** GBI DECLARATION BELOW IS REQUIRED ****************/ DCL GBI ENTRY OPTIONS(ASM,INTER); /*******************************************************************/ /** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BY THE %INCLUDE \\**/ /** STATEMENTS) IS STRONGLY ENCOURAGED \\**/ /*******************************************************************/ %INCLUDE W1PL1; %INCLUDE W2PL1; /***** REPLACE CODE BELOW WITH YOUR OWN INPUT FILE DECLARATION *****/ DCL INFILE FILE STREAM INPUT; DCL IN_BORO1 CHAR(01), IN_STREET_NAME1 CHAR(32), IN_BORO2 CHAR(01), IN_STREET_NAME2 CHAR(32); /******** REPLACE CODE BELOW WITH YOUR OWN REPORT LAYOUT *********/ DCL SYSPRINT FILE STREAM OUTPUT PRINT; ON ENDPAGE(SYSPRINT) PUT EDIT('SAMPLE PL1 PROGRAM \\#2 EXECUTION OUTPUT', '*****----------------- INPUT INTERSECTION '||(22)'-'||'***** '|| '*****------------ SELECTED OUTPUT ITEMS -------------*****', 'B IN-STREET-NAME-1'||(17)' '||'B IN-STREET-NAME-2'||(17)' '|| ' ZIP CD NYPD-PCT SCHLDST INTERSECTING STREET NAMES ', '_ '||(32)'\\_'||' _ '||(32)'\\_'||' '|| '_____ __ ________ _______ '||(32)'\\_') (PAGE,COL(1),A,SKIP(2),COL(1),A,COL(1),A,SKIP(0),COL(1),A); OPEN FILE(SYSPRINT) LINESIZE(133); SIGNAL ENDPAGE(SYSPRINT); /*****************************************************************/ ON ENDFILE(INFILE) BEGIN; EOF=YES; GOTO ENDLOOP; END; OPEN FILE(INFILE); DO WHILE (EOF = NO); /********** REPLACE CODE BELOW WITH YOUR OWN INPUT *************/ GET FILE(INFILE) EDIT(IN_BORO1,IN_STREET_NAME1, IN_BORO2,IN_STREET_NAME2) (COL(1),A(1),X(1),A(32),X(1),A(1),X(1),A(32)); /******************************************************************/ /* TO MAKE A FUNCTION 2 CALL: \\*/ /* (1) INITIALIZE WORKAREA 1 TO SPACES \\*/ /* (2) SET WA1'S FUNCTION-CODE TO 2 \\*/ /* (3) MOVE THE 1ST INPUT BORO TO WA1'S INPUT BORO CODE FIELD \\*/ /* (4) MOVE THE 1ST INPUT STREET TO WA1'S INPUT STREET NAME \\*/ /* FIELD \\*/ /* (5) MOVE THE 2ND INPUT BORO TO WA1'S INPUT BORO CODE 2 FIELD \\*/ /* (6) MOVE THE 2ND INPUT STREET TO WA1'S INPUT STREET NAME 2 \\*/ /* FIELD \\*/ /* (7) CALL GBI WITH 2 WORKAREAS \\*/ /* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS \\*/ /******************************************************************/ WORK1PL1 = ' '; GEO_WA1_IN_FUNCTION_1 = '2'; GEO_WA1_IN_BORO = IN_BORO1; GEO_WA1_IN_STREET_1 = IN_STREET_NAME1; GEO_WA1_IN_BORO_2 = IN_BORO2; GEO_WA1_IN_STREET_2 = IN_STREET_NAME2; CALL GBI(W1PL1,W2PL1); IF GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2 \u00ac= '00' & GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2 \u00ac= '01' THEN DO; /****** INSERT YOUR OWN ERROR HANDLING ROUTINE HERE *******/ PUT EDIT('***** FUNCTION 2 GRC =', GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2, 'REASON =',GEO_WA1_OUT_REASON_CODE,',', GEO_WA1_OUT_ERROR_MESSAGE, IN_BORO1,IN_STREET_NAME1,IN_BORO2,IN_STREET_NAME2) (SKIP(2),COL(1),(3)(A,X(1)),A,A,X(1),A, SKIP(1),(4)(A,X(1))); END; ELSE IF GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2 = '01' THEN DO; /*** INSERT YOUR OWN WARNING HANDLING ROUTINE HERE ****/ PUT EDIT('***** FUNCTION 2 WARNING, GRC = '|| GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2||', '|| 'REASON CODE = '||GEO_WA1_OUT_REASON_CODE|| ', '||GEO_WA1_OUT_ERROR_MESSAGE, IN_BORO1,IN_STREET_NAME1, IN_BORO2,IN_STREET_NAME2) (SKIP(2),COL(1),A,SKIP(1),(4)(A,X(1))); END; IF GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2 = '00'| GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2 = '01' THEN DO; /***********************************************************/ /***** REPLACE CODE BELOW WITH YOUR OWN CODE FOR ***********/ /***** PROCESSING SUCCESSFUL GEOSUPPORT CALLS. *****/ /***********************************************************/ PUT EDIT(IN_BORO1,IN_STREET_NAME1,IN_BORO2,IN_STREET_NAME2, GEO_WA2_FN2_ZIP,GEO_WA2_FN2_COMDIST_NUMBER, GEO_WA2_FN2_POL_PRECINCT,GEO_WA2_FN2_SCHOOLDIST) (SKIP(2),COL(1),(7)(A,X(1)),X(5),A); DO J = 1 TO GEO_WA2_FN2_NUM_OF_INTERSECTS; /*******************************************************/ /* TO GET STREET NAMES FOR INTERSECTING STREET CODES \\*/ /* MAKE A FUNCTION D CALL: \\*/ /* (1) INITIALIZE WORKAREA 1 TO SPACES \\*/ /* (2) SET THE WA1'S FUNCTION CODE FIELD TO D \\*/ /* (3) USE THE COMPACT STREET NAMES OPTION TO OBTAIN \\*/ /* STREET NAMES FORMATTED FOR DISPLAY \\*/ /* (4) MOVE THE PACKED BORO AND STREET CODE TO \\*/ /* WA1'S INPUT STREET CODE 1 FIELD \\*/ /* (5) CALL GBI WITH 1 WORKAREA \\*/ /* (6) CHECK RETURN CODES FOR ERRORS OR WARNINGS \\*/ /*******************************************************/ WORK1PL1 = ' '; GEO_WA1_IN_FUNCTION_1 = 'D'; GEO_WA1_IN_COMPACT_NAME_FLAG = 'C'; GEO_WA1_IN_STREETCODE_1 = GEO_WA2_FN2_INTERSECT_PBSC(J); CALL GBI(W1PL1); IF GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2 = '00' THEN DO; /******** INSERT YOUR OWN CODE HERE *******/ PUT EDIT(GEO_WA1_OUT_STREET_1) (COL(97),A); END; ELSE DO; /** INSERT YOUR OWN ERROR HANDLING ROUTINE HERE \\**/ PUT EDIT('***** FUNCTION D GRC =', GEO_WA1_OUT_RC_1||GEO_WA1_OUT_RC_2, 'REASON =',GEO_WA1_OUT_REASON_CODE,',', GEO_WA1_OUT_ERROR_MESSAGE) (SKIP(2),COL(1),(6)(A,X(1))); END; END; END; ENDLOOP: END; CLOSE FILE(INFILE); END PL1F2SR; /* //LKED.SYSIN DD * INCLUDE INCLIB(GBI) /* //INCLIB DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //* //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* THE STEPLIB (OR JOBLIB) OF THE GEOSUPPORT EXECUTION STEP \\*// //* MUST INCLUDE THE FOLLOWING TWO CONCATENATED DATASETS: \\*// //* A030.GEO.SUPPORT.PDSE.LOADLIB \\*// //* A030.GEO.SUPPORT.LOADLIB \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR // DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //GO.SYSLMOD DD DSN=&&GOSET,DISP=(OLD,DELETE) //* //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* AS OF GEOSUPPORT VERSION 10.0, \\*// //* DD STATEMENTS FOR GEOSUPPORT DATA FILES (E.G. GRID, PAD, \\*// //* ETC) ARE NO LONGER NEEDED AND ARE IGNORED. GEOSUPPORT \\*// //* IS TAILORD TO USE STANDARD GEOSUPPORT DATA SET NAMES. \\*// //* TO USE NON-STANDARD FILES, SEE YOUR SYSTEMS PROGRAMMER. \\*// //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*// //* //GO.SYSPRINT DD SYSOUT=A //GO.INFILE DD * 1 CHAMBERS ST 1 HUDSON ST 1 SIXTH AVE 1 W. 8 ST 1 DUANE ST 1 READE ST /* // SAMPLE PL1 PROGRAM #2 EXECUTION OUTPUT *****----------------- INPUT INTERSECTION ----------------------***** *****------------ SELECTED OUTPUT ITEMS -------------***** B IN-STREET-NAME-1 B IN-STREET-NAME-2 ZIP CD NYPD-PCT SCHLDST INTERSECTING STREET NAMES \\- -------------------------------- - -------------------------------- ----- -- -------- -------- -------------------------------- 1 CHAMBERS ST 1 HUDSON ST 10007 01 001 02 CHAMBERS STREET HUDSON STREET WEST BROADWAY 1 SIXTH AVE 1 W. 8 ST 10014 02 006 02 6 AVENUE GREENWICH AVENUE WEST 8 STREET ***** FUNCTION 2 GRC = 62 REASON = , READE STREET & DUANE STREET DO NOT INTERSECT 1 DUANE ST 1 READE ST","title":"PL/1 SAMPLE PROGRAM #2"},{"location":"appendices/appendix08/#c-sample-program-1","text":"- Input Job Stream - MSW - Input Job Stream - COW - Output Report C SAMPLE PROGRAM #1 \u2013 Job Stream -MSW //CCCF1SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //*** C SAMPLE MSW BATCH GEOSUPPORT USER APPLICATION PROGRAM \\#1 **** //******************************************************************** //STEP1 EXEC EDCCLG, // CPARM='SS,OPT,OFFSET,SOURCE,XREF,LIST' //COMPILE.SYSPRINT DD SYSOUT=A //COMPILE.SYSLIB DD // DD // DD DSNAME=A030.GEO.COPYLIB,DISP=SHR //COMPILE.SYSIN DD * /*****************************************************************/ /* THIS PROGRAM MAKES FUNCTION 1 AND D CALLS TO GEOSUPPORT USING \\*/ /* BORO, HOUSENUMBER, & STREET NAME SUPPLIED BY AN INSTREAM FILE.\\*/ /* FUNCTION 1 RETURNS GEOGRAPHIC INFORMATION FOR AN ADDRESS. \\*/ /* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. \\*/ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*/ /* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE \\*/ /* ORIGINAL CALL TO FUNCTION 1, ALL THE CROSS STREET \\*/ /* NAMES WOULD HAVE BEEN RETURNED BY FUNCTION 1. \\*/ /*****************************************************************/ #include #include /*********************************************************************/ /*** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE \\***/ /*** #INCLUDE STATEMENTS) IS STRONGLY ENCOURAGED. \\***/ /*********************************************************************/ #include /************** GBI OS LINKAGE BELOW IS REQUIRED **************/ #pragma linkage (GBI,OS) long GBI(void \\*, ...); /***** THE WORK AREA LAYOUTS MUST BE DECLARED USING THE TYPEDEFS \\***/ /***** IN THE GEOSUPPORT COPY FILE. \\***/ C_WA1 wa1; C_WA2_F1 wa2_f1; void main () { /***** REPLACE CODE BELOW WITH YOUR OWN INPUT FILE DECLARATION *****/ FILE \\*inpdat; struct tag { char in_boro; char filler1; char in_housenum [12]; char filler2; char in_street_name [32]; char filler3 [33]; } recin ; inpdat = fopen(\"DD:INPDAT\",\"rb\"); if (inpdat == NULL) {printf(\"INPDAT Data Set did not open.\\n\"); return;} /***** REPLACE CODE BELOW WITH YOUR OWN REPORT LAYOUT *****/ printf(\"\\fSAMPLE C PROGRAM \\#1 EXECUTION OUTPUT \"); printf(\"\\n\\n*****---------- INPUT ADDRESS ------------***** \\***\"); printf(\"\\**--------------------- SELECTED OUTPUT ITEMS ---------\"); printf(\"--------------*****\"); printf(\"\\n\\nB HOUSE NUMBER IN-STREET-NAME \"); printf(\" ZIP CD NYPD-PCT SCHLDST LOW CROSS STREET \"); printf(\" HIGH CROSS STREET \"); printf(\"\\r_ ____________ ____________________________\"); printf(\"____ _____ __ ________ _______ _________________\"); printf(\"________ _________________________\"); /*** REPLACE CODE BELOW WITH YOUR OWN INPUT \\***/ while (fread(&recin,1,sizeof(recin),inpdat)) { /*****************************************************************/ /* TO MAKE A FUNCTION 1 CALL: \\*/ /* (1) INITIALIZE WORKAREA 1 TO SPACES \\*/ /* (2) SET WA1'S FUNCTION CODE FIELD TO 1 \\*/ /* (3) MOVE THE INPUT BORO TO WA1'S INPUT BORO CODE FIELD \\*/ /* (4) MOVE THE INPUT HOUSE NUMBER TO WA1'S INPUT HOUSE NUMBER \\*/ /* FIELD \\*/ /* (5) MOVE THE INPUT STREET TO WA1'S INPUT STREET NAME FIELD \\*/ /* (6) CALL GBI WITH 2 WORKAREAS \\*/ /* (7) CHECK RETURN CODES FOR ERRORS OR WARNINGS \\*/ /*****************************************************************/ memset(&wa1,' ',sizeof(wa1)); memcpy(wa1.input.func_code,\"1 \",2); wa1.input.boro_1 = recin.in_boro ; memcpy(wa1.input.street_name_1,recin.in_street_name,32); memcpy(wa1.input.hse_nbr_disp,recin.in_housenum,12); /* /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*/ /* As of Geosupport Version 10.1, \\*/ /* to receive roadbed-specific information, \\*/ /* set the Roadbed Request Switch to 'R', as follows: \\*/ /* wa1.input.roadbedreq = 'R'; \\*/ /* \\*/ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*/ /* \\*/ GBI(&wa1,&wa2_f1); if ( (memcmp(wa1.output.ret_code,\"01\",2)) > 0 || (memcmp(wa1.output.ret_code,\"00\",2)) < 0 ) /******** INSERT YOUR OWN ERROR HANDLING ROUTINE HERE *****/ { printf(\"\\n\\n%c %.12s %.32s *** FUNCTION 1 GRC = %.2s\" \" REASON CODE = %c\", recin.in_boro,recin.in_housenum,recin.in_street_name, wa1.output.ret_code,wa1.output.reject_reason_code) ; printf (\"\\n%51.5s %.80s\", \"\\***\", wa1.output.msg) ; } if ( (memcmp(wa1.output.ret_code,\"01\",2)) == 0 ) /******** INSERT YOUR OWN WARNING HANDLING ROUTINE HERE *****/ { printf(\"\\n\\n%c %.12s %.32s *** FUNCTION 1 WARNING, GRC = %.2s\" \" REASON CODE = %c\", recin.in_boro,recin.in_housenum,recin.in_street_name, wa1.output.ret_code,wa1.output.reject_reason_code) ; printf (\"\\n%51.5s %.80s\", \"\\***\", wa1.output.msg) ; printf(\"\\n%47.1s %.5s %.2s %.3s %.2s\", \" \",wa2_f1.zip_code, wa2_f1.com_dist+1,wa2_f1.police_pre,wa2_f1.com_schl_dist) ; } if ( (memcmp(wa1.output.ret_code,\"00\",2)) == 0 ) /***********************************************************/ /***** REPLACE CODE BELOW WITH YOUR OWN CODE FOR ***********/ /***** PROCESSING SUCCESSFUL GEOSUPPORT CALLS *****/ /***********************************************************/ printf(\"\\n\\n%c %.12s %.31s %.5s %.2s %.3s %.2s\", recin.in_boro,recin.in_housenum,recin.in_street_name, wa2_f1.zip_code, wa2_f1.com_dist+1,wa2_f1.police_pre,wa2_f1.com_schl_dist) ; /************************************************************/ /* THIS PROGRAM ASSUMES THERE EXISTS AT LEAST ONE HIGH AND \\*/ /* ONE LOW CROSS STREET. TO GET THE STREET NAMES OF THE \\*/ /* FIRST-LISTED HIGH AND FIRST-LISTED LOW CROSS STREETS \\*/ /* FROM THE HIGH AND LOW STREET CODE LISTS CALL FUNCTION D: \\*/ /* (1) INITIALIZE WORKAREA 1 TO SPACES \\*/ /* (2) SET WA1'S FUNCTION CODE FIELD TO D \\*/ /* (3) SET WA1'S STREET NAME LENGTH FIELD TO DESIRED \\*/ /* VALUE (IN THIS CASE 25 BECAUSE THE REPORT LINE \\*/ /* HAS SPACE FOR ONLY 25 CHARACTERS) \\*/ /* (4) USE THE COMPACT STREET NAMES OPTION TO OBTAIN \\*/ /* STREET NAMES FORMATTED FOR DISPLAY \\*/ /* (5) MOVE WA2'S LOW PBSC FIELD TO WA1'S INPUT STREET \\*/ /* CODE 1 FIELD \\*/ /* (6) MOVE WA2'S HIGH PBSC FIELD TO WA1'S INPUT STREET \\*/ /* CODE 2 FIELD \\*/ /* (7) CALL GBI WITH 1 WORKAREA \\*/ /* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS \\*/ /************************************************************/ if ( (memcmp(wa1.output.ret_code,\"00\",2)) == 0 || (memcmp(wa1.output.ret_code,\"01\",2)) == 0 ) { memset(&wa1,' ',sizeof(wa1)); /* Clear Work area 1 \\*/ wa1.input.func_code[0] = 'D' ; wa1.input.compact_flag = 'C' ; memcpy(wa1.input.snl,\"25\",2) ; memcpy(wa1.input.PB5SC_1,wa2_f1.l_x_sts[0],4) ; memcpy(wa1.input.PB5SC_2,wa2_f1.h_x_sts[0],4) ; GBI(&wa1); if ( (memcmp(wa1.output.ret_code,\"00\",2)) == 0 ) /***** INSERT YOUR OWN CODE HERE ***********/ printf(\" %.25s %.25s\",wa1.output.street_name_1, wa1.output.street_name_2) ; else /******** INSERT YOUR OWN ERROR HANDLING ROUTINE HERE *****/ { printf(\"\\n\\n%c %.12s %.32s *** FUNCTION D GRC = %.2s\" \" REASON CODE = %c\", recin.in_boro,recin.in_housenum,recin.in_street_name, wa1.output.ret_code,wa1.output.reject_reason_code) ; printf (\"\\n%51.5s %.80s\", \"\\***\", wa1.output.msg) ; } } } } /* //LKED.SYSIN DD * INCLUDE DD1(GBI) /* //LKED.DD1 DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //*************************************************************** //* //* AS OF GEOSUPPORT VERSION 10.0, THE STEPLIB OR JOBLIB //* STATEMENTS OF THE GEOSUPPORT EXECUTION STEP MUST INCLUDE //* THE FOLLOWING TWO CONCATENATED DATA SETS IN THE SPECIFIED //* ORDER: //* A030.GEO.SUPPORT.PDSE.LOADLIB //* A030.GEO.SUPPORT.LOADLIB //* //*************************************************************** //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR // DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //*************************************************************** //* //* AS OF GEOSUPPORT VERSION 10.0, DD STATEMENTS FOR GEOSUPPORT //* DATA FILES (E.G. GRID, PAD, ETC) ARE NO LONGER NEEDED AND //* ARE IGNORED. GEOSUPPORT IS TAILORED TO USE STANDARD //* GEOSUPPORT DATA SETS. TO USE NON-STANDARD FILES, SEE YOUR //* SYSTEMS PROGRAMMER. //* //*************************************************************** //GO.SYSPRINT DD SYSOUT=A //GO.INPDAT DD \\*,DCB=LRECL=80 1 22 READE ST 1 500 DUANE ST 1 2-4 BROADWAY 4 165-100 BAISLEY BLVD 4 165-1000 BAISLEY BLVD /* // C SAMPLE PROGRAM #1 \u2013Job Stream - COW //CCCC1SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //*** C SAMPLE COW BATCH GEOSUPPORT USER APPLICATION PROGRAM \\#1 **** //******************************************************************** //* //STEP1 EXEC EDCCLG, // CPARM='SS,OPT,OFFSET,SOURCE,XREF,LIST' //COMPILE.SYSPRINT DD SYSOUT=A //COMPILE.SYSLIB DD // DD // DD DSNAME=A030.GEO.COPYLIB,DISP=SHR //COMPILE.SYSIN DD * /*****************************************************************/ /* THIS PROGRAM MAKES FUNCTION 1 AND D CALLS TO GEOSUPPORT USING \\*/ /* BORO, HOUSENUMBER, & STREET NAME SUPPLIED BY AN INSTREAM FILE.\\*/ /* FUNCTION 1 RETURNS GEOGRAPHIC INFORMATION FOR AN ADDRESS. \\*/ /* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. \\*/ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*/ /* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE \\*/ /* ORIGINAL CALL TO FUNCTION 1, ALL THE CROSS STREET \\*/ /* NAMES WOULD HAVE BEEN RETURNED BY FUNCTION 1. \\*/ /*****************************************************************/ #include #include /*********************************************************************/ /*** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE \\***/ /*** #INCLUDE STATEMENTS) IS STRONGLY ENCOURAGED. \\***/ /*********************************************************************/ #include /************** GBI OS LINKAGE BELOW IS REQUIRED **************/ #pragma linkage (GBI,OS) long GBI(void \\*, ...); /***** THE WORK AREA LAYOUTS MUST BE DECLARED USING THE TYPEDEFS \\***/ /***** IN THE GEOSUPPORT COPY FILE. \\***/ C_WA1 wa1; C_WA2_F1 wa2_f1; void main () /***** REPLACE CODE BELOW WITH YOUR OWN INPUT FILE DECLARATION *****/ FILE \\*inpdat; struct tag { char in_boro; char filler1; char in_housenum [12]; char filler2; char in_street_name [32]; char filler3 [33]; } recin ; inpdat = fopen(\"DD:INPDAT\",\"rb\"); if (inpdat == NULL) {printf(\"INPDAT Data Set did not open.\\n\"); return;} /***** REPLACE CODE BELOW WITH YOUR OWN REPORT LAYOUT *****/ printf(\"\\fSAMPLE C PROGRAM \\#1 EXECUTION OUTPUT \"); printf(\"\\n\\n*****---------- INPUT ADDRESS ------------***** \\***\"); printf(\"\\**--------------------- SELECTED OUTPUT ITEMS ---------\"); printf(\"--------------*****\"); printf(\"\\n\\nB HOUSE NUMBER IN-STREET-NAME \"); printf(\" ZIP CD NYPD-PCT SCHLDST LOW CROSS STREET \"); printf(\" HIGH CROSS STREET \"); printf(\"\\r_ ____________ ____________________________\"); printf(\"____ _____ __ ________ _______ _________________\"); printf(\"________ _________________________\"); /*** REPLACE CODE BELOW WITH YOUR OWN INPUT \\***/ while (fread(&recin,1,sizeof(recin),inpdat)) { /*****************************************************************/ /* TO MAKE A FUNCTION 1 CALL: \\*/ /* (1) INITIALIZE WORKAREA 1 TO SPACES \\*/ /* (2) SET WA1'S FUNCTION CODE FIELD TO 1 \\*/ /* (3) MOVE THE INPUT BORO TO WA1'S INPUT BORO CODE FIELD \\*/ /* (4) MOVE THE INPUT HOUSE NUMBER TO WA1'S INPUT HOUSE NUMBER \\*/ /* FIELD \\*/ /* (5) MOVE THE INPUT STREET TO WA1'S INPUT STREET NAME FIELD \\*/ /* (6) CALL GBI WITH 2 WORKAREAS \\*/ /* (7) CHECK RETURN CODES FOR ERRORS OR WARNINGS \\*/ /*****************************************************************/ memset(&wa1,' ',sizeof(wa1)); memcpy(wa1.input.func_code,\"1 \",2); wa1.input.sti??(0??).boro = recin.in_boro ; memcpy(wa1.input.sti??(0??).Street_name,recin.in_street_name,32); /* Please note that the house number field is actually \\*/ /* 16 bytes. If you are only using 12 bytes, it is \\*/ /* critical that you blank out the work area before \\*/ /* you move in the house number \\*/ memcpy(wa1.input.hse_nbr_disp,recin.in_housenum,12); wa1.input.platform_ind = 'C'; /* Tells Geosupport that you \\*/ /* are using the character \\*/ /* /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*/ /* As of Geosupport Version 10.1, \\*/ /* to receive roadbed-specific information, \\*/ /* set the Roadbed Request Switch to 'R', as follows: \\*/ /* wa1.input.roadbedrequest = 'R'; \\*/ /* \\*/ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*/ /* \\*/ GBI(&wa1,&wa2_f1); if ( (memcmp(wa1.output.ret_code,\"01\",2)) > 0 || (memcmp(wa1.output.ret_code,\"00\",2)) < 0 ) /******** INSERT YOUR OWN ERROR HANDLING ROUTINE HERE *****/ { printf(\"\\n\\n%c %.12s %.32s *** FUNCTION 1 GRC = %.2s\" \" REASON CODE = %c\", recin.in_boro,recin.in_housenum,recin.in_street_name, wa1.output.ret_code,wa1.output.reason_code) ; printf (\"\\n%51.5s %.80s\", \"\\***\", wa1.output.msg) ; } if ( (memcmp(wa1.output.ret_code,\"01\",2)) == 0 ) /******** INSERT YOUR OWN WARNING HANDLING ROUTINE HERE *****/ { printf(\"\\n\\n%c %.12s %.32s *** FUNCTION 1 WARNING, GRC = %.2s\" \" REASON CODE = %c\", recin.in_boro,recin.in_housenum,recin.in_street_name, wa1.output.ret_code,wa1.output.reason_code) ; printf (\"\\n%51.5s %.80s\", \"\\***\", wa1.output.msg) ; printf(\"\\n%47.1s %.5s %.2s %.3s %.2s\", \" \",wa2_f1.zip_code, wa2_f1.com_dist+1,wa2_f1.police_pre,wa2_f1.com_schl_dist) ; } if ( (memcmp(wa1.output.ret_code,\"00\",2)) == 0 ) /***********************************************************/ /***** REPLACE CODE BELOW WITH YOUR OWN CODE FOR ***********/ /***** PROCESSING SUCCESSFUL GEOSUPPORT CALLS *****/ /***********************************************************/ printf(\"\\n\\n%c %.12s %.31s %.5s %.2s %.3s %.2s\", recin.in_boro,recin.in_housenum,recin.in_street_name, wa2_f1.zip_code, wa2_f1.com_dist+1,wa2_f1.police_pre,wa2_f1.com_schl_dist) ; /************************************************************/ /* THIS PROGRAM ASSUMES THERE EXISTS AT LEAST ONE HIGH AND \\*/ /* ONE LOW CROSS STREET. TO GET THE STREET NAMES OF THE \\*/ /* FIRST-LISTED HIGH AND FIRST-LISTED LOW CROSS STREETS \\*/ /* FROM THE HIGH AND LOW STREET CODE LISTS CALL FUNCTION D: \\*/ /* (1) INITIALIZE WORKAREA 1 TO SPACES \\*/ /* (2) SET WA1'S FUNCTION CODE FIELD TO D \\*/ /* (3) SET WA1'S STREET NAME LENGTH FIELD TO DESIRED \\*/ /* VALUE (IN THIS CASE 25 BECAUSE THE REPORT LINE \\*/ /* HAS SPACE FOR ONLY 25 CHARACTERS) \\*/ /* (4) USE THE COMPACT STREET NAMES OPTION TO OBTAIN \\*/ /* STREET NAMES FORMATTED FOR DISPLAY \\*/ /* (5) MOVE WA2'S LOW PBSC FIELD TO WA1'S INPUT STREET \\*/ /* CODE 1 FIELD \\*/ /* (6) MOVE WA2'S HIGH PBSC FIELD TO WA1'S INPUT STREET \\*/ /* CODE 2 FIELD \\*/ /* (7) CALL GBI WITH 1 WORKAREA \\*/ /* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS \\*/ /************************************************************/ if ( (memcmp(wa1.output.ret_code,\"00\",2)) == 0 || (memcmp(wa1.output.ret_code,\"01\",2)) == 0 ) { memset(&wa1,' ',sizeof(wa1)); /* Clear Work area 1 \\*/ wa1.input.func_code[0] = 'D' ; wa1.input.st_name_norm = 'C' ; memcpy(wa1.input.snl,\"25\",2) ; wa1.input.platform_ind = 'C'; wa1.input.sti??(0??).boro=wa2_f1.st??(0??).B5SC??(0??)??(0??); memcpy(wa1.input.sti??(0??).SC10, wa2_f1.st??(0??).B5SC??(0??)+1,5); wa1.input.sti??(1??).boro=wa2_f1.st??(1??).B5SC??(0??)??(0??); memcpy(wa1.input.sti??(1??).SC10, wa2_f1.st??(1??).B5SC??(0??)+1,5); GBI(&wa1); if ( (memcmp(wa1.output.ret_code,\"00\",2)) == 0 ) /***** INSERT YOUR OWN CODE HERE ***********/ printf(\" %.25s %.25s\",wa1.output.sto??(0??).Street_name, wa1.output.sto??(1??).Street_name) ; else /******** INSERT YOUR OWN ERROR HANDLING ROUTINE HERE *****/ { printf(\"\\n\\n%c %.12s %.32s *** FUNCTION D GRC = %.2s\" \" REASON CODE = %c\", recin.in_boro,recin.in_housenum,recin.in_street_name, wa1.output.ret_code,wa1.output.reason_code) ; printf (\"\\n%51.5s %.80s\", \"\\***\", wa1.output.msg) ; } } } } /* //LKED.SYSIN DD * INCLUDE DD1(GBI) /* //LKED.DD1 DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //*************************************************************** //* //* AS OF GEOSUPPORT VERSION 10.0, THE STEPLIB OR JOBLIB //* STATEMENTS OF THE GEOSUPPORT EXECUTION STEP MUST INCLUDE //* THE FOLLOWING TWO CONCATENATED DATA SETS IN THE SPECIFIED //* ORDER: //* A030.GEO.SUPPORT.PDSE.LOADLIB //* A030.GEO.SUPPORT.LOADLIB //* //*************************************************************** //GO.STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR // DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR //*************************************************************** //* //* AS OF GEOSUPPORT VERSION 10.0, DD STATEMENTS FOR GEOSUPPORT //* DATA FILES (E.G. GRID, PAD, ETC) ARE NO LONGER NEEDED AND //* ARE IGNORED. GEOSUPPORT IS TAILORED TO USE STANDARD //* GEOSUPPORT DATA SETS. TO USE NON-STANDARD FILES, SEE YOUR //* SYSTEMS PROGRAMMER. //* //*************************************************************** //GO.SYSPRINT DD SYSOUT=A //GO.INPDAT DD \\*,DCB=LRECL=80 1 22 READE ST 1 500 DUANE ST 1 2-4 BROADWAY 4 165-100 BAISLEY BLVD 4 165-1000 BAISLEY BLVD /* // C SAMPLE PROGRAM #1 \u2013 Output Report *****---------- INPUT ADDRESS ------------***** *****--------------------- SELECTED OUTPUT ITEMS -----------------------***** B HOUSE NUMBER IN-STREET-NAME ZIP CD NYPD-PCT SCHLDST LOW CROSS STREET HIGH CROSS STREET \\- ------------ -------------------------------- ----- -- -------- ------- ------------------------- ------------------------- 1 22 READE ST 10007 01 005 02 ELK STREET BROADWAY 1 500 DUANE ST *** FUNCTION 1 GRC = 42 REASON CODE = *** ADDRESS NUMBER OUT OF RANGE 1 2-4 BROADWAY *** FUNCTION 1 WARNING, GRC = 01 REASON CODE = 1 *** ADDR NUMBER ALTERED: RANGE ASSUMED. USING DIGITS BEFORE DASH ONLY 10004 01 001 02 STONE STREET BOWLING GREEN 4 165-100 BAISLEY BLVD 11434 12 113 28 GUY R BREWER BOULEVARD BEDELL STREET 4 165-1000 BAISLEY BLVD *** FUNCTION 1 GRC = 13 REASON CODE = 2 *** ADDRESS NBR 165-1000 HAS MORE THAN 3 DIGITS AFTER THE DASH.","title":"C SAMPLE PROGRAM #1"},{"location":"appendices/appendix08/#c-sample-program-2","text":"- Input Job Stream - MSW - Input Job Stream - COW - Output Report C SAMPLE PROGRAM #2 \u2013 Job Stream - MSW //CCCF2SRC JOB YOUR-JOB-CARD-INFORMATION //* //******************************************************************** //*** C SAMPLE MSW BATCH GEOSUPPORT USER APPLICATION PROGRAM \\#2 **** //******************************************************************** //* //STEP1 EXEC EDCCLG, // CPARM='SS,OPT,OFFSET,SOURCE,XREF,LIST' //COMPILE.SYSPRINT DD SYSOUT=A //COMPILE.SYSLIB DD // DD // DD DSNAME=A030.GEO.COPYLIB,DISP=SHR //COMPILE.SYSIN DD * /*****************************************************************/ /* THIS PROGRAM MAKES FUNCTION 2 AND D CALLS TO GEOSUPPORT USING \\*/ /* TWO BOROS AND TWO STREET NAMES SUPPLIED BY AN INSTREAM FILE. \\*/ /* FUNCTION 2 RETURNS GEOGRAPHIC INFORMATION FOR AN INTERSECTION.\\*/ /* FUNCTION D TRANSLATES AN INPUT STREET CODE TO A STREET NAME. \\*/ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \\*/ /* NOTE: IF THE CROSS STREET NAMES FLAG WERE USED IN THE \\*/ /* ORIGINAL CALL TO FUNCTION 2, ALL THE CROSS STREET \\*/ /* NAMES WOULD HAVE BEEN RETURNED BY FUNCTION 2. \\*/ /*****************************************************************/ #include #include #include /*********************************************************************/ /*** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE \\***/ /*** #INCLUDE STATEMENTS) IS STRONGLY ENCOURAGED. \\***/ /*********************************************************************/ #include /************** GBI DECLARATION BELOW IS REQUIRED **************/ #pragma linkage (GBI,OS) long GBI(void \\*, ...); /***** THE WORK AREA LAYOUTS MUST BE DECLARED USING THE TYPEDEFS \\***/ /***** IN THE GEOSUPPORT COPY FILE. \\***/ C_WA1 wa1; C_WA2_F2 wa2_f2; void main () { /***** REPLACE CODE BELOW WITH YOUR OWN INPUT FILE DECLARATION *****/ FILE \\*infile; struct tag { char in_boro1; char filler1; char in_street_name1 [32]; char filler2; char in_boro2; char filler3; char in_street_name2 [32]; char filler4 [11]; } recin ; short int j, i; char temp [2]; if ((infile = fopen(\"DD:INFILE\",\"rb\")) == NULL) {printf(\"INFILE Data Set did not open.\\n\"); return;} /***** REPLACE CODE BELOW WITH YOUR OWN REPRORT LAYOUT *****/ printf(\"\\fSAMPLE C PROGRAM \\#2 EXECUTION OUTPUT \"); printf(\"\\n\\n*****----------------- INPUT INTERSECTION ---------\"); printf(\"-------------***** *****------------ SELECTED OUTPUT \"); printf(\"ITEMS -------------*****\"); printf(\"\\n\\nB IN-STREET-NAME-1 \"); printf(\" B IN-STREET-NAME-2 ZIP CD\"); printf(\" NYPD-PCT SCHLDST INTERSECTING STREET NAMES\"); printf( \"\\r_ ____________________________\"); printf(\"____ _ ________________________________ _____ \\__\"); printf(\" ________ _______ _________________________________\"); /*** REPLACE CODE BELOW WITH YOUR OWN INPUT \\***/ while (fread(&recin,1,sizeof(recin),infile)) { /******************************************************************/ /* TO MAKE A FUNCTION 2 CALL: \\*/ /* (1) INITIALIZE WORKAREA 1 TO SPACES \\*/ /* (2) SET WA1'S FUNCTION-CODE TO 2 \\*/ /* (3) MOVE THE 1ST INPUT BORO TO WA1'S INPUT BORO CODE FIELD \\*/ /* (4) MOVE THE 1ST INPUT STREET TO WA1'S INPUT STREET NAME \\*/ /* FIELD \\*/ /* (5) MOVE THE 2ND INPUT BORO TO WA1'S INPUT BORO CODE 2 FIELD \\*/ /* (6) MOVE THE 2ND INPUT STREET TO WA1'S INPUT STREET NAME 2 \\*/ /* FIELD \\*/ /* (7) CALL GBI WITH 2 WORKAREAS \\*/ /* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS \\*/ /******************************************************************/ memset(&wa1,' ',sizeof(wa1)); memcpy(wa1.input.func_code,\"2 \",2); wa1.input.boro_1 = recin.in_boro1 ; memcpy(wa1.input.street_name_1,recin.in_street_name1,32); wa1.input.boro_2 = recin.in_boro2 ; memcpy(wa1.input.street_name_2,recin.in_street_name2,32); GBI(&wa1,&wa2_f2); if ( (memcmp(wa1.output.ret_code,\"01\",2)) > 0 || (memcmp(wa1.output.ret_code,\"00\",2)) < 0 ) /******** INSERT YOUR OWN ERROR HANDLING ROUTINE HERE *****/ { printf(\"\\n\\n***** FUNCTION 2 GRC = %.2s\" \" REASON CODE = %c. %.80s\", wa1.output.ret_code,wa1.output.reject_reason_code, wa1.output.msg) ; printf (\"\\n%c %.32s %c %.32s \", recin.in_boro1,recin.in_street_name1,recin.in_boro2, recin.in_street_name2) ; } if ( (memcmp(wa1.output.ret_code,\"01\",2)) == 0 ) /******** INSERT YOUR OWN WARNING HANDLING ROUTINE HERE *****/ { printf(\"\\n\\n***** FUNCTION 2 WARNING GRC = %.2s\" \" REASON CODE = %c. %.80s\", wa1.output.ret_code,wa1.output.reject_reason_code, wa1.output.msg) ; printf (\"\\n%c %.32s %c %.32s \", recin.in_boro1,recin.in_street_name1,recin.in_boro2, recin.in_street_name2) ; } if ( (memcmp(wa1.output.ret_code,\"00\",2)) == 0 || (memcmp(wa1.output.ret_code,\"01\",2)) == 0 ) /***********************************************************/ /***** REPLACE CODE BELOW WITH YOUR OWN CODE FOR ***********/ /***** PROCESSING SUCCESSFUL GEOSUPPORT CALLS *****/ /***********************************************************/ { printf(\"\\n\\n%c %.32s %c %.32s %.5s %.2s %.3s %.2s \", recin.in_boro1,recin.in_street_name1,recin.in_boro2, recin.in_street_name2,wa2_f2.zip_code, wa2_f2.com_dist+1,wa2_f2.police_pre,wa2_f2.com_schl_dist) ; temp [0] = wa2_f2.nbr_x_sts ; temp [1] = 0; i = atoi(temp) ; for (j=0; j #include #include /*********************************************************************/ /*** USE OF GEOSUPPORT COPY LIBRARIES (REFERENCED BELOW BY THE \\***/ /*** #INCLUDE STATEMENTS) IS STRONGLY ENCOURAGED. \\***/ /*********************************************************************/ #include /************** GBI DECLARATION BELOW IS REQUIRED **************/ #pragma linkage (GBI,OS) long GBI(void \\*, ...); /***** THE WORK AREA LAYOUTS MUST BE DECLARED USING THE TYPEDEFS \\***/ /***** IN THE GEOSUPPORT COPY FILE. \\***/ C_WA1 wa1; C_WA2_F2 wa2_f2; void main () { /***** REPLACE CODE BELOW WITH YOUR OWN INPUT FILE DECLARATION *****/ FILE \\*infile; struct tag { char in_boro1; char filler1; char in_street_name1 [32]; char filler2; char in_boro2; char filler3; char in_street_name2 [32]; char filler4 [11]; } recin ; short int j, i; char temp [2]; if ((infile = fopen(\"DD:INFILE\",\"rb\")) == NULL) {printf(\"INFILE Data Set did not open.\\n\"); return;} /***** REPLACE CODE BELOW WITH YOUR OWN REPRORT LAYOUT *****/ printf(\"\\fSAMPLE C PROGRAM \\#2 EXECUTION OUTPUT \"); printf(\"\\n\\n*****----------------- INPUT INTERSECTION ---------\"); printf(\"-------------***** *****------------ SELECTED OUTPUT \"); printf(\"ITEMS -------------*****\"); printf(\"\\n\\nB IN-STREET-NAME-1 \"); printf(\" B IN-STREET-NAME-2 ZIP CD\"); printf(\" NYPD-PCT SCHLDST INTERSECTING STREET NAMES\"); printf( \"\\r_ ____________________________\"); printf(\"____ _ ________________________________ _____ \\__\"); printf(\" ________ _______ _________________________________\"); /*** REPLACE CODE BELOW WITH YOUR OWN INPUT \\***/ while (fread(&recin,1,sizeof(recin),infile)) { /******************************************************************/ /* TO MAKE A FUNCTION 2 CALL: \\*/ /* (1) INITIALIZE WORKAREA 1 TO SPACES \\*/ /* (2) SET WA1'S FUNCTION-CODE TO 2 \\*/ /* (3) MOVE THE 1ST INPUT BORO TO WA1'S INPUT BORO CODE FIELD \\*/ /* (4) MOVE THE 1ST INPUT STREET TO WA1'S INPUT STREET NAME \\*/ /* FIELD \\*/ /* (5) MOVE THE 2ND INPUT BORO TO WA1'S INPUT BORO CODE 2 FIELD \\*/ /* (6) MOVE THE 2ND INPUT STREET TO WA1'S INPUT STREET NAME 2 \\*/ /* FIELD \\*/ /* (7) CALL GBI WITH 2 WORKAREAS \\*/ /* (8) CHECK RETURN CODES FOR ERRORS OR WARNINGS \\*/ /******************************************************************/ memset(&wa1,' ',sizeof(wa1)); memcpy(wa1.input.func_code,\"2 \",2); wa1.input.sti??(0??).boro = recin.in_boro1 ; memcpy(wa1.input.sti??(0??).Street_name,recin.in_street_name1,32); wa1.input.sti??(1??).boro = recin.in_boro2 ; memcpy(wa1.input.sti??(1??).Street_name,recin.in_street_name2,32); wa1.input.platform_ind = 'C'; /* Tells Geosupport that you \\*/ /* are using the character \\*/ /* only work areas \\*/ GBI(&wa1,&wa2_f2); if ( (memcmp(wa1.output.ret_code,\"01\",2)) > 0 || (memcmp(wa1.output.ret_code,\"00\",2)) < 0 ) /******** INSERT YOUR OWN ERROR HANDLING ROUTINE HERE *****/ { printf(\"\\n\\n***** FUNCTION 2 GRC = %.2s\" \" REASON CODE = %c. %.80s\", wa1.output.ret_code,wa1.output.reason_code, wa1.output.msg) ; printf (\"\\n%c %.32s %c %.32s \", recin.in_boro1,recin.in_street_name1,recin.in_boro2, recin.in_street_name2) ; } if ( (memcmp(wa1.output.ret_code,\"01\",2)) == 0 ) /******** INSERT YOUR OWN WARNING HANDLING ROUTINE HERE *****/ { printf(\"\\n\\n***** FUNCTION 2 WARNING GRC = %.2s\" \" REASON CODE = %c. %.80s\", wa1.output.ret_code,wa1.output.reason_code, wa1.output.msg) ; printf (\"\\n%c %.32s %c %.32s \", recin.in_boro1,recin.in_street_name1,recin.in_boro2, recin.in_street_name2) ; } if ( (memcmp(wa1.output.ret_code,\"00\",2)) == 0 || (memcmp(wa1.output.ret_code,\"01\",2)) == 0 ) /***********************************************************/ /***** REPLACE CODE BELOW WITH YOUR OWN CODE FOR ***********/ /***** PROCESSING SUCCESSFUL GEOSUPPORT CALLS *****/ /***********************************************************/ { printf(\"\\n\\n%c %.32s %c %.32s %.5s %.2s %.3s %.2s \", recin.in_boro1,recin.in_street_name1,recin.in_boro2, recin.in_street_name2,wa2_f2.zip_code, wa2_f2.com_dist+1,wa2_f2.police_pre,wa2_f2.com_schl_dist) ; temp [0] = wa2_f2.inter.nbr_sts ; temp [1] = 0; i = atoi(temp) ; for (j=0; j FIRE DIVISION ** 00680032 10 GEO-WA2-FN1-FIRESEC PIC X(2). 00690032 10 GEO-WA2-FN1-FIREBAT PIC X(2). 00700032 10 GEO-WA2-FN1-FIRECO. 00710032 15 GEO-WA2-FN1-FIRECO-TYPE PIC X(1). 00720032 15 GEO-WA2-FN1-FIRECO-NUM PIC X(3). 00730032 *** NEXT LINE WAS PREVIOUSLY SPLIT SCHOOL FLAG 00731044 10 GEO-WA2-FN1-FILL-SCHOOL-FLAG PIC X. 00740044 10 GEO-WA2-FN1-SCHOOLDIST PIC X(2). 00750032 10 GEO-WA2-FN1-DYN-BLOCK PIC X(3). 00760032 10 PIWA2-FN1-POLICE-PAT-BORO PIC X(2). 00770073 10 GEO-WA2-FN1-FEATURE-TYPE PIC X. 00790032 10 GEO-WA2-FN1-SEGMENT-TYPE PIC X. 00800032 10 GEO-WA2-FN1-ALX PIC X. 00810032 10 GEO-WA2-FN1-COINCIDENT-CNT PIC X. 00820032 10 FILLER PIC X(2). 00830058 10 PIWA2-FN1-CENS-TRCT-BORO PIC X. 00840158 10 GEO-WA2-FN1-1990-CENSUSTRACT PIC X(6). 00841058 10 GEO-WA2-FN1-2010-CENS-TRCT PIC X(6). 00850035 10 GEO-WA2-FN1-2010-CENS-BLK PIC X(4). 00860035 10 GEO-WA2-FN1-2010-CENS-BLK-SFX PIC X. 00870035 10 GEO-WA2-FN1-2000-CENS-TRACT PIC X(6). 00890035 10 GEO-WA2-FN1-2000-CENS-BLOCK PIC X(4). 00900035 10 GEO-WA2-FN1-2000-CENS-BLK-SUF PIC X. 00910035 10 GEO-WA2-FN1-NTA PIC X(4). 00911050 10 GEO-WA2-FN1-SANIT-SNOW-PRRTY PIC X. 00912050 10 PIWA2-FN1-SANIT-ORGANICS PIC X(5). 00922061 10 PIWA2-FN1-SANIT-BULK-PICK-UP PIC X(5). 00924080 **V16.4 10 PIWA2-FN1-SANIT-RESERVED PIC X(5). 00924180 10 PIWA2-FN1-HURRICANE-ZONE PIC XX. 00925072 10 FILLER PIC X(11). 00926072 10 GEO-WA2-FN1-TRUE-HNS PIC X(11). 00930032 10 GEO-WA2-FN1-TRUE-B7SC PIC X(8). 00940032 10 GEO-WA2-FN1-SEG-ID PIC X(7). 00950032 10 GEO-WA2-FN1-CURVE-FLAG PIC X(1). 00960032 00970032 ****************************************************************** 00980032 **** FOR: FUNCTIONS 2 ********************************** 00990032 01000032 05 PIWA2-FUNCTION2 REDEFINES PIWA2. 01010032 10 PIWA2-FN2-ACCESS-KEY PIC X(21). 01020032 10 GEO-WA2-FN2-DUPINTERFLAG PIC X. 01030032 10 GEO-WA2-FN2-PREFERRED-LGC1 PIC X(2). 01040032 10 GEO-WA2-FN2-PREFERRED-LGC2 PIC X(2). 01050032 10 GEO-WA2-FN2-NUM-OF-INTERSECTS PIC X. 01060032 10 PIWA2-FN2-INTERSECT-B5SC PIC X(6) 01070032 OCCURS 5 TIMES. 01080032 10 GEO-WA2-FN2-COMPDIR PIC X. 01090032 10 GEO-WA2-FN2-ATOMIC-POLYGON PIC X(3). 01091064 10 FILLER PIC X(2). 01100057 10 GEO-WA2-FN2-NODE-NUM PIC X(7). 01110032 10 GEO-WA2-FN2-XCOORD PIC X(7). 01120032 10 GEO-WA2-FN2-YCOORD PIC X(7). 01130032 10 FILLER-GSS PIC X(7). 01140032 10 GEO-WA2-FN2-SANBORN1-BVOLPAGE. 01150032 15 GEO-WA2-FN2-SANBORN1-BORO PIC X(1). 01160032 15 GEO-WA2-FN2-SANBORN1-VOL-NUM PIC X(3). 01170032 15 GEO-WA2-FN2-SANBORN1-PAGE-NUM PIC X(4). 01180032 10 GEO-WA2-FN2-SANBORN2-BVOLPAGE. 01190032 15 GEO-WA2-FN2-SANBORN2-BORO PIC X(1). 01200032 15 GEO-WA2-FN2-SANBORN2-VOL-NUM PIC X(3). 01210032 15 GEO-WA2-FN2-SANBORN2-PAGE-NUM PIC X(4). 01220032 10 GEO-WA2-FN2-MARBLE-RIKER-FLAG PIC X(1). 01230032 10 GEO-WA2-FN2-SLA PIC X. 01240032 10 GEO-WA2-FN2-COMDIST. 01250032 15 GEO-WA2-FN2-COMDIST-BORO PIC X(1). 01260032 15 GEO-WA2-FN2-COMDIST-NUMBER PIC X(2). 01270032 10 GEO-WA2-FN2-ZIP PIC X(5). 01280032 10 GEO-WA2-FN2-HEALTHAREA PIC X(4). 01290053 10 GEO-WA2-FN2-POLICEDIST. 01300032 15 GEO-WA2-FN2-POL-PATR-BORO-CMD PIC X(1). 01310032 15 GEO-WA2-FN2-POL-PRECINCT PIC X(3). 01320032 ** NOTE:10 GEO-WA2-FN2-FIRESEC ==> FIRE DIVISION ** 01330032 10 GEO-WA2-FN2-FIRESEC PIC X(2). 01340032 10 GEO-WA2-FN2-FIREBAT PIC X(2). 01350032 10 GEO-WA2-FN2-FIRECO. 01360032 15 GEO-WA2-FN2-FIRECO-TYPE PIC X(1). 01370032 15 GEO-WA2-FN2-FIRECO-NUM PIC X(3). 01380032 10 GEO-WA2-FN2-SCHOOLDIST PIC X(2). 01390032 10 GEO-WA2-FN2-2010-CENS-TRCT PIC X(6). 01400035 10 GEO-WA2-FN2-1990-CENSUSTRACT PIC X(6). 01410032 10 GEO-WA2-FN2-LEVEL-LIST OCCURS 5 TIMES. 01420032 15 GEO-WA2-FN2-LEVEL-CODES 01430032 OCCURS 2 TIMES PIC X. 01440032 10 PIWA2-FN2-POLICE-PAT-BORO PIC X(2). 01470073 10 GEO-WA2-FN2-ASSEMDIST PIC X(2). 01471073 10 GEO-WA2-FN2-CONGDIST PIC X(2). 01480032 10 GEO-WA2-FN2-SENATEDIST PIC X(2). 01490032 10 GEO-WA2-FN2-COURTDIST PIC X(2). 01500032 10 GEO-WA2-FN2-COUNCILDIST PIC X(2). 01510032 10 GEO-WA2-FN2-CDELIG PIC X(1). 01520032 10 GEO-WA2-FN2-DUP-INT-DISTANCE PIC X(5). 01530032 10 GEO-WA2-FN2-2000-CENS-TRACT PIC X(6). 01550035 10 PIWA2-FN2-HCD PIC X(2). 01551053 10 PIWA2-FN2-SANITATION-DIST PIC X(3). 01552045 10 PIWA2-FN2-SANITATION-SUBSEC PIC X(2). 01553047 10 PIWA2-FN2-POLICE-SECTOR PIC X(4). 01554088 10 FILLER PIC X(8). 01560088 01561059 ****************************************************************** 01562059 **** FOR: FUNCTIONS 2W ********************************** 01563065 01564059 05 PIWA2-FUNCTION2W REDEFINES PIWA2. 01565065 10 PIWA2-2W-ACCESS-KEY PIC X(21). 01566065 10 GEO-WA2-2W-DUPINTERFLAG PIC X. 01567065 10 GEO-WA2-2W-PREFERRED-LGC1 PIC X(2). 01568065 10 GEO-WA2-2W-PREFERRED-LGC2 PIC X(2). 01569065 10 GEO-WA2-2W-NUM-OF-INTERSECTS PIC X. 01569165 10 PIWA2-2W-INTERSECT-B5SC PIC X(6) 01569265 OCCURS 5 TIMES. 01569359 10 GEO-WA2-2W-COMPDIR PIC X. 01569465 10 GEO-WA2-2W-ATOMIC-POLYGON PIC X(3). 01569565 10 FILLER PIC X(2). 01569659 10 GEO-WA2-2W-NODE-NUM PIC X(7). 01569765 10 GEO-WA2-2W-XCOORD PIC X(7). 01569865 10 GEO-WA2-2W-YCOORD PIC X(7). 01569965 10 FILLER-GSS PIC X(7). 01570059 10 GEO-WA2-2W-SANBORN1-BVOLPAGE. 01570165 15 GEO-WA2-2W-SANBORN1-BORO PIC X(1). 01570265 15 GEO-WA2-2W-SANBORN1-VOL-NUM PIC X(3). 01570365 15 GEO-WA2-2W-SANBORN1-PAGE-NUM PIC X(4). 01570465 10 GEO-WA2-2W-SANBORN2-BVOLPAGE. 01570565 15 GEO-WA2-2W-SANBORN2-BORO PIC X(1). 01570665 15 GEO-WA2-2W-SANBORN2-VOL-NUM PIC X(3). 01570765 15 GEO-WA2-2W-SANBORN2-PAGE-NUM PIC X(4). 01570865 10 GEO-WA2-2W-MARBLE-RIKER-FLAG PIC X(1). 01570965 10 GEO-WA2-2W-SLA PIC X. 01571065 10 GEO-WA2-2W-COMDIST. 01571165 15 GEO-WA2-2W-COMDIST-BORO PIC X(1). 01571265 15 GEO-WA2-2W-COMDIST-NUMBER PIC X(2). 01571365 10 GEO-WA2-2W-ZIP PIC X(5). 01571465 10 GEO-WA2-2W-HEALTHAREA PIC X(4). 01571565 10 GEO-WA2-2W-POLICEDIST. 01571665 15 GEO-WA2-2W-POL-PATR-BORO-CMD PIC X(1). 01571765 15 GEO-WA2-2W-POL-PRECINCT PIC X(3). 01571865 ** NOTE:10 GEO-WA2-2W-FIRESEC ==> FIRE DIVISION ** 01571965 10 GEO-WA2-2W-FIRESEC PIC X(2). 01572065 10 GEO-WA2-2W-FIREBAT PIC X(2). 01572165 10 GEO-WA2-2W-FIRECO. 01572265 15 GEO-WA2-2W-FIRECO-TYPE PIC X(1). 01572365 15 GEO-WA2-2W-FIRECO-NUM PIC X(3). 01572465 10 GEO-WA2-2W-SCHOOLDIST PIC X(2). 01572565 10 GEO-WA2-2W-2010-CENS-TRCT PIC X(6). 01572665 10 GEO-WA2-2W-1990-CENSUSTRACT PIC X(6). 01572765 10 GEO-WA2-2W-LEVEL-LIST OCCURS 5 TIMES. 01572865 15 GEO-WA2-2W-LEVEL-CODES 01572965 OCCURS 2 TIMES PIC X. 01573059 10 PIWA2-2W-POLICE-PAT-BORO PIC X(2). 01573373 10 GEO-WA2-2W-ASSEMDIST PIC X(2). 01573473 10 GEO-WA2-2W-CONGDIST PIC X(2). 01573573 10 GEO-WA2-2W-SENATEDIST PIC X(2). 01573673 10 GEO-WA2-2W-COURTDIST PIC X(2). 01573773 10 GEO-WA2-2W-COUNCILDIST PIC X(2). 01573873 10 GEO-WA2-2W-CDELIG PIC X(1). 01573973 10 GEO-WA2-2W-DUP-INT-DISTANCE PIC X(5). 01574073 10 GEO-WA2-2W-2000-CENS-TRACT PIC X(6). 01574173 10 PIWA2-2W-HCD PIC X(2). 01574273 10 PIWA2-2W-SANITATION-DIST PIC X(3). 01574373 10 PIWA2-2W-SANITATION-SUBSEC PIC X(2). 01574473 10 PIWA2-2W-POLICE-SECTOR PIC X(4). 01574588 10 FILLER PIC X(8). 01574688 10 FILLER PIC X(22). 01574788 10 PIWA2-2W-LGCS-1 PIC X(8). 01574888 10 PIWA2-2W-LGCS-2 PIC X(8). 01574988 10 PIWA2-2W-TURN-RESTRICTIONS PIC X(10). 01575088 10 PIWA2-2W-LGCS-FOR-B5SCS PIC X(2) 01575188 OCCURS 5 TIMES. 01575288 10 PIWA2-2W-TRUE-REP-COUNTER PIC XX. 01575388 10 PIWA2-2W-NODE-LIST PIC X(7) 01575488 OCCURS 20 TIMES. 01575588 10 PIWA2-2W-NODE-LIST-B7SCS-LIST OCCURS 20 TIMES. 01575771 15 PIWA2-2W-NODE-LIST-B7SCS OCCURS 5 TIMES. 01575871 20 PIWA2-2W-NODE-LIST-B7SC PIC X(8) 01575971 OCCURS 4 TIMES. 01576067 10 PIWA2-2W-REASON-CODE PIC X. 01585471 10 PIWA2-2W-REASON-CODE-QUAL PIC X. 01585571 10 PIWA2-2W-WARN-CODE PIC XX. 01585671 10 PIWA2-2W-RETURN-CODE PIC XX. 01585771 10 PIWA2-2W-LATITUDE PIC X(9). 01585874 10 PIWA2-2W-LONGITUDE PIC X(11). 01585974 10 FILLER PIC X(374). 01586474 **** 10 FILLER V15.3 PIC X(394). 01586574 01586674 ****************************************************************** 01587065 **** FOR: FUNCTION 3 ****************************** 01590032 01600032 05 PIWA2-FUNCTION3 REDEFINES PIWA2. 01610032 10 GEO-WA2-FN3-ACCESS-KEY PIC X(21). 01620032 10 GEO-WA2-FN3-DUP-KEY-FLAG PIC X. 01630032 10 GEO-WA2-FN3-LOCATION-STATUS PIC X. 01640032 10 GEO-WA2-FN3-COUNTY-BOUNDARY PIC X. 01650032 10 GEO-WA2-FN3-PREFERRED-LGC1 PIC X(2). 01660032 10 GEO-WA2-FN3-PREFERRED-LGC2 PIC X(2). 01670032 10 GEO-WA2-FN3-PREFERRED-LGC3 PIC X(2). 01680032 10 GEO-WA2-FN3-NUM-X-ST-LOW-END PIC X. 01690032 10 PIWA2-FN3-LOW-B5SC PIC X(6) 01700032 OCCURS 5 TIMES. 01710032 10 GEO-WA2-FN3-NUM-X-ST-HI-END PIC X. 01720032 10 PIWA2-FN3-HI-B5SC PIC X(6) 01730032 OCCURS 5 TIMES. 01740032 10 GEO-WA2-FN3-REVERSALFLAG PIC X. 01750032 10 PIWA2-FN3-LIONKEY. 01760032 15 PIWA2-FN3-LION-BORO PIC X. 01770032 15 GEO-WA2-FN3-LIONFACECODE PIC X(4). 01780032 15 GEO-WA2-FN3-LIONSEQ PIC X(5). 01790032 10 GEO-WA2-FN3-GENRECFLAG PIC X. 01800032 10 PIWA2-FN3-SEG-LEN PIC X(5). 01810032 10 GEO-WA2-FN3-SEGMENTSLOPE PIC X(3). 01820032 10 GEO-WA2-FN3-SEGMENTORIENT PIC X. 01830032 10 GEO-WA2-FN3-MARBLE-RIKER-FLAG PIC X(1). 01840032 10 GEO-WA2-FN3-FROM-NODE PIC X(7). 01850032 10 GEO-WA2-FN3-TO-NODE PIC X(7). 01860032 10 GEO-WA2-FN3-SANIT-SNOW-PRRTY PIC X. 01861050 10 FILLER PIC X(4). 01870050 10 GEO-WA2-FN3-SEG-ID PIC X(7). 01880032 10 GEO-WA2-FN3-SLA PIC X. 01890032 10 GEO-WA2-FN3-CURVE-FLAG PIC X. 01900032 10 GEO-WA2-FN3-DOG-LEG PIC X. 01910032 10 GEO-WA2-FN3-FEATURE-TYPE PIC X. 01920032 10 GEO-WA2-FN3-SEGMENT-TYPE PIC X. 01930032 10 GEO-WA2-FN3-COINCIDENT-CNT PIC X. 01940032 10 FILLER PIC X(4). 01950032 10 PIWA2-FN3-LEFT-SIDE-OF-STR. 01960032 15 GEO-WA2-FN3-LEFT-COMDIST. 01970032 20 GEO-WA2-FN3-LEFT-COMDIST-BORO PIC X(1). 01980032 20 GEO-WA2-FN3-LEFT-COMDIST-NUM PIC X(2). 01990032 15 PIWA2-FN3-L-LOW-HOUSENUM PIC X(16). 02000032 15 PIWA2-FN3-L-HI-HOUSENUM PIC X(16). 02010032 15 FILLER-GSS PIC X(33). 02020032 15 GEO-WA2-FN3-LEFT-ZIP PIC X(5). 02030032 15 GEO-WA2-FN3-LEFT-HEALTHAREA PIC X(4). 02040053 15 GEO-WA2-FN3-LEFT-POLDIST. 02050032 20 GEO-WA2-FN3-L-POL-PATR-BOR-CMD PIC X(1). 02060032 20 GEO-WA2-FN3-L-POL-PRECINCT PIC X(3). 02070032 ** NOTE:10 GEO-WA2-3L-R-FIRESEC ==> FIRE DIV ** 02080032 15 GEO-WA2-3L-L-FIRESEC PIC X(2). 02090032 15 GEO-WA2-3L-L-FIREBAT PIC X(2). 02100032 15 GEO-WA2-3L-L-FIRECO. 02110032 20 GEO-WA2-3L-L-FIRECO-TYPE PIC X(1). 02120032 20 GEO-WA2-3L-L-FIRECO-NUM PIC X(3). 02130032 15 GEO-WA2-FN3-LEFT-SCHLDIST PIC X(2). 02140032 15 GEO-WA2-3L-L-DYN-BLOCK PIC X(3). 02150032 15 PIWA2-FN3-L-ED PIC X(3). 02161036 15 PIWA2-FN3-L-AD PIC X(2). 02162036 15 PIWA2-FN3-L-POLICE-PAT-BORO PIC X(2). 02163073 15 FILLER PIC X. 02170073 15 GEO-WA2-3L-L-BORO PIC X . 02190051 15 GEO-WA2-3L-L-1990-CENSUSTRACT PIC X(6) . 02191051 15 GEO-WA2-3L-L-2010-CENS-TRCT PIC X(6). 02200035 15 GEO-WA2-3L-L-2010-CENS-BLK PIC X(4). 02210035 15 GEO-WA2-3L-L-2010-CENS-BLK-SFX PIC X. 02220035 15 GEO-WA2-3L-L-2000-CENS-TRACT PIC X(6). 02240035 15 GEO-WA2-3L-L-2000-CENS-BLOCK PIC X(4). 02250035 15 GEO-WA2-3L-L-2000-CENS-BLK-SUF PIC X. 02260035 15 FILLER PIC X(7). 02260176 **** 15 PIWA2-FN3-L-BLOCKFACE-ID *V16.1*PIC X(7)** 02261076 15 PIWA2-FN3-L-NTA PIC X(4). 02261150 15 FILLER PIC X(8). 02270050 10 PIWA2-FN3-RIGHT-SIDE-OF-STR. 02280032 15 GEO-WA2-FN3-RIGHT-COMDIST. 02290032 20 GEO-WA2-FN3-RIGHT-COMDIST-BORO PIC X(1). 02300032 20 GEO-WA2-FN3-RIGHT-COMDIST-NUM PIC X(2). 02310032 15 PIWA2-FN3-R-LOW-HOUSENUM PIC X(16). 02320032 15 PIWA2-FN3-R-HI-HOUSENUM PIC X(16). 02330032 15 FILLER-GSS PIC X(33). 02340032 15 GEO-WA2-FN3-RIGHT-ZIP PIC X(5). 02350032 15 GEO-WA2-FN3-RIGHT-HEALTHAREA PIC X(4). 02360053 15 GEO-WA2-FN3-RIGHT-POLDIST. 02370032 20 GEO-WA2-FN3-R-POL-PATR-BOR-CMD PIC X(1). 02380032 20 GEO-WA2-FN3-R-POL-PRECINCT PIC X(3). 02390032 15 GEO-WA2-3L-R-FIRESEC PIC X(2). 02400032 15 GEO-WA2-3L-R-FIREBAT PIC X(2). 02410032 15 GEO-WA2-3L-R-FIRECO. 02420032 20 GEO-WA2-3L-R-FIRECO-TYPE PIC X(1). 02430032 20 GEO-WA2-3L-R-FIRECO-NUM PIC X(3). 02440032 15 GEO-WA2-FN3-RIGHT-SCHLDIST PIC X(2). 02450032 15 GEO-WA2-3L-R-DYN-BLOCK PIC X(3). 02460032 15 PIWA2-FN3-R-ED PIC X(3). 02471036 15 PIWA2-FN3-R-AD PIC X(2). 02472036 15 PIWA2-FN3-R-POLICE-PAT-BORO PIC X(2). 02473073 15 FILLER PIC X. 02490073 15 GEO-WA2-3L-R-BORO PIC X. 02500051 15 GEO-WA2-3L-R-1990-CENSUSTRACT PIC X(6). 02501051 15 GEO-WA2-3L-R-2010-CENS-TRCT PIC X(6). 02510035 15 GEO-WA2-3L-R-2010-CENS-BLK PIC X(4). 02520035 15 GEO-WA2-3L-R-2010-CENS-BLK-SFX PIC X. 02530035 15 GEO-WA2-3L-R-2000-CENS-TRACT PIC X(6). 02550035 15 GEO-WA2-3L-R-2000-CENS-BLOCK PIC X(4). 02560035 15 GEO-WA2-3L-R-2000-CENS-BLK-SUF PIC X. 02570035 15 FILLER PIC X(7). 02570176 **** 15 PIWA2-FN3-R-BLOCKFACE-ID *V16.1*PIC X(7)** 02570276 15 PIWA2-FN3-R-NTA PIC X(4). 02572050 15 FILLER PIC X(8). 02580050 02590032 05 PIWA2-AUX-FUNCTION3 REDEFINES PIWA2. 02600032 10 FILLER PIC X(450). 02610032 10 PIWA2-FN3-SEGAUX. 02620032 15 PIWA2-FN3-SEGAUX-FILL PIC X(6). 02630032 15 PIWA2-FN3-SEGAUX-CTR PIC X(4). 02640032 15 PIWA2-FN3-SEGAUX-SEGS OCCURS 70 TIMES 02650032 PIC X(7). 02660032 02670032 ****************************************************************** 02670136 **** FOR: FUNCTION 3 EXTENDED ****************************** 02671036 02672036 05 PIWA2-FUNCTION3X REDEFINES PIWA2. 02673036 10 PIWA2-3X-ACCESS-KEY PIC X(21). 02674042 10 PIWA2-3X-DUP-KEY-FLAG PIC X. 02675042 10 PIWA2-3X-LOCATION-STATUS PIC X. 02676042 10 PIWA2-3X-COUNTY-BOUNDARY PIC X. 02677042 10 PIWA2-3X-PREFERRED-LGC1 PIC X(2). 02678042 10 PIWA2-3X-PREFERRED-LGC2 PIC X(2). 02679042 10 PIWA2-3X-PREFERRED-LGC3 PIC X(2). 02679142 10 PIWA2-3X-NUM-X-ST-LOW-END PIC X. 02679242 10 PIWA2-3X-LOW-B5SC PIC X(6) 02679338 OCCURS 5 TIMES. 02679436 10 PIWA2-3X-NUM-X-ST-HI-END PIC X. 02679542 10 PIWA2-3X-HI-B5SC PIC X(6) 02679638 OCCURS 5 TIMES. 02679736 10 PIWA2-3X-REVERSALFLAG PIC X. 02679842 10 PIWA2-3X-LIONKEY. 02679938 15 PIWA2-3X-LION-BORO PIC X. 02680038 15 PIWA2-3X-LIONFACECODE PIC X(4). 02680142 15 PIWA2-3X-LIONSEQ PIC X(5). 02680242 10 PIWA2-3X-GENRECFLAG PIC X. 02680342 10 PIWA2-3X-SEG-LEN PIC X(5). 02680438 10 PIWA2-3X-SEGMENTSLOPE PIC X(3). 02680542 10 PIWA2-3X-SEGMENTORIENT PIC X. 02680642 10 PIWA2-3X-MARBLE-RIKER-FLAG PIC X(1). 02680742 10 PIWA2-3X-FROM-NODE PIC X(7). 02680842 10 PIWA2-3X-TO-NODE PIC X(7). 02680942 10 PIWA2-3X-SANIT-SNOW-PRRTY PIC X. 02681050 10 FILLER PIC X(4). 02681150 10 PIWA2-3X-SEG-ID PIC X(7). 02681250 10 PIWA2-3X-SLA PIC X. 02681350 10 PIWA2-3X-CURVE-FLAG PIC X. 02681450 10 PIWA2-3X-DOG-LEG PIC X. 02681550 10 PIWA2-3X-FEATURE-TYPE PIC X. 02681650 10 PIWA2-3X-SEGMENT-TYPE PIC X. 02681750 10 PIWA2-3X-COINCIDENT-CNT PIC X. 02681850 10 FILLER PIC X(4). 02681950 10 PIWA2-3X-LEFT-SIDE-OF-STR. 02682050 15 PIWA2-3X-LEFT-COMDIST. 02682150 20 PIWA2-3X-LEFT-COMDIST-BORO PIC X(1). 02682250 20 PIWA2-3X-LEFT-COMDIST-NUM PIC X(2). 02682350 15 PIWA2-3X-L-LOW-HOUSENUM PIC X(16). 02682450 15 PIWA2-3X-L-HI-HOUSENUM PIC X(16). 02682550 15 FILLER-GSS PIC X(33). 02682650 15 PIWA2-3X-LEFT-ZIP PIC X(5). 02682750 15 PIWA2-3X-LEFT-HEALTHAREA PIC X(4). 02682853 15 PIWA2-3X-LEFT-POLDIST. 02682950 20 PIWA2-3X-L-POL-PATR-BOR-CMD PIC X(1). 02683050 20 PIWA2-3X-L-POL-PRECINCT PIC X(3). 02683150 ** NOTE:10 PIWA2-3XL-R-FIRESEC ==> FIRE DIV ** 02683250 15 PIWA2-3X-L-FIRESEC PIC X(2). 02683350 15 PIWA2-3X-L-FIREBAT PIC X(2). 02683450 15 PIWA2-3X-L-FIRECO. 02683550 20 PIWA2-3X-L-FIRECO-TYPE PIC X(1). 02683650 20 PIWA2-3X-L-FIRECO-NUM PIC X(3). 02683750 15 PIWA2-3X-LEFT-SCHLDIST PIC X(2). 02683850 15 PIWA2-3X-L-DYN-BLOCK PIC X(3). 02683950 15 PIWA2-3X-L-ED PIC X(3). 02684138 15 PIWA2-3X-L-AD PIC X(2). 02684238 15 PIWA2-3X-L-POLICE-PAT-BORO PIC X(2). 02684373 15 FILLER PIC X. 02684473 15 PIWA2-3X-L-BORO PIC X . 02684551 15 PIWA2-3X-L-1990-CENSUSTRACT PIC X(6) . 02684651 15 PIWA2-3X-L-2010-CENS-TRCT PIC X(6). 02684751 15 PIWA2-3X-L-2010-CENS-BLK PIC X(4). 02684851 15 PIWA2-3X-L-2010-CENS-BLK-SFX PIC X. 02684951 15 PIWA2-3X-L-2000-CENS-TRACT PIC X(6). 02685051 15 GIWA2-3X-L-2000-CENS-BLOCK PIC X(4). 02685151 15 PIWA2-3X-L-2000-CENS-BLK-SUF PIC X. 02685251 15 FILLER PIC X(7). 02685376 **** 15 PIWA2-3X-L-BLOCKFACE-ID *V16.1* PIC X(7)*** 02685476 15 PIWA2-3X-L-NTA PIC X(4). 02685551 15 FILLER PIC X(8). 02685651 10 PIWA2-3X-RIGHT-SIDE-OF-STR. 02685751 15 PIWA2-3X-RIGHT-COMDIST. 02685851 20 PIWA2-3X-RIGHT-COMDIST-BORO PIC X(1). 02685951 20 PIWA2-3X-RIGHT-COMDIST-NUM PIC X(2). 02686051 15 PIWA2-3X-R-LOW-HOUSENUM PIC X(16). 02686151 15 PIWA2-3X-R-HI-HOUSENUM PIC X(16). 02686251 15 FILLER-GSS PIC X(33). 02686351 15 PIWA2-3X-RIGHT-ZIP PIC X(5). 02686451 15 PIWA2-3X-RIGHT-HEALTHAREA PIC X(4). 02686553 15 PIWA2-3X-RIGHT-POLDIST. 02686651 20 PIWA2-3X-R-POL-PATR-BOR-CMD PIC X(1). 02686751 20 PIWA2-3X-R-POL-PRECINCT PIC X(3). 02686851 15 PIWA2-3X-R-FIRESEC PIC X(2). 02686951 15 PIWA2-3X-R-FIREBAT PIC X(2). 02687051 15 PIWA2-3X-R-FIRECO. 02687151 20 PIWA2-3X-R-FIRECO-TYPE PIC X(1). 02687251 20 PIWA2-3X-R-FIRECO-NUM PIC X(3). 02687351 15 PIWA2-3X-RIGHT-SCHLDIST PIC X(2). 02687451 15 PIWA2-3X-R-DYN-BLOCK PIC X(3). 02687551 *** NEXT LINE WAS PREVIOUSLY INSTRUC-DIV 02687651 15 PIWA2-3X-R-ED PIC X(3). 02687751 15 PIWA2-3X-R-AD PIC X(2). 02687851 15 PIWA2-3X-R-POLICE-PAT-BORO PIC X(2). 02687973 15 FILLER PIC X. 02688073 15 PIWA2-3X-R-BORO PIC X. 02688173 15 PIWA2-3X-R-1990-CENSUSTRACT PIC X(6). 02688273 15 PIWA2-3X-R-2010-CENS-TRCT PIC X(6). 02688373 15 PIWA2-3X-R-2010-CENS-BLK PIC X(4). 02688473 15 PIWA2-3X-R-2010-CENS-BLK-SFX PIC X. 02688573 15 PIWA2-3X-R-2000-CENS-TRACT PIC X(6). 02688673 15 PIWA2-3X-R-2000-CENS-BLOCK PIC X(4). 02688773 15 PIWA2-3X-R-2000-CENS-BLK-SUF PIC X. 02688873 15 FILLER PIC X(7). 02688976 **** 15 PIWA2-3X-R-BLOCKFACE-ID *V16.1* PIC X(7)*** 02689076 15 PIWA2-3X-R-NTA PIC X(4). 02689273 15 FILLER PIC X(8). 02689373 15 PIWA2-3X-LGCS PIC X(8). 02689473 15 PIWA2-3X-LGCS-FROM PIC X(8). 02689573 15 PIWA2-3X-LGCS-TO PIC X(8). 02689673 15 PIWA2-3X-L-HCD PIC X(2). 02689773 15 PIWA2-3X-R-HCD PIC X(2). 02689873 15 FILLER PIC X(1). 02689973 15 PIWA2-3X-TRAFFIC-DIR PIC X(1). 02690073 15 PIWA2-3X-ROADWAY-TYPE PIC X(2). 02690173 15 PIWA2-3X-PHYSICAL-ID PIC X(7). 02690273 15 PIWA2-3X-GENERIC-ID PIC X(7). 02690373 15 PIWA2-3X-INTP-ID-INT-USE PIC X(7). 02690473 15 PIWA2-3X-INFD-ID-INT-USE PIC X(7). 02690573 15 PIWA2-3X-STR-STATUS PIC X(1). 02690673 15 PIWA2-3X-STR-WIDTH PIC X(3). 02690773 15 PIWA2-3X-STR-WIDTH-IRREG PIC X(1). 02690873 15 PIWA2-3X-BIKE-LANE PIC X(1). 02690973 15 PIWA2-3X-FED-CLASS-CODE PIC X(2). 02691073 15 PIWA2-3X-ROW-TYPE PIC X(1). 02691173 15 PIWA2-3X-LGC-LIST PIC X(10). 02691273 15 PIWA2-3X-LEGACY-ID PIC X(7). 02691373 15 PIWA2-3X-L-NTA-NAME PIC X(75). 02691473 15 PIWA2-3X-R-NTA-NAME PIC X(75). 02691573 15 PIWA2-3X-FROM-XCOORD PIC X(7). 02691673 15 PIWA2-3X-FROM-YCOORD PIC X(7). 02691773 15 PIWA2-3X-TO-XCOORD PIC X(7). 02691873 15 PIWA2-3X-TO-YCOORD PIC X(7). 02691973 15 PIWA2-3X-FROM-LATITUDE PIC X(9). 02692075 15 PIWA2-3X-FROM-LONGITUDE PIC X(11). 02692175 15 PIWA2-3X-TO-LATITUDE PIC X(9). 02692275 15 PIWA2-3X-TO-LONGITUDE PIC X(11). 02692375 15 PIWA2-3X-L-BLOCKFACE-ID PIC X(10). 02692476 15 PIWA2-3X-R-BLOCKFACE-ID PIC X(10). 02692576 15 PIWA2-3X-NBR-TRAVEL-LANES PIC X(2). 02692676 15 PIWA2-3X-NBR-PARK-LANES PIC X(2). 02692776 15 PIWA2-3X-NBR-TOTAL-LANES PIC X(2). 02692876 15 PIWA2-3X-BIKE-LANE-2 PIC X(2). 02692979 15 PIWA2-3X-STR-WIDTH-MAX PIC X(3). 02693079 15 PIWA2-3X-BIKE-TRAFFIC-DIR PIC X(2). 02693181 15 PIWA2-3X-SPEED-LIMIT PIC X(2). 02693283 15 PIWA2-3X-LEFT-PUMA-CODE PIC X(5). 02693386 15 PIWA2-3X-RIGHT-PUMA-CODE PIC X(5). 02693486 15 PIWA2-3X-LEFT-POLICE-SECTOR PIC X(4). 02693587 15 PIWA2-3X-RIGHT-POLICE-SECTOR PIC X(4). 02693687 15 FILLER PIC X(193). 02693787 **** 15 FILLER V18.3 PIC X(201). 02693887 **** 15 FILLER V18.1 PIC X(211). 02693987 **** 15 FILLER V17.4 PIC X(213). 02694087 **** 15 FILLER V17.1 PIC X(215). 02694187 **** 15 FILLER V16.4 PIC X(220). 02694287 **** 15 FILLER V16.1 PIC X(246). 02694387 **** 15 FILLER V15.3 PIC X(286). 02694487 02694587 05 PIWA2-AUX-FUNCTION3X REDEFINES PIWA2. 02694687 10 FILLER PIC X(1000). 02694787 10 PIWA2-3X-SEGAUX. 02694887 15 PIWA2-3X-SEGAUX-FILL PIC X(6). 02694987 15 PIWA2-3X-SEGAUX-CTR PIC X(4). 02695087 15 PIWA2-3X-SEGAUX-SEGS OCCURS 70 TIMES 02695187 PIC X(7). 02695287 02695387 ****************************************************************** 02695487 **** FOR: FUNCTION 3C ****************************** 02696085 02700032 05 PIWA2-FUNCTION3C REDEFINES PIWA2. 02710032 10 GEO-WA2-FN3C-ACCESS-KEY PIC X(21). 02720032 10 PIWA2-FN3C-DUP-KEY-FLAG PIC X. 02730032 10 GEO-WA2-FN3C-LOCATION-STATUS PIC X. 02740032 10 GEO-WA2-FN3C-COUNTY-BOUNDARY PIC X. 02750032 10 GEO-WA2-FN3C-PREFERRED-LGC1 PIC X(2). 02760032 10 GEO-WA2-FN3C-PREFERRED-LGC2 PIC X(2). 02770032 10 GEO-WA2-FN3C-PREFERRED-LGC3 PIC X(2). 02780032 10 GEO-WA2-FN3C-NUM-X-ST-LOW-END PIC X. 02790032 10 PIWA2-FN3C-LOW-B5SC PIC X(6) 02800032 OCCURS 5 TIMES. 02810032 10 GEO-WA2-FN3C-NUM-X-ST-HI-END PIC X. 02820032 10 PIWA2-FN3C-HI-B5SC PIC X(6) 02830032 OCCURS 5 TIMES. 02840032 10 GEO-WA2-FN3C-REVERSALFLAG PIC X. 02850032 10 PIWA2-FN3C-LIONKEY. 02860032 15 PIWA2-FN3C-LION-BORO PIC X. 02870032 15 GEO-WA2-FN3C-LIONFACECODE PIC X(4). 02880032 15 GEO-WA2-FN3C-LIONSEQ PIC X(5). 02890032 10 GEO-WA2-FN3C-GENRECFLAG PIC X. 02900032 10 PIWA2-FN3C-SEG-LEN PIC X(5). 02910032 10 GEO-WA2-FN3C-SEGMENTSLOPE PIC X(3). 02920032 10 GEO-WA2-FN3C-SEGMENTORIENT PIC X. 02930032 10 GEO-WA2-FN3C-MARBLE-RIKER-FLAG PIC X(1). 02940032 10 GEO-WA2-FN3C-FROM-NODE PIC X(7). 02950032 10 GEO-WA2-FN3C-TO-NODE PIC X(7). 02960032 10 GEO-WA2-FN3C-SANIT-SNOW-PRRTY PIC X. 02961050 10 FILLER PIC X(4). 02970050 10 GEO-WA2-FN3C-SEG-ID PIC X(7). 02980032 10 GEO-WA2-FN3C-SLA PIC X. 02990032 10 PIWA2-FN3C-SIDE-OF-STR PIC X. 03000032 10 GEO-WA2-FN3C-CURVE-FLAG PIC X. 03010032 10 GEO-WA2-FN3C-FEATURE-TYPE PIC X. 03020032 10 GEO-WA2-FN3C-SEGMENT-TYPE PIC X. 03030032 10 GEO-WA2-FN3C-COINCIDENT-CNT PIC X. 03040032 10 FILLER PIC X(4). 03050032 10 PIWA2-FN3C-BLOCKFACE-INFO. 03060032 15 GEO-WA2-FN3C-COMDIST. 03070032 20 GEO-WA2-FN3C-COMDIST-BORO PIC X(1). 03080032 20 GEO-WA2-FN3C-COMDIST-NUMBER PIC X(2). 03090032 15 PIWA2-FN3C-LOW-HOUSENUM PIC X(16). 03100032 15 PIWA2-FN3C-HI-HOUSENUM PIC X(16). 03110032 15 PIWA2-FN3C-LOW-HOUSENUM2 PIC X(16). 03120032 15 PIWA2-FN3C-HI-HOUSENUM2 PIC X(16). 03130032 15 FILLER-GSS PIC X. 03140032 15 GEO-WA2-FN3C-ZIP PIC X(5). 03150032 15 GEO-WA2-FN3C-HEALTHAREA PIC X(4). 03160053 15 GEO-WA2-FN3C-POLICEDIST. 03170032 20 GEO-WA2-FN3C-POL-PATR-BORO-CMD PIC X(1). 03180032 20 GEO-WA2-FN3C-POL-PRECINCT PIC X(3). 03190032 ** NOTE:10 GEO-WA2-FN3C-FIRESEC ==> FIRE DIVISION ** 03200032 15 GEO-WA2-FN3C-FIRESEC PIC X(2). 03210032 15 GEO-WA2-FN3C-FIREBAT PIC X(2). 03220032 15 GEO-WA2-FN3C-FIRECO. 03230032 20 GEO-WA2-FN3C-FIRECO-TYPE PIC X(1). 03240032 20 GEO-WA2-FN3C-FIRECO-NUM PIC X(3). 03250032 15 GEO-WA2-FN3C-SCHOOLDIST PIC X(2). 03260032 15 GEO-WA2-FN3C-DYN-BLOCK PIC X(3). 03270032 15 PIWA2-FN3C-ED PIC X(3). 03281041 15 PIWA2-FN3C-AD PIC X(2). 03282041 15 PIWA2-FN3C-POLICE-PAT-BORO PIC X(2). 03282173 15 FILLER PIC X. 03283073 15 GEO-WA2-FN3C-BORO PIC X. 03310051 15 GEO-WA2-FN3C-1990-CENSUSTRACT PIC X(6). 03311051 15 GEO-WA2-FN3C-2010-CENS-TRCT PIC X(6). 03320035 15 GEO-WA2-FN3C-2010-CENS-BLK PIC X(4). 03330035 15 GEO-WA2-FN3C-2010-CENS-BLK-SFX PIC X. 03340035 15 GEO-WA2-FN3C-2000-CENS-TRACT PIC X(6). 03360035 15 GEO-WA2-FN3C-2000-CENS-BLOCK PIC X(4). 03370035 15 GEO-WA2-FN3C-2000-CENS-BLK-SUF PIC X. 03380035 15 FILLER PIC X(7). 03380177 ****** 15 PIWA2-FN3C-BLOCKFACE-ID V16.1 PIC X(7)*** 03381077 15 PIWA2-FN3C-NTA PIC X(4). 03382050 15 FILLER PIC X(8). 03390050 03400032 05 PIWA2-AUX-FUNCTION3C REDEFINES PIWA2. 03410032 10 FILLER PIC X(300). 03420037 10 PIWA2-FN3C-SEGAUX. 03430032 15 PIWA2-FN3C-SEGAUX-FILL PIC X(4). 03440032 15 PIWA2-FN3C-SEGAUX-CTR PIC X(4). 03450032 15 PIWA2-FN3C-SEGAUX-SEGS OCCURS 70 TIMES 03460032 PIC X(7). 03470032 03480032 ****************************************************************** 03481036 **** FOR: FUNCTION 3C EXTENDED ****************************** 03482036 03483036 05 PIWA2-FUNCTION3CX REDEFINES PIWA2. 03484036 10 PIWA2-3CX-ACCESS-KEY PIC X(21). 03485042 10 PIWA2-3CX-DUP-KEY-FLAG PIC X. 03486039 10 PIWA2-3CX-LOCATION-STATUS PIC X. 03487042 10 PIWA2-3CX-COUNTY-BOUNDARY PIC X. 03488042 10 PIWA2-3CX-PREFERRED-LGC1 PIC X(2). 03489042 10 PIWA2-3CX-PREFERRED-LGC2 PIC X(2). 03489142 10 PIWA2-3CX-PREFERRED-LGC3 PIC X(2). 03489242 10 PIWA2-3CX-NUM-X-ST-LOW-END PIC X. 03489342 10 PIWA2-3CX-LOW-B5SC PIC X(6) 03489439 OCCURS 5 TIMES. 03489536 10 PIWA2-3CX-NUM-X-ST-HI-END PIC X. 03489642 10 PIWA2-3CX-HI-B5SC PIC X(6) 03489739 OCCURS 5 TIMES. 03489836 10 PIWA2-3CX-REVERSALFLAG PIC X. 03489942 10 PIWA2-3CX-LIONKEY. 03490039 15 PIWA2-3CX-LION-BORO PIC X. 03490139 15 PIWA2-3CX-LIONFACECODE PIC X(4). 03490242 15 PIWA2-3CX-LIONSEQ PIC X(5). 03490342 10 PIWA2-3CX-GENRECFLAG PIC X. 03490442 10 PIWA2-3CX-SEG-LEN PIC X(5). 03490539 10 PIWA2-3CX-SEGMENTSLOPE PIC X(3). 03490642 10 PIWA2-3CX-SEGMENTORIENT PIC X. 03490742 10 PIWA2-3CX-MARBLE-RIKER-FLAG PIC X(1). 03490842 10 PIWA2-3CX-FROM-NODE PIC X(7). 03490942 10 PIWA2-3CX-TO-NODE PIC X(7). 03491042 10 PIWA2-3CX-SANIT-SNOW-PRRTY PIC X. 03491150 10 FILLER PIC X(4). 03491250 10 PIWA2-3CX-SEG-ID PIC X(7). 03491342 10 PIWA2-3CX-SLA PIC X. 03491442 10 PIWA2-3CX-SIDE-OF-STR PIC X. 03491539 10 PIWA2-3CX-CURVE-FLAG PIC X. 03491642 10 PIWA2-3CX-FEATURE-TYPE PIC X. 03491742 10 PIWA2-3CX-SEGMENT-TYPE PIC X. 03491842 10 PIWA2-3CX-COINCIDENT-CNT PIC X. 03491942 10 FILLER PIC X(4). 03492036 10 PIWA2-3CX-BLOCKFACE-INFO. 03492139 15 PIWA2-3CX-COMDIST. 03492242 20 PIWA2-3CX-COMDIST-BORO PIC X(1). 03492342 20 PIWA2-3CX-COMDIST-NUMBER PIC X(2). 03492442 15 PIWA2-3CX-LOW-HOUSENUM PIC X(16). 03492539 15 PIWA2-3CX-HI-HOUSENUM PIC X(16). 03492639 15 PIWA2-3CX-LOW-HOUSENUM2 PIC X(16). 03492739 15 PIWA2-3CX-HI-HOUSENUM2 PIC X(16). 03492839 15 FILLER-GSS PIC X. 03492936 15 PIWA2-3CX-ZIP PIC X(5). 03493042 15 PIWA2-3CX-HEALTHAREA PIC X(4). 03493153 15 PIWA2-3CX-POLICEDIST. 03493242 20 PIWA2-3CX-POL-PATR-BORO-CMD PIC X(1). 03493342 20 PIWA2-3CX-POL-PRECINCT PIC X(3). 03493442 ** NOTE:10 PIWA2-3CX-FIRESEC ==> FIRE DIVISION ** 03493542 15 PIWA2-3CX-FIRESEC PIC X(2). 03493642 15 PIWA2-3CX-FIREBAT PIC X(2). 03493742 15 PIWA2-3CX-FIRECO. 03493842 20 PIWA2-3CX-FIRECO-TYPE PIC X(1). 03493942 20 PIWA2-3CX-FIRECO-NUM PIC X(3). 03494042 15 PIWA2-3CX-SCHOOLDIST PIC X(2). 03494142 15 PIWA2-3CX-DYN-BLOCK PIC X(3). 03494242 15 PIWA2-3CX-ED PIC X(3). 03494439 15 PIWA2-3CX-AD PIC X(2). 03494539 15 PIWA2-3CX-POLICE-PAT-BORO PIC X(2). 03494673 15 FILLER PIC X. 03494773 15 PIWA2-3CX-BORO PIC X. 03494851 15 PIWA2-3CX-1990-CENSUSTRACT PIC X(6). 03494951 15 PIWA2-3CX-2010-CENS-TRCT PIC X(6). 03495051 15 PIWA2-3CX-2010-CENS-BLK PIC X(4). 03495151 15 PIWA2-3CX-2010-CENS-BLK-SFX PIC X. 03495251 15 PIWA2-3CX-2000-CENS-TRACT PIC X(6). 03495351 15 PIWA2-3CX-2000-CENS-BLOCK PIC X(4). 03495451 15 PIWA2-3CX-2000-CENS-BLK-SUF PIC X. 03495551 15 FILLER PIC X(7). 03495677 ***** 15 PIWA2-3CX-BLOCKFACE-ID V16.1 PIC X(7)*** 03495777 15 PIWA2-3CX-NTA PIC X(4). 03495851 15 FILLER PIC X(8). 03495951 15 PIWA2-3CX-LGCS PIC X(8). 03496051 15 PIWA2-3CX-LGCS-FROM PIC X(8). 03496151 15 PIWA2-3CX-LGCS-TO PIC X(8). 03496251 15 PIWA2-3CX-L-HCD PIC X(2). 03496353 15 PIWA2-3CX-R-HCD PIC X(2). 03496453 15 FILLER PIC X(1). 03496551 15 PIWA2-3CX-TRAFFIC-DIR PIC X(1). 03496651 15 PIWA2-3CX-ROADWAY-TYPE PIC X(2). 03496751 15 PIWA2-3CX-PHYSICAL-ID PIC X(7). 03496851 15 PIWA2-3CX-GENERIC-ID PIC X(7). 03496951 15 PIWA2-3CX-INTP-ID PIC X(7). 03497051 15 PIWA2-3CX-INFD-ID PIC X(7). 03497151 15 PIWA2-3CX-STR-STATUS PIC X(1). 03497251 15 PIWA2-3CX-STR-WIDTH PIC X(3). 03497351 15 PIWA2-3CX-STR-WIDTH-IRREF PIC X(1). 03497451 15 PIWA2-3CX-BIKE-LANE PIC X(1). 03497551 15 PIWA2-3CX-FED-CLASS-CODE PIC X(2). 03497651 15 PIWA2-3CX-ROW-TYPE PIC X(1). 03497751 15 PIWA2-3CX-LGC-LIST PIC X(10). 03497851 15 PIWA2-3CX-LEGACY-ID PIC X(7). 03497951 15 PIWA2-3CX-NTA-NAME PIC X(75). 03498052 15 PIWA2-3CX-FROM-XCOORD PIC X(7). 03498156 15 PIWA2-3CX-FROM-YCOORD PIC X(7). 03498256 15 PIWA2-3CX-TO-XCOORD PIC X(7). 03498356 15 PIWA2-3CX-TO-YCOORD PIC X(7). 03498456 15 PIWA2-3CX-FROM-LATITUDE PIC X(9). 03498575 15 PIWA2-3CX-FROM-LONGITUDE PIC X(11). 03498675 15 PIWA2-3CX-TO-LATITUDE PIC X(9). 03498775 15 PIWA2-3CX-TO-LONGITUDE PIC X(11). 03498875 15 PIWA2-3CX-BLOCKFACE-ID PIC X(10). 03498977 15 PIWA2-3CX-NBR-TRAVEL-LANES PIC X(2). 03499077 15 PIWA2-3CX-NBR-PARK-LANES PIC X(2). 03499177 15 PIWA2-3CX-NBR-TOTAL-LANES PIC X(2). 03499277 15 PIWA2-3CX-BIKE-LANE-2 PIC X(2). 03499379 15 PIWA2-3CX-STR-WIDTH-MAX PIC X(3). 03499479 15 PIWA2-3CX-BIKE-TRAFFIC-DIR PIC X(2). 03499581 15 PIWA2-3CX-SPEED-LIMIT PIC X(2). 03499683 15 PIWA2-3CX-PUMA-CODE PIC X(5). 03499785 15 PIWA2-3CX-POLICE-SECTOR PIC X(4). 03499887 15 FILLER PIC X(287). 03500087 **** 15 FILLER V18.3 PIC X(291). 03500187 **** 15 FILLER V18.1 PIC X(296). 03500287 **** 15 FILLER V17.4 PIC X(298). 03500387 **** 15 FILLER V17.1 PIC X(300). 03500487 **** 15 FILLER V16.4 PIC X(305). 03500587 **** 15 FILLER V16.1 PIC X(321). 03500687 **** 15 FILLER V15.3 PIC X(361). 03500787 03500887 05 PIWA2-AUX-FUNCTION3CX REDEFINES PIWA2. 03500987 10 FILLER PIC X(850). 03501087 10 PIWA2-3CX-SEGAUX. 03501187 15 PIWA2-3CX-SEGAUX-FILL PIC X(4). 03501287 15 PIWA2-3CX-SEGAUX-CTR PIC X(4). 03501387 15 PIWA2-3CX-SEGAUX-SEGS OCCURS 70 TIMES 03501487 PIC X(7). 03501587 03501687 ****************************************************************** 03501787 **** FOR: FUNCTION 5 ****************************** 03502081 03510032 05 PIWA2-FUNCTION5 REDEFINES PIWA2. 03520032 10 GEO-WA2-FN5-ADDR-MATCHING-KEY PIC X(33). 03530034 P2COB1A COPY File ***************************************************************** 00010007 ** YL 9/27/2017 ADDED DCP ZONE MAP FIELD ** 00020011 ** THIS IS THE COBOL STRUCTURE FOR GEOSUPPORT SYSTEM PLATFORM ** 00021011 ** INDEPENDENT REGULAR WORK AREA 2 FOR FUNCTIONS: 1A, BL, AND ** 00030007 ** BN. THESE THREE FUNCTIONS SHARE A SINGLE WORK AREA 2 ** 00040007 ** LAYOUT. COPY FILE - P2COB1A. 10/10/97 ** 00050007 ***************************************************************** 00060007 00070007 05 GEO-WA2-1A-ACCESS-KEY PIC X(21). 00080007 05 GEO-WA2-1A-CONT-PARITY PIC X. 00090007 05 PIWA2-1A-LOW-HOUSENUM PIC X(11). 00100007 05 GEO-WA2-1A-ALTKEY-1. 00110007 10 GEO-WA2-1A-ALTKEY-1-BORO PIC X. 00120007 10 GEO-WA2-1A-ALTKEY-1-TAXBLOCK PIC X(5). 00130007 10 GEO-WA2-1A-ALTKEY-1-TAXLOT PIC X(4). 00140007 05 FILLER PIC X. 00150007 05 GEO-WA2-1A-SCC PIC X(1). 00160007 05 FILLER PIC X. 00170007 05 GEO-WA2-1A-GENERAL-LOT-INFO. 00180007 10 GEO-WA2-1A-RPAD-BLDG-CLASS PIC X(2). 00190007 10 GEO-WA2-1A-CORNER-CODE PIC X(2). 00200007 10 GEO-WA2-1A-TOT-NBR-BLDG PIC X(4). 00210007 10 GEO-WA2-1A-NUM-OF-BLOCKFACES PIC X(2). 00220007 10 GEO-WA2-1A-INTERIOR-FLAG PIC X. 00230007 10 GEO-WA2-1A-VACANT-FLAG PIC X. 00240007 10 GEO-WA2-1A-IRREG-FLAG PIC X. 00250007 05 GEO-WA2-1A-ALT-BORO-FLAG PIC X. 00260007 05 GEO-WA2-1A-OVERFLOW-FLAG PIC X(1). 00270007 05 PIWA2-1A-STROLL-KEY PIC X(19). 00280007 05 FILLER-GSS PIC X. 00290007 05 GEO-WA2-1A-BLDG-ID-NUM PIC X(7). 00300007 05 GEO-WA2-1A-CONDO-LOT-FLAG PIC X. 00310007 05 FILLER PIC X. 00320007 05 GEO-WA2-1A-RPAD-COND-NUM PIC X(4). 00330007 05 FILLER PIC X(7). 00340007 05 GEO-WA2-1A-CONDO-BILLING-BBL PIC X(10). 00350007 05 FILLER PIC X. 00360007 05 GEO-WA2-1A-CONDO-BILL-BBL-SCC PIC X(1). 00370007 05 GEO-WA2-1A-CONDO-LOW-BBL PIC X(10). 00380007 05 FILLER PIC X. 00390007 05 GEO-WA2-1A-CONDO-HIGH-BBL PIC X(10). 00400007 05 FILLER PIC X. 00410007 05 FILLER PIC X(15). 00420007 05 GEO-WA2-1A-CO-OP-NBR PIC X(4). 00430007 05 GEO-WA2-1A-SANBORN-BVOLPAGE. 00440007 10 GEO-WA2-1A-SANBORN-BORO PIC X(1). 00450007 10 GEO-WA2-1A-SANBORN-VOL-PAGE. 00460007 15 GEO-WA2-1A-SANBORN-VOL-NUM PIC X(3). 00470007 15 GEO-WA2-1A-SANBORN-PAGE-NUM PIC X(4). 00480007 05 GEO-WA2-1A-COMMERC-DIST PIC X(5). 00490007 05 GEO-WA2-1A-DOF-MAP-BOROUGH PIC X. 00500007 05 GEO-WA2-1A-TAX-MAP-NBR PIC X(4). 00510007 05 FILLER-FOR-TAX-MAP-PAGE PIC X(4). 00520007 05 FILLER PIC X(3). 00530009 05 PIWA2-1A-LATITUDE PIC X(9). 00540009 05 PIWA2-1A-LONGITUDE PIC X(11). 00540110 05 PIWA2-1A-X-COORD PIC X(7). 00541009 05 PIWA2-1A-Y-COORD PIC X(7). 00550007 05 PIWA2-1A-BID PIC X(6). 00560007 05 PIWA2-1A-TPAD-BIN-ST PIC X. 00570007 05 PIWA2-1A-TPAD-NEW-BIN PIC X(7). 00580007 05 PIWA2-1A-TPAD-NEW-BIN-ST PIC X. 00590007 05 PIWA2-1A-TPAD-CONFLICT PIC X. 00600007 05 PIWA2-1A-DCP-ZONE-MAP PIC X(3). 00601011 05 FILLER PIC X(6). 00610011 05 FILLER-GSS PIC X(8). 00620007 05 PIWA2-1A-NUM-OF-ADDR PIC X(4). 00630007 05 PIWA2-1A-ADDR-LIST OCCURS 21 TIMES. 00640007 10 PIWA2-1A-LIST-LOW-HOUSENUM PIC X(16). 00650007 10 PIWA2-1A-LIST-HI-HOUSENUM PIC X(16). 00660007 10 PIWA2-1A-LIST-BORO PIC X. 00670007 10 PIWA2-1A-LIST-5SC PIC X(5). 00680007 10 PIWA2-1A-LIST-LGC PIC X(2). 00690007 10 GEO-WA2-1A-LIST-BIN PIC X(7). 00700007 10 GEO-WA2-1A-LIST-SOS PIC X. 00710007 10 GEO-WA2-1A-ADDR-TYPE PIC X. 00720007 10 PIWA2-1A-TPAD-STATUS PIC X. 00730007 10 FILLER PIC X(3). 00740007 P2COB1AL COPY File ***************************************************************** 00010006 ** P2COBIAL ** 00020034 ** LAST MODIFIED JANUARY 2019 ** 00021044 ** ADD POLICE SECTOR AND POLICE SERVICE AREA YNL 06/14 V19.2 ** 00022044 ** NOTE: (POLICE SERVICE AREA FIELD NAME IS POLICE-SRVC-AREA) ** 00023043 ** ADD NEW 5 BYTE PUMA CODE YNL 12/17 V18,1 ** 00031039 ** YL 9/27/2017 ADDED DCP ZONE MAP FIELD ** 00040037 ** ADD NEW 2 BYTE SPEED LIMIT YNL 09/17 V17,4 ** 00050036 ** ADD NEW 2 BYTE BIKE TRAFFIC DIRECTION YNL 12/16 V17,1 ** 00060036 ** THIS IS THE COBOL STRUCTURE FOR GEOSUPPORT SYSTEM PLATFORM ** 00070006 ** INDEPENDENT LONG WORK AREA 2 FOR FUNCTIONS: 1A, AND BL. ** 00080006 ** THESE TWO FUNCTIONS SHARE A SINGLE LONG WORK AREA 2 LAYOU. ** 00090006 ** COPY FILE - P2COB1AL. 11/06/97 ** 00100006 ***************************************************************** 00110006 ** LAST MODIFIED OCTOBER 2016 ** 00120030 ***************************************************************** 00130027 ** JANUARY 2011 YNL ADDED THREE WORK AREAS: ** 00140006 ** 1. P2COB1EX - FUNCTION 1E EXTENDED. ** 00150007 ** 2. P2COB1AX - FUNCTION 1A EXTENDED. ** 00160006 ** 2. P2COB1B - P2COB1EX COMBINED WITH P2COB1AX ** 00170016 ***************************************************************** 00180006 03 PIWA2 PIC X(17750). 00190006 ****************************************************************** 00200006 **** FOR: FUNCTION 1A LONG ****************************** 00210006 00220006 03 PIWA2-FUNCTION1AL REDEFINES PIWA2. 00230006 00240006 05 GEO-WA2-1AL-ACCESS-KEY PIC X(21). 00250006 05 GEO-WA2-1AL-CONT-PARITY PIC X. 00260006 05 PIWA2-1AL-LOW-HOUSENUM PIC X(11). 00270006 05 GEO-WA2-1AL-ALTKEY-1. 00280006 10 GEO-WA2-1AL-ALTKEY-1-BORO PIC X. 00290006 10 GEO-WA2-1AL-ALTKEY-1-TAXBLOCK PIC X(5). 00300006 10 GEO-WA2-1AL-ALTKEY-1-TAXLOT PIC X(4). 00310006 05 FILLER PIC X. 00320006 05 GEO-WA2-1AL-SCC PIC X. 00330006 05 FILLER PIC X. 00340006 05 GEO-WA2-1AL-GENERAL-LOT-INFO. 00350006 10 GEO-WA2-1AL-RPAD-BLDG-CLASS PIC X(2). 00360006 10 GEO-WA2-1AL-CORNER-CODE PIC X(2). 00370006 10 GEO-WA2-1AL-NUM-OF-STRUCTURES PIC X(4). 00380006 10 GEO-WA2-1AL-NUM-OF-BLOCKFACES PIC X(2). 00390006 10 GEO-WA2-1AL-INTERIOR-FLAG PIC X. 00400006 10 GEO-WA2-1AL-VACANT-FLAG PIC X. 00410006 10 GEO-WA2-1AL-IRREG-FLAG PIC X. 00420006 05 GEO-WA2-1AL-ALT-BORO-FLAG PIC X. 00430006 05 FILLER PIC X. 00440006 05 PIWA2-1AL-STROLL-KEY PIC X(19). 00450006 05 FILLER-GSS PIC X. 00460006 05 GEO-WA2-1AL-BLDG-ID-NUM PIC X(7). 00470006 05 GEO-WA2-1AL-CONDO-LOT-FLAG PIC X. 00480006 05 FILLER PIC X. 00490006 05 GEO-WA2-1AL-RPAD-COND-NUM PIC X(4). 00500006 05 FILLER PIC X(7). 00510006 05 GEO-WA2-1AL-CONDO-BILLING-BBL PIC X(10). 00520006 05 FILLER PIC X. 00530006 05 GEO-WA2-1AL-CONDO-BILL-BBL-SCC PIC X. 00540006 05 GEO-WA2-1AL-CONDO-LOW-BBL PIC X(10). 00550006 05 FILLER PIC X. 00560006 05 GEO-WA2-1AL-CONDO-HIGH-BBL PIC X(10). 00570006 05 FILLER PIC X. 00580006 05 FILLER PIC X(15). 00590006 05 GEO-WA2-1AL-CO-OP-NBR PIC X(4). 00600006 05 GEO-WA2-1AL-SANBORN-BVOLPAGE. 00610006 10 GEO-WA2-1AL-SANBORN-BORO PIC X(1). 00620006 10 GEO-WA2-1AL-SANBORN-VOL-PAGE. 00630006 15 GEO-WA2-1AL-SANBORN-VOL-NUM PIC X(3). 00640006 15 GEO-WA2-1AL-SANBORN-PAGE-NUM PIC X(4). 00650006 05 GEO-WA2-1AL-COMMERC-DIST PIC X(5). 00660006 05 PIWA2-1AL-DOF-MAP-BORO PIC X. 00670006 05 PIWA2-1AL-DOF-MAP-SECVOL PIC X(4). 00680006 ******* PIWA2-1AL-DOF-MAP-PAGE NOT IMPLEMENTED 00690006 05 PIWA2-1AL-DOF-MAP-PAGE PIC X(4). 00700006 05 FILLER PIC X(3). 00710019 05 PIWA2-1AL-LATITUDE PIC X(9). 00720019 05 PIWA2-1AL-LONGITUDE PIC X(11). 00730019 05 PIWA2-1AL-X-COORD PIC X(7). 00740019 05 PIWA2-1AL-Y-COORD PIC X(7). 00750019 05 PIWA2-1AL-BID PIC X(6). 00760019 05 PIWA2-1AL-TPAD-BIN-ST PIC X. 00770019 05 PIWA2-1AL-TPAD-NEW-BIN PIC X(7). 00780019 05 PIWA2-1AL-TPAD-NEW-BIN-ST PIC X. 00790019 05 PIWA2-1AL-TPAD-CONFLICT PIC X. 00800019 05 PIWA2-1AL-DCP-ZONE-MAP PIC X(3). 00810037 05 FILLER PIC X(6). 00820037 05 FILLER-GSS PIC X(8). 00830037 05 GEO-WA2-1AL-NUM-OF-BINS PIC X(4). 00840037 05 PIWA2-1AL-TPAD-BINLIST. 00850037 10 PIWA2-1AL-TPAD-BINS OCCURS 2187 TIMES. 00860037 15 PIWA2-1AL-TPAD-BINS-BIN PIC X(7). 00870037 15 PIWA2-1AL-TPAD-BINS-STAT PIC X. 00880037 10 PIWA2-1AL-TPAD-FILL PIC X(4). 00890037 05 GEO-WA2-1AL-BINS REDEFINES PIWA2-1AL-TPAD-BINLIST 00900037 PIC X(7) OCCURS 2500 TIMES. 00910037 00920037 *************************************************************** 00930037 *** FOR: FUNCTION 1/1E EXTENDED *****************3********** 00940037 00950037 03 PIWA2-FUNCTION1EX REDEFINES PIWA2. 00960037 00970037 05 PIWA2-FN1EX-ACCESS-KEY PIC X(21). 00980037 05 PIWA2-FN1EX-CONT-PARITY PIC X. 00990037 05 PIWA2-FN1EX-LOW-HOUSENUM-SORT PIC X(11). 01000037 05 PIWA2-FN1EX-HI-HOUSENUM-SORT PIC X(11). 01010037 05 PIWA2-FN1EX-PREFERRED-LGC PIC X(2). 01020037 05 PIWA2-FN1EX-NUM-X-ST-LOW-END PIC X. 01030037 05 PIWA2-FN1EX-LOW-B5SC PIC X(6) 01040037 OCCURS 5 TIMES. 01050037 05 PIWA2-FN1EX-NUM-X-ST-HI-END PIC X. 01060037 05 PIWA2-FN1EX-HI-B5SC PIC X(6) 01070037 OCCURS 5 TIMES. 01080037 05 PIWA2-FN1EX-LIONKEY. 01090037 10 PIWA2-FN1EX-LION-BORO PIC X. 01100037 10 PIWA2-FN1EX-LIONFACECODE PIC X(4). 01110037 10 PIWA2-FN1EX-LIONSEQ PIC X(5). 01120037 05 PIWA2-FN1EX-SPECIAL-ADDR-FLAG PIC X(1). 01130037 05 PIWA2-FN1EX-SIDE-OF-STR PIC X. 01140037 05 PIWA2-FN1EX-SEGMENTLENGTH PIC X(5). 01150037 05 PIWA2-FN1EX-XCOORD PIC X(7). 01160037 05 PIWA2-FN1EX-YCOORD PIC X(7). 01170037 05 FILLER-GSS PIC X(8). 01180037 05 PIWA2-FN1EX-MARBLE-RIKER-FLAG PIC X(1). 01190037 05 PIWA2-FN1EX-SLA PIC X. 01200037 05 PIWA2-FN1EX-COMDIST. 01210037 10 PIWA2-FN1EX-COMDIST-BORO PIC X(1). 01220037 10 PIWA2-FN1EX-COMDIST-NUMBER PIC X(2). 01230037 05 PIWA2-FN1EX-ZIP PIC X(5). 01240037 01250037 05 PIWA2-FN1EX-ELECTDIST PIC X(3). 01260037 05 PIWA2-FN1EX-ASSEMDIST PIC X(2). 01270037 05 PIWA2-FN1EX-SPLIT-ED-FLAG PIC X(1). 01280037 05 PIWA2-FN1EX-CONGDIST PIC X(2). 01290037 05 PIWA2-FN1EX-SENATEDIST PIC X(2). 01300037 05 PIWA2-FN1EX-COURTDIST PIC X(2). 01310037 05 PIWA2-FN1EX-COUNCILDIST PIC X(2). 01320037 01330037 05 PIWA2-FN1EX-HCD PIC X(2). 01340037 05 PIWA2-FN1EX-HEALTHAREA PIC X(4). 01350037 05 PIWA2-FN1EX-SANIDIST. 01360037 10 PIWA2-FN1EX-SANIDIST-BORO PIC X(1). 01370037 10 PIWA2-FN1EX-SANIDIST-NUMBER PIC X(2). 01380037 05 PIWA2-FN1EX-SANITATION-SUBSEC PIC X(2). 01390037 05 PIWA2-FN1EX-SANI-REG PIC X(5). 01400037 05 PIWA2-FN1EX-SANI-REC PIC X(3). 01410037 05 PIWA2-FN1EX-POLICEDIST. 01420037 15 PIWA2-FN1EX-POL-PATR-BORO-CMD PIC X(1). 01430037 15 PIWA2-FN1EX-POL-PRECINCT PIC X(3). 01440037 ** NOTE:10 PIWA2-FN1EX-FIRESEC ==> FIRE DIVISION ** 01450037 05 PIWA2-FN1EX-FIRESEC PIC X(2). 01460037 05 PIWA2-FN1EX-FIREBAT PIC X(2). 01470037 05 PIWA2-FN1EX-FIRECO. 01480037 10 PIWA2-FN1EX-FIRECO-TYPE PIC X(1). 01490037 10 PIWA2-FN1EX-FIRECO-NUM PIC X(3). 01500037 05 PIWA2-FN1EX-SPLIT-SCHOOL-FLAG PIC X. 01510037 05 PIWA2-FN1EX-SCHOOLDIST PIC X(2). 01520037 05 PIWA2-FN1EX-DYN-BLOCK PIC X(3). 01530037 05 PIWA2-FN1EX-POLICE-PAT-BORO PIC X(2). 01540037 05 PIWA2-FN1EX-FEATURE-TYPE PIC X. 01550037 05 PIWA2-FN1EX-SEGMENT-TYPE PIC X. 01560037 05 PIWA2-FN1EX-ALX PIC X. 01570037 05 PIWA2-FN1EX-COINCIDENT-CNT PIC X. 01580037 05 FILLER PIC X(3). 01590037 05 PIWA2-FN1EX-1990-CENSUSTRACT PIC X(6). 01600037 05 PIWA2-FN1EX-2010-CENS-TRCT PIC X(6). 01610037 05 PIWA2-FN1EX-2010-CENS-BLK PIC X(4). 01620037 05 PIWA2-FN1EX-2010-CENS-BLK-SFX PIC X. 01630037 05 PIWA2-FN1EX-2000-CENS-TRCT PIC X(6). 01640037 05 PIWA2-FN1EX-2000-CENS-BLK PIC X(4). 01650037 05 PIWA2-FN1EX-2000-CENS-BLK-SFX PIC X. 01660037 05 PIWA2-FN1EX-NTA PIC X(4). 01670037 05 PIWA2-FN1EX-SANIT-SNOW-PRRTY PIC X. 01680037 05 PIWA2-FN1EX-SANIT-ORGANICS PIC X(5). 01690037 05 PIWA2-FN1EX-SANIT-BULK-PICK-UP PIC X(5). 01700037 **** 05 PIWA2-FN1EX-SANIT-RESERVED V16.4 PIC X(5). 01710037 05 PIWA2-FN1EX-HURRICANE-ZONE PIC XX. 01720037 05 FILLER PIC X(11). 01730037 05 PIWA2-FN1EX-TRUE-HNS PIC X(11). 01740037 05 PIWA2-FN1EX-TRUE-B7SC PIC X(8). 01750037 05 PIWA2-FN1EX-SEG-ID PIC X(7). 01760037 05 PIWA2-FN1EX-CURVE-FLAG PIC X(1). 01770037 05 PIWA2-FN1EX-LGCS PIC X(8). 01780037 05 PIWA2-FN1EX-BOE-PTR PIC X(1). 01790037 05 PIWA2-FN1EX-AZIMUTH PIC X(3). 01800037 05 PIWA2-FN1EX-ORIENT PIC X(1). 01810037 05 PIWA2-FN1EX-X-LOW PIC X(7). 01820037 05 PIWA2-FN1EX-Y-LOW PIC X(7). 01830037 05 PIWA2-FN1EX-Z-LOW PIC X(7). 01840037 05 PIWA2-FN1EX-X-HI PIC X(7). 01850037 05 PIWA2-FN1EX-Y-HI PIC X(7). 01860037 05 PIWA2-FN1EX-Z-HI PIC X(7). 01870037 05 PIWA2-FN1EX-X-CC PIC X(7). 01880037 05 PIWA2-FN1EX-Y-CC PIC X(7). 01890037 05 PIWA2-FN1EX-Z-CC PIC X(7). 01900037 05 PIWA2-FN1EX-RADIUS PIC X(7). 01910037 05 PIWA2-FN1EX-SECANT PIC X(1). 01920037 05 PIWA2-FN1EX-ANGLE-FROM PIC X(5). 01930037 05 PIWA2-FN1EX-ANGLE-TO PIC X(5). 01940037 05 PIWA2-FN1EX-NODE-FROM PIC X(7). 01950037 05 PIWA2-FN1EX-NODE-TO PIC X(7). 01960037 05 PIWA2-FN1EX-VANITY-LION PIC X(10). 01970037 05 PIWA2-FN1EX-SOS PIC X(1). 01980037 05 PIWA2-FN1EX-SPLIT-LOHSN PIC X(11). 01990037 05 PIWA2-FN1EX-TD PIC X(1). 02000037 05 PIWA2-FN1EX-TR PIC X(10). 02010037 05 PIWA2-FN1EX-CURVE-FRACTION PIC X(3). 02020037 05 PIWA2-FN1EX-ROADWAY-TYPE PIC X(2). 02030037 05 PIWA2-FN1EX-PHYICAL-ID PIC X(7). 02040037 05 PIWA2-FN1EX-GENERIC-ID PIC X(7). 02050037 05 PIWA2-FN1EX-NYPD-ID-FILL PIC X(7). 02060037 05 PIWA2-FN1EX-FDNY-ID-FILL PIC X(7). 02070037 05 PIWA2-FN1EX-BIKE-LANE-2 PIC X(2). 02080037 05 PIWA2-FN1EX-BIKE-TRAFFIC-DIR PIC X(2). 02090037 05 FILLER PIC X(3). 02100037 **** 05 FILLER ******V17.1 ** PIC X(5). 02110033 **** 05 FILLER ******V16.4 ** PIC X(7). 02120033 **** 05 PIWA2-FN1EX-BLOCKFACE-ID *V16.1 ** PIC X(7) *** 02130033 05 PIWA2-FN1EX-STREET-STATUS PIC X(1). 02140033 05 PIWA2-FN1EX-STREET-WIDTH PIC X(3). 02150033 05 PIWA2-FN1EX-STREET-WIDTH-IRR PIC X(1). 02160033 05 PIWA2-FN1EX-BIKE-LANE PIC X(1). 02170033 05 PIWA2-FN1EX-FED-CLASS-CODE PIC X(2). 02180033 05 PIWA2-FN1EX-ROW-TYPE PIC X(1). 02190033 05 PIWA2-FN1EX-LGC-LIST-2 PIC X(10). 02200033 05 PIWA2-FN1EX-LEGACY-SEG-ID PIC X(7). 02210033 05 PIWA2-FN1EX-LGC-LIST-FROM-1 PIC X(10). 02220033 05 PIWA2-FN1EX-LGC-LIST-TO-1 PIC X(10). 02230033 05 PIWA2-FN1EX-LGC-LIST-FROM-2 PIC X(10). 02240033 05 PIWA2-FN1EX-LGC-LIST-TO-2 PIC X(10). 02250033 05 PIWA2-FN1EX-NOCROSS-FLG PIC X(1). 02260033 05 PIWA2-FN1EX-IND-SEG-LEN PIC X(5). 02270033 05 PIWA2-FN1EX-NTA-NAME PIC X(75). 02280033 05 PIWA2-FN1EX-USPS-CITY-NAME PIC X(25). 02290033 05 PIWA2-FN1EX-LATITUDE PIC X(9). 02300033 05 PIWA2-FN1EX-LONGITUDE PIC X(11). 02310033 05 PIWA2-FN1EX-SEG-FROM-NODE PIC X(7). 02320033 05 PIWA2-FN1EX-SEG-TO-NODE PIC X(7). 02330033 05 PIWA2-FN1EX-SEG-FROM-XYZ PIC X(21). 02340033 05 PIWA2-FN1EX-SEG-TO-XYZ PIC X(21). 02350033 05 PIWA2-FN1EX-BLOCKFACE-ID PIC X(10). 02360033 05 PIWA2-FN1EX-NBR-TRAVEL-LANES PIC X(2). 02370033 05 PIWA2-FN1EX-NBR-PARK-LANES PIC X(2). 02380033 05 PIWA2-FN1EX-NBR-TOTAL-LANES PIC X(2). 02390033 05 PIWA2-FN1EX-STREET-WIDTH-MAX PIC X(3). 02400033 05 PIWA2-FN1EX-SPEED-LIMIT PIC X(2). 02410036 05 PIWA2-FN1EX-PUMA-CODE PIC X(5). 02411039 05 PIWA2-FN1EX-POLICE-SECTOR PIC X(4). 02412040 05 PIWA2-FN1EX-POLICE-SRVC-AREA PIC X. 02413042 05 PIWA2-FN1EX-FILL500 PIC X(240). 02420040 **** 05 PIWA2-FN1EX-FILL500 ** V18.3 ** PIC X(245). 02421040 **** 05 PIWA2-FN1EX-FILL500 ** V18.1 ** PIC X(250). 02430039 **** 05 PIWA2-FN1EX-FILL500 ** V17.4 ** PIC X(252). 02431039 **** 05 PIWA2-FN1EX-FILL500 ** V16.4 ** PIC X(255). 02440036 **** 05 PIWA2-FN1EX-FILL500 ** V16.1 ** PIC X(271) *** 02450036 **** 05 PIWA2-FN1EX-FILL500 ** V15.3 ** PIC X(327) *** 02460036 ****************************************************************/ 02470036 * ***/ 02480036 *THE FOLLOWING FIELDS ARE AN ADDITION TO GRID1 ***/ 02490036 ****************************************************************/ 02500036 05 PIWA2-FN1EX-REASON-CODE PIC X(1). 02510036 05 PIWA2-FN1EX-REASON-CODE-QUAL PIC X(1). 02520036 05 PIWA2-FN1EX-WARN-CODE PIC X(2). 02530036 05 PIWA2-FN1EX-RETURN-CODE PIC X(2). 02540036 05 PIWA2-FN1EX-NUM-X-STS-LO-END PIC X(1). 02550036 05 PIWA2-FN1EX-LO-B7SC OCCURS 5 TIMES PIC X(8). 02560036 05 PIWA2-FN1EX-NUM-X-STS-HI-END PIC X(1). 02570036 05 PIWA2-FN1EX-HI-B7SC OCCURS 5 TIMES PIC X(8). 02580036 05 PIWA2-FN1EX-LO-ST-NAME OCCURS 5 TIMES PIC X(32). 02590036 05 PIWA2-FN1EX-HI-ST-NAME OCCURS 5 TIMES PIC X(32). 02600036 05 PIWA2-FN1EX-BOE-B7SC PIC X(8). 02610036 05 PIWA2-FN1EX-BOE-ST-NAME PIC X(32). 02620036 05 PIWA2-FN1EX-FILL600 PIC X(52). 02630036 02640036 *************************************************************** 02650036 *** FOR: FUNCTION 1A EXTENDED **************************** 02660036 02670036 03 PIWA2-FUNCTION1AX REDEFINES PIWA2. 02680036 05 PIWA2-1AX-ACCESS-KEY PIC X(21). 02690036 05 PIWA2-1AX-CONT-PARITY PIC X. 02700036 05 PIWA2-1AX-LOW-HOUSENUM PIC X(11). 02710036 05 PIWA2-1AX-ALTKEY-1. 02720036 10 PIWA2-1AX-ALTKEY-1-BORO PIC X. 02730036 10 PIWA2-1AX-ALTKEY-1-TAXBLOCK PIC X(5). 02740036 10 PIWA2-1AX-ALTKEY-1-TAXLOT PIC X(4). 02750036 05 FILLER PIC X. 02760036 05 PIWA2-1AX-SCC PIC X(1). 02770036 05 FILLER PIC X. 02780036 05 PIWA2-1AX-GENERAL-LOT-INFO. 02790036 10 PIWA2-1AX-RPAD-BLDG-CLASS PIC X(2). 02800036 10 PIWA2-1AX-CORNER-CODE PIC X(2). 02810036 10 PIWA2-1AX-TOT-NBR-BLDG PIC X(4). 02820036 10 PIWA2-1AX-NUM-OF-BLOCKFACES PIC X(2). 02830036 10 PIWA2-1AX-INTERIOR-FLAG PIC X. 02840036 10 PIWA2-1AX-VACANT-FLAG PIC X. 02850036 10 PIWA2-1AX-IRREG-FLAG PIC X. 02860036 05 PIWA2-1AX-ALT-BORO-FLAG PIC X. 02870036 05 PIWA2-1AX-OVERFLOW-FLAG PIC X(1). 02880036 05 PIWA2-1AX-STROLL-KEY PIC X(19). 02890036 05 FILLER-GSS PIC X. 02900036 05 PIWA2-1AX-BLDG-ID-NUM PIC X(7). 02910036 05 PIWA2-1AX-CONDO-LOT-FLAG PIC X. 02920036 05 FILLER PIC X. 02930036 05 PIWA2-1AX-RPAD-COND-NUM PIC X(4). 02940036 05 FILLER PIC X(7). 02950036 05 PIWA2-1AX-CONDO-BILLING-BBL PIC X(10). 02960036 05 FILLER PIC X. 02970036 05 PIWA2-1AX-CONDO-BILL-BBL-SCC PIC X(1). 02980036 05 PIWA2-1AX-CONDO-LOW-BBL PIC X(10). 02990036 05 FILLER PIC X. 03000036 05 PIWA2-1AX-CONDO-HIGH-BBL PIC X(10). 03010036 05 FILLER PIC X. 03020036 05 FILLER PIC X(15). 03030036 05 PIWA2-1AX-CO-OP-NBR PIC X(4). 03040036 05 PIWA2-1AX-SANBORN-BVOLPAGE. 03050036 10 PIWA2-1AX-SANBORN-BORO PIC X(1). 03060036 10 PIWA2-1AX-SANBORN-VOL-PAGE. 03070036 15 PIWA2-1AX-SANBORN-VOL-NUM PIC X(3). 03080036 15 PIWA2-1AX-SANBORN-PAGE-NUM PIC X(4). 03090036 05 PIWA2-1AX-COMMERC-DIST PIC X(5). 03100036 05 PIWA2-1AX-DOF-MAP-BOROUGH PIC X. 03110036 05 PIWA2-1AX-TAX-MAP-NBR PIC X(4). 03120036 05 FILLER-FOR-TAX-MAP-PAGE PIC X(4). 03130036 05 FILLER PIC X(3). 03140036 05 PIWA2-1AX-LATITUDE PIC X(9). 03150036 05 PIWA2-1AX-LONGITUDE PIC X(11). 03160036 05 PIWA2-1AX-X-COORD PIC X(7). 03170036 05 PIWA2-1AX-Y-COORD PIC X(7). 03180036 05 PIWA2-1AX-BID PIC X(6). 03190036 05 PIWA2-1AX-TPAD-BIN-ST PIC X. 03200036 05 PIWA2-1AX-TPAD-NEW-BIN PIC X(7). 03210036 05 PIWA2-1AX-TPAD-NEW-BIN-ST PIC X. 03220036 05 PIWA2-1AX-TPAD-CONFLICT PIC X. 03230036 05 PIWA2-1AX-DCP-ZONE-MAP PIC X(3). 03240038 05 FILLER PIC X(6). 03250038 05 FILLER-GSS PIC X(8). 03260036 05 PIWA2-1AX-REASON-CODE PIC X(1). 03270036 05 PIWA2-1AX-REASON-CODE-QUAL PIC X(1). 03280036 05 PIWA2-1AX-WARN-CODE PIC X(2). 03290036 05 PIWA2-1AX-RETURN-CODE PIC X(2). 03300036 05 PIWA2-1AX-FILLER PIC X(108). 03310036 05 PIWA2-1AX-NUM-OF-ADDR PIC X(4). 03320036 05 PIWA2-1AX-ADDR-LIST OCCURS 21 TIMES. 03330036 10 PIWA2-1AX-LIST-LOW-HOUSENUM PIC X(16). 03340036 10 PIWA2-1AX-LIST-HI-HOUSENUM PIC X(16). 03350036 10 PIWA2-1AX-LIST-BORO PIC X. 03360036 10 PIWA2-1AX-LIST-5SC PIC X(5). 03370036 10 PIWA2-1AX-LIST-LGC PIC X(2). 03380036 10 PIWA2-1AX-LIST-BIN PIC X(7). 03390036 10 PIWA2-1AX-LIST-SOS PIC X. 03400036 10 PIWA2-1AX-ADDR-TYPE PIC X. 03410036 10 PIWA2-1AX-TPAD-STATUS PIC X. 03420036 10 PIWA2-1AX-ST-NAME PIC X(32). 03430036 10 FILLER PIC X(34). 03440036 03450036 *************************************************************** 03460036 *** FOR: FUNCTION 1B **************************** 03470036 03480036 03 PIWA2-FUNCTION1B REDEFINES PIWA2. 03490036 03500036 05 PIWA2-1B-1-ACCESS-KEY PIC X(21). 03510036 05 PIWA2-1B-1-CONT-PARITY PIC X. 03520036 05 PIWA2-1B-1-LOW-HOUSENUM-SORT PIC X(11). 03530036 05 PIWA2-1B-1-HI-HOUSENUM-SORT PIC X(11). 03540036 05 PIWA2-1B-1-PREFERRED-LGC PIC X(2). 03550036 05 PIWA2-1B-1-NUM-X-ST-LOW-END PIC X. 03560036 05 PIWA2-1B-1-LOW-B5SC PIC X(6) 03570036 OCCURS 5 TIMES. 03580036 05 PIWA2-1B-1-NUM-X-ST-HI-END PIC X. 03590036 05 PIWA2-1B-1-HI-B5SC PIC X(6) 03600036 OCCURS 5 TIMES. 03610036 05 PIWA2-1B-1-LIONKEY. 03620036 10 PIWA2-1B-1-LION-BORO PIC X. 03630036 10 PIWA2-1B-1-LIONFACECODE PIC X(4). 03640036 10 PIWA2-1B-1-LIONSEQ PIC X(5). 03650036 05 PIWA2-1B-1-SPECIAL-ADDR-FLAG PIC X(1). 03660036 05 PIWA2-1B-1-SIDE-OF-STR PIC X. 03670036 05 PIWA2-1B-1-SEGMENTLENGTH PIC X(5). 03680036 05 PIWA2-1B-1-XCOORD PIC X(7). 03690036 05 PIWA2-1B-1-YCOORD PIC X(7). 03700036 05 FILLER-GSS PIC X(8). 03710036 05 PIWA2-1B-1-MARBLE-RIKER-FLAG PIC X(1). 03720036 05 PIWA2-1B-1-SLA PIC X. 03730036 05 PIWA2-1B-1-COMDIST. 03740036 10 PIWA2-1B-1-COMDIST-BORO PIC X(1). 03750036 10 PIWA2-1B-1-COMDIST-NUMBER PIC X(2). 03760036 05 PIWA2-1B-1-ZIP PIC X(5). 03770036 03780036 05 PIWA2-1B-1-ELECTDIST PIC X(3). 03790036 05 PIWA2-1B-1-ASSEMDIST PIC X(2). 03800036 05 PIWA2-1B-1-SPLIT-ED-FLAG PIC X(1). 03810036 05 PIWA2-1B-1-CONGDIST PIC X(2). 03820036 05 PIWA2-1B-1-SENATEDIST PIC X(2). 03830036 05 PIWA2-1B-1-COURTDIST PIC X(2). 03840036 05 PIWA2-1B-1-COUNCILDIST PIC X(2). 03850036 03860036 05 PIWA2-1B-1-HCD PIC X(2). 03870036 05 PIWA2-1B-1-HEALTHAREA PIC X(4). 03880036 05 PIWA2-1B-1-SANIDIST. 03890036 10 PIWA2-1B-1-SANIDIST-BORO PIC X(1). 03900036 10 PIWA2-1B-1-SANIDIST-NUMBER PIC X(2). 03910036 05 PIWA2-1B-1-SANITATION-SUBSEC PIC X(2). 03920036 05 PIWA2-1B-1-SANI-REG PIC X(5). 03930036 05 PIWA2-1B-1-SANI-REC PIC X(3). 03940036 05 PIWA2-1B-1-POLICEDIST. 03950036 15 PIWA2-1B-1-POL-PATR-BORO-CMD PIC X(1). 03960036 15 PIWA2-1B-1-POL-PRECINCT PIC X(3). 03970036 ** NOTE:10 PIWA2-1B-1-FIRESEC ==> FIRE DIVISION ** 03980036 05 PIWA2-1B-1-FIRESEC PIC X(2). 03990036 05 PIWA2-1B-1-FIREBAT PIC X(2). 04000036 05 PIWA2-1B-1-FIRECO. 04010036 10 PIWA2-1B-1-FIRECO-TYPE PIC X(1). 04020036 10 PIWA2-1B-1-FIRECO-NUM PIC X(3). 04030036 05 PIWA2-1B-1-SPLIT-SCHOOL-FLAG PIC X. 04040036 05 PIWA2-1B-1-SCHOOLDIST PIC X(2). 04050036 05 PIWA2-1B-1-DYN-BLOCK PIC X(3). 04060036 05 PIWA2-1B-1-POLICE-PAT-BORO PIC X(2). 04070036 05 PIWA2-1B-1-FEATURE-TYPE PIC X. 04080036 05 PIWA2-1B-1-SEGMENT-TYPE PIC X. 04090036 05 PIWA2-1B-1-ALX PIC X. 04100036 05 PIWA2-1B-1-COINCIDENT-CNT PIC X. 04110036 05 FILLER PIC X(3). 04120036 05 PIWA2-1B-1-1990-CENSUSTRACT PIC X(6). 04130036 05 PIWA2-1B-1-2010-CENS-TRCT PIC X(6). 04140036 05 PIWA2-1B-1-2010-CENS-BLK PIC X(4). 04150036 05 PIWA2-1B-1-2010-CENS-BLK-SFX PIC X. 04160036 05 PIWA2-1B-1-2000-CENS-TRCT PIC X(6). 04170036 05 PIWA2-1B-1-2000-CENS-BLK PIC X(4). 04180036 05 PIWA2-1B-1-2000-CENS-BLK-SFX PIC X. 04190036 05 PIWA2-1B-1-NTA PIC X(4). 04200036 05 PIWA2-1B-1-SANIT-SNOW-PRRTY PIC X. 04210036 05 PIWA2-1B-1-SANIT-ORGANICS PIC X(5). 04220036 05 PIWA2-1B-1-SANIT-BULK-PICK-UP PIC X(5). 04230036 **** 05 PIWA2-1B-1-SANIT-RESERVED V16.4 PIC X(5). 04240036 05 PIWA2-1B-1-HURRICANE-ZONE PIC XX. 04250036 05 FILLER PIC X(11). 04260036 05 PIWA2-1B-1-TRUE-HNS PIC X(11). 04270036 05 PIWA2-1B-1-TRUE-B7SC PIC X(8). 04280036 05 PIWA2-1B-1-SEG-ID PIC X(7). 04290036 05 PIWA2-1B-1-CURVE-FLAG PIC X(1). 04300036 05 PIWA2-1B-1-LGCS PIC X(8). 04310036 05 PIWA2-1B-1-BOE-PTR PIC X(1). 04320036 05 PIWA2-1B-1-AZIMUTH PIC X(3). 04330036 05 PIWA2-1B-1-ORIENT PIC X(1). 04340036 05 PIWA2-1B-1-X-LOW PIC X(7). 04350036 05 PIWA2-1B-1-Y-LOW PIC X(7). 04360036 05 PIWA2-1B-1-Z-LOW PIC X(7). 04370036 05 PIWA2-1B-1-X-HI PIC X(7). 04380036 05 PIWA2-1B-1-Y-HI PIC X(7). 04390036 05 PIWA2-1B-1-Z-HI PIC X(7). 04400036 05 PIWA2-1B-1-X-CC PIC X(7). 04410036 05 PIWA2-1B-1-Y-CC PIC X(7). 04420036 05 PIWA2-1B-1-Z-CC PIC X(7). 04430036 05 PIWA2-1B-1-RADIUS PIC X(7). 04440036 05 PIWA2-1B-1-SECANT PIC X(1). 04450036 05 PIWA2-1B-1-ANGLE-FROM PIC X(5). 04460036 05 PIWA2-1B-1-ANGLE-TO PIC X(5). 04470036 05 PIWA2-1B-1-NODE-FROM PIC X(7). 04480036 05 PIWA2-1B-1-NODE-TO PIC X(7). 04490036 05 PIWA2-1B-1-VANITY-LION PIC X(10). 04500036 05 PIWA2-1B-1-SOS PIC X(1). 04510036 05 PIWA2-1B-1-SPLIT-LOHSN PIC X(11). 04520036 05 PIWA2-1B-1-TD PIC X(1). 04530036 05 PIWA2-1B-1-TR PIC X(10). 04540036 05 PIWA2-1B-1-CURVE-FRACTION PIC X(3). 04550036 05 PIWA2-1B-1-ROADWAY-TYPE PIC X(2). 04560036 05 PIWA2-1B-1-PHYICAL-ID PIC X(7). 04570036 05 PIWA2-1B-1-GENERIC-ID PIC X(7). 04580036 05 PIWA2-1B-1-NYPD-ID-FILL PIC X(7). 04590036 05 PIWA2-1B-1-FDNY-ID-FILL PIC X(7). 04600036 05 PIWA2-1B-1-BIKE-LANE-2 PIC X(2). 04610036 05 PIWA2-1B-1-BIKE-TRAFFIC-DIR PIC X(2). 04620036 05 FILLER PIC X(3). 04630036 **** 05 FILLER ** V17.1 ** PIC X(5) *** 04640036 **** 05 FILLER ** V16.4 ** PIC X(7) *** 04650036 **** 05 PIWA2-FN-1-BLOCKFACE-ID ** V16.1 ** PIC X(7) *** 04660036 05 PIWA2-1B-1-STREET-STATUS PIC X(1). 04670036 05 PIWA2-1B-1-STREET-WIDTH PIC X(3). 04680036 05 PIWA2-1B-1-STREET-WIDTH-IRR PIC X(1). 04690036 05 PIWA2-1B-1-BIKE-LANE PIC X(1). 04700036 05 PIWA2-1B-1-FED-CLASS-CODE PIC X(2). 04710036 05 PIWA2-1B-1-ROW-TYPE PIC X(1). 04720036 05 PIWA2-1B-1-LGC-LIST-2 PIC X(10). 04730036 05 PIWA2-1B-1-LEGACY-SEG-ID PIC X(7). 04740036 05 PIWA2-1B-1-LGC-LIST-FROM-1 PIC X(10). 04750036 05 PIWA2-1B-1-LGC-LIST-TO-1 PIC X(10). 04760036 05 PIWA2-1B-1-LGC-LIST-FROM-2 PIC X(10). 04770036 05 PIWA2-1B-1-LGC-LIST-TO-2 PIC X(10). 04780036 05 PIWA2-1B-1-NOCROSS-FLG PIC X(1). 04790036 05 PIWA2-1B-1-IND-SEG-LEN PIC X(5). 04800036 05 PIWA2-1B-1-NTA-NAME PIC X(75). 04810036 05 PIWA2-1B-1-USPS-CITY-NAME PIC X(25). 04820036 05 PIWA2-1B-1-LATITUDE PIC X(9). 04830036 05 PIWA2-1B-1-LONGITUDE PIC X(11). 04840036 05 PIWA2-1B-1-SEG-FROM-NODE PIC X(7). 04850036 05 PIWA2-1B-1-SEG-TO-NODE PIC X(7). 04860036 05 PIWA2-1B-1-SEG-FROM-XYZ PIC X(21). 04870036 05 PIWA2-1B-1-SEG-TO-XYZ PIC X(21). 04880036 05 PIWA2-1B-1-BLOCKFACE-ID PIC X(10). 04890036 05 PIWA2-1B-1-NBR-TRAVEL-LANES PIC X(2). 04900036 05 PIWA2-1B-1-NBR-PARK-LANES PIC X(2). 04910036 05 PIWA2-1B-1-NBR-TOTAL-LANES PIC X(2). 04920036 05 PIWA2-1B-1-STREET-WIDTH-MAX PIC X(3). 04930036 05 PIWA2-1B-1-SPEED-LIMIT PIC X(2). 04940036 05 PIWA2-1B-1-PUMA-CODE PIC X(5). 04941039 05 PIWA2-1B-1-POLICE-SECTOR PIC X(4). 04942040 05 PIWA2-1B-1-POLICE-SRVC-AREA PIC X. 04943042 05 PIWA2-1B-1-FILL500 PIC X(240). 04944040 **** 05 PIWA2-1B-1-FILL500 ** V18.3 ** PIC X(245). 04945040 **** 05 PIWA2-1B-1-FILL500 ** V18.1 ** PIC X(250). 04960039 **** 05 PIWA2-1B-1-FILL500 ** V17.4 ** PIC X(252). 04961039 **** 05 PIWA2-1B-1-FILL500 ** V16.4 ** PIC X(255). 04970036 **** 05 PIWA2-1B-1-FILL500 ** V16.1 ** PIC X(271) ** 04980036 **** 05 PIWA2-1B-1-FILL500 ** V15,3 ** PIC X(327) ** 04990036 ****************************************************************/ 05000036 * ***/ 05010036 *THE FOLLOWING FIELDS ARE AN ADDITION TO 1/1E ***/ 05020036 ****************************************************************/ 05030036 05 PIWA2-1B-1-REASON-CODE PIC X(1). 05040036 05 PIWA2-1B-1-REASON-CODE-QUAL PIC X(1). 05050036 05 PIWA2-1B-1-WARN-CODE PIC X(2). 05060036 05 PIWA2-1B-1-RETURN-CODE PIC X(2). 05070036 05 PIWA2-1B-1-NUM-X-STS-LO-END PIC X(1). 05080036 05 PIWA2-1B-1-LO-B7SC OCCURS 5 TIMES PIC X(8). 05090036 05 PIWA2-1B-1-NUM-X-STS-HI-END PIC X(1). 05100036 05 PIWA2-1B-1-HI-B7SC OCCURS 5 TIMES PIC X(8). 05110036 05 PIWA2-1B-1-LO-ST-NAME OCCURS 5 TIMES PIC X(32). 05120036 05 PIWA2-1B-1-HI-ST-NAME OCCURS 5 TIMES PIC X(32). 05130036 05 PIWA2-1B-1-BOE-B7SC PIC X(8). 05140036 05 PIWA2-1B-1-BOE-ST-NAME PIC X(32). 05150036 05 PIWA2-1B-1-FILL600 PIC X(52). 05160036 05170036 05 PIWA2-1B-1A-ACCESS-KEY PIC X(21). 05180036 05 PIWA2-1B-1A-CONT-PARITY PIC X. 05190036 05 PIWA2-1B-1A-LOW-HOUSENUM PIC X(11). 05200036 05 PIWA2-1B-1A-ALTKEY-1. 05210036 10 PIWA2-1B-1A-ALTKEY-1-BORO PIC X. 05220036 10 PIWA2-1B-1A-ALTKEY-1-TAXBLOCK PIC X(5). 05230036 10 PIWA2-1B-1A-ALTKEY-1-TAXLOT PIC X(4). 05240036 05 FILLER PIC X. 05250036 05 PIWA2-1B-1A-SCC PIC X(1). 05260036 05 FILLER PIC X. 05270036 05 PIWA2-1B-1A-GENERAL-LOT-INFO. 05280036 10 PIWA2-1B-1A-RPAD-BLDG-CLASS PIC X(2). 05290036 10 PIWA2-1B-1A-CORNER-CODE PIC X(2). 05300036 10 PIWA2-1B-1A-TOT-NBR-BLDG PIC X(4). 05310036 10 PIWA2-1B-1A-NUM-OF-BLOCKFACES PIC X(2). 05320036 10 PIWA2-1B-1A-INTERIOR-FLAG PIC X. 05330036 10 PIWA2-1B-1A-VACANT-FLAG PIC X. 05340036 10 PIWA2-1B-1A-IRREG-FLAG PIC X. 05350036 05 PIWA2-1B-1A-ALT-BORO-FLAG PIC X. 05360036 05 PIWA2-1B-1A-OVERFLOW-FLAG PIC X(1). 05370036 05 PIWA2-1B-1A-STROLL-KEY PIC X(19). 05380036 05 FILLER-GSS PIC X. 05390036 05 PIWA2-1B-1A-BLDG-ID-NUM PIC X(7). 05400036 05 PIWA2-1B-1A-CONDO-LOT-FLAG PIC X. 05410036 05 FILLER PIC X. 05420036 05 PIWA2-1B-1A-RPAD-COND-NUM PIC X(4). 05430036 05 FILLER PIC X(7). 05440036 05 PIWA2-1B-1A-CONDO-BILLING-BBL PIC X(10). 05450036 05 FILLER PIC X. 05460036 05 PIWA2-1B-1A-CONDO-BILL-BBL-SCC PIC X(1). 05470036 05 PIWA2-1B-1A-CONDO-LOW-BBL PIC X(10). 05480036 05 FILLER PIC X. 05490036 05 PIWA2-1B-1A-CONDO-HIGH-BBL PIC X(10). 05500036 05 FILLER PIC X. 05510036 05 FILLER PIC X(15). 05520036 05 PIWA2-1B-1A-CO-OP-NBR PIC X(4). 05530036 05 PIWA2-1B-1A-SANBORN-BVOLPAGE. 05540036 10 PIWA2-1B-1A-SANBORN-BORO PIC X(1). 05550036 10 PIWA2-1B-1A-SANBORN-VOL-PAGE. 05560036 15 PIWA2-1B-1A-SANBORN-VOL-NUM PIC X(3). 05570036 15 PIWA2-1B-1A-SANBORN-PAGE-NUM PIC X(4). 05580036 05 PIWA2-1B-1A-COMMERC-DIST PIC X(5). 05590036 05 PIWA2-1B-1A-DOF-MAP-BOROUGH PIC X. 05600036 05 PIWA2-1B-1A-TAX-MAP-NBR PIC X(4). 05610036 05 FILLER-FOR-TAX-MAP-PAGE PIC X(4). 05620036 05 FILLER PIC X(3). 05630036 05 PIWA2-1B-1A-LATITUDE PIC X(9). 05640036 05 PIWA2-1B-1A-LONGITUDE PIC X(11). 05650036 05 PIWA2-1B-1A-X-COORD PIC X(7). 05660036 05 PIWA2-1B-1A-Y-COORD PIC X(7). 05670036 05 PIWA2-1B-1A-BID PIC X(6). 05680036 05 PIWA2-1B-1A-TPAD-BIN-ST PIC X. 05690036 05 PIWA2-1B-1A-TPAD-NEW-BIN PIC X(7). 05700036 05 PIWA2-1B-1A-TPAD-NEW-BIN-ST PIC X. 05710036 05 PIWA2-1B-1A-TPAD-CONFLICT PIC X. 05720036 05 PIWA2-1B-1A-DCP-ZONE-MAP PIC X(3). 05721038 05 FILLER PIC X(6). 05722038 05 FILLER-GSS PIC X(8). 05740036 05 PIWA2-1B-1A-REASON-CODE PIC X(1). 05750036 05 PIWA2-1B-1A-REASON-CODE-QUAL PIC X(1). 05760036 05 PIWA2-1B-1A-WARN-CODE PIC X(2). 05770036 05 PIWA2-1B-1A-RETURN-CODE PIC X(2). 05780036 05 FILLER PIC X(108). 05790036 05 PIWA2-1B-1A-NUM-OF-ADDR PIC X(4). 05800036 05 PIWA2-1B-1A-ADDR-LIST OCCURS 21 TIMES. 05810036 10 PIWA2-1B-1A-LIST-LOW-HOUSENUM PIC X(16). 05820036 10 PIWA2-1B-1A-LIST-HI-HOUSENUM PIC X(16). 05830036 10 PIWA2-1B-1A-LIST-BORO PIC X. 05840036 10 PIWA2-1B-1A-LIST-5SC PIC X(5). 05850036 10 PIWA2-1B-1A-LIST-LGC PIC X(2). 05860036 10 PIWA2-1B-1A-LIST-BIN PIC X(7). 05870036 10 PIWA2-1B-1A-LIST-SOS PIC X. 05880036 10 PIWA2-1B-1A-ADDR-TYPE PIC X. 05890036 10 PIWA2-1B-1A-TPAD-STATUS PIC X. 05900036 10 PIWA2-1B-1A-ST-NAME PIC X(32). 05910036 10 FILLER PIC X(34). 05920028 05930010 P2COB3S COPY File ****************************************************************** 00000100 *** THIS IS THE COBOL STRUCTURE FOR GEOSUPPORT SYSTEM PLATFORM ** 00000200 *** INDEPENDENT WORK AREA 2 FOR FUNCTION 3S. ** 00000300 *** COPY FILE - P2COB3S. 09/17/97 ** 00000400 ****************************************************************** 00000500 05 PIWA2-3S-ACCESS-KEY. 00000600 10 FILLER-GSS PIC X(2). 00000700 10 PIWA2-3S-PORS-STNAME-IND PIC X. 00000800 10 PIWA2-3S-BORO PIC X. 00000900 10 PIWA2-3S-5SC PIC X(5). 00001000 10 PIWA2-3S-LGC PIC X(2). 00001100 10 FILLER PIC X(10). 00001200 05 PIWA2-3S-NUM-OF-INTERSECTS PIC X(3). 00001300 05 PIWA2-3S-LIST-OFINTERSECTS OCCURS 350 TIMES. 00001400 10 PIWA2-3S-MARBLE-RIKERS-FLAG PIC X. 00001500 10 PIWA2-3S-DISTANCE PIC X(5). 00001600 10 PIWA2-3S-GAP-FLAG PIC X. 00001700 10 FILLER PIC X(7). 00001800 10 PIWA2-3S-NUM-OF-STR PIC X. 00001900 10 PIWA2-3S-B7SC PIC X(8) 00002000 OCCURS 5 TIMES. 00002100 P2COBAP COPY File ***************************************************************** 00010006 ** MARCH 2015 YNL - COPYLIB AP / APX V15.2** 00020028 ** THIS IS THE COBOL STRUCTURE FOR GEOSUPPORT SYSTEM PLATFORM ** 00030006 ** INDEPENDENT WORK AREA 2 FOR FUNCTION: AP. ** 00040028 ***************************************************************** 00050006 ***************************************************************** 00060006 00070006 03 PIWA2 PIC X(2800). 00080024 00090006 *************************************************************** 00100023 *** FOR: FUNCTION AP ******** ADDAP V15.2 ****** 00110024 00120023 03 PIWA2-FUNCTIONAP REDEFINES PIWA2. 00130024 05 PIWA2-AP-ACCESS-KEY PIC X(21). 00140024 05 PIWA2-AP-CONT-PARITY PIC X. 00150024 05 PIWA2-AP-LOW-HOUSENUM PIC X(11). 00160024 05 PIWA2-AP-ALTKEY-1. 00170024 10 PIWA2-AP-ALTKEY-1-BORO PIC X. 00180024 10 PIWA2-AP-ALTKEY-1-TAXBLOCK PIC X(5). 00190024 10 PIWA2-AP-ALTKEY-1-TAXLOT PIC X(4). 00200024 05 FILLER PIC X(7). 00210025 05 PIWA2-AP-TOT-NBR-BLDG PIC X(4). 00220024 05 FILLER PIC X(26). 00230023 05 FILLER-GSS PIC X. 00240023 05 PIWA2-AP-BLDG-ID-NUM PIC X(7). 00250024 05 PIWA2-AP-CONDO-LOT-FLAG PIC X. 00260024 05 FILLER PIC X. 00270023 05 PIWA2-AP-RPAD-COND-NUM PIC X(4). 00280024 05 FILLER PIC X(7). 00290023 05 PIWA2-AP-CONDO-BILLING-BBL PIC X(10). 00300024 05 FILLER PIC X(2). 00310025 05 PIWA2-AP-CONDO-LOW-BBL PIC X(10). 00320024 05 FILLER PIC X. 00330023 05 PIWA2-AP-CONDO-HIGH-BBL PIC X(10). 00340024 05 FILLER PIC X(16). 00350025 05 PIWA2-AP-CO-OP-NBR PIC X(4). 00360024 05 FILLER PIC X(22). 00370031 05 PIWA2-AP-RESERVED PIC X(3). 00380031 05 PIWA2-AP-LATITUDE PIC X(9). 00400024 05 PIWA2-AP-LONGITUDE PIC X(11). 00410024 05 PIWA2-AP-X-COORD PIC X(7). 00420024 05 PIWA2-AP-Y-COORD PIC X(7). 00430024 05 FILLER PIC X(16). 00440029 05 PIWA2-AP-AP-ID PIC X(9). 00450029 05 FILLER-GSS PIC X(8). 00460023 05 PIWA2-AP-NUM-OF-ADDR PIC X(4). 00470024 05 PIWA2-AP-ADDR-LIST OCCURS 21 TIMES. 00480024 10 PIWA2-AP-LIST-LOW-HOUSENUM PIC X(16). 00490024 10 PIWA2-AP-LIST-HI-HOUSENUM PIC X(16). 00500024 10 PIWA2-AP-LIST-BORO PIC X. 00510024 10 PIWA2-AP-LIST-5SC PIC X(5). 00520024 10 PIWA2-AP-LIST-LGC PIC X(2). 00530024 10 PIWA2-AP-LIST-BIN PIC X(7). 00540024 10 PIWA2-AP-LIST-SOS PIC X. 00550024 10 PIWA2-AP-ADDR-TYPE PIC X. 00560024 10 FILLER PIC X(4). 00570024 00580024 *************************************************************** 00590024 *** FOR: FUNCTION AP EXTENDED ******** ADDAP V15.2 ******** 00600026 00610024 03 PIWA2-FUNCTIONAPX REDEFINES PIWA2. 00620024 05 PIWA2-APX-ACCESS-KEY PIC X(21). 00630024 05 PIWA2-APX-CONT-PARITY PIC X. 00640024 05 PIWA2-APX-LOW-HOUSENUM PIC X(11). 00650024 05 PIWA2-APX-ALTKEY-1. 00660024 10 PIWA2-APX-ALTKEY-1-BORO PIC X. 00670024 10 PIWA2-APX-ALTKEY-1-TAXBLOCK PIC X(5). 00680024 10 PIWA2-APX-ALTKEY-1-TAXLOT PIC X(4). 00690024 05 FILLER PIC X(7). 00700025 05 PIWA2-APX-TOT-NBR-BLDG PIC X(4). 00710024 05 FILLER PIC X(26). 00720024 05 FILLER-GSS PIC X. 00730024 05 PIWA2-APX-BLDG-ID-NUM PIC X(7). 00740024 05 PIWA2-APX-CONDO-LOT-FLAG PIC X. 00750024 05 FILLER PIC X. 00760024 05 PIWA2-APX-RPAD-COND-NUM PIC X(4). 00770024 05 FILLER PIC X(7). 00780024 05 PIWA2-APX-CONDO-BILLING-BBL PIC X(10). 00790024 05 FILLER PIC X(2). 00800025 05 PIWA2-APX-CONDO-LOW-BBL PIC X(10). 00810024 05 FILLER PIC X. 00820024 05 PIWA2-APX-CONDO-HIGH-BBL PIC X(10). 00830024 05 FILLER PIC X(16). 00840025 05 PIWA2-APX-CO-OP-NBR PIC X(4). 00850024 05 FILLER PIC X(18). 00860024 05 FILLER-FOR-TAX-MAP-PAGE PIC X(4). 00870024 05 FILLER PIC X(3). 00880024 05 PIWA2-APX-LATITUDE PIC X(9). 00890024 05 PIWA2-APX-LONGITUDE PIC X(11). 00900024 05 PIWA2-APX-X-COORD PIC X(7). 00910024 05 PIWA2-APX-Y-COORD PIC X(7). 00920024 05 FILLER PIC X(16). 00930029 05 PIWA2-APX-AP-ID PIC X(9). 00940029 05 FILLER-GSS PIC X(8). 00950024 05 PIWA2-APX-REASON-CODE PIC X(1). 00960024 05 PIWA2-APX-REASON-CODE-QUAL PIC X(1). 00970024 05 PIWA2-APX-WARN-CODE PIC X(2). 00980024 05 PIWA2-APX-RETURN-CODE PIC X(2). 00990024 05 PIWA2-APX-FILLER PIC X(108). 01000024 05 PIWA2-APX-NUM-OF-ADDR PIC X(4). 01010024 05 PIWA2-APX-ADDR-LIST OCCURS 21 TIMES. 01020024 10 PIWA2-APX-LIST-LOW-HOUSENUM PIC X(16). 01030024 10 PIWA2-APX-LIST-HI-HOUSENUM PIC X(16). 01040024 10 PIWA2-APX-LIST-BORO PIC X. 01050024 10 PIWA2-APX-LIST-5SC PIC X(5). 01060024 10 PIWA2-APX-LIST-LGC PIC X(2). 01070024 10 PIWA2-APX-LIST-BIN PIC X(7). 01080024 10 PIWA2-APX-LIST-SOS PIC X. 01090024 10 PIWA2-APX-ADDR-TYPE PIC X. 01100024 10 FILLER PIC X. 01110024 10 PIWA2-APX-ST-NAME PIC X(32). 01120024 10 FILLER PIC X(34). 01130024 01140024 ASSEMBLER COPY Files (COW) */********************************************************************/ 00010000 */***** THIS IS GEOSUPPORT INFORMATION SYSTEM COPY FILE P1BAL, ***/ 00020000 */***** CONTAINING THE Platform Independent LAYOUT OF WORK AREA 1 ***/ 00030000 */********************************************************************/ 00040000 */***** Last Updated: August 2016 - Unit added by meb ***/ 00040136 */***** Last Updated: December 2013 ***/ 00040336 */********************************************************************/ 00041014 P1BAL DS 0H 00050000 */**************************** 00060000 */***** INPUT FIELDS ******* 00070000 */**************************** 00080000 P1IFUNC DS 0CL2 FUNCTION CODE 00090000 P1IFUNC1 DS CL1 FUNCTION CODE, BYTE 1 00100000 P1IFUNC2 DS CL1 FUNCTION CODE, BYTE 2 00110000 SPACE 00120000 P1IHSE# DS CL16 UNFORMATED HSNUM FOR FUNCTION: 1; 1A; 1E. 00130001 P1IHSE#S DS CL11 HOUSE NUMBER (SORT FORMAT) 00140005 * The Following two fields are for Fn 5 00150001 P1ILHS# DS CL16 UNFORMATED HSNUM 00160001 P1ILHS#S DS CL11 HOUSE NUMBER (SORT FORMAT) 00170005 SPACE 00180001 P1IBCD1 DS 0CL11 11 Digit Street Code for Street one 00190000 P1IBORO1 DS CL1 BORO CODE (1=MN;2=BX;3=BK;4=QN;5=SI) 00200000 P1ICDE1 DS CL10 STREET CODE FOR STREET ONE 00210000 P1ISTRT1 DS CL32 STREET NAME 1 00220000 SPACE 00230000 P1IBCD2 DS 0CL11 11 Digit Street Code for Street two 00240000 P1IBORO2 DS CL1 BORO CODE OF CROSS ST. 1 00250000 P1ICDE2 DS CL10 STREET CODE FOR STREET TWO 00260000 P1ISTRT2 DS CL32 STREET NAME 2 00270000 SPACE 00280000 P1IBCD3 DS 0CL11 11 Digit Street Code for Street Three 00290001 P1IBORO3 DS CL1 BORO CODE OF CROSS ST. 2 00300000 P1ICDE3 DS CL10 STREET CODE FOR STREET THREE 00310000 P1ISTRT3 DS CL32 STREET NAME 3 00320000 SPACE 00330000 P1IBBL DS 0CL10 BORO,BLOCK,LOT FOR \"BL\" FUNCTION 00340002 P1IBLBOR DS CL1 BORO FOR FUNCTION \"BL\" 00350000 P1IBLOCK DS CL5 TAX BLOCK - FOR FUNCTION \"BL\" 00360000 P1ILOT DS CL4 TAX LOT - FOR FUNCTION \"BL\" 00370000 P1ITLV# DS CL1 Tax Lot Version Number (Not Implemented) 00380000 P1IBIN DS CL7 BUILDING ID NUMBER 00390000 P1ICOMP DS CL1 COMPASS DIRECTION (TYPES 2, 3C & 3S) 00400010 P1ICOMP2 DS CL1 COMPASS DIRECTION (TYPE 3S) 00401010 P1INODE DS CL7 Node as inpur for Fn 2 00410032 P1IPLIND DS CL1 Platform Indicator 00420003 * Blank = St'd Mainframe 00430000 * P = Platform Independent 00440000 P1IZIPIN DS CL5 Input Zip Code 00450036 P1IUNIT DS CL14 Input Unit V16.4 00451036 DS CL82 Filler 00460036 SPACE 00470000 */**************************** 00480000 */***** FLAGS ******* 00490000 */**************************** 00500000 SPACE 00510000 P1ILONG DS CL1 'L' IF LONG WORKAREA 2 FOR FUNC 1A/BL 00520000 P1IJUST DS CL1 HOUSE NUMBER JUSTIFICATION FLAG 00520109 P1IHNL DS CL2 House Number Length 00521009 P1IHNBRF DS CL1 House Number Override Flag - *, $ or blank 00522009 P1ISNL DS CL2 LENGTH STREET NAME IS TO BE NORMALIZED TO 00523009 P1ICMPCT DS CL1 'C' IF STREET NAMES ARE TO BE COMPACTED 00524009 P1IEXPND DS CL1 EXPANDED FORMAT FLAG 00530009 P1IRBRQS DS CL1 ROADBED REQUEST SWITCH 00550013 P1IRES01 DS CL1 RESERVED FOR INTERNAL USE 00581015 P1ISEGAX DS CL1 Segment Auxiliary Switch 00582018 P1IBRFLG DS CL1 BROWSE FLAG P=PRIMARY ONLY F=PRINCIPAL ONLY 00583020 P1IRSTON DS CL1 Real Street Only Flag used with Function 3S 00584021 P1ITPADS DS CL1 Read TPAD for PAD Processing 00585023 P1IMODES DS CL1 Mode Switch 00586027 * X = Extended 00586131 P1IWTOS DS CL1 WTO Switch N=No WTO 00586231 DS CL29 FILLER 00590031 SPACE 00600000 */***************************** 00610000 */***** OUTPUT FIELDS ******* 00620000 */***************************** 00630000 SPACE 00640000 P1OBORO DS CL9 BORO NAME 00650000 P1OHSE# DS CL16 HOUSE NUMBER, NORMALIZED, DISPLAY FORMAT 00660000 P1OHSE#S DS CL11 HOUSE NUMBER (SORT FORMAT) 00670005 P1OBCD1 DS 0CL11 11 Digit Street Code for Street one 00680000 P1OBORO1 DS CL1 BORO CODE (1=MN;2=BX;3=BK;4=QN;5=SI) 00690000 P1OCDE1 DS CL10 STREET CODE FOR STREET ONE 00700000 P1OSTRT1 DS CL32 STREET 1 NAME, NORMALIZED 00710004 SPACE 00720000 P1OBCD2 DS 0CL11 11 Digit Street Code for Street two 00730000 P1OBORO2 DS CL1 BORO CODE OF CROSS ST. 1 00740000 P1OCDE2 DS CL10 STREET CODE FOR STREET TWO 00750000 P1OSTRT2 DS CL32 STREET 2 NAME, NORMALIZED 00760004 SPACE 00770000 P1OBCD3 DS 0CL11 11 Digit Street Code for Street three 00780000 P1OBORO3 DS CL1 BORO CODE OF street 3 00790000 P1OCDE3 DS CL10 STREET CODE FOR STREET THREE 00800000 P1OSTRT3 DS CL32 STREET 3 NAME, NORMALIZED 00810004 SPACE 00820000 P1OBBL DS 0CL11 BORO,BLOCK,LOT FOR \"BL\" FUNCTION 00830000 P1OBLBOR DS CL1 BORO FOR FUNCTION \"BL\" 00840000 P1OBLOCK DS CL5 TAX BLOCK - FOR FUNCTION \"BL\" 00850000 P1OLOT DS CL4 TAX LOT - FOR FUNCTION \"BL\" 00860000 P1OTLV# DS CL1 Tax Lot Version Number (Not Implemented) 00870000 P1OLHSE DS CL16 LOW HOUSE NUMBER DISPLAY FORM 00880006 P1OLHSES DS CL11 LOW HOUSE NUMBER SORT FORM 00881006 P1OBIN DS CL7 Output Building Identification Number 00882011 P1OATTR3 DS CL3 Attribute Bytes - Internal Use 00883011 SPACE 00890000 P1OREAS2 DS CL1 2ND REASON CODE 00891024 P10RCQ2 DS CL1 2ND REASON CODE TPAD QUALIFIER 00892130 P1OWARN2 DS CL2 2ND WARNING RETURN CODE-NOT IMPL 00892226 P1ORC2 DS CL2 2ND GEOSUPPORT RETURN CODE 00893025 P1OERR2 DS CL80 2ND ERROR MESSAGE 00894024 P1ONODE DS CL7 NODE NORMALIZED FOR FN 2 00895032 P1OUNITS DS 0CL14 UNIT IN SORT FORMAT 00896037 P1OUNITT DS CL4 UNIT TYPE 00897036 P1OUNITI DS CL10 UNIT IDENTIFIER 00898036 P1OUNITD DS CL14 UNIT IN DISPLAY FORMAT 00899036 DS CL11 FILLER 00900036 P1ONIN DS CL6 NAP IDENTIFICATION NUMBER 00900107 P1OATTRB DS CL1 ATTRIBUTE BYTE FROM SND 00901006 P1OREASN DS CL1 REASON CODE 00910000 P10RCQ DS CL1 REASON CODE TPAD QUALIFIER 00920030 P1OWARNC DS CL2 WARNING RETURN CODE 00930025 P1ORC DS CL2 GEOSUPPORT RETURN CODE 00940025 P1OERROR DS CL80 ERROR MESSAGE 00950000 P1O#NAME DS CL2 NUMBER OF STREET NAMES 00960002 P1OBRWSE DS CL80 10 B7SC'S 00970002 P1ONAMES DS 10CL32 UP TO 10 STREET NAMES 00980002 P1END EQU * 00990000 P1LENGTH EQU P1END-P1BAL LENGTH OF P1BAL 01000000 P2BAL COPY File */********************************************************************/ 00010092 */***** THIS IS GEOSUPPORT INFORMATION SYSTEM COPY FILE P2BAL, ***/ 00020092 */***** CONTAINING THE LAYOUT OF WORK AREA 2 FOR FUNCTIONS ***/ 00030092 */***** 1, 1E, 2, 2C, 3, 3C. PLEASE NOTE THAT FUNCTIONS 2 AND 2C ***/ 00040092 */***** SHARE A SINGLE WORK AREA 2 LAYOUT. ***/ 00050092 */***** ADDED 3 EXTENDED (MODE OF X) 6/2011 ***/ 00060092 */***** ADDED 2 WIDE (2W ) 2/2014 ***/ 00070092 */***** ADDED 2 byte field \"Police Patrol Borough\" for functions: ***/ 00080092 */***** 1/1E; 2/2W; 3/3X-left side;3/3X-right side; 3C/3CX. ***/ 00090092 */***** 8/2014 ***/ 00100092 */***** ADDED 2 fields: \"Bike Lane 2\" and \"Street Width Maximum\" ***/ 00110092 */***** for functions 3X/3CX 9/2016 ***/ 00120092 */***** Replaced \"Sanitation Reserved\" with \"Sanitation Bulk ***/ 00130098 */***** Pick Up\" for function 1 10/2016 ***/ 00140092 */***** ADDED 2 bytes field \"Bike Traffic Direction\" for ***/ 00150092 */***** for functions 1/1E (extended),1B,3X,3CX 12/2016 ***/ 00160093 */***** ADDED 2 bytes field \"Speed Limit\" 09/2017 ***/ 00161093 */***** for functions 3,3C (extended). ***/ 00162094 */***** ADDED 5 bytes field \"PUMA Code\" for functions: ***/ 00163097 */***** 3/3C (extended). 12/2017 ***/ 00164097 */***** ADDED 4 bytes field \"Police Sector\" for functions: ***/ 00165099 */***** 2,2W, 3/3C (extended). 06/2018 ***/ 00166099 */********************************************************************/ 00170092 */***** Last Date Modified - FEBRUARY 2016 ***/ 00180092 */********************************************************************/ 00190092 P2BAL DS 0H 00200092 P2ACCKEY DS CL21 ACCESS KEY 00210092 P2LAYOUT DS 0CL279 00220092 P2F1CPAR DS CL1 CONTINUOUS PARITY INDICATOR 00230092 P2F1LHNS DS CL11 LOW HOUSE NUMBER 00240092 P2F1HHNS DS CL11 HIGH HOUSE NUMBER 00250092 P2F1LGC DS CL2 DCP Prefered LGC (Fn 1) - BOE (Fn 1E) 00260092 P2F1#STL DS CL1 NUMBER OF CROSS STREETS AT LOW END 00270092 P2F1CDEL DS CL30 UP TO FIVEPB5SC'S FOR LOW END 00280092 P2F1#STH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 00290092 P2F1CDEH DS CL30 UP TO FIVE B5SC'S FOR HIGH END 00300092 P2F1LBOR DS CL1 LION BOROUGH CODE 00310092 P2F1FACE DS CL4 LION FACE CODE 00320092 P2F1SEQ DS CL5 LION SEQUENCE NUMBER 00330092 P2F1SPAD DS CL1 SPECIAL ADDRESS FLAG 00340092 P2F1SOS DS CL1 SIDE OF STREET INDICATOR 00350092 P2F1SEGL DS CL5 SEGMENT LEGNTH 00360092 P2F1XCOR DS CL7 X COORDINATE 00370092 P2F1YCOR DS CL7 Y COORDINATE 00380092 P2F1ZCOR DS CL7 Z Coordinate - Not Impl. 00390092 P2F1RES1 DS CL1 RESERVED FOR DCP/GSS USE 00400092 P2F1MHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 00410092 P2F1SLA DS CL1 STREET LIGHT AREA 00420092 P2F1CD DS 0CL3 COMMUNITY DISTRICT 00430092 P2F1CDB DS CL1 COMMUNITY DISTRICT BORO 00440092 P2F1CDN DS CL2 COMMUNITY DISTRICT NUMBER 00450092 P2F1ZIP DS CL5 ZIP CODE 00460092 P2F1EED DS CL3 ELECTION DISTRICT 00470092 P2F1EAD DS CL2 ASSEMBLY DISTRICT 00480092 P2F1ESED DS CL1 SPLIT E.D. FLAG 00490092 * Next four fields are valid only for Fn 1E 00500092 P2F1ECON DS CL2 CONGRESSIONAL DISTRICT 00510092 P2F1ESEN DS CL2 SENATORIAL DISTRICT 00520092 P2F1ECIV DS CL2 CIVIL COURT DISTRICT 00530092 P2F1ECOU DS CL2 CITY COUNCIL DISTRICT 00540092 * 00550092 P2F1HCD DS CL2 HEALTH CODE DISTRICT 00560092 P2F1HA DS CL4 HEALTH AREA 00570092 P2F1SAND DS CL3 SANITATION DISTRICT 00580092 P2F1SANT DS CL2 SANITATION DEPT SUBSECTION 00590092 P2F1SREG DS CL5 SANITATION REGULAR PICK-UP 00600092 P2F1SREC DS CL3 SANITATION RECYCLE PICK-UP 00610092 P2F1POL DS 0CL4 POLICE DISTRICT 00620092 P2F1PBC DS CL1 POLICE PATROL BORO COMMAND 00630092 P2F1POP DS CL3 POLICE PRECINCT 00640092 P2F1FS DS CL2 FIRE DIVISION 00650092 P2F1FB DS CL2 FIRE BATTALION 00660092 P2F1FC DS 0CL4 FIRE COMPANY 00670092 P2F1FCT DS CL1 FIRE COMPANY TYPE 00680092 P2F1FCN DS CL3 FIRE COMPANY NUMBER 00690092 P2F1FILS DS CL1 FILLER_WAS SPLIT SCHOOL DISTRICT FLAG 00700092 P2F1SCH DS CL2 SCHOOL DISTRICT 00710092 P2F1CPB DS CL3 DYNAMIC BLOCK/ATOMIC POLYGON 00720092 P2F1PPB DS CL2 Police Patrol Borough 00730092 P2F1FEAT DS CL1 Feature Type Code 00740092 P2F1STC DS CL1 SEGMENT TYPE CODE 00750092 P2F1ALX DS CL1 A=Segment split by Alley 00760092 * X=Cross Streets modified 00770092 P2F1CSC DS CL1 Coincident Segment Count 00780092 DS CL2 Filler 00790092 P2F1CTB DS CL1 CENSUS TRACT BOROUGH 00800092 P2F1CT90 DS CL6 1990 CENSUS TRACT 00810092 P2F1CT10 DS CL6 2010 CENSUS TRACT 00820092 P2F1BL10 DS CL4 2010 CENSUS BLOCK 00830092 P2F1BLS1 DS CL1 2010 CENSUS BLOCK SUFFIX NOT IMPLEMENTED 00840092 P2F1T00 DS CL6 2000 CENSUS TRACT 00850092 P2F1B00 DS CL4 2000 CENSUS BLOCK 00860092 P2F1S00 DS CL1 2000 CENSUS BLOCK SUFFIX 00870092 P2F1NTA DS CL4 Neighborhood Tabulation Area 00880092 P2F1SP DS CL1 Sanitation Street Snow Priority 00890092 P2F1SORG DS CL5 Sanitation Organics Pick Up 00900092 P2F1SBLK DS CL5 Sanitation Bulk Pick Up 00910092 * DS CL5 Sanitation Reserved 00920092 P2F1HZ DS CL2 Hurricane Evacuation Zone 00930092 DS CL11 Filler 00940092 P2F1UHNS DS CL11 Underlying HNS 00950092 P2F1B7SC DS CL8 \"True\" Borough 7 Digit Street Code 00960092 P2F1SEGT DS CL7 Segment Identifier 00970092 P2F1CURV DS CL1 Curve Flag 00980092 P2F1END EQU * 00990092 P2F1LEN EQU P2F1END-P2BAL Length of WA 2 for Fn 1 01000092 * 01010092 ******************************************************************** 01020092 ORG P2LAYOUT RESET LOCATION COUNTER FOR FUNCTION 2 01030092 ******************************************************************** 01040092 * 01050092 P2F2DUPI DS CL1 DUPLICATE INTERSECT FLAG 01060092 P2F2LGC1 DS CL2 STREET 1 PREFERRED LGC 01070092 P2F2LGC2 DS CL2 STREET 2 PREFERRED LGC 01080092 P2F2#INT DS CL1 NUMBER OF INTERSECTING STREETS 01090092 P2F2CODE DS CL30 INTERSECTING B5SC'S 01100092 P2F2CDUP DS CL1 COMPASS DIRECTION FOR TWO LOWEST 01110092 P2F2AP DS CL3 ATOMIC POLYGON 01120092 DS CL2 FILLER 01130092 P2F2NDNB DS CL7 LION NODE NUMBER 01140092 P2F2XCOR DS CL7 X COORDINATE 01150092 P2F2YCOR DS CL7 Y COORDINATE 01160092 P2F2ZCOR DS CL7 Z Coordinate - Not Impl. 01170092 P2F2SVP1 DS 0CL8 FIRST SANBORN BOROUGH, PAGE, VOLUME 01180092 P2F2SB1 DS CL1 FIRST SANBORN BOROUGH CODE 01190092 P2F2SP1 DS CL3 FIRST SANBORN PAGE 01200092 P2F2SV1 DS CL4 FIRST SANBORN VOLUME 01210092 P2F2SVP2 DS 0CL8 SECOND SANBORN BOROUGH, PAGE, VOLUME 01220092 P2F2SB2 DS CL1 SECOND SANBORN BOROUGH CODE 01230092 P2F2SP2 DS CL3 SECOND SANBORN PAGE 01240092 P2F2SV2 DS CL4 SECOND SANBORN VOLUME 01250092 P2F2MHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 01260092 P2F2SLA DS CL1 STREET LIGHT AREA 01270092 P2F2CD DS 0CL3 COMMUNITY DISTRICT 01280092 P2F2CDB DS CL1 COMMUNITY DISTRICT BORO 01290092 P2F2CDN DS CL2 COMMUNITY DISTRICT NUMBER 01300092 P2F2ZIP DS CL5 ZIP CODE 01310092 P2F2HA DS CL4 HEALTH AREA 01320092 P2F2POL DS 0CL4 POLICE DISTRICT 01330092 P2F2PBC DS CL1 POLICE PATROL BORO COMMAND 01340092 P2F2POP DS CL3 POLICE PRECINCT 01350092 P2F2FS DS CL2 FIRE DIVISION 01360092 P2F2FB DS CL2 FIRE BATTALION 01370092 P2F2FC DS 0CL4 FIRE COMPANY 01380092 P2F2FCT DS CL1 FIRE COMPANY TYPE 01390092 P2F2FCN DS CL3 FIRE COMPANY NUMBER 01400092 P2F2SCH DS CL2 SCHOOL DISTRICT 01410092 P2F2CT10 DS CL6 2010 CENSUS TRACT 01420092 P2F2CT90 DS CL6 1990 CENSUS TRACT 01430092 P2F2LEVC DS CL10 Level Codes 01440092 P2F2PPB DS CL2 Police Patrol Borough 01450092 P2F2AD DS CL2 ASSEMBLY DISTRICT 01460092 P2F2CON DS CL2 CONGRESSIONAL DISTRICT 01470092 P2F2SEN DS CL2 SENATORIAL DISTRICT 01480092 P2F2CIV DS CL2 CIVIL COURT DISTRICT 01490092 P2F2COU DS CL2 CITY COUNCIL DISTRICT 01500092 P2F2RES1 DS CL1 CD ELIGIBILITY 01510092 P2F2DDST DS CL5 DUPLICATE INTERSECTION DISTANCE 01520092 P2F2T00 DS CL6 2000 CENSUS TRACT 01530092 P2F2HCD DS CL2 HEALTH CENTER DISTRICT 01540092 P2F2SD DS CL3 SANITATION DISTRICT 01550092 P2F2SANT DS CL2 SANITATION DEPT SECTION/SUBSECTION 01560092 P2F2PSCR DS CL4 Police Sector V19.2 01561099 DS CL8 FILLER V19.2 01570099 * DS CL12 FILLER 01571099 P2F2END EQU * 01580092 P2F2LEN EQU P2F2END-P2BAL Length of WA 2 for Fn 2/2C 01590092 * 01600092 ******************************************************************** 01610092 ORG P2LAYOUT RESET LOCATION COUNTER FOR FUNCTION 2W 01620092 ******************************************************************** 01630092 * 01640092 P22WDUPI DS CL1 DUPLICATE INTERSECT FLAG 01650092 P22WLGC1 DS CL2 STREET 1 PREFERRED LGC 01660092 P22WLGC2 DS CL2 STREET 2 PREFERRED LGC 01670092 P22W#INT DS CL1 NUMBER OF INTERSECTING STREETS 01680092 P22WCODE DS CL30 INTERSECTING B5SC'S 01690092 P22WCDUP DS CL1 COMPASS DIRECTION FOR TWO LOWEST 01700092 P22WAP DS CL3 ATOMIC POLYGON 01710092 DS CL2 FILLER 01720092 P22WNDNB DS CL7 LION NODE NUMBER 01730092 P22WXCOR DS CL7 X COORDINATE 01740092 P22WYCOR DS CL7 Y COORDINATE 01750092 P22WZCOR DS CL7 Z Coordinate - Not Impl. 01760092 P22WSVP1 DS 0CL8 FIRST SANBORN BOROUGH, PAGE, VOLUME 01770092 P22WSB1 DS CL1 FIRST SANBORN BOROUGH CODE 01780092 P22WSP1 DS CL3 FIRST SANBORN PAGE 01790092 P22WSV1 DS CL4 FIRST SANBORN VOLUME 01800092 P22WSVP2 DS 0CL8 SECOND SANBORN BOROUGH, PAGE, VOLUME 01810092 P22WSB2 DS CL1 SECOND SANBORN BOROUGH CODE 01820092 P22WSP2 DS CL3 SECOND SANBORN PAGE 01830092 P22WSV2 DS CL4 SECOND SANBORN VOLUME 01840092 P22WMHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 01850092 P22WSLA DS CL1 STREET LIGHT AREA 01860092 P22WCD DS 0CL3 COMMUNITY DISTRICT 01870092 P22WCDB DS CL1 COMMUNITY DISTRICT BORO 01880092 P22WCDN DS CL2 COMMUNITY DISTRICT NUMBER 01890092 P22WZIP DS CL5 ZIP CODE 01900092 P22WHA DS CL4 HEALTH AREA 01910092 P22WPOL DS 0CL4 POLICE DISTRICT 01920092 P22WPBC DS CL1 POLICE PATROL BORO COMMAND 01930092 P22WPOP DS CL3 POLICE PRECINCT 01940092 P22WFS DS CL2 FIRE DIVISION 01950092 P22WFB DS CL2 FIRE BATTALION 01960092 P22WFC DS 0CL4 FIRE COMPANY 01970092 P22WFCT DS CL1 FIRE COMPANY TYPE 01980092 P22WFCN DS CL3 FIRE COMPANY NUMBER 01990092 P22WSCH DS CL2 SCHOOL DISTRICT 02000092 P22WCT10 DS CL6 2010 CENSUS TRACT 02010092 P22WCT90 DS CL6 1990 CENSUS TRACT 02020092 P22WLEVC DS CL10 Level Codes 02030092 P22WPPB DS CL2 Police Patrol Borough 02040092 * DS CL2 FILLER 02050092 P22WAD DS CL2 ASSEMBLY DISTRICT 02060092 P22WCON DS CL2 CONGRESSIONAL DISTRICT 02070092 P22WSEN DS CL2 SENATORIAL DISTRICT 02080092 P22WCIV DS CL2 CIVIL COURT DISTRICT 02090092 P22WCOU DS CL2 CITY COUNCIL DISTRICT 02100092 P22WRES1 DS CL1 CD ELIGIBILITY 02110092 P22WDDST DS CL5 DUPLICATE INTERSECTION DISTANCE 02120092 P22WT00 DS CL6 2000 CENSUS TRACT 02130092 P22WHCD DS CL2 HEALTH CENTER DISTRICT 02140092 P22WSD DS CL3 SANITATION DISTRICT 02150092 P22WSANT DS CL2 SANITATION DEPT SECTION/SUBSECTION 02160092 P22WPSCR DS CL4 Police Sector V19.2 02161099 DS CL8 FILLER V19.2 02170099 * DS CL12 FILLER 02171099 P22WGFIL DS CL22 FILLER FOR GRID GENERATION 02180092 P22WLGCF DS CL8 UP TO 4 LGCS FOR FIRST INTERSECTING STR 02190092 P22WLGCS DS CL8 UP TO 4 LGCS FOR SECOND INTERSECTING STR 02200092 P22WTR DS CL10 TURN RESTRICTIONS 02210092 P22WPLGC DS CL10 PREFERRED LGCS FOR 5 STS IN ST LIST 02220092 P22WTRC DS CL2 TRUE REPLICATION COUNTER 02230092 P22WDNOD DS 20CL7 LIST OF 20 7-BYTE DUPLICATE NODES 02240092 P22WS7SC DS CL3200 B7SCS FOR NODE LIST(20*5*4*8) 02250092 P22WRC DS CL1 REASON CODE 02260092 P22WRCQ DS CL1 REASON CODE QUALIFIER 02270092 P22WWC DS CL2 WARNING CODE 02280092 P22WGRC DS CL2 RETURN CODE 02290092 P22WLAT DS CL9 LATITUDE CALC FROM X-Y 02300092 P22WLON DS CL11 LONGITUDE CALC FROM X-Y 02310092 DS CL374 FILLER 02320092 P22WEND EQU * 02330092 P22WLEN EQU P22WEND-P2BAL Length of WA 2 for Fn 2W 02340092 ******************************************************************** 02350092 ORG P2LAYOUT RESET LOCATION COUNTER FOR FUNCTION 3 02360092 ******************************************************************** 02370092 * 02380092 P2F3DUPF DS 0CL1 DUPLICATE KEY FLAG 02390092 P2F3PAR DS CL1 CONTINUOUS PARITY INDICATOR 02400092 P2F3LST DS CL1 Locational Status of Segment 02410092 P2F3CBI DS CL1 County Boundary Indicator 02420092 P2F3LGC1 DS CL2 STREET 1 PREFERRED LGC 02430092 P2F3LGC2 DS CL2 STREET 2 PREFERRED LGC 02440092 P2F3LGC3 DS CL2 STREET 3 PREFERRED LGC 02450092 P2F3#STL DS CL1 NUMBER OF CROSS STREETS AT LOW END 02460092 P2F3CDEL DS CL30 CROSS STREET B5SC'S AT LOW END 02470092 P2F3#STH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 02480092 P2F3CDEH DS CL30 CROSS STREET B5SC'S AT HIGH END 02490092 P2F3REVF DS CL1 REVERSAL FLAG 02500092 P2F3KEY DS 0CL10 LION KEY 02510092 P2F3BOR DS CL1 LION BOROUGH CODE 02520092 P2F3FACE DS CL4 LION FACE CODE 02530092 P2F3SEQ DS CL5 LION SEQUENCE NUMBER 02540092 P2F3GEN DS CL1 GENERATED RECORD FLAG 02550092 P2F3SEGL DS CL5 SEGMENT LENGTH IN FEET 02560092 P2F3SLOP DS CL3 SEGMENT SLOPE IN DEGREES 02570092 P2F3ORNT DS CL1 SEGMENT ORIENTATION 02580092 P2F3MHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 02590092 P2F3FROM DS CL7 FROM NODE 02600092 P2F3TO DS CL7 TO NODE 02610092 P2F3SP DS CL1 SANITATION STREET SNOW PRIORITY 02620092 DS CL4 Future Use 02630092 * 02640092 * Apply to both sides of street 02650092 * 02660092 P2F3SEGT DS CL7 Segment Identifier 02670092 P2F3SLA DS CL1 STREET LIGHT AREA 02680092 P2F3CURV DS CL1 Curve Flag 02690092 P2F3DGLG DS CL1 Dog Leg Flag 02700092 P2F3FEAT DS CL1 Feature Type Code 02710092 P2F3STC DS CL1 Segment Type Code 02720092 P2F3CSC DS CL1 Coincident Segment Count 02730092 DS CL4 Future Use 02740092 * 02750092 * Left Side of Street 02760092 * 02770092 P2F3CDL DS 0CL3 LEFT COMMUNITY DISTRICT 02780092 P2F3CDBL DS CL1 LEFT COMMUNITY DISTRICT BORO 02790092 P2F3CDNL DS CL2 LEFT COMMUNITY DISTRICT NUMBER 02800092 P2F3LO#L DS CL16 LEFT LOW HOUSE NUMBER 02810092 P2F3HI#L DS CL16 LEFT HIGH HOUSE NUMBER 02820092 DS CL32 Future Use 02830092 P2F3RS2L DS CL1 RESERVED FOR DCP/GSS USE 02840092 P2F3ZIPL DS CL5 LEFT ZIP CODE 02850092 P2F3HAL DS CL4 LEFT HEALTH AREA 02860092 P2F3POLL DS 0CL4 LEFT POLICE DISTRICT 02870092 P2F3PBCL DS CL1 LEFT POLICE PATROL BORO COMMAND 02880092 P2F3POPL DS CL3 LEFT POLICE PRECINCT 02890092 P2F3FSL DS CL2 LEFT FIRE DIVISION 02900092 P2F3FBL DS CL2 LEFT FIRE BATTALION 02910092 P2F3FCL DS 0CL4 LEFT FIRE COMPANY 02920092 P2F3FCTL DS CL1 LEFT FIRE COMPANY TYPE 02930092 P2F3FCNL DS CL3 LEFT FIRE COMPANY NUMBER 02940092 P2F3SCHL DS CL2 LEFT SCHOOL DISTRICT 02950092 P2F3CPBL DS CL3 LEFT DYNAMIC BLOCK/ATOMIC POLYGON 02960092 P2F3EDL DS CL3 LEFT ED 02970092 P2F3ADL DS CL2 LEFT AD 02980092 P2F3PPBL DS CL2 Left Police Patrol Borough 02990092 DS CL1 Filler 03000092 P2F3BROL DS CL1 Left BOROUGH CODE 03010092 P2F3TR9L DS CL6 Left 1990 CENSUS TRACT 03020092 P2F3C10L DS CL6 Left 2010 CENSUS TRACT 03030092 P2F3B10L DS CL4 Left 2010 CENSUS BLOCK NUMBER 03040092 P2F3BS1L DS CL1 Left 2010 CENSUS BLOCK SUFFIX-NOT IMPLEMNT 03050092 P2F3T00L DS CL6 Left 2000 CENSUS TRACT 03060092 P2F3B00L DS CL4 Left 2000 CENSUS BLOCK NUMBER 03070092 P2F3S00L DS CL1 Left 2000 CENSUS BLOCK SUFFIX 03080092 DS CL7 Filler 03090092 *P2F3BIDL DS CL7 Left BLOCKFACE ID 03100092 P2F3NTAL DS CL4 Left NEIGHBORHOOD TABULATION AREA 03110092 DS CL8 Future Use 03120092 * 03130092 * Right Side of Street 03140092 * 03150092 P2F3CDR DS 0CL3 RIGHT COMMUNITY DISTRICT 03160092 P2F3CDBR DS CL1 RIGHT COMMUNITY DISTRICT BORO 03170092 P2F3CDNR DS CL2 RIGHT COMMUNITY DISTRICT NUMBER 03180092 P2F3LO#R DS CL16 RIGHT LOW HOUSE NUMBER 03190092 P2F3HI#R DS CL16 RIGHT HIGH HOUSE NUMBER 03200092 DS CL32 Future Use 03210092 P2F3RS2R DS CL1 RESERVED FOR DCP/GSS USE 03220092 P2F3ZIPR DS CL5 RIGHT ZIP CODE 03230092 P2F3HAR DS CL4 RIGHT HEALTH AREA 03240092 P2F3POLR DS 0CL4 RIGHT POLICE DISTRICT 03250092 P2F3PBCR DS CL1 RIGHT POLICE PATROL BORO COMMAND 03260092 P2F3POPR DS CL3 RIGHT POLICE PRECINCT 03270092 P2F3FSR DS CL2 RIGHT FIRE DIVISION 03280092 P2F3FBR DS CL2 RIGHT FIRE BATTALION 03290092 P2F3FCR DS 0CL4 RIGHT FIRE COMPANY 03300092 P2F3FCTR DS CL1 RIGHT FIRE COMPANY TYPE 03310092 P2F3FCNR DS CL3 RIGHT FIRE COMPANY NUMBER 03320092 P2F3SCHR DS CL2 RIGHT SCHOOL DISTRICT 03330092 P2F3CPBR DS CL3 RIGHT DYNAMIC BLOCK/ATOMIC POLYGON 03340092 P2F3EDR DS CL3 RIGHT ED 03350092 P2F3ADR DS CL2 RIGHT AD 03360092 P2F3PPBR DS CL2 Right Police Patrol Borough 03370092 DS CL1 Filler 03380092 P2F3BROR DS CL1 Right BOROUGH CODE 03390092 P2F3TR9R DS CL6 Right 1990 CENSUS TRACT 03400092 P2F3C10R DS CL6 Right 2010 CENSUS TRACT 03410092 P2F3B10R DS CL4 Right 2010 CENSUS BLOCK 03420092 P2F3BS1R DS CL1 Right 2010 CENSUS BLOCK SUFFIX NOT IMPLM 03430092 P2F3T00R DS CL6 Right 2000 CENSUS TRACT 03440092 P2F3B00R DS CL4 Right 2000 CENSUS BLOCK 03450092 P2F3S00R DS CL1 Right 2000 CENSUS BLOCK SUFFIX 03460092 *P2F3BIDR DS CL7 RIGHT BLOCKFACE ID 03470092 DS CL7 Filler V16.1 03480092 P2F3NTAR DS CL4 RIGHT NEIGHBORHOOD TABULATION AREA 03490092 DS CL8 Future Use 03500092 P2F3END EQU * 03510092 P2F3LEN EQU P2F3END-P2BAL Length of WA 2 for Fn 3 03520092 * 03530092 ******************************************************************** 03540092 ORG P2F3END Auxiliary Segment Overlay - FUNCTION 3 03550092 ******************************************************************** 03560092 * 03570092 P2F3FILR DS CL6 Future Use 03580092 P2F3SCNT DS CL4 Number of segment ids 03590092 P2F3SGID DS CL490 up to 70 Seven Byte Segment IDS 03600092 P2F3SEND EQU * 03610092 P2F3SLEN EQU P2F3SEND-P2BAL Length of WA 2 for Fn 3 w/segments 03620092 * 03630092 ******************************************************************** 03640092 ORG P2LAYOUT RESET LOCATION COUNTER-FUNCTION 3 EXTENDED 03650092 ******************************************************************** 03660092 * 03670092 P23XDUPF DS 0CL1 DUPLICATE KEY FLAG 03680092 P23XPAR DS CL1 CONTINUOUS PARITY INDICATOR 03690092 P23XLST DS CL1 Locational Status of Segment 03700092 P23XCBI DS CL1 County Boundary Indicator 03710092 P23XLGC1 DS CL2 STREET 1 PREFERRED LGC 03720092 P23XLGC2 DS CL2 STREET 2 PREFERRED LGC 03730092 P23XLGC3 DS CL2 STREET 3 PREFERRED LGC 03740092 P23X#STL DS CL1 NUMBER OF CROSS STREETS AT LOW END 03750092 P23XCDEL DS CL30 CROSS STREET B5SC'S AT LOW END 03760092 P23X#STH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 03770092 P23XCDEH DS CL30 CROSS STREET B5SC'S AT HIGH END 03780092 P23XREVF DS CL1 REVERSAL FLAG 03790092 P23XKEY DS 0CL10 LION KEY 03800092 P23XBOR DS CL1 LION BOROUGH CODE 03810092 P23XFACE DS CL4 LION FACE CODE 03820092 P23XSEQ DS CL5 LION SEQUENCE NUMBER 03830092 P23XGEN DS CL1 GENERATED RECORD FLAG 03840092 P23XSEGL DS CL5 SEGMENT LENGTH IN FEET 03850092 P23XSLOP DS CL3 SEGMENT SLOPE IN DEGREES 03860092 P23XORNT DS CL1 SEGMENT ORIENTATION 03870092 P23XMHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 03880092 P23XFROM DS CL7 FROM NODE 03890092 P23XTO DS CL7 TO NODE 03900092 P23XSP DS CL1 SANITATION STREET SNOW PRIORITY 03910092 DS CL4 Future Use 03920092 * 03930092 * Apply to both sides of street 03940092 * 03950092 P23XSEGT DS CL7 Segment Identifier 03960092 P23XSLA DS CL1 STREET LIGHT AREA 03970092 P23XCURV DS CL1 Curve Flag 03980092 P23XDGLG DS CL1 Dog Leg Flag 03990092 P23XFEAT DS CL1 Feature Type Code 04000092 P23XSTC DS CL1 Segment Type Code 04010092 P23XCSC DS CL1 Coincident Segment Count 04020092 DS CL4 Future Use 04030092 * 04040092 * Left Side of Street 04050092 * 04060092 P23XCDL DS 0CL3 LEFT COMMUNITY DISTRICT 04070092 P23XCDBL DS CL1 LEFT COMMUNITY DISTRICT BORO 04080092 P23XCDNL DS CL2 LEFT COMMUNITY DISTRICT NUMBER 04090092 P23XLO#L DS CL16 LEFT LOW HOUSE NUMBER 04100092 P23XHI#L DS CL16 LEFT HIGH HOUSE NUMBER 04110092 DS CL32 Future Use 04120092 P23XRS2L DS CL1 RESERVED FOR DCP/GSS USE 04130092 P23XZIPL DS CL5 LEFT ZIP CODE 04140092 P23XHAL DS CL4 LEFT HEALTH AREA 04150092 P23XPOLL DS 0CL4 LEFT POLICE DISTRICT 04160092 P23XPBCL DS CL1 LEFT POLICE PATROL BORO COMMAND 04170092 P23XPOPL DS CL3 LEFT POLICE PRECINCT 04180092 P23XFSL DS CL2 LEFT FIRE DIVISION 04190092 P23XFBL DS CL2 LEFT FIRE BATTALION 04200092 P23XFCL DS 0CL4 LEFT FIRE COMPANY 04210092 P23XFCTL DS CL1 LEFT FIRE COMPANY TYPE 04220092 P23XFCNL DS CL3 LEFT FIRE COMPANY NUMBER 04230092 P23XSCHL DS CL2 LEFT SCHOOL DISTRICT 04240092 P23XCPBL DS CL3 LEFT DYNAMIC BLOCK/ATOMIC POLYGON 04250092 P23XEDL DS CL3 LEFT ED 04260092 P23XADL DS CL2 LEFT AD 04270092 P23XPPBL DS CL2 Left Police Patrol Borough 04280092 DS CL1 Filler 04290092 P23XBROL DS CL1 Left BOROUGH CODE 04300092 P23XTR9L DS CL6 Left 1990 CENSUS TRACT 04310092 P23XC10L DS CL6 Left 2010 CENSUS TRACT 04320092 P23XB10L DS CL4 Left 2010 CENSUS BLOCK NUMBER 04330092 P23XBS1L DS CL1 Left 2010 CENSUS BLOCK SUFFIX-NOT IMPLEMNT 04340092 P23XT00L DS CL6 Left 2000 CENSUS TRACT 04350092 P23XB00L DS CL4 Left 2000 CENSUS BLOCK NUMBER 04360092 P23XS00L DS CL1 Left 2000 CENSUS BLOCK SUFFIX 04370092 *P23XBIDL DS CL7 Left BLOCKFACE ID 04380092 DS CL7 Filler 04390092 P23XNTAL DS CL4 Left NEIGHBORHOOD TABULATION AREA 04400092 DS CL8 Future Use 04410092 * 04420092 * Right Side of Street 04430092 * 04440092 P23XCDR DS 0CL3 RIGHT COMMUNITY DISTRICT 04450092 P23XCDBR DS CL1 RIGHT COMMUNITY DISTRICT BORO 04460092 P23XCDNR DS CL2 RIGHT COMMUNITY DISTRICT NUMBER 04470092 P23XLO#R DS CL16 RIGHT LOW HOUSE NUMBER 04480092 P23XHI#R DS CL16 RIGHT HIGH HOUSE NUMBER 04490092 DS CL32 Future Use 04500092 P23XRS2R DS CL1 RESERVED FOR DCP/GSS USE 04510092 P23XZIPR DS CL5 RIGHT ZIP CODE 04520092 P23XHAR DS CL4 RIGHT HEALTH AREA 04530092 P23XPOLR DS 0CL4 RIGHT POLICE DISTRICT 04540092 P23XPBCR DS CL1 RIGHT POLICE PATROL BORO COMMAND 04550092 P23XPOPR DS CL3 RIGHT POLICE PRECINCT 04560092 P23XFSR DS CL2 RIGHT FIRE DIVISION 04570092 P23XFBR DS CL2 RIGHT FIRE BATTALION 04580092 P23XFCR DS 0CL4 RIGHT FIRE COMPANY 04590092 P23XFCTR DS CL1 RIGHT FIRE COMPANY TYPE 04600092 P23XFCNR DS CL3 RIGHT FIRE COMPANY NUMBER 04610092 P23XSCHR DS CL2 RIGHT SCHOOL DISTRICT 04620092 P23XCPBR DS CL3 RIGHT DYNAMIC BLOCK/ATOMIC POLYGON 04630092 P23XEDR DS CL3 RIGHT ED 04640092 P23XADR DS CL2 RIGHT AD 04650092 P23XPPBR DS CL2 Right Police Patrol Borough 04660092 DS CL1 Filler 04670092 P23XBROR DS CL1 Right BOROUGH CODE 04680092 P23XTR9R DS CL6 Right 1990 CENSUS TRACT 04690092 P23XC10R DS CL6 Right 2010 CENSUS TRACT 04700092 P23XB10R DS CL4 Right 2010 CENSUS BLOCK 04710092 P23XBS1R DS CL1 Right 2010 CENSUS BLOCK SUFFIX NOT IMPLM 04720092 P23XT00R DS CL6 Right 2000 CENSUS TRACT 04730092 P23XB00R DS CL4 Right 2000 CENSUS BLOCK 04740092 P23XS00R DS CL1 Right 2000 CENSUS BLOCK SUFFIX 04750092 *P23XBIDR DS CL7 RIGHT BLOCKFACE ID 04760092 DS CL7 Filler 04770092 P23XNTAR DS CL4 RIGHT NEIGHBORHOOD TABULATION AREA 04780092 DS CL8 Future Use 04790092 P23XLGCS DS CL8 List of 4 LGCs 04800092 P23XLGCF DS CL8 List of 4 From LGCs 04810092 P23XLGCT DS CL8 List of 4 To LGCs 04820092 P23XLHCD DS CL2 Left Health Center District 04830092 P23XRHCD DS CL2 Right Health Center District 04840092 P23XFILS DS CL1 Filler 04850092 P23XTD DS CL1 Traffic Direction 04860092 P23XRTP DS CL2 Roadyway Type 04870092 P23XPID DS CL7 Physical Id 04880092 P23XGID DS CL7 Generic Id 04890092 P23XPDID DS CL7 For DCP Use Only 04900092 P23XFDID DS CL7 For DCP Use Only 04910092 P23XSTST DS CL1 Street Status 04920092 P23XSTW DS CL3 Street Width 04930092 P23XSTWI DS CL1 Street Width Irregular 04940092 P23XBL DS CL1 Bike Lane 04950092 P23XFCC DS CL2 Federal Classification Code 04960092 P23XROW DS CL1 Row Type 04970092 P23XLGC5 DS CL10 List of 5 LGCs 04980092 P23XLGID DS CL7 Legacy Id 04990092 P23XLNTA DS CL75 Left NTA Name 05000092 P23XRNTA DS CL75 Right NTA Name 05010092 P23XFXC DS CL7 From X Coordinate 05020092 P23XFYC DS CL7 From Y Coordinate 05030092 P23XTXC DS CL7 To X Coordinate 05040092 P23XTYC DS CL7 To Y Coordinate 05050092 P23XFLAT DS CL9 LATITUDE OF FROM INTERSCT. 05060092 P23XFLON DS CL11 LONGITUDE OF FROM INTERSCT. 05070092 P23XTLAT DS CL9 LATITUDE OF TO INTERSCT. 05080092 P23XTLON DS CL11 LONGITUDE OF TO INTERSCT. 05090092 P23XBIDL DS CL10 NEW location Left Blockface Id V16.1 05100092 P23XBIDR DS CL10 NEW location Right Blockface Id V16.1 05110092 P23X#TRL DS CL2 nbr of traveling lanes 05120092 P23X#PKL DS CL2 nbr of parking lanes 05130092 P23X#TLL DS CL2 nbr of total lanes 05140092 P23XBL2 DS CL2 Bike Lane 2 (has 2 bytes numeric value) 05150092 P23XSTWX DS CL3 Street Width Maximum 05160092 P23XBTD DS CL2 Bike Traffic Direction 05170092 P23XSPDL DS CL2 Speed Limit 05171094 P23XPUML DS CL5 PUMA CODE (left) 05172097 P23XPUMR DS CL5 PUMA CODE (right) 05173097 P23XPSRL DS CL4 Police Sector (left) 05174099 P23XPSRR DS CL4 Police Sector(right) 05175099 P23XFILL DS CL193 FILLER V19.2 05180099 *P23XFILL DS CL201 FILLER 05181099 P23XEND EQU * 05190092 P23XLEN EQU P23XEND-P2BAL Length of WA 2 for Fn 3 Extended 05200092 * 05210092 ******************************************************************** 05220092 ORG P23XEND Auxiliary Seg Overlay - FUNCTION 3 EXTENDED 05230092 ******************************************************************** 05240092 * 05250092 P23XFILR DS CL6 Future Use 05260092 P23XSCNT DS CL4 Number of segment ids 05270092 P23XSGID DS CL490 up to 70 Seven Byte Segment IDS 05280092 P23XSEND EQU * 05290092 P23XSLEN EQU P23XSEND-P2BAL Len of WA2 for Fn3 MODE=X w/segments 05300092 * 05310092 ******************************************************************** 05320092 ORG P2LAYOUT RESET LOCATION COUNTER FOR FUNCTION 3C 05330092 ******************************************************************** 05340092 * 05350092 P23CDUPF DS 0CL1 DUPLICATE KEY FLAG 05360092 P23CPAR DS CL1 CONTINUOUS PARITY INDICATOR 05370092 P23CLST DS CL1 Locational Status of Segment 05380092 P23CCBI DS CL1 County Boundary Indicator 05390092 P23CLGC1 DS CL2 STREET 1 PREFERRED LGC 05400092 P23CLGC2 DS CL2 STREET 2 PREFERRED LGC 05410092 P23CLGC3 DS CL2 STREET 3 PREFERRED LGC 05420092 P23C#STL DS CL1 NUMBER OF CROSS STREETS AT LOW END 05430092 P23CCDEL DS CL30 CROSS STREET B5SC'S AT LOW END 05440092 P23C#STH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 05450092 P23CCDEH DS CL30 CROSS STREET B5SC'S AT HIGH END 05460092 P23CREVF DS CL1 REVERSAL FLAG 05470092 P23CKEY DS 0CL10 LION KEY 05480092 P23CBOR DS CL1 LION BOROUGH CODE 05490092 P23CFACE DS CL4 LION FACE CODE 05500092 P23CSEQ DS CL5 LION SEQUENCE NUMBER 05510092 P23CGEN DS CL1 GENERATED RECORD FLAG 05520092 P23CSEGL DS CL5 SEGMENT LENGTH IN FEET 05530092 P23CSLOP DS CL3 SEGMENT SLOPE IN DEGREES 05540092 P23CORNT DS CL1 SEGMENT ORIENTATION 05550092 P23CMHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 05560092 P23CFROM DS CL7 FROM NODE 05570092 P23CTO DS CL7 TO NODE 05580092 P23CSP DS CL1 SANITATION STREET SNOW PRIORITY 05590092 DS CL4 Future Use 05600092 * 05610092 * Side of Street Information 05620092 * 05630092 P23CSEGT DS CL7 Segment Identifier 05640092 P23CSLA DS CL1 STREET LIGHT AREA 05650092 P23CSOS DS CL1 Side of Street Indicator 05660092 P23CCURV DS CL1 Curve Flag 05670092 P23CFEAT DS CL1 Feature Type Code 05680092 P23CSTC DS CL1 Segment Type Code 05690092 P23CCSC DS CL1 COINCIDENT SEGMENT COUNT 05700092 DS CL4 Future Use 05710092 P23CCD DS 0CL3 COMMUNITY DISTRICT 05720092 P23CCDB DS CL1 COMMUNITY DISTRICT BORO 05730092 P23CCDN DS CL2 COMMUNITY DISTRICT NUMBER 05740092 P23CLO# DS CL16 LOW HOUSE NUMBER 05750092 P23CHI# DS CL16 HIGH HOUSE NUMBER 05760092 P23CHS2L DS CL16 2ND LOW HSE # - USED IF ODD & EVEN RANGES 05770092 P23CHS2H DS CL16 2ND HI HSE # ARE ON SAME SIDE OF STREET 05780092 P23CRES2 DS CL1 RESERVED FOR DCP/GSS USE 05790092 P23CZIP DS CL5 ZIP CODE 05800092 P23CHAL DS CL4 HEALTH AREA 05810092 P23CPOL DS 0CL4 POLICE DISTRICT 05820092 P23CPBC DS CL1 POLICE PATROL BORO COMMAND 05830092 P23CPOP DS CL3 POLICE PRECINCT 05840092 P23CFS DS CL2 FIRE DIVISION 05850092 P23CFB DS CL2 FIRE BATTALION 05860092 P23CFC DS 0CL4 FIRE COMPANY 05870092 P23CFCT DS CL1 FIRE COMPANY TYPE 05880092 P23CFCN DS CL3 FIRE COMPANY NUMBER 05890092 P23CSCH DS CL2 SCHOOL DISTRICT 05900092 P23CCPB DS CL3 DYNAMIC BLOCK / ATOMIC POLYGON 05910092 P23CED DS CL3 ED 05920092 P23CAD DS CL2 AD 05930092 P23CPPB DS CL2 Police Patrol Borough 05940092 DS CL1 Filler 05950092 P23CBRO DS CL1 BOROUGH CODE 05960092 P23CTR9 DS CL6 1990 CENSUS TRACT 05970092 P23CCT10 DS CL6 2010 CENSUS TRACT 05980092 P23CBL10 DS CL4 2010 CENSUS BLOCK 05990092 P23CBL1S DS CL1 2010 CENSUS BLOCK SUFFIX NOT IMPLEMENTED 06000092 P23CT00 DS CL6 2000 CENSUS TRACT 06010092 P23CB00 DS CL4 2000 CENSUS BLOCK 06020092 P23CS00 DS CL1 2000 CENSUS BLOCK SUFFIX 06030092 *P23CBID DS CL7 BLOCKFACE ID 06040092 DS CL7 Filler V16.1 06050092 P23CNTA DS CL4 NEIGHBORHOOD TABULATION AREA 06060092 DS CL8 Future Use 06070092 P23CEND EQU * 06080092 P23CLEN EQU P23CEND-P2BAL Length of WA 2 for Fn 3C 06090092 ******************************************************************** 06100092 ORG P23CEND Auxiliary Segment Overlay - FUNCTION 3C 06110092 ******************************************************************** 06120092 * 06130092 P23CFILR DS CL6 FUTURE USE 06140092 P23CSCNT DS CL4 Number of segment ids 06150092 P23CSGID DS CL490 up to 70 Seven Byte Segment IDS 06160092 P23CSEND EQU * 06170092 P23CSLEN EQU P23CSEND-P2BAL Length of WA 2 for Fn 3C w/Segments 06180092 * 06190092 ******************************************************************** 06200092 ORG P2LAYOUT RESET LOC COUNTER FOR FUNCTION 3C EXTENDED 06210092 ******************************************************************** 06220092 * 06230092 P2CXDUPF DS 0CL1 DUPLICATE KEY FLAG 06240092 P2CXPAR DS CL1 CONTINUOUS PARITY INDICATOR 06250092 P2CXLST DS CL1 Locational Status of Segment 06260092 P2CXCBI DS CL1 County Boundary Indicator 06270092 P2CXLGC1 DS CL2 STREET 1 PREFERRED LGC 06280092 P2CXLGC2 DS CL2 STREET 2 PREFERRED LGC 06290092 P2CCLGC3 DS CL2 STREET 3 PREFERRED LGC 06300092 P2CX#STL DS CL1 NUMBER OF CROSS STREETS AT LOW END 06310092 P2CXCDEL DS CL30 CROSS STREET B5SC'S AT LOW END 06320092 P2CX#STH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 06330092 P2CXCDEH DS CL30 CROSS STREET B5SC'S AT HIGH END 06340092 P2CXREVF DS CL1 REVERSAL FLAG 06350092 P2CXKEY DS 0CL10 LION KEY 06360092 P2CXBOR DS CL1 LION BOROUGH CODE 06370092 P2CXFACE DS CL4 LION FACE CODE 06380092 P2CXSEQ DS CL5 LION SEQUENCE NUMBER 06390092 P2CXGEN DS CL1 GENERATED RECORD FLAG 06400092 P2CXSEGL DS CL5 SEGMENT LENGTH IN FEET 06410092 P2CXSLOP DS CL3 SEGMENT SLOPE IN DEGREES 06420092 P2CXORNT DS CL1 SEGMENT ORIENTATION 06430092 P2CXMHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 06440092 P2CXFROM DS CL7 FROM NODE 06450092 P2CXTO DS CL7 TO NODE 06460092 P2CXSP DS CL1 SANITATION STREET SNOW PRIORITY 06470092 DS CL4 Future Use 06480092 * 06490092 * Side of Street Information 06500092 * 06510092 P2CXSEGT DS CL7 Segment Identifier 06520092 P2CXSLA DS CL1 STREET LIGHT AREA 06530092 P2CXSOS DS CL1 Side of Street Indicator 06540092 P2CXCURV DS CL1 Curve Flag 06550092 P2CXFEAT DS CL1 Feature Type Code 06560092 P2CXSTC DS CL1 Segment Type Code 06570092 P2CXCSC DS CL1 COINCIDENT SEGMENT COUNT 06580092 DS CL4 Future Use 06590092 P2CXCD DS 0CL3 COMMUNITY DISTRICT 06600092 P2CXCDB DS CL1 COMMUNITY DISTRICT BORO 06610092 P2CXCDN DS CL2 COMMUNITY DISTRICT NUMBER 06620092 P2CXLO# DS CL16 LOW HOUSE NUMBER 06630092 P2CXHI# DS CL16 HIGH HOUSE NUMBER 06640092 P2CXHS2L DS CL16 2ND LOW HSE # - USED IF ODD & EVEN RANGES 06650092 P2CXHS2H DS CL16 2ND HI HSE # ARE ON SAME SIDE OF STREET 06660092 P2CXRES2 DS CL1 RESERVED FOR DCP/GSS USE 06670092 P2CXZIP DS CL5 ZIP CODE 06680092 P2CXHAL DS CL4 HEALTH AREA 06690092 P2CXPOL DS 0CL4 POLICE DISTRICT 06700092 P2CXPBC DS CL1 POLICE PATROL BORO COMMAND 06710092 P2CXPOP DS CL3 POLICE PRECINCT 06720092 P2CXFS DS CL2 FIRE DIVISION 06730092 P2CXFB DS CL2 FIRE BATTALION 06740092 P2CXFC DS 0CL4 FIRE COMPANY 06750092 P2CXFCT DS CL1 FIRE COMPANY TYPE 06760092 P2CXFCN DS CL3 FIRE COMPANY NUMBER 06770092 P2CXSCH DS CL2 SCHOOL DISTRICT 06780092 P2CXCPB DS CL3 DYNAMIC BLOCK / ATOMIC POLYGON 06790092 P2CXED DS CL3 ED 06800092 P2CXAD DS CL2 AD 06810092 P2CXPPB DS CL2 Police Patrol Borough 06820092 DS CL1 Filler 06830092 P2CXBRO DS CL1 BOROUGH CODE 06840092 P2CXTR9 DS CL6 1990 CENSUS TRACT 06850092 P2CXCT10 DS CL6 2010 CENSUS TRACT 06860092 P2CXBL10 DS CL4 2010 CENSUS BLOCK 06870092 P2CXBL1S DS CL1 2010 CENSUS BLOCK SUFFIX NOT IMPLEMENTED 06880092 P2CXT00 DS CL6 2000 CENSUS TRACT 06890092 P2CXB00 DS CL4 2000 CENSUS BLOCK 06900092 P2CXS00 DS CL1 2000 CENSUS BLOCK SUFFIX 06910092 *P2CXBID DS CL7 BLOCKFACE ID 06920092 DS CL7 Filler V16.1 06930092 P2CXNTA DS CL4 NEIGHBORHOOD TABULATION AREA 06940092 DS CL8 Future Use 06950092 P2CXLGCS DS CL8 List of 4 LGCs 06960092 P2CXLGCF DS CL8 List of 4 From LGCs 06970092 P2CXLGCT DS CL8 List of 4 To LGCs 06980092 P2CXLHCD DS CL2 Left Health Center District 06990092 P2CXRHCD DS CL2 Right Health Center District 07000092 P2CXFILS DS CL1 Filler 07010092 P2CXTD DS CL1 Traffic Direction 07020092 P2CXRTP DS CL2 Roadyway Type 07030092 P2CXPID DS CL7 Physical Id 07040092 P2CXGID DS CL7 Generic Id 07050092 P2CXPDID DS CL7 For DCP Use Only 07060092 P2CXFDID DS CL7 For DCP Use Only 07070092 P2CXSTST DS CL1 Street Status 07080092 P2CXSTW DS CL3 Street Width 07090092 P2CXSTWI DS CL1 Street Width Irregular 07100092 P2CXBL DS CL1 Bike Lane 07110092 P2CXFCC DS CL2 Federal Classification Code 07120092 P2CXROW DS CL1 Row Type 07130092 P2CXLGC5 DS CL10 List of 5 LGCs 07140092 P2CXLGID DS CL7 Legacy Id 07150092 P2CXNTAN DS CL75 NTA Name 07160092 P2CXFXC DS CL7 From X Coordinate 07170092 P2CXFYC DS CL7 From Y Coordinate 07180092 P2CXTXC DS CL7 To X Coordinate 07190092 P2CXTYC DS CL7 To Y Coordinate 07200092 P2CXFLAT DS CL9 LATITUDE OF FROM INTERSCT. 07210092 P2CXFLON DS CL11 LONGITUDE OF FROM INTERSCT. 07220092 P2CXTLAT DS CL9 LATITUDE OF TO INTERSCT. 07230092 P2CXTLON DS CL11 LONGITUDE OF TO INTERSCT. 07240092 P2CXBFID DS CL10 NEW location Blockface Id V16.1 07250092 P2CX#TRL DS CL2 nbr of traveling lanes 07260092 P2CX#PKL DS CL2 nbr of parking lanes 07270092 P2CX#TLL DS CL2 nbr of total lanes 07280092 P2CXBL2 DS CL2 Bike Lane2 (has 2bytes numeric value) 07290092 P2CXSTWX DS CL3 Street Width Maximum 07300092 P2CXBTD DS CL2 Bike Traffic Direction 07310092 P2CXSPDL DS CL2 Speed Limit 07311094 P2CXPUMA DS CL5 PUMA Code V18.1 07312098 P2CXPSCR DS CL4 Police Sector V19.2 07313099 P2CXFILL DS CL287 FILLER V19.2 07315099 *P2CXFILL DS CL291 FILLER 07320099 P2CXEND EQU * 07330092 P2CXLEN EQU P2CXEND-P2BAL Length of WA 2 for Fn 3C 07340092 ******************************************************************** 07350092 ORG P2CXEND Auxiliary Segment Overlay - FUNCTION 3C-X 07360092 ******************************************************************** 07370092 * 07380092 P2CXFILR DS CL6 FUTURE USE 07390092 P2CXSCNT DS CL4 Number of segment ids 07400092 P2CXSGID DS CL490 up to 70 Seven Byte Segment IDS 07410092 P2CXSEND EQU * 07420092 P2CXSLEN EQU P2CXSEND-P2BAL Length of WA 2 for Fn 3C-X w/Segments 07430092 * 07440092 * 07450092 ******************************************************************** 07460092 ORG P2BAL RESET LOCATION COUNTER FOR FUNCTION 5 07470092 ******************************************************************** 07480092 * 07490092 P2F5AMK DS CL28 ACCESS MATCHING KEY 07500092 DS CL172 07510092 P2F5END EQU * 07520092 P2F5LEN EQU P2F5END-P2BAL Length of WA 2 for Fn 5 07530092 ORG 07540092 P2BAL1A COPY File */********************************************************************/ 00010064 */***** THIS IS GEOSUPPORT INFORMATION SYSTEM COPY FILE P2BAL1A, ***/ 00020064 */***** CONTAINING THE LAYOUT OF WORK AREA 2 FOR FUNCTION ***/ 00030064 */***** 1A, BL And BN WHICH SHARE A SINGLE WORK AREA 2 LAYOUT. ***/ 00040064 */***** The Long Work Area only applies to Functions 1A and BL. ***/ 00050064 */***** The long work area only exists if the Address Overflow ***/ 00060064 */***** Flag has been set on. ***/ 00070064 */***** As of 2011, Function 1/1E Extended, Function 1A Extended ***/ 00080064 */***** and Function 1B have been added to this Copy File ***/ 00090064 */***** ADDED 2 byte field \"Police Patrol Borough\" for functions: ***/ 00100064 */***** 1X/1EX/1B. August 2014 ***/ 00110064 */***** ADDED 4 fields: \"segment from node\", \"segment to node\", ***/ 00120064 */***** \"segment from XYZ\", \"segment to XYZ\" for func 1X/1EX/1B ***/ 00130064 */***** May 2015 ***/ 00140064 */***** ADDED 2 fields: \"Bike Lane 2\" and \"Street Width Maximum\" ***/ 00141068 */***** for functions 1EX/1B September 2016 ***/ 00142068 */***** Replaced \"Saniitation Reserved\" with \"Sanitation Bulk ***/ 00143070 */***** Pick Up\" for functions 1E,1B October 2016 ***/ 00144070 */***** ADDED 2 bytes field \"Bike Traffic Direction\" for ***/ 00145072 */***** for functions 1/1E (extended),1B,3X,3CX 12/2016 ***/ 00146071 */***** ADDED 2 bytes field \"Speed Limit\" 09/2017 ***/ 00147073 */***** for functions 1/1E (extended),1B ***/ 00148074 */***** ADDED 3 bytes field \"DCP Zoning Map\" 09/2017 ***/ 00149075 */***** for functions 1A,BL,BN, 1A,BL,BN(extended) and 1B ***/ 00149175 */***** ADDED 5 bytes field \"PUMA Code\" for functions: ***/ 00149276 */***** 1/1E (extended),1B. 12/2017 ***/ 00149376 */***** ADDED 4 bytes field \"Police Sector\" for functions: ***/ 00149477 */***** 1/1E (extended),1B. 06/2018 ***/ 00149579 */***** ADDED 1 byte field \"Police Service area\" for functions: ***/ 00149677 */***** 1/1E (extended) and 1B. 06/2018 ***/ 00149777 */********************************************************************/ 00150064 */***** LAST UPDATE - February 2016 ***/ 00160066 */********************************************************************/ 00170064 P2BAL1A DS 0H 00180064 DS CL21 00190064 P21ACPAR DS CL1 CONTINUOUS PARITY INDICATOR 00200064 P21AHSEL DS CL11 LOW HOUSE NUMBER ON BLOCK - HNS Form 00210064 P21AALT1 DS 0CL11 ALTERNATE KEY 00220064 P21ABOR1 DS CL1 ALTERNATE KEY - BORO 00230064 P21ATXB1 DS CL5 ALTERNATE KEY - TAX BLOCK 00240064 P21ATXL1 DS CL4 ALTERNATE KEY - TAX LOT 00250064 DS CL1 Future Use 00260064 P21ARSCC DS CL1 RPAD SCC 00270064 DS CL1 FILLER 00280064 P21AGLI DS 0CL13 GENERAL LOT INFO 00290064 P21ARBLC DS CL2 RPAD BUILDING CLASSIFICATION 00300064 P21ACORC DS CL2 CORNER CODE 00310064 P21A#STC DS CL4 TOTAL NUMBER STRUCTURES 00320064 P21A#BFA DS CL2 TOTAL NUMBER BLOCKFACES 00330064 P21AINTF DS CL1 INTERIOR LOT FLAG 00340064 P21AVACF DS CL1 VACANT LOT FLAG 00350064 P21AIRLF DS CL1 IRREGULARLY-SHAPED LOT FLAG 00360064 * 00370064 P21AABFL DS CL1 Marble Hill/ Rikers ALTERNATE BORO FLAG 00380064 P21AOVFL DS CL1 Address Overflow Flag 00390064 * 00400064 P21ASTRK DS CL19 STROLLING KEY 00410064 * 00420064 P21ARFIU DS CL1 RESERVED FOR INTERNAL USE 00430064 P21ABIN DS CL7 BUILDING IDENTIFICATION NUMBER (BIN) 00440064 * Condo Information 00450064 P21ACONF DS CL1 CONDO LOT FLAG 00460064 DS CL1 Filler for Future Use 00470064 P21ARCO# DS CL4 RPAD CONDO NUMBER 00480064 DS CL7 Future Use - Condo Unit Number 00490064 P21ACBBL DS CL11 CONDO BILLING BBL 00500064 P21ACBBS DS CL1 CONDO BILLING BBL SCC 00510064 P21ACLBL DS CL11 CONDO LOW BBL 00520064 P21ACHBL DS CL11 CONDO HIGH BBL 00530064 DS CL15 Filler 00540064 P21ACOOP DS CL4 Co-op Number 00550064 * 00560064 P21ASBVP DS CL8 SANDBORN BOROUGH/VOLUME/PAGE 00570064 * 00580064 P21ABUSA DS CL5 BUSINESS AREA 00590064 P21ATAXM DS CL5 Tax Map Number - Section and Volume 00600064 DS CL4 Reserved for Tax Map Page 00610064 DS CL3 FILLER 00620064 P21ALAT DS CL9 LATITUDE 00630064 P21ALONG DS CL11 LONGITUDE 00640064 P21AXCO DS CL7 X Coordinate of Annotation Point 00650064 P21AYCO DS CL7 Y Coordinate of Annotation Point 00660064 P21ABID DS CL6 Business Improvement District 00670064 P21ATPBS DS CL1 TPAD BIN Status 00680064 P21ATPNB DS CL7 TPAD New BIN 00690064 P21ATPNS DS CL1 TPAD New BIN Status 00700064 P21ATPCF DS CL1 TPAD Conflict Flag 00710064 P21AZMAP DS CL3 DCP Zoning Map 00711075 DS CL6 FILLER 00720075 DS CL8 Internal Use 00730064 P21A#ADR DS CL4 TOTAL ADDRESSES FOR LOT 00740064 P21ALIST DS 0CL1113 LIST OF ADDRESSES, MAXIMUM OF 21 00750064 P21ALOW# DS CL16 LOW HOUSE NUMBER-Display Form 00760064 P21AHI# DS CL16 HIGH HOUSE NUMBER-Display Form 00770064 P21ABCDE DS CL1 Borough Code 00780064 P21ACODE DS CL5 STREET CODE 00790064 P21APLGC DS CL2 Preferred LGC 00800064 P21ALBIN DS CL7 BIN 00810064 P21ALSOS DS CL1 Side of Street Indicator 00820064 P21AATP DS CL1 Address Type Flag 00830064 P21AATPS DS CL1 TPAD BIN Status 00840064 DS CL3 FILLER 00850064 * STORAGE IS RESERVED FOR THE REMAINING 20 ADDRESS STRUCTURES. 00860064 * EACH STRUCTURE IS IDENTICAL TO THE ONE DEFINED ABOVE. 00870064 DS CL1060 REMAINING ADDRESSES 00880064 P21ASEND EQU * 00890064 P21ASLEN EQU P21ASEND-P2BAL1A LENGTH OF Short P2BAL1A 00900064 * 00910064 * Long Work Area Overlay 00920064 * 00930064 ORG P21A#ADR 00940064 P21A#BIN DS CL4 Total Nbr of BINs for Lot 00950064 P21ABINS DS 2500CL7 00960064 P21ALEND EQU * 00970064 ORG P21ABINS Redefine the list for TPAD 00980064 P21ATPL@ EQU * Start of TPAD List for Longwa2 00990064 P21ATPB DS (2187)CL8 2187 8-Byte Elements 01000064 DS CL4 Filler 01010064 P21ATPL EQU P21ATPL@,*-P21ATPL@ Define Start and Length 01020064 ORG P21ATPB Element Breakdown 01030064 P21ATPBN DS CL7 BIN 01040064 P21ATPST DS CL1 BIN STATUS 01050064 ORG P21ATPL+L'P21ATPL Point To End of List 01060064 P21ALLEN EQU P21ALEND-P2BAL1A Length of Long P2BAL1A 01070064 P21ATPLN EQU P21ALEND-P2BAL1A Length of TPAD Long P2BAL1A 01080064 01090064 ********************************************************************** 01100064 ****** 01110064 ORG P2BAL1A RESET LOCATION FOR FN 1/1E EXTENDED 01120064 ****** 01130064 ********************************************************************** 01140064 01150064 P2EXKEY DS CL21 ACCESS KEY 01160064 P2EXCPAR DS CL1 CONTINUOUS PARITY INDICATOR 01170064 P2EXLHNS DS CL11 LOW HOUSE NUMBER 01180064 P2EXHHNS DS CL11 HIGH HOUSE NUMBER 01190064 P2EXLGC DS CL2 DCP Prefered LGC 01200064 P2EX#STL DS CL1 NUMBER OF CROSS STREETS AT LOW END 01210064 P2EXCDEL DS CL30 UP TO FIVEPB5SC'S FOR LOW END 01220064 P2EX#STH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 01230064 P2EXCDEH DS CL30 UP TO FIVE B5SC'S FOR HIGH END 01240064 P2EXLBOR DS CL1 LION BOROUGH CODE 01250064 P2EXFACE DS CL4 LION FACE CODE 01260064 P2EXSEQ DS CL5 LION SEQUENCE NUMBER 01270064 P2EXSPAD DS CL1 SPECIAL ADDRESS FLAG 01280064 P2EXSOS DS CL1 SIDE OF STREET INDICATOR 01290064 P2EXSEGL DS CL5 SEGMENT LEGNTH 01300064 P2EXXCOR DS CL7 X COORDINATE 01310064 P2EXYCOR DS CL7 Y COORDINATE 01320064 P2EXZCOR DS CL7 Z Coordinate - Not Impl. 01330064 P2EXRES1 DS CL1 RESERVED FOR DCP/GSS USE 01340064 P2EXMHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 01350064 P2EXSLA DS CL1 STREET LIGHT AREA 01360064 P2EXCD DS 0CL3 COMMUNITY DISTRICT 01370064 P2EXCDB DS CL1 COMMUNITY DISTRICT BORO 01380064 P2EXCDN DS CL2 COMMUNITY DISTRICT NUMBER 01390064 P2EXZIP DS CL5 ZIP CODE 01400064 P2EXEED DS CL3 ELECTION DISTRICT 01410064 P2EXEAD DS CL2 ASSEMBLY DISTRICT 01420064 P2EXESED DS CL1 SPLIT E.D. FLAG 01430064 P2EXECON DS CL2 CONGRESSIONAL DISTRICT 01440064 P2EXESEN DS CL2 SENATORIAL DISTRICT 01450064 P2EXECIV DS CL2 CIVIL COURT DISTRICT 01460064 P2EXECOU DS CL2 CITY COUNCIL DISTRICT 01470064 * 01480064 P2EXHCD DS CL2 HEALTH CODE DISTRICT 01490064 P2EXHA DS CL4 HEALTH AREA 01500064 P2EXSAND DS CL3 SANITATION DISTRICT 01510064 P2EXSANT DS CL2 SANITATION DEPT SUBSECTION 01520064 P2EXSREG DS CL5 SANITATION REGULAR PICK-UP 01530064 P2EXSREC DS CL3 SANITATION RECYCLE PICK-UP 01540064 P2EXPOL DS 0CL4 POLICE DISTRICT 01550064 P2EXPBC DS CL1 POLICE PATROL BORO COMMAND 01560064 P2EXPOP DS CL3 POLICE PRECINCT 01570064 P2EXFS DS CL2 FIRE DIVISION 01580064 P2EXFB DS CL2 FIRE BATTALION 01590064 P2EXFC DS 0CL4 FIRE COMPANY 01600064 P2EXFCT DS CL1 FIRE COMPANY TYPE 01610064 P2EXFCN DS CL3 FIRE COMPANY NUMBER 01620064 DS CL1 FILLER-WAS SPLIT SCHOOL DIST 01630064 P2EXSCH DS CL2 SCHOOL DISTRICT 01640064 P2EXCPB DS CL3 DYNAMIC BLOCK/ATOMIC POLYGON 01650064 P2EXPPB DS CL2 Police Patrol Borough 01660064 P2EXFEAT DS CL1 Feature Type Code 01670064 P2EXSTC DS CL1 SEGMENT TYPE CODE 01680064 P2EXALX DS CL1 A=Segment split by Alley 01690064 * X=Cross Streets modified 01700064 P2EXCSC DS CL1 Coincident Segment Count 01710064 DS CL2 Filler 01720064 P2EXCTB DS CL1 CENSUS TRACT BORO USED FOR GRIDGEN 01730064 P2EXCT90 DS CL6 1990 CENSUS TRACT 01740064 P2EXCT10 DS CL6 2010 CENSUS TRACT 01750064 P2EXBL10 DS CL4 2010 CENSUS BLOCK 01760064 P2EXBLS1 DS CL1 2010 CENSUS BLOCK SUFFIX NOT IMPLEMENTED 01770064 P2EXT00 DS CL6 2000 CENSUS TRACT 01780064 P2EXB00 DS CL4 2000 CENSUS BLOCK 01790064 P2EXS00 DS CL1 2000 CENSUS BLOCK SUFFIX 01800064 P2EXNTA DS CL4 NEIGHBORHOOD TABULATION AREA 01810064 P2EXSP DS CL1 SANITATION STREET SNOW PRIORITY 01820064 P2EXSORG DS CL5 SANITATION ORGANIC PICK UP 01830064 P2EXSBLK DS CL5 SANITATION BULK PICK UP 01831069 * DS CL5 SANITATION RESERVED 01840070 P2EXHZ DS CL2 HURRICANE EVACUATION ZONE-OEM 01850064 DS CL11 FILLER 01860064 P2EXUHNS DS CL11 Underlying HNS 01870064 P2EXB7SC DS CL8 \"True\" Borough 7 Digit Street Code 01880064 P2EXSEGT DS CL7 Segment Identifier 01890064 P2EXCURV DS CL1 Curve Flag 01900064 P2EXLGCS DS CL8 List of 4 LGCs 01910064 P2EXBOEP DS CL1 BOE LGC Pointer 01920064 P2EXAZM DS CL3 Segment Azimuth 01930064 P2EXORN DS CL1 Segment Orientation 01940064 P2EXXCL DS CL7 X Coordinate, Low Address end 01950064 P2EXYCL DS CL7 Y Coordinate, Low Address end 01960064 P2EXZCL DS CL7 Z Coordinate, Low Address Not Impl 01970064 P2EXXCH DS CL7 X Coordinate, Hi Address end 01980064 P2EXYCH DS CL7 Y Coordinate, Hi Address end 01990064 P2EXZCH DS CL7 Z Coordinate, Hi Address Not Impl 02000064 P2EXXCC DS CL7 X Coordinate, Center Curve 02010064 P2EXYCC DS CL7 Y Coordinate, Center Curve 02020064 P2EXZCC DS CL7 Z Coordinate, Center Curve Not Impl 02030064 P2EXRAD DS CL7 Radius of Circle 02040064 P2EXSEC DS CL1 Secant Location Related to Curve 02050064 P2EXBETA DS CL5 Angle to From Node 02060064 P2EXALFA DS CL5 Angle to To Node 02070064 P2EXFNOD DS CL7 From LION Node Id 02080064 P2EXTNOD DS CL7 To LION Node Id 02090064 P2EXLVA DS CL10 LION Key for Vanity Address 02100064 P2EXSVA DS CL1 Side of Street for Vanity Address 02110064 P2EXSLH DS CL11 Split Low House Number 02120064 P2EXTD DS CL1 Traffic Direction 02130064 P2EXTR DS CL10 Turn Restrictions 02140064 P2EXFRC DS CL3 Fraction for Curve Calculation 02150064 P2EXRT DS CL2 Roadway Type 02160064 P2EXPID DS CL7 Physical Id 02170064 P2EXGID DS CL7 Generic Id 02180064 P2EXPDID DS CL7 For DCP Use Only 02190064 P2EXFDID DS CL7 For DCP Use Only 02200064 P2EXBLN2 DS CL2 Bike Lane 2 (has 2 byte numeric value) 02201068 P2EXBTD DS CL2 Bike Traffic Direction 02202072 DS CL3 filler 02210071 P2EXSTS DS CL1 Street Status 02220064 P2EXSTW DS CL3 Street Width 02230064 P2EXSTWI DS CL1 Street Width Irregular (Y/N) 02240064 P2EXBLN DS CL1 Bike Lane 02250064 P2EXFCC DS CL2 Federal Classification Code 02260064 P2EXROW DS CL1 Right of Way Type 02270064 P2EXSLGC DS CL10 Set of Second LGCs 02280064 P2EXLSID DS CL7 Legacy Segment ID 02290064 P2EXFPL1 DS CL10 From Preferred LGCs First Set of 5 02300064 P2EXTPL1 DS CL10 To Preferred LGCs First Set of 5 02310064 P2EXFPL2 DS CL10 From Preferred LGCs Second Set of 5 02320064 P2EXTPL2 DS CL10 To Preferred LGCs Second Set of 5 02330064 P2EXNCR DS CL1 No Cross Street Calc Flag 02340064 P2EXISL DS CL5 Individual Segment Length 02350064 P2EXNTAN DS CL75 NTA Name 02360064 P2EXUSPS DS CL25 USPS PREFERRED CITY NAME 02370064 P2EXLAT DS CL9 LATITUDE 02380064 P2EXLONG DS CL11 LONGITUDE 02390064 P2EXSFRN DS CL7 SEGMENT FROM NODE 02400064 P2EXSTON DS CL7 SEGMENT TO NODE 02410064 P2EXFXYZ DS CL21 XYZ COORD (SEGMENT FROM XYZ) 02420064 P2EXTXYZ DS CL21 XYZ COORD (SEGMENT TO XYZ) 02430064 P2EXBFID DS CL10 NEW location blockface_id because of 02460064 * length changed V16.1 02470064 P2EX#TRL DS CL2 nbr of traveling lanes 02480064 P2EX#PKL DS CL2 nbr of parking lanes 02490064 P2EX#TLL DS CL2 nbr of total lanes on street 02500067 P2EXSTWX DS CL3 Street Width-Maximum 02501068 P2EXSPDL DS CL2 Speed Limit 02502073 P2EXPUMA DS CL5 PUMA Code V18.1 02503076 P2EXPSCR DS CL4 Police Sector V19.2 02504080 P2EXPSAR DS CL1 Police Service Area V19.2 02505080 DS CL240 Filler V18.3 02510078 * DS CL245 Filler 02511078 P2EXRC DS CL1 REASON CODE 02520064 P2EXRCQ DS CL1 REASON CODE QUALIFIER 02530064 P2EXWC DS CL2 WARNING CODE FILLER 02540064 P2EXGRC DS CL2 GEOSUPPORT RETURN CODE 02550064 P2EX#SL DS CL1 NUMBER OF CROSS STREETS AT LOW END 02560064 P2EX7SL DS CL40 UP TO 5 B7SC'S FOR LOW END 02570064 P2EX#SH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 02580064 P2EX7SH DS CL40 UP TO 5 B7SC'S FOR HIGH END 02590064 P2EXSNL DS CL160 UP TO 5 STREET NAMES FOR LOW END 02600064 P2EXSNH DS CL160 UP TO 5 STREET NAMES FOR HIGH END 02610064 P2EXBPC DS CL8 BOE PREFERRED B7SC STREET CODE 02620064 P2EXBPN DS CL32 BOE PREFERRED STREET NAME 02630064 P2EXFIL DS CL52 Filler 02640064 * 02650064 P2EXEND EQU * 02660064 P2EXLEN EQU P2EXEND-P2BAL1A LENGTH OF P21EX WORKAREA 2 02670064 * 02680064 02690064 ********************************************************************** 02700064 ****** 02710064 ORG P2BAL1A RESET LOCATION FOR FN 1A EXTENDED 02720064 ****** 02730064 ********************************************************************** 02740064 02750064 P2AXKEY DS CL21 Internal Use Only 02760064 P2AXCPIN DS CL1 CONTINUOUS PARITY INDICATOR 02770064 P2AXHSEL DS CL11 LOW HOUSE NUMBER ON BLOCK - HNS Form 02780064 P2AXALT1 DS 0CL11 Alternate Key 02790064 P2AXBOR1 DS CL1 ALTERNATE KEY - BORO 02800064 P2AXTXB1 DS CL5 ALTERNATE KEY - TAX BLOCK 02810064 P2AXTXL1 DS CL4 ALTERNATE KEY - TAX LOT 02820064 DS CL1 Future Use 02830064 P2AXRSCC DS CL1 RPAD SCC 02840064 DS CL1 FILLER 02850064 P2AXGLI DS 0CL13 GENERAL LOT INFO 02860064 P2AXRBLC DS CL2 RPAD BUILDING CLASSIFICATION 02870064 P2AXCORC DS CL2 CORNER CODE 02880064 P2AX#STC DS CL4 TOTAL NUMBER STRUCTURES 02890064 P2AX#BFA DS CL2 TOTAL NUMBER BLOCKFACES 02900064 P2AXINTF DS CL1 INTERIOR LOT FLAG 02910064 P2AXVACF DS CL1 VACANT LOT FLAG 02920064 P2AXIRLF DS CL1 IRREGULARLY-SHAPED LOT FLAG 02930064 * 02940064 P2AXABFL DS CL1 Marble Hill/ Rikers ALTERNATE BORO FLAG 02950064 P2AXOVFL DS CL1 Address Overflow Flag 02960064 * 02970064 P2AXSTRK DS CL19 STROLLING KEY - FILLER 02980064 * 02990064 P2AXRFIU DS CL1 RESERVED FOR INTERNAL USE 03000064 P2AXBIN DS CL7 BUILDING IDENTIFICATION NUMBER (BIN) 03010064 * Condo Information 03020064 P2AXCONF DS CL1 CONDO LOT FLAG 03030064 DS CL1 Filler for Future Use 03040064 P2AXRCO# DS CL4 RPAD CONDO NUMBER 03050064 DS CL7 Future Use - Condo Unit Number 03060064 P2AXCBBL DS CL11 CONDO BILLING BBL 03070064 P2AXCBBS DS CL1 CONDO BILLING BBL SCC 03080064 P2AXCLBL DS CL11 CONDO LOW BBL 03090064 P2AXCHBL DS CL11 CONDO HIGH BBL 03100064 DS CL15 Filler 03110064 P2AXCOOP DS CL4 Co-op Number 03120064 * 03130064 P2AXSBVP DS CL8 SANDBORN BOROUGH/VOLUME/PAGE 03140064 * 03150064 P2AXBUSA DS CL5 BUSINESS AREA 03160064 P2AXTAXM DS CL5 Tax Map Number - Section and Volume 03170064 DS CL4 Reserved for Tax Map Page 03180064 DS CL3 FILLER 03190064 P2AXLAT DS CL9 LATITUDE 03200064 P2AXLONG DS CL11 LONGITUDE 03210064 P2AXXCO DS CL7 X Coordinate of Annotation Point 03220064 P2AXYCO DS CL7 Y Coordinate of Annotation Point 03230064 P2AXBID DS CL6 Business Improvement District 03240064 P2AXTPBS DS CL1 TPAD BIN Status 03250064 P2AXTPNB DS CL7 TPAD New BIN 03260064 P2AXTPNS DS CL1 TPAD New BIN Status 03270064 P2AXTPCF DS CL1 TPAD Conflict Flag 03280064 P2AXZMAP DS CL3 DCP Zoning Map 03281075 DS CL6 FILLER 03290075 DS CL8 Internal Use - LGCS 03300064 P2AXRC DS CL1 REASON CODE 03310064 P2AXRCQ DS CL1 REASON CODE QUALIFIER 03320064 P2AXWC DS CL2 WARNING CODE FILLER 03330064 P2AXGRC DS CL2 GEOSUPPORT RETURN CODE 03340064 DS CL108 FILLER 03350064 P2AX#ADR DS CL4 TOTAL ADDRESSES FOR LOT 03360064 P2AXLIST DS 0CL116 LIST OF ADDRESSES, MAXIMUM OF 21 03370064 P2AXLOW# DS CL16 LOW HOUSE NUMBER-Display Form 03380064 P2AXHI# DS CL16 HIGH HOUSE NUMBER-Display Form 03390064 P2AXBCDE DS CL1 Borough Code 03400064 P2AXCODE DS CL5 STREET CODE 03410064 P2AXPLGC DS CL2 Preferred LGC 03420064 P2AXLBIN DS CL7 BIN 03430064 P2AXLSOS DS CL1 Side of Street Indicator 03440064 P2AXATP DS CL1 Address Type Flag 03450064 P2AXATPS DS CL1 TPAD BIN Status 03460064 P2AXSTN DS CL32 STREET NAME 03470064 DS CL34 FILLER 03480064 * STORAGE IS RESERVED FOR THE REMAINING 20 ADDRESS STRUCTURES. 03490064 * EACH STRUCTURE IS IDENTICAL TO THE ONE DEFINED ABOVE. 03500064 DS CL2320 REMAINING ADDRESSES 03510064 P2AXEND EQU * 03520064 P2AXLEN EQU P2AXEND-P2BAL1A LENGTH OF P21A EXTEND WORKAREA 2 03530064 * 03540064 03550064 ********************************************************************** 03560064 ****** 03570064 ORG P2BAL1A RESET LOCATION FOR FN 1B 03580064 ****** 03590064 ********************************************************************** 03600064 P21BKEY DS CL21 ACCESS KEY 03610064 P21BCPAR DS CL1 CONTINUOUS PARITY INDICATOR 03620064 P21BLHNS DS CL11 LOW HOUSE NUMBER 03630064 P21BHHNS DS CL11 HIGH HOUSE NUMBER 03640064 P21BLGC DS CL2 DCP PREFERRED LGC(FN 1) - BOE (FN 1E) 03650076 P21B#STL DS CL1 NUMBER OF CROSS STREETS AT LOW END 03660064 P21BCDEL DS CL30 UP TO FIVEPB5SC'S FOR LOW END 03670064 P21B#STH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 03680064 P21BCDEH DS CL30 UP TO FIVE B5SC'S FOR HIGH END 03690064 P21BLBOR DS CL1 LION BOROUGH CODE 03700064 P21BFACE DS CL4 LION FACE CODE 03710064 P21BSEQ DS CL5 LION SEQUENCE NUMBER 03720064 P21BSPAD DS CL1 SPECIAL ADDRESS FLAG 03730064 P21BSOS DS CL1 SIDE OF STREET INDICATOR 03740064 P21BSEGL DS CL5 SEGMENT LEGNTH 03750064 P21BXCOR DS CL7 X COORDINATE 03760064 P21BYCOR DS CL7 Y COORDINATE 03770064 P21BZCOR DS CL7 Z Coordinate - Not Impl. 03780064 P21BRES1 DS CL1 RESERVED FOR DCP/GSS USE 03790064 P21BMHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 03800064 P21BSLA DS CL1 STREET LIGHT AREA 03810064 P21BCD DS 0CL3 COMMUNITY DISTRICT 03820064 P21BCDB DS CL1 COMMUNITY DISTRICT BORO 03830064 P21BCDN DS CL2 COMMUNITY DISTRICT NUMBER 03840064 P21BZIP DS CL5 ZIP CODE 03850064 P21BEED DS CL3 ELECTION DISTRICT 03860064 P21BEAD DS CL2 ASSEMBLY DISTRICT 03870064 P21BESED DS CL1 SPLIT E.D. FLAG 03880064 * Next four fields are valid only for Fn 1E 03890064 P21BECON DS CL2 CONGRESSIONAL DISTRICT 03900064 P21BESEN DS CL2 SENATORIAL DISTRICT 03910064 P21BECIV DS CL2 CIVIL COURT DISTRICT 03920064 P21BECOU DS CL2 CITY COUNCIL DISTRICT 03930064 * 03940064 P21BHCD DS CL2 HEALTH CODE DISTRICT 03950064 P21BHA DS CL4 HEALTH AREA 03960064 P21BSAND DS CL3 SANITATION DISTRICT 03970064 P21BSANT DS CL2 SANITATION DEPT SUBSECTION 03980064 P21BSREG DS CL5 SANITATION REGULAR PICK-UP 03990064 P21BSREC DS CL3 SANITATION RECYCLE PICK-UP 04000064 P21BPOL DS 0CL4 POLICE DISTRICT 04010064 P21BPBC DS CL1 POLICE PATROL BORO COMMAND 04020064 P21BPOP DS CL3 POLICE PRECINCT 04030064 P21BFS DS CL2 FIRE DIVISION 04040064 P21BFB DS CL2 FIRE BATTALION 04050064 P21BFC DS 0CL4 FIRE COMPANY 04060064 P21BFCT DS CL1 FIRE COMPANY TYPE 04070064 P21BFCN DS CL3 FIRE COMPANY NUMBER 04080064 P21BFILS DS CL1 FILLER_WAS SPLIT SCHOOL DISTRICT FLAG 04090064 P21BSCH DS CL2 SCHOOL DISTRICT 04100064 P21BCPB DS CL3 DYNAMIC BLOCK/ATOMIC POLYGON 04110064 P21BPPB DS CL2 Police Patrol Borough 04120064 P21BFEAT DS CL1 FEATURE TYPE CODE 04130064 P21BSTC DS CL1 SEGMENT TYPE CODE 04140064 P21BALX DS CL1 A=Segment split by Alley 04150064 * X=Cross Streets modified 04160064 P21BCSC DS CL1 COINCIDENT SEGMENT COUNT 04170064 DS CL2 Filler 04180064 P21BCTB DS CL1 CENSUS TRACT BORO USED FOR GRIDGEN 04190064 P21BCT90 DS CL6 1990 CENSUS TRACT 04200064 P21BCT10 DS CL6 2010 CENSUS TRACT 04210064 P21BBL10 DS CL4 2010 CENSUS BLOCK 04220064 P21BBLS1 DS CL1 2010 CENSUS BLOCK SUFFIX NOT IMPLEMENTED 04230064 P21BT00 DS CL6 2000 CENSUS TRACT 04240064 P21BB00 DS CL4 2000 CENSUS BLOCK 04250064 P21BS00 DS CL1 2000 CENSUS BLOCK SUFFIX 04260064 P21BNTA DS CL4 NEIGHBORHOOD TABULATION AREA 04270064 P21BSP DS CL1 SANITATION STREET SNOW PRIORITY 04280064 P21BSORG DS CL5 SANITATION ORGANIC PICK UP 04290064 P21BSBLK DS CL5 SANITATION BULK PICK UP 04291069 * DS CL5 SANITATION RESERVED 04300070 P21BHZ DS CL2 HURRICANE EVACUATION ZONE-OEM 04310064 DS CL11 FILLER 04320064 P21BUHNS DS CL11 Underlying HNS 04330064 P21BB7SC DS CL8 \"True\" Borough 7 Digit Street Code 04340064 P21BSEGT DS CL7 Segment Identifier 04350064 P21BCURV DS CL1 Curve Flag 04360064 P21BLGCS DS CL8 List of 4 LGCs 04370064 P21BBOEP DS CL1 BOE LGC Pointer 04380064 P21BAZM DS CL3 Segment Azimuth 04390064 P21BORN DS CL1 Segment Orientation 04400064 P21BXCL DS CL7 X Coordinate, Low Address end 04410064 P21BYCL DS CL7 Y Coordinate, Low Address end 04420064 P21BZCL DS CL7 Z Coordinate, Low Address Not Impl 04430064 P21BXCH DS CL7 X Coordinate, Hi Address end 04440064 P21BYCH DS CL7 Y Coordinate, Hi Address end 04450064 P21BZCH DS CL7 Z Coordinate, Hi Address Not Impl 04460064 P21BXCC DS CL7 X Coordinate, Center Curve 04470064 P21BYCC DS CL7 Y Coordinate, Center Curve 04480064 P21BZCC DS CL7 Z Coordinate, Center Curve Not Impl 04490064 P21BRAD DS CL7 Radius of Circle 04500064 P21BSEC DS CL1 Secant Location Related to Curve 04510064 P21BBETA DS CL5 Angle to From Node 04520064 P21BALFA DS CL5 Angle to To Node 04530064 P21BFNOD DS CL7 From LION Node Id 04540064 P21BTNOD DS CL7 To LION Node Id 04550064 P21BLVA DS CL10 LION Key for Vanity Address 04560064 P21BSVA DS CL1 Side of Street for Vanity Address 04570064 P21BSLH DS CL11 Split Low House Number 04580064 P21BTD DS CL1 Traffic Direction 04590064 P21BTR DS CL10 Turn Restrictions 04600064 P21BFRC DS CL3 Fraction for Curve Calculation 04610064 P21BRT DS CL2 Roadway Type 04620064 P21BPID DS CL7 Physical Id 04630064 P21BGID DS CL7 Generic Id 04640064 P21BPDID DS CL7 For DCP Use Only 04650064 P21BFDID DS CL7 For DCP Use Only 04660064 P21BBLN2 DS CL2 Bike Lane 2 (has 2 bytes numeric value) 04661068 P21BBTD DS CL2 Bike Traffic Direction 04662072 DS CL3 Filler 04670071 P21BSTS DS CL1 Street Status 04680064 P21BSTW DS CL3 Street Width 04690064 P21BSTWI DS CL1 Street Width Irregular (Y/N) 04700064 P21BBLN DS CL1 Bike Lane 04710064 P21BFCC DS CL2 Federal Classification Code 04720064 P21BRTP DS CL1 Row Type 04730064 P21BSLGC DS CL10 Set of Second LGCs 04740064 P21BLSID DS CL7 Legacy Segment ID 04750064 P21BFPL1 DS CL10 From Preferred LGCs First Set of 5 04760064 P21BTPL1 DS CL10 To Preferred LGCs First Set of 5 04770064 P21BFPL2 DS CL10 From Preferred LGCs Second Set of 5 04780064 P21BTPL2 DS CL10 To Preferred LGCs Second Set of 5 04790064 P21BNCR DS CL1 No Cross Street Calc Flag 04800064 P21BISL DS CL5 Individual Segment Length 04810064 P21BNTAN DS CL75 NTA Name 04820064 P21BUSPS DS CL25 USPS PREFERRED CITY NAME 04830064 P21B1LAT DS CL9 LATITUDE 04840064 P21B1LON DS CL11 LONGITUDE 04850064 P21BSFRN DS CL7 SEGMENT FROM NODE 04860064 P21BSTON DS CL7 SEGMENT TO NODE 04870064 P21BFXYZ DS CL21 XYZ COORD (SEGMENT FROM XYZ) 04880064 P21BTXYZ DS CL21 XYZ COORD (SEGMENT TO XYZ) 04890064 P21BBFID DS CL10 NEW location blockface_id because of 04891065 * length changed V16.1 04892065 P21B#TRL DS CL2 nbr of traveling lanes 04893065 P21B#PKL DS CL2 nbr of parking lanes 04894065 P21B#TLL DS CL2 nbr of total lanes 04895065 P21BSTWX DS CL3 Street Width Maximum 04895168 P21BSPDL DS CL2 Speed Limit 04895274 P21BPUMA DS CL5 PUMA Code V18.1 04895376 P21BPSCR DS CL4 Police Sector V19.2 04895480 P21BPSAR DS CL1 Police Service Area V19.2 04895580 DS CL240 Filler V18.3 04895678 * DS CL245 Filler 04895778 P21BRC DS CL1 REASON CODE 04910064 P21BRC1 DS CL1 REASON CODE QUALIFIER 04920064 P21BWC DS CL2 WARNING CODE FILLER 04930064 P21BGRC DS CL2 GEOSUPPORT RETURN CODE 04940064 P21B#SL DS CL1 NUMBER OF CROSS STREETS AT LOW END 04950064 P21B7SL DS CL40 UP TO 5 B7SC'S FOR LOW END 04960064 P21B#SH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 04970064 P21B7SH DS CL40 UP TO 5 B7SC'S FOR HIGH END 04980064 P21BSNL DS CL160 UP TO 5 STREET NAMES FOR LOW END 04990064 P21BSNH DS CL160 UP TO 5 STREET NAMES FOR HIGH END 05000064 P21BBP7 DS CL8 BOE PREFERRED B7SC 05010064 P21BBSN DS CL32 BOE PREFERRED STREET NAME 05020064 DS CL52 Filler 05030064 * 05040064 DS CL21 Internal Use Only 05050064 P21BCPIN DS CL1 CONTINUOUS PARITY INDICATOR 05060064 P21BHSEL DS CL11 LOW HOUSE NUMBER ON BLOCK - HNS Form 05070064 P21BALT1 DS 0CL11 Alternate Key Y 05080064 P21BBOR1 DS CL1 ALTERNATE KEY - BORO 05090064 P21BTXB1 DS CL5 ALTERNATE KEY - TAX BLOCK 05100064 P21BTXL1 DS CL4 ALTERNATE KEY - TAX LOT 05110064 DS CL1 Future Use 05120064 P21BRSCC DS CL1 RPAD SCC 05130064 DS CL1 FILLER 05140064 P21BGLI DS 0CL13 GENERAL LOT INFO 05150064 P21BRBLC DS CL2 RPAD BUILDING CLASSIFICATION 05160064 P21BCORC DS CL2 CORNER CODE 05170064 P21B#STC DS CL4 TOTAL NUMBER STRUCTURES 05180064 P21B#BFA DS CL2 TOTAL NUMBER BLOCKFACES 05190064 P21BINTF DS CL1 INTERIOR LOT FLAG 05200064 P21BVACF DS CL1 VACANT LOT FLAG 05210064 P21BIRLF DS CL1 IRREGULARLY-SHAPED LOT FLAG 05220064 * 05230064 P21BABFL DS CL1 Marble Hill/ Rikers ALTERNATE BORO FLAG 05240064 P21BOVFL DS CL1 Address Overflow Flag 05250064 * 05260064 P21BSTRK DS CL19 STROLLING KEY - FILLER 05270064 * 05280064 P21BRFIU DS CL1 RESERVED FOR INTERNAL USE 05290064 P21BBIN DS CL7 BUILDING IDENTIFICATION NUMBER (BIN) 05300064 * Condo Information 05310064 P21BCONF DS CL1 CONDO LOT FLAG 05320064 DS CL1 Filler for Future Use 05330064 P21BRCO# DS CL4 RPAD CONDO NUMBER 05340064 DS CL7 Future Use - Condo Unit Number 05350064 P21BCBBL DS CL11 CONDO BILLING BBL 05360064 P21BCBBS DS CL1 CONDO BILLING BBL SCC 05370064 P21BCLBL DS CL11 CONDO LOW BBL 05380064 P21BCHBL DS CL11 CONDO HIGH BBL 05390064 DS CL15 Filler 05400064 P21BCOOP DS CL4 Co-op Number 05410064 * 05420064 P21BSBVP DS CL8 SANDBORN BOROUGH/VOLUME/PAGE 05430064 * 05440064 P21BBUSA DS CL5 BUSINESS AREA 05450064 P21BTAXM DS CL5 Tax Map Number - Section and Volume 05460064 DS CL4 Reserved for Tax Map Page 05470064 DS CL3 FILLER 05480064 P21BALAT DS CL9 LATITUDE 05490064 P21BALON DS CL11 LONGITUDE 05500064 P21BXCO DS CL7 X Coordinate of Annotation Point 05510064 P21BYCO DS CL7 Y Coordinate of Annotation Point 05520064 P21BBID DS CL6 Business Improvement District 05530064 P21BTPBS DS CL1 TPAD BIN Status 05540064 P21BTPNB DS CL7 TPAD New BIN 05550064 P21BTPNS DS CL1 TPAD New BIN Status 05560064 P21BTPCF DS CL1 TPAD Conflict Flag 05570064 P21BZMAP DS CL3 DCP Zoning Map 05571075 DS CL6 FILLER 05580075 DS CL8 Internal Use - LGCS 05590064 P21BRCS2 DS CL1 REASON CODE 05600064 P21BRCQ2 DS CL1 REASON CODE QUALIFIER 05610064 P21BWC2 DS CL2 WARNING CODE FILLER 05620064 P21BGRC2 DS CL2 GEOSUPPORT RETURN CODE 05630064 DS CL108 FILLER 05640064 P21B#ADR DS CL4 TOTAL ADDRESSES FOR LOT 05650064 P21BLIST DS 0CL116 LIST OF ADDRESSES, MAXIMUM OF 21 05660064 P21BLOW# DS CL16 LOW HOUSE NUMBER-Display Form 05670064 P21BHI# DS CL16 HIGH HOUSE NUMBER-Display Form 05680064 P21BBCDE DS CL1 Borough Code 05690064 P21BCODE DS CL5 STREET CODE 05700064 P21BPLGC DS CL2 Preferred LGC 05710064 P21BLBIN DS CL7 BIN 05720064 P21BLSOS DS CL1 Side of Street Indicator 05730064 P21BATP DS CL1 Address Type Flag 05740064 P21BATPS DS CL1 TPAD BIN Status 05750064 P21BSTN DS CL32 STREET NAME 05760064 DS CL34 FILLER 05770064 * STORAGE IS RESERVED FOR THE REMAINING 20 ADDRESS STRUCTURES. 05780064 * EACH STRUCTURE IS IDENTICAL TO THE ONE DEFINED ABOVE. 05790064 DS CL2320 REMAINING ADDRESSES 05800064 P21BEND EQU * 05810064 P21BLEN EQU P21BEND-P2BAL1A LENGTH OF P21B WORKAREA 2 05820064 * 05830064 ORG , 05840064 ********************************************************************** 05850064 P2BAL3S COPY File */********************************************************************/ 00000100 */***** THIS IS GEOSUPPORT INFORMATION SYSTEM COPY FILE P2BAL3S, ***/ 00000200 */***** CONTAINING THE LAYOUT OF WORK AREA 2 FOR FUNCTION 3S. ***/ 00000300 */********************************************************************/ 00000400 */****** Last Modified - 3 April 2002 ***/ 00000502 */********************************************************************/ 00000602 P2BAL3S DS 0H 00000700 P23SAKEY DS 0CL21 ACCESS KEY 00000800 DS CL2 Internal Use Only 00000900 P23SPORS DS CL1 P=Primary, S=Secondary 00001000 P23SBORO DS CL1 Borough Code 00001100 P23S5SC DS CL5 Street Code 00001200 P23SLGC DS CL2 Blank if P in P23SPORS 00001300 DS CL10 Internal use Only 00001400 P23S#INT DS CL3 NUMBER OF INTERSECTIONS ON STRETCH 00001500 * Up to 350 Intersections 00001600 *P23SINT DS 0CL87 INTERSECTION LAYOUT 00001700 P23SINT DS 0CL55 INTERSECTION LAYOUT 00001800 P23SMHRI DS CL1 Marble Hill / Rikers Island Flag 00001900 P23SDIST DS CL5 DISTANCE IN FEET FROM PREVIOUS INTERSECT. 00002000 P23SGAPF DS CL1 GAP FLAG (\"G\" IF NO SEGMENT CONNECTS THIS 00002100 * INTERSECTION TO THE PREVIOUS ONE) 00002200 P23SNODE DS CL7 Node Number 00002301 P23S#ST DS CL1 Number of Streets intersecting (max 5) 00002400 P23SCDE1 DS CL8 NUMERICALLY SMALLEST B7SC 00002503 P23SCDE2 DS CL8 NUMERICALLY 2ND SMALLEST B7SC 00002603 P23SCDE3 DS CL8 Remaining Street Codes in any order 00002700 P23SCDE4 DS CL8 00002800 P23SCDE5 DS CL8 00002900 P23SREST DS CL19195 REMAINING INTERSECTIONS Assuming Max size 00003402 P23SEND EQU * 00003500 P23SLEN EQU P23SEND-P2BAL3S LENGTH OF P2BAL3S 00003600 P2BALAP COPY File */********************************************************************/ 00000100 */***** THIS IS GEOSUPPORT INFORMATION SYSTEM COPY FILE P2BALAP, ***/ 00000260 */***** CONTAINING THE LAYOUT OF WORK AREA 2 FOR FUNCTION AP AND ***/ 00000360 */***** APX (ADDRESS POINT AND AP EXTENDED). TLV 3/2015 V15.2 ***/ 00001260 */********************************************************************/ 00001315 P2BALAP DS 0H 00001760 DS CL21 00001815 P2APCPAR DS CL1 CONTINUOUS PARITY INDICATOR 00001960 P2APHSEL DS CL11 LOW HOUSE NUMBER ON BLOCK - HNS FORM 00002060 P2APALT1 DS 0CL11 ALTERNATE KEY 00002160 P2APBOR1 DS CL1 ALTERNATE KEY - BORO 00002260 P2APTXB1 DS CL5 ALTERNATE KEY - TAX BLOCK 00002360 P2APTXL1 DS CL4 ALTERNATE KEY - TAX LOT 00002460 DS CL1 Future Use 00002515 DS CL1 FILLER FOR FUNC AP 00002661 DS CL1 FILLER 00002715 P2APGLI DS 0CL13 GENERAL LOT INFO 00002860 P2APFL01 DS CL2 FILLER FOR AP ?fields name for fillers ?? 00002961 P2APFL02 DS CL2 FILLER FOR FUNC AP 00003061 P2AP#STC DS CL4 TOTAL NUMBER STRUCTURES 00003160 P2APFL03 DS CL2 FILLER FOR FUNC AP ? 00003261 P2APFL04 DS CL1 FILLER FOR FUNC AP ? 00003361 P2APFL05 DS CL1 FILLER FOR FUNC AP ? 00003461 P2APFL06 DS CL1 FILLER FOR FUNC AP 00003561 * 00003615 DS CL1 FILLER FOR FUNC AP 00003761 DS CL1 FILLER FOR FUNC AP 00003861 * 00003915 DS CL19 FILLER FOR FUNC AP 00004061 * 00004115 P2APRFIU DS CL1 RESERVED FOR INTERNAL USE 00004260 P2APBIN DS CL7 BUILDING IDENTIFICATION NUMBER (BIN) 00004360 * Condo Information 00004463 P2APCONF DS CL1 CONDO LOT FLAG 00004560 DS CL1 Filler for Future Use 00004615 P2APRCO# DS CL4 RPAD CONDO NUMBER 00004760 DS CL7 Future Use - Condo Unit Number 00004815 P2APCBBL DS CL11 CONDO BILLING BBL 00005063 DS CL1 FILLER FOR FUNC AP 00005161 P2APCLBL DS CL11 CONDO LOW BBL 00005260 P2APCHBL DS CL11 CONDO HIGH BBL 00005360 DS CL15 Filler 00005415 P2APCOOP DS CL4 CO-OP NUMBER 00005560 * 00005615 DS CL8 FILLER FOR FUNC AP 00005761 * 00005815 DS CL5 FILLER FOR FUNCTION AP 00005961 DS CL5 FILLER FOR FUNCTION AP 00006061 DS CL4 FILLER 00006161 DS CL3 FILLER 00006261 P2APLAT DS CL9 LATITUDE 00006360 P2APLONG DS CL11 LONGITUDE 00006460 P2APXCO DS CL7 X COORDINATE OF ANNOTATION POINT 00006560 P2APYCO DS CL7 Y COORDINATE OF ANNOTATION POINT 00006660 DS CL6 FILLER FOR FUNC AP 00006761 DS CL1 FILLER FOR FUNC AP 00006861 DS CL7 FILLER FOR FUNC AP 00006961 DS CL1 FILLER FOR FUNC AP 00007061 DS CL1 FILLER FOR FUNC AP 00007162 P2APAPID DS CL9 ADDRESS POINT ID 00007367 DS CL8 Internal Use 00007461 P2AP#ADR DS CL4 TOTAL ADDRESSES FOR LOT 00007561 P2APLIST DS 0CL1113 LIST OF ADDRESSES, MAXIMUM OF 21 00007661 P2APLOW# DS CL16 LOW HOUSE NUMBER-Display Form 00007761 P2APHI# DS CL16 HIGH HOUSE NUMBER-DISPLAY FORM 00007863 P2APBCDE DS CL1 Borough Code 00007961 P2APCODE DS CL5 STREET CODE 00008061 P2APPLGC DS CL2 Preferred LGC 00008161 P2APLBIN DS CL7 BIN 00008261 P2APLSOS DS CL1 Side of Street Indicator 00008361 P2APATP DS CL1 Address Type Flag 00008461 DS CL1 FILLER FOR FUNC AP 00008562 DS CL3 FILLER 00008661 * STORAGE IS RESERVED FOR THE REMAINING 20 ADDRESS STRUCTURES. 00008761 * EACH STRUCTURE IS IDENTICAL TO THE ONE DEFINED ABOVE. 00008861 DS CL1060 REMAINING ADDRESSES 00008961 P2APSEND EQU * 00009061 P2APSLEN EQU P2APSEND-P2BALAP LENGTH OF P2BALAP 00009162 00021016 ********************************************************************** 01222016 ****** 01223016 ORG P2BALAP RESET LOCATION FOR FN AP EXTENDED 01224062 ****** 01225016 ********************************************************************** 01226016 P2PXKEY DS CL21 INTERNAL USE ONLY 01226166 P2PXCPAR DS CL1 CONTINUOUS PARITY INDICATOR 01226366 P2PXHSEL DS CL11 LOW HOUSE NUMBER ON BLOCK - HNS FORM 01226466 P2PXALT1 DS 0CL11 BBL 01226566 P2PXBOR1 DS CL1 BORO 01226666 P2PXTXB1 DS CL5 TAX BLOCK 01226766 P2PXTXL1 DS CL4 TAX LOT 01226866 DS CL1 Future Use 01226963 DS CL1 FILLER FOR FUNC AP 01227063 DS CL1 FILLER 01227163 P2PXGLI DS 0CL13 GENERAL LOT INFO 01227266 P2PXFL01 DS CL2 FILLER FOR AP ?FIELDS NAME FOR FILLERS ?? 01227366 P2PXFL02 DS CL2 FILLER FOR FUNC AP 01227466 P2PX#STC DS CL4 TOTAL NUMBER STRUCTURES 01227566 P2PXFL03 DS CL2 FILLER FOR FUNC AP ? 01227666 P2PXFL04 DS CL1 FILLER FOR FUNC AP ? 01227766 P2PXFL05 DS CL1 FILLER FOR FUNC AP ? 01227866 P2PXFL06 DS CL1 FILLER FOR FUNC AP 01227966 * 01228063 DS CL1 FILLER FOR FUNC AP 01228163 DS CL1 FILLER FOR FUNC AP 01228263 * 01228363 DS CL19 FILLER FOR FUNC AP 01228463 * 01228563 P2PXRFIU DS CL1 RESERVED FOR INTERNAL USE 01228666 P2PXBIN DS CL7 BUILDING IDENTIFICATION NUMBER (BIN) 01228766 * Condo Information 01228863 P2PXCONF DS CL1 CONDO LOT FLAG 01228966 DS CL1 Filler for Future Use 01229063 P2PXRCO# DS CL4 RPAD CONDO NUMBER 01229166 DS CL7 Future Use - Condo Unit Number 01229263 P2PXCBBL DS CL11 CONDO BILLING BBL 01229366 DS CL1 FILLER FOR FUNC AP 01229463 P2PXCLBL DS CL11 CONDO LOW BBL 01229566 P2PXCHBL DS CL11 CONDO HIGH BBL 01229666 DS CL15 Filler 01229763 P2PXCOOP DS CL4 CO-OP NUMBER 01229866 * 01229963 DS CL8 FILLER FOR FUNC AP 01230063 * 01230163 DS CL5 FILLER FOR FUNCTION AP 01230263 DS CL5 FILLER FOR FUNCTION AP 01230363 DS CL4 FILLER 01230463 DS CL3 FILLER 01230563 P2PXLAT DS CL9 LATITUDE 01230666 P2PXLONG DS CL11 LONGITUDE 01230766 P2PXXCO DS CL7 X COORDINATE OF ANNOTATION POINT 01230866 P2PXYCO DS CL7 Y COORDINATE OF ANNOTATION POINT 01230966 DS CL6 FILLER FOR FUNC AP 01231063 DS CL1 FILLER FOR FUNC AP 01231163 DS CL7 FILLER FOR FUNC AP 01231263 DS CL1 FILLER FOR FUNC AP 01231363 DS CL1 FILLER FOR FUNC AP 01231463 P2PXAPID DS CL9 ADDRESS POINT ID 01231667 DS CL8 Internal Use - LGCs 01231764 P2PXRC DS CL1 REASON CODE 01231866 P2PXRCQ DS CL1 REASON CODE QUALIFIER 01231966 P2PXWC DS CL2 WARNING CODE FILLER 01232066 P2PXGRC DS CL2 GEOSUPPORT RETURN CODE 01232166 DS CL108 FILLER 01232264 P2PX#ADR DS CL4 TOTAL ADDRESSES FOR LOT 01232966 P2PXLIST DS 0CL116 LIST OF ADDRESSES, MAXIMUM OF 21 01233066 P2PXLOW# DS CL16 LOW HOUSE NUMBER-DISPLAY FORM 01233166 P2PXHI# DS CL16 HIGH HOUSE NUMBER-DISPLAY FORM 01233266 P2PXBCDE DS CL1 BOROUGH CODE 01233366 P2PXCODE DS CL5 STREET CODE 01233466 P2PXPLGC DS CL2 PREFERRED LGC 01233566 P2PXLBIN DS CL7 BIN 01233666 P2PXLSOS DS CL1 SIDE OF STREET INDICATOR 01233766 P2PXATP DS CL1 ADDRESS TYPE FLAG 01233866 DS CL1 FILLER FOR FUNC AP 01233963 P2PXSTN DS CL32 STREET NAME 01234066 DS CL34 FILLER 01234164 * STORAGE IS RESERVED FOR THE REMAINING 20 ADDRESS STRUCTURES. 01234263 * EACH STRUCTURE IS IDENTICAL TO THE ONE DEFINED ABOVE. 01234363 DS CL1060 REMAINING ADDRESSES 01234463 P2PXSEND EQU * 01234566 P2PXSLEN EQU P2APSEND-P2BALAP LENGTH OF P2AP EXTEND WORKAREA 2 01234666 * 01234764 ORG , 01269362 ********************************************************************** 01269516 PL/1 COPY Files (COW) P1PL1 COPY File /*******************************************************************/ 00000100 /** ADDED 'UNIT' FIELDS TO WA1 YNL 10/16 V16.4 ***/ 00000227 /*** THIS IS THE PL/1 STRUCTURE FOR GEOSUPPORT SYSTEM PLATFORM ***/ 00000300 /*** INDEPENDENT WORK AREA 1. ***/ 00000400 /*** COPY FILE - P1PL1. ***/ 00000500 /*** 04/07/98 ***/ 00000600 /** LAST UPDATED OCTOBER 2016 **/ 00000729 /*******************************************************************/ 00000825 DCL PP1 POINTER; 00000925 DCL 00001025 1 P1PL1, 00001125 /***********************************************/ 00001225 /***** INPUT FIELDS *****/ 00001325 /***********************************************/ 00001425 2 PIWA1_IN_FUNCTION_CODE, 00001525 3 PIWA1_IN_FUNCTION_1 CHAR(1), 00001625 3 PIWA1_IN_FUNCTION_2 CHAR(1), 00001725 2 PIWA1_IN_HOUSENUM_DISPLAY CHAR(16), 00001825 2 PIWA1_IN_HOUSENUM_SORT CHAR(11), 00001925 2 PIWA1_IN_LOW_HOUSENUM_DISPLAY CHAR(16), 00002025 2 PIWA1_IN_LOW_HOUSENUM_SORT CHAR(11), 00002125 2 PIWA1_IN_BORO_1 CHAR(1), 00002225 2 PIWA1_IN_10SC_1 CHAR(10), 00002325 2 PIWA1_IN_STREET_1 CHAR(32), 00002425 2 PIWA1_IN_BORO_2 CHAR(1), 00002525 2 PIWA1_IN_10SC_2 CHAR(10), 00002625 2 PIWA1_IN_STREET_2 CHAR(32), 00002725 2 PIWA1_IN_BORO_3 CHAR(1), 00002825 2 PIWA1_IN_10SC_3 CHAR(10), 00002925 2 PIWA1_IN_STREET_3 CHAR(32), 00003025 2 PIWA1_IN_BBL, 00003125 3 PIWA1_IN_BBL_BORO CHAR(1), 00003225 3 PIWA1_IN_BLOCK CHAR(5), 00003325 3 PIWA1_IN_LOT CHAR(4), 00003425 3 PIWA1_IN_LOT_VER CHAR(1), 00003525 2 PIWA1_IN_BIN CHAR(7), 00003625 2 PIWA1_IN_COMPASS CHAR(1), 00003725 2 PIWA1_IN_COMPASS2 CHAR(1), 00003825 2 PIWA1_IN_NODE CHAR(7), /*NODE INPUT FN 2*/00003923 2 PIWA1_IN_PLATFORM_INDICATOR CHAR(1), 00004009 2 PIWA1_IN_ZIPIN CHAR(5), 00004112 2 PIWA1_IN_UNIT CHAR(14), 00004227 2 FILLER_200 CHAR(82), 00004327 /** 2 FILLER_200 *** V16.4 *** CHAR(96) ****/ 00004427 2 PIWA1_IN_LONG_WORKAREA2_FLAG CHAR(1), /*L=LONG */ 00004527 2 PIWA1_IN_HSE_NBR_JUSTIFY CHAR(1), 00004627 2 PIWA1_IN_HNL CHAR(2), /* NI */ 00004727 2 PIWA1_IN_HSE_OVER_FLAG CHAR(1), 00004827 2 PIWA1_IN_SNL CHAR(2), 00004927 2 PIWA1_IN_SN_NORM_FORMAT CHAR(1), /*C=COMPACT */ 00005027 /*S OR ' '=SORT*/ 00005127 2 PIWA1_IN_EXPANDED_FORMAT CHAR(1), 00005227 2 PIWA1_IN_ROADBED_REQ_SWITCH CHAR(1), 00005327 2 PIWA1_IN_INTERNAL_USE_LEGACY CHAR(1), 00005427 2 PIWA1_IN_SEGAUX_SWITCH CHAR(1), 00005527 2 PIWA1_IN_BROWSE_FLAG CHAR(1), 00005627 2 PIWA1_IN_REAL_STREET_ONLY CHAR(1), /* FN 3S */ 00005727 2 PIWA1_IN_TPAD_SWITCH CHAR(1), /*FN 1A-BL-BN*/ 00005827 2 PIWA1_IN_MODE_SWITCH CHAR(1), /*FN 1-1E-1A-*/ 00005927 /*FN BL-BN-3-3C*/ 00006027 /*X=EXTENDED */ 00006127 2 PIWA1_IN_WTO_SWITCH CHAR(1), /*N=NO WTO*/ 00006227 2 FILLER_400 CHAR(29), 00006327 /***********************************************/ 00006427 /***** OUTPUT FIELDS *****/ 00006527 /***********************************************/ 00006627 2 PIWA1_OUT_BORONAME CHAR(9), 00006727 2 PIWA1_OUT_HOUSENUM_DISPLAY CHAR(16), 00006827 2 PIWA1_OUT_HOUSENUM_SORT CHAR(11), 00006927 2 PIWA1_OUT_B10SC_1 CHAR(11), 00007027 2 PIWA1_OUT_STREET_1 CHAR(32), 00007127 2 PIWA1_OUT_B10SC_2 CHAR(11), 00007227 2 PIWA1_OUT_STREET_2 CHAR(32), 00007327 2 PIWA1_OUT_B10SC_3 CHAR(11), 00007427 2 PIWA1_OUT_STREET_3 CHAR(32), 00007527 2 PIWA1_OUT_BBL, 00007627 3 PIWA1_OUT_BBL_BORO CHAR(1), 00007727 3 PIWA1_OUT_BLOCK CHAR(5), 00007827 3 PIWA1_OUT_LOT CHAR(4), 00007927 2 PIWA1_OUT_LOT_VER CHAR(1), 00008027 2 PIWA1_OUT_LO_HOUSENUM_DISPLAY CHAR(16), 00008127 2 PIWA1_OUT_LO_HOUSENUM_SORT CHAR(11), 00008227 2 PIWA1_OUT_BIN CHAR(7), 00008327 2 PIWA1_OUT_STREET_ATTR(3) CHAR(1), 00008427 2 PIWA1_OUT_REASON_CODE_2 CHAR(1), 00008527 2 PIWA1_OUT_REASON_CODE_QUAL_2 CHAR(1), /*TPAD 2ND REASON*/ 00008627 /*CODE QUALIFIER */ 00008727 2 PIWA1_OUT_WARNING_CODE_2 CHAR(2), 00008827 2 PIWA1_OUT_RETURN_CODE_2 CHAR(2), 00008927 2 PIWA1_OUT_ERROR_MESSAGE_2 CHAR(80), 00009027 2 PIWA1_OUT_NODE CHAR(7), /*NODE NORMALIZED*/00009127 2 PIWA1_OUT_UNIT_SORT, 00009227 3 PIWA1_OUT_UNIT_TYPE CHAR(4), 00009327 3 PIWA1_OUT_UNIT_ID CHAR(10), 00009427 2 PIWA1_OUT_UNIT_DISP CHAR(14), 00009527 2 FILLER_550 CHAR(17), 00009728 /** 2 FILLER_550 *** V16.4 *** CHAR(39) ***/ 00009827 /** 2 FILLER_555 CHAR(6), ***/ 00009928 2 PIWA1_OUT_SND_ATTR CHAR(1), 00010027 2 PIWA1_OUT_REASON_CODE CHAR(1), 00010127 2 PIWA1_OUT_REASON_CODE_QUAL CHAR(1), /*TPAD REASON */ 00010227 /*CODE QUALIFIER*/ 00010327 2 PIWA1_OUT_WARNING_CODE CHAR(2), 00010427 2 PIWA1_OUT_RETURN_CODE CHAR(2), 00010527 2 PIWA1_OUT_ERROR_MESSAGE CHAR(80), 00010627 2 PIWA1_OUT_NUM_SIMILAR_STRS CHAR(2), 00010727 2 PIWA1_OUT_SIMILAR_B7SC(10) CHAR(8), 00010827 2 PIWA1_OUT_SIMILAR_NAMES(10) CHAR(32); 00010927 00011027 DCL PIWA1_IN_FUNC_CODE CHAR(2) 00011127 BASED(ADDR(PIWA1_IN_FUNCTION_CODE)); 00011227 00011327 DCL WORK1PL1 BASED(PP1) CHAR(1200); 00012027 PP1=ADDR(P1PL1); 00020018 P2PL1 COPY File /*******************************************************************/ 00010099 /*** P2PL1 ***/ 00011099 /*** LAST MODIFIED DECEMBER 2017 ***/ 00012099 /* ADD NEW 4 BYTE POLICE SECTOR TLV 06/18 V19.2*/ 00013099 /* ADD NEW 5 BYTE PUMA CODE YNL 12/17 V18.1*/ 00014199 /* ADD NEW 2 BYTE SPEED LIMIT TLV 09/17 V17.4*/ 00015099 /* ADD NEW 2 BYTE BIKE TRAFFIC DIRECTION YNL 12/16 V17,1*/ 00015199 /* ADD NEW 2 BYTE BIKE LANE AND MAX STR WIDTH YNL 10/16 V16.4*/ 00015299 /* */ 00016099 /*** THIS IS THE PL/1 STRUCTURE FOR GEOSUPPORT SYSTEM PLATFORM ***/ 00030099 /*** INDEPENDENT WORK AREA 2 FOR FUNCTIONS: 1, 1E, 2, 2C, 3, ***/ 00040099 /*** AND 5. ***/ 00050099 /*** ADDED 3 EXTENDED AND 3C EXTENDED MEB 6/11 ***/ 00060099 /*** ADDED 2 WIDE MEB 3/14 ***/ 00070099 /*** ***/ 00080099 /*** COPY FILE - P2PL1. ***/ 00090099 /*** PLEASE NOTE THAT FUNCTIONS 1 AND 1E SHARE A SINGLE ***/ 00100099 /*** WORK AREA 2 LAYOUT, AND FUNCTIONS 2 AND 2C ALSO ***/ 00110099 /*** SHARE A SINGLE WORK AREA 2 LAYOUT. 12/30/97 ***/ 00120099 /*******************************************************************/ 00130099 DCL PP2 POINTER; 00140099 DCL P2PL1 CHAR(10000) INIT(' '); 00150099 00160099 00170099 /*******************************************************************/ 00180099 /******* FOR: FUNCTIONS 1 & 1E *****************************/ 00190099 DCL 00200099 1 PIWA2_FUNCTION1 BASED(PP2), 00210099 2 PIWA2_FN1_ACCESS_KEY CHAR(21), 00220099 2 PIWA2_FN1_CONT_PARITY CHAR(1),/*(OR DUP ADDR IND)*/ 00230099 2 PIWA2_FN1_LOW_HOUSENUM CHAR(11),/* SORT FORMAT */ 00240099 2 PIWA2_FN1_HI_HOUSENUM CHAR(11),/* SORT FORMAT */ 00250099 2 PIWA2_FN1_PREF_LGC CHAR(2), 00260099 2 PIWA2_FN1_NUM_X_ST_LOW_END CHAR(1), 00270099 2 PIWA2_FN1_LOW_B5SC(5) CHAR(6), 00280099 2 PIWA2_FN1_NUM_X_ST_HI_END CHAR(1), 00290099 2 PIWA2_FN1_HI_B5SC(5) CHAR(6), 00300099 2 PIWA2_FN1_LIONKEY, 00310099 3 PIWA2_FN1_LION_BORO CHAR(1), 00320099 3 PIWA2_FN1_LION_FACECODE CHAR(4), 00330099 3 PIWA2_FN1_LION_SEQ CHAR(5), 00340099 2 PIWA2_FN1_SPECIAL_ADDR_FLAG CHAR(1), 00350099 2 PIWA2_FN1_SIDE_OF_STR CHAR(1), 00360099 2 PIWA2_FN1_SEG_LEN CHAR(5), 00370099 2 PIWA2_FN1_XCOORD CHAR(7), 00380099 2 PIWA2_FN1_YCOORD CHAR(7), 00390099 2 FILLER_100 CHAR(7), /* FOR ZCOORD */ 00400099 2 FILLER_200 CHAR(1), /* FOR GSS USE*/ 00410099 2 PIWA2_FN1_MARBLE_RIKERS_FLAG CHAR(1), 00420099 2 PIWA2_FN1_DOT_SLA CHAR(1), 00430099 2 PIWA2_FN1_COM_DIST, 00440099 3 PIWA2_FN1_COM_DIST_BORO CHAR(1), 00450099 3 PIWA2_FN1_COM_DIST_NUM CHAR(2), 00460099 2 PIWA2_FN1_ZIP CHAR(5), 00470099 00480099 2 PIWA2_FN1E_ELECT_DIST CHAR(3), /*****************/ 00490099 2 PIWA2_FN1E_ASSEM_DIST CHAR(2), /* THE FNIE */ 00500099 2 PIWA2_FN1E_SPLIT_ED_FLAG CHAR(1), /* FIELDS ARE */ 00510099 2 PIWA2_FN1E_CONG_DIST CHAR(2), /* VALID ONLY FOR*/ 00520099 2 PIWA2_FN1E_SENATE_DIST CHAR(2), /* FUNCTION 1E, */ 00530099 2 PIWA2_FN1E_COURT_DIST CHAR(2), /* NOT FUNC 1. */ 00540099 2 PIWA2_FN1E_COUNCIL_DIST CHAR(2), /*****************/ 00550099 00560099 2 PIWA2_FN1_HEALTH_CENTER_DIST CHAR(2), /* HEALTH CENTR*/ 00570099 2 PIWA2_FN1_HEALTH_AREA CHAR(4), /* HEALTH AREA*/ 00580099 2 PIWA2_FN1_SANI_DIST, 00590099 3 PIWA2_FN1_SANI_DIST_BORO CHAR(1), 00600099 3 PIWA2_FN1_SANI_DIST_NUM CHAR(2), 00610099 2 PIWA2_FN1_SANI_SUBSEC CHAR(2), 00620099 2 PIWA2_FN1_SANI_REG CHAR(5), 00630099 2 PIWA2_FN1_SANI_REC CHAR(3), 00640099 2 PIWA2_FN1_POLICE_DIST, 00650099 3 PIWA2_FN1_POL_PAT_BORO_CMD CHAR(1), 00660099 3 PIWA2_FN1_POL_PRECINCT CHAR(3), 00670099 2 PIWA2_FN1_FIRE_DIV CHAR(2), 00680099 2 PIWA2_FN1_FIRE_BAT CHAR(2), 00690099 2 PIWA2_FN1_FIRE_CO, 00700099 3 PIWA2_FN1_FIRE_CO_TYPE CHAR(1), 00710099 3 PIWA2_FN1_FIRE_CO_NUM CHAR(3), 00720099 2 PIWA2_FN1_FILL_DIST_SPLIT_FLAG CHAR(1), /*WAS SPLIT SC*/ 00730099 2 PIWA2_FN1_SCHL_DIST CHAR(2), 00740099 2 PIWA2_FN1_DYN_BLK CHAR(3), /*ATOMIC POLYGON*/ 00750099 2 PIWA2_FN1_POLICE_PAT_BORO CHAR(2), 00760099 2 PIWA2_FN1_FEATURE_TYPE CHAR(1), 00770099 2 PIWA2_FN1_SEGMENT_TYPE CHAR(1), 00780099 2 PIWA2_FN1_ALX CHAR(1), 00790099 2 PIWA2_FN1_COINCIDENT_SEG_CTR CHAR(1), 00800099 2 FILLER_290 CHAR(2), 00810099 2 PIWA2_FN1_CENS_TRCT_BORO CHAR(1), /*USED FOR GRIDGEN*/ 00820099 2 PIWA2_FN1_1990_CENS_TRCT CHAR(6), 00830099 2 PIWA2_FN1_2010_CENSUS_TRACT CHAR(6), 00840099 2 PIWA2_FN1_2010_CENSUS_BLOCK CHAR(4), 00850099 2 PIWA2_FN1_2010_CENSUS_BLK_SF CHAR(1), /*NOT IMPLEMENTED*/ 00860099 2 PIWA2_FN1_2000_CENS_TRACT CHAR(6), 00870099 2 PIWA2_FN1_2000_CENS_BLOCK CHAR(4), 00880099 2 PIWA2_FN1_2000_CENS_BLOCK_SUF CHAR(1), 00890099 2 PIWA2_FN1_NTA CHAR(4), /*NEIGHBORHOOD */ 00900099 /*TABULATION AREA */ 00910099 2 PIWA2_FN1_SANIT_SNOW_PRIORITY CHAR(1), /*SANITATION STRT */ 00920099 /*SNOW PRIORITY */ 00930099 2 PIWA2_FN1_SANIT_ORGANICS CHAR(5), /*SANITATION */ 00940099 /*ORGANIC PICKUP */ 00950099 2 PIWA2_FN1_SANIT_BULK_PICK_UP CHAR(5), /*SANITATION BULK */ 00960099 /** 2 PIWA2_FN1_SANIT_RESERVED *V16.4* CHAR(5), /*SANITATION RESRV*/ 00961099 2 PIWA2_FN1_HURRICANE_ZONE CHAR(2), /*OEM HURRICANE */ 00970099 /*EVACUATION ZONE */ 00980099 2 FILLER_300 CHAR(11), 00990099 2 PIWA2_FN1_UHNS CHAR(11), 01000099 2 PIWA2_FN1_REAL_B7SC CHAR(8), 01010099 2 PIWA2_FN1_SEGMENT_ID CHAR(7), 01020099 2 PIWA2_FN1_CURVE_FLAG CHAR(1); 01030099 01040099 DCL PIWA2_FN1_COMDIST CHAR(3) 01050099 BASED(ADDR(PIWA2_FN1_COM_DIST)); 01060099 DCL PIWA2_FN1_SANIDIST CHAR(3) 01070099 BASED(ADDR(PIWA2_FN1_SANI_DIST)); 01080099 DCL PIWA2_FN1_POLDIST CHAR(4) 01090099 BASED(ADDR(PIWA2_FN1_POLICE_DIST)); 01100099 01110099 01120099 /*******************************************************************/ 01130099 /******* FOR: FUNCTIONS 2 & 2C *****************************/ 01140099 DCL 01150099 1 PIWA2_FUNCTION2 BASED(PP2), 01160099 2 PIWA2_FN2_ACCESS_KEY CHAR(21), 01170099 2 PIWA2_FN2_DUP_INTERSECT_FLAG CHAR(1), 01180099 2 PIWA2_FN2_PREF_LGC1 CHAR(2), 01190099 2 PIWA2_FN2_PREF_LGC2 CHAR(2), 01200099 2 PIWA2_FN2_NUM_OF_INTERSECTS CHAR(1), 01210099 2 PIWA2_FN2_INTERSECT_B5SC(5) CHAR(6), 01220099 2 PIWA2_FN2_COMPDIR CHAR(1), 01230099 2 PIWA2_FN2_ATOMIC_POLYGON CHAR(3), 01240099 2 FILLER_350 CHAR(2), 01250099 2 PIWA2_FN2_LIONNODENUM CHAR(7), 01260099 2 PIWA2_FN2_XCOORD CHAR(7), 01270099 2 PIWA2_FN2_YCOORD CHAR(7), 01280099 2 FILLER_400 CHAR(7), /* FOR ZCOORD */ 01290099 2 PIWA2_FN2_SANBORN1, 01300099 3 PIWA2_FN2_SANBORN1_BORO CHAR(1), 01310099 3 PIWA2_FN2_SANBORN1_VOL CHAR(3), 01320099 3 PIWA2_FN2_SANBORN1_PAGE CHAR(4), 01330099 2 PIWA2_FN2_SANBORN2, 01340099 3 PIWA2_FN2_SANBORN2_BORO CHAR(1), 01350099 3 PIWA2_FN2_SANBORN2_VOL CHAR(3), 01360099 3 PIWA2_FN2_SANBORN2_PAGE CHAR(4), 01370099 2 PIWA2_FN2_MARBLE_RIKERS_FLAG CHAR(1), 01380099 2 PIWA2_FN2_DOT_SLA CHAR(1), 01390099 2 PIWA2_FN2_COM_DIST, 01400099 3 PIWA2_FN2_COM_DIST_BORO CHAR(1), 01410099 3 PIWA2_FN2_COM_DIST_NUM CHAR(2), 01420099 2 PIWA2_FN2_ZIP CHAR(5), 01430099 2 PIWA2_FN2_HEALTH_AREA CHAR(4), /*HEALTH AREA*/ 01440099 2 PIWA2_FN2_POLICE_DIST, 01450099 3 PIWA2_FN2_POL_PAT_BORO_CMD CHAR(1), 01460099 3 PIWA2_FN2_POL_PRECINCT CHAR(3), 01470099 2 PIWA2_FN2_FIRE_DIV CHAR(2), 01480099 2 PIWA2_FN2_FIRE_BAT CHAR(2), 01490099 2 PIWA2_FN2_FIRE_CO, 01500099 3 PIWA2_FN2_FIRE_CO_TYPE CHAR(1), 01510099 3 PIWA2_FN2_FIRE_CO_NUM CHAR(3), 01520099 2 PIWA2_FN2_SCHL_DIST CHAR(2), 01530099 2 PIWA2_FN2_2010_CENSUS_TRACT CHAR(6), 01540099 2 PIWA2_FN2_1990_CENS_TRCT CHAR(6), 01550099 2 PIWA2_FN2_LEVEL_CODES(5,2) CHAR(1), 01560099 2 PIWA2_FN2_POLICE_PAT_BORO CHAR(2), 01570099 2 PIWA2_FN2_ASSEM_DIST CHAR(2), 01580099 2 PIWA2_FN2_CONG_DIST CHAR(2), 01590099 2 PIWA2_FN2_SENATE_DIST CHAR(2), 01600099 2 PIWA2_FN2_COURT_DIST CHAR(2), 01610099 2 PIWA2_FN2_COUNCIL_DIST CHAR(2), 01620099 2 PIWA2_FN2_CD_ELIGIBLE CHAR(1), 01630099 2 PIWA2_FN2_DUP_INTERSECT_DIST CHAR(5), 01640099 2 PIWA2_FN2_2000_CENS_TRACT CHAR(6), 01650099 2 PIWA2_FN2_HEALTH_CENTER_DIST CHAR(2), /*HEALTH CENTER*/ 01660099 2 PIWA2_FN2_SANITATION_DIST CHAR(3), 01670099 2 PIWA2_FN2_SANITATION_SUBSEC CHAR(2), 01680099 2 PIWA2_FN2_POLICE_SECTOR CHAR(4), 01681099 2 FILLER_500 CHAR(8) ; 01690099 /* 2 FILLER_500 ** V18.3** CHAR(12) */ 01691099 01700099 DCL PIWA2_FN2_COMDIST CHAR(3) 01710099 BASED(ADDR(PIWA2_FN2_COM_DIST)); 01720099 DCL PIWA2_FN2_POLDIST CHAR(4) 01730099 BASED(ADDR(PIWA2_FN2_POLICE_DIST)); 01740099 DCL PIWA2_FN2_SANBORN1_BVOLPAGE CHAR(8) 01750099 BASED(ADDR(PIWA2_FN2_SANBORN1)), 01760099 PIWA2_FN2_SANBORN2_BVOLPAGE CHAR(8) 01770099 BASED(ADDR(PIWA2_FN2_SANBORN2)); 01780099 01790099 01800099 /*******************************************************************/ 01810099 /******* FOR: FUNCTIONS 2W *****************************/ 01820099 DCL 01830099 1 PIWA2_FUNCTION2W BASED(PP2), 01840099 2 PIWA2_FN2W_ACCESS_KEY CHAR(21), 01850099 2 PIWA2_FN2W_DUP_INTERSECT_FLAG CHAR(1), 01860099 2 PIWA2_FN2W_PREF_LGC1 CHAR(2), 01870099 2 PIWA2_FN2W_PREF_LGC2 CHAR(2), 01880099 2 PIWA2_FN2W_NUM_OF_INTERSECTS CHAR(1), 01890099 2 PIWA2_FN2W_INTERSECT_B5SC(5) CHAR(6), 01900099 2 PIWA2_FN2W_COMPDIR CHAR(1), 01910099 2 PIWA2_FN2W_ATOMIC_POLYGON CHAR(3), 01920099 2 PIWA2_FN2W_FILLER_350 CHAR(2), 01930099 2 PIWA2_FN2W_LIONNODENUM CHAR(7), 01940099 2 PIWA2_FN2W_XCOORD CHAR(7), 01950099 2 PIWA2_FN2W_YCOORD CHAR(7), 01960099 2 PIWA2_FN2W_FILLER_400 CHAR(7), /* FOR ZCOORD */ 01970099 2 PIWA2_FN2W_SANBORN1, 01980099 3 PIWA2_FN2W_SANBORN1_BORO CHAR(1), 01990099 3 PIWA2_FN2W_SANBORN1_VOL CHAR(3), 02000099 3 PIWA2_FN2W_SANBORN1_PAGE CHAR(4), 02010099 2 PIWA2_FN2W_SANBORN2, 02020099 3 PIWA2_FN2W_SANBORN2_BORO CHAR(1), 02030099 3 PIWA2_FN2W_SANBORN2_VOL CHAR(3), 02040099 3 PIWA2_FN2W_SANBORN2_PAGE CHAR(4), 02050099 2 PIWA2_FN2W_MARBLE_RIKERS_FLAG CHAR(1), 02060099 2 PIWA2_FN2W_DOT_SLA CHAR(1), 02070099 2 PIWA2_FN2W_COM_DIST, 02080099 3 PIWA2_FN2W_COM_DIST_BORO CHAR(1), 02090099 3 PIWA2_FN2W_COM_DIST_NUM CHAR(2), 02100099 2 PIWA2_FN2W_ZIP CHAR(5), 02110099 2 PIWA2_FN2W_HEALTH_AREA CHAR(4), /*HEALTH AREA*/ 02120099 2 PIWA2_FN2W_POLICE_DIST, 02130099 3 PIWA2_FN2W_POL_PAT_BORO_CMD CHAR(1), 02140099 3 PIWA2_FN2W_POL_PRECINCT CHAR(3), 02150099 2 PIWA2_FN2W_FIRE_DIV CHAR(2), 02160099 2 PIWA2_FN2W_FIRE_BAT CHAR(2), 02170099 2 PIWA2_FN2W_FIRE_CO, 02180099 3 PIWA2_FN2W_FIRE_CO_TYPE CHAR(1), 02190099 3 PIWA2_FN2W_FIRE_CO_NUM CHAR(3), 02200099 2 PIWA2_FN2W_SCHL_DIST CHAR(2), 02210099 2 PIWA2_FN2W_2010_CENSUS_TRACT CHAR(6), 02220099 2 PIWA2_FN2W_1990_CENS_TRCT CHAR(6), 02230099 2 PIWA2_FN2W_LEVEL_CODES(5,2) CHAR(1), 02240099 2 PIWA2_FN2W_POLICE_PAT_BORO CHAR(2), 02250099 2 PIWA2_FN2W_ASSEM_DIST CHAR(2), 02260099 2 PIWA2_FN2W_CONG_DIST CHAR(2), 02270099 2 PIWA2_FN2W_SENATE_DIST CHAR(2), 02280099 2 PIWA2_FN2W_COURT_DIST CHAR(2), 02290099 2 PIWA2_FN2W_COUNCIL_DIST CHAR(2), 02300099 2 PIWA2_FN2W_CD_ELIGIBLE CHAR(1), 02310099 2 PIWA2_FN2W_DUP_INTERSECT_DIST CHAR(5), 02320099 2 PIWA2_FN2W_2000_CENS_TRACT CHAR(6), 02330099 2 PIWA2_FN2W_HEALTH_CENTER_DIST CHAR(2), 02340099 2 PIWA2_FN2W_SANITATION_DIST CHAR(3), 02350099 2 PIWA2_FN2W_SANITATION_SUBSEC CHAR(2), 02360099 2 PIWA2_FN2W_POLICE_SECTOR CHAR(4), 02361099 2 FILLER_500 CHAR(8), 02362099 /* 2 FILLER_500 ** V18.3** CHAR(12) */ 02363099 2 PIWA2_FN2W_FILLER_500 CHAR(12), 02370099 2 PIWA2_FN2W_FILLER_GRIDGEN CHAR(22), 02380099 2 PIWA2_FN2W_LGCS_FIRST_INTERSCT(4), /*UP TO 4 LGCS FOR */02390099 3 PIWA2_FN2W_LGC_FIRST_INTERSCT CHAR(2), /*1ST INPUT STREET */02400099 /*IN INTERSECTION */02410099 2 PIWA2_FN2W_LGCS_SECOND_INTERSCT(4), /*UP TO 4 LGCS FOR */02420099 3 PIWA2_FN2W_LGC_SECOND_INTERSCT CHAR(2), /*2ND INPUT STREET */02430099 /*IN INTERSECTION */02440099 2 PIWA2_FN2W_TURN_RESTRICTIONS(10), 02450099 3 PIWA2_FN2W_TURN_RESTRICTION CHAR(1), 02460099 2 PIWA2_FN2W_INTERSECT_B5SC_LGCS(5), 02470099 3 PIWA2_FN2W_INTERSECT_B5SC_LGC CHAR(2), 02480099 2 PIWA2_FN2W_TRUE_REP_COUNTER CHAR(2), 02490099 2 PIWA2_FN2W_NODE_LIST(20), 02500099 3 PIWA2_FN2W_NODE_LIST_NODE CHAR(7), 02510099 2 PIWA2_FN2W_NODE_LIST_B7SCS_LIST(20), 02520099 3 PIWA2_FN2W_NODE_LIST_B7SCS(5), 02530099 4 PIWA2_FN2W_NODE_LIST_B7SC(4) CHAR(8), 02540099 2 PIWA2_FN2W_REASON_CODE CHAR(1), 02550099 2 PIWA2_FN2W_REASON_CODE_QUAL CHAR(1), 02560099 2 PIWA2_FN2W_WARN_CODE CHAR(2), 02570099 2 PIWA2_FN2W_RETURN_CODE CHAR(2), 02580099 2 PIWA2_FN2W_LATITUDE CHAR(9), 02590099 2 PIWA2_FN2W_LONGITUDE CHAR(11), 02600099 2 PIWA2_FN2W_FILLER6 CHAR(374); 02610099 /* 2 PIWA2_FN2W_FILLER6 V15.3 CHAR(394) ***/ 02620099 02630099 DCL PIWA2_FN2W_COMDIST CHAR(3) 02640099 BASED(ADDR(PIWA2_FN2W_COM_DIST)); 02650099 DCL PIWA2_FN2W_POLDIST CHAR(4) 02660099 BASED(ADDR(PIWA2_FN2W_POLICE_DIST)); 02670099 DCL PIWA2_FN2W_SANBORN1_BVOLPAGE CHAR(8) 02680099 BASED(ADDR(PIWA2_FN2W_SANBORN1)), 02690099 PIWA2_FN2W_SANBORN2_BVOLPAGE CHAR(8) 02700099 BASED(ADDR(PIWA2_FN2W_SANBORN2)); 02710099 02720099 /*******************************************************************/ 02730099 /******* FOR: FUNCTION 3 *****************************/ 02740099 DCL 02750099 1 PIWA2_FUNCTION3 BASED(PP2), 02760099 2 PIWA2_FN3_ACCESS_KEY CHAR(21), 02770099 2 PIWA2_FN3_DUP_KEY_FLAG CHAR(1),/*(OR CONT PARITY)*/ 02780099 2 PIWA2_FN3_LOCATION_STATUS CHAR(1), 02790099 2 PIWA2_FN3_COUNTY_BOUNDARY CHAR(1), 02800099 2 PIWA2_FN3_PREF_LGC1 CHAR(2), 02810099 2 PIWA2_FN3_PREF_LGC2 CHAR(2), 02820099 2 PIWA2_FN3_PREF_LGC3 CHAR(2), 02830099 2 PIWA2_FN3_NUM_X_ST_LOW_END CHAR(1), 02840099 2 PIWA2_FN3_LOW_B5SC(5) CHAR(6), 02850099 2 PIWA2_FN3_NUM_X_ST_HI_END CHAR(1), 02860099 2 PIWA2_FN3_HI_B5SC(5) CHAR(6), 02870099 2 PIWA2_FN3_REVERSAL_FLAG CHAR(1), 02880099 2 PIWA2_FN3_LIONKEY, 02890099 3 PIWA2_FN3_LION_BORO CHAR(1), 02900099 3 PIWA2_FN3_LION_FACECODE CHAR(4), 02910099 3 PIWA2_FN3_LION_SEQ CHAR(5), 02920099 2 PIWA2_FN3_GENREC_FLAG CHAR(1), 02930099 2 PIWA2_FN3_SEG_LEN CHAR(5), 02940099 2 PIWA2_FN3_SEG_SLOPE CHAR(3), 02950099 2 PIWA2_FN3_SEG_ORIENT CHAR(1), 02960099 2 PIWA2_FN3_MARBLE_RIKERS_FLAG CHAR(1), 02970099 2 PIWA2_FN3_FROM_TO_NODES, 02980099 3 PIWA2_FN3_FROM_NODE CHAR(7), 02990099 3 PIWA2_FN3_TO_NODE CHAR(7), 03000099 2 PIWA2_FN3_SANIT_SNOW_PRIORITY CHAR(1), /*SANITATION STRT */ 03010099 /*SNOW PRIORITY */ 03020099 2 FILLER_600 CHAR(4), 03030099 2 PIWA2_FN3_SEGMENT_ID CHAR(7), 03040099 2 PIWA2_FN3_DOT_SLA CHAR(1), 03050099 2 PIWA2_FN3_CURVE_FLAG CHAR(1), 03060099 2 PIWA2_FN3_DOG_LEG CHAR(1), 03070099 2 PIWA2_FN3_FEATURE_TYPE CHAR(1), 03080099 2 PIWA2_FN3_SEGMENT_TYPE CHAR(1), 03090099 2 PIWA2_FN3_COINCIDENT_SEG_CTR CHAR(1), 03100099 2 FILLER_700 CHAR(4), 03110099 2 PIWA2_FN3_LEFT_SIDE_OF_STR, 03120099 3 PIWA2_FN3_L_COM_DIST, 03130099 4 PIWA2_FN3_L_COM_DIST_BORO CHAR(1), 03140099 4 PIWA2_FN3_L_COM_DIST_NUM CHAR(2), 03150099 3 PIWA2_FN3_L_LOW_HOUSENUM CHAR(16),/*DISPLAY FORMAT*/ 03160099 3 PIWA2_FN3_L_HI_HOUSENUM CHAR(16),/*DISPLAY FORMAT*/ 03170099 3 FILLER_800 CHAR(33),/* FOR GSS USE*/ 03180099 3 PIWA2_FN3_L_ZIP CHAR(5), 03190099 3 PIWA2_FN3_L_HEALTH_AREA CHAR(4), /*HEALTH AREA*/ 03200099 3 PIWA2_FN3_L_POLICE_DIST, 03210099 4 PIWA2_FN3_L_POL_PAT_BORO_CMD CHAR(1), 03220099 4 PIWA2_FN3_L_POL_PRECINCT CHAR(3), 03230099 3 PIWA2_FN3_L_FIRE_DIV CHAR(2), 03240099 3 PIWA2_FN3_L_FIRE_BAT CHAR(2), 03250099 3 PIWA2_FN3_L_FIRE_CO, 03260099 4 PIWA2_FN3_L_FIRE_CO_TYPE CHAR(1), 03270099 4 PIWA2_FN3_L_FIRE_CO_NUM CHAR(3), 03280099 3 PIWA2_FN3_L_SCHL_DIST CHAR(2), 03290099 3 PIWA2_FN3_L_DYN_BLK CHAR(3), /*ATOMIC POLYGON*/ 03300099 3 PIWA2_FN3_L_ED CHAR(3), 03310099 3 PIWA2_FN3_L_AD CHAR(2), 03320099 3 PIWA2_FN3_L_POLICE_PAT_BORO CHAR(2), 03330099 3 FILLER_880 CHAR(1), 03340099 3 PIWA2_FN3_L_BORO CHAR(1), 03350099 3 PIWA2_FN3_L_1990_CENS_TRCT CHAR(6), 03360099 3 PIWA2_FN3_L_2010_CENSUS_TRACT CHAR(6), 03370099 3 PIWA2_FN3_L_2010_CENSUS_BLOCK CHAR(4), 03380099 3 PIWA2_FN3_L_2010_CENSUS_BLK_SF CHAR(1), /*NOT IMPLEMENTED*/ 03390099 3 PIWA2_FN3_L_2000_CENSUS_TRACT CHAR(6), 03400099 3 PIWA2_FN3_L_2000_CENSUS_BLOCK CHAR(4), 03410099 3 PIWA2_FN3_L_2000_CENSUS_BLK_SF CHAR(1), 03420099 3 FILLER_890 CHAR(7), 03430099 /** 3 PIWA2_FN3_L_BLOCKFACE_ID *V16.1* CHAR(7) **/ 03440099 3 PIWA2_FN3_L_NTA CHAR(4), /*NEIGHBORHOOD */ 03450099 /*TABULATION AREA */ 03460099 3 FILLER_900 CHAR(8), 03470099 2 PIWA2_FN3_RIGHT_SIDE_OF_STR, 03480099 3 PIWA2_FN3_R_COM_DIST, 03490099 4 PIWA2_FN3_R_COM_DIST_BORO CHAR(1), 03500099 4 PIWA2_FN3_R_COM_DIST_NUM CHAR(2), 03510099 3 PIWA2_FN3_R_LOW_HOUSENUM CHAR(16),/*DISPLAY FORMAT*/ 03520099 3 PIWA2_FN3_R_HI_HOUSENUM CHAR(16),/*DISPLAY FORMAT*/ 03530099 3 FILLER_1000 CHAR(33),/*FOR GSS USE */ 03540099 3 PIWA2_FN3_R_ZIP CHAR(5), 03550099 3 PIWA2_FN3_R_HEALTH_AREA CHAR(4), /*HEALTH AREA*/ 03560099 3 PIWA2_FN3_R_POLICE_DIST, 03570099 4 PIWA2_FN3_R_POL_PAT_BORO_CMD CHAR(1), 03580099 4 PIWA2_FN3_R_POL_PRECINCT CHAR(3), 03590099 3 PIWA2_FN3_R_FIRE_DIV CHAR(2), 03600099 3 PIWA2_FN3_R_FIRE_BAT CHAR(2), 03610099 3 PIWA2_FN3_R_FIRE_CO, 03620099 4 PIWA2_FN3_R_FIRE_CO_TYPE CHAR(1), 03630099 4 PIWA2_FN3_R_FIRE_CO_NUM CHAR(3), 03640099 3 PIWA2_FN3_R_SCHL_DIST CHAR(2), 03650099 3 PIWA2_FN3_R_DYN_BLK CHAR(3), /*ATOMIC POLYGON*/ 03660099 3 PIWA2_FN3_R_ED CHAR(3), 03670099 3 PIWA2_FN3_R_AD CHAR(2), 03680099 3 PIWA2_FN3_R_POLICE_PAT_BORO CHAR(2), 03690099 3 FILLER_1080 CHAR(1), 03700099 3 PIWA2_FN3_R_BORO CHAR(1), 03710099 3 PIWA2_FN3_R_1990_CENS_TRCT CHAR(6), 03720099 3 PIWA2_FN3_R_2010_CENSUS_TRACT CHAR(6), 03730099 3 PIWA2_FN3_R_2010_CENSUS_BLOCK CHAR(4), 03740099 3 PIWA2_FN3_R_2010_CENSUS_BLK_SF CHAR(1), /*NOT IMPLEMENTED*/ 03750099 3 PIWA2_FN3_R_2000_CENS_TRACT CHAR(6), 03760099 3 PIWA2_FN3_R_2000_CENS_BLOCK CHAR(4), 03770099 3 PIWA2_FN3_R_2000_CENS_BLK_SUF CHAR(1), 03780099 3 FILLER_1090 CHAR(7), 03790099 /** 3 PIWA2_FN3_R_BLOCKFACE_ID *V16.1* CHAR(7) **/ 03800099 3 PIWA2_FN3_R_NTA CHAR(4), /*NEIGHBORHOOD */ 03810099 /*TABULATION AREA */ 03820099 3 FILLER_1100 CHAR(8), 03830099 2 PIWA2_FN3_SEGAUX, 03840099 3 PIWA2_FN3_SEGAUX_FILL CHAR(6), 03850099 3 PIWA2_FN3_SEGAUX_CTR CHAR(4), 03860099 3 PIWA2_FN3_SEGAUX_SEGS(70) CHAR(7); 03870099 03880099 DCL PIWA2_FN3_L_COMDIST CHAR(3) 03890099 BASED(ADDR(PIWA2_FN3_L_COM_DIST)); 03900099 DCL PIWA2_FN3_L_POLDIST CHAR(4) 03910099 BASED(ADDR(PIWA2_FN3_L_POLICE_DIST)); 03920099 DCL PIWA2_FN3_R_COMDIST CHAR(3) 03930099 BASED(ADDR(PIWA2_FN3_R_COM_DIST)); 03940099 DCL PIWA2_FN3_R_POLDIST CHAR(4) 03950099 BASED(ADDR(PIWA2_FN3_R_POLICE_DIST)); 03960099 03970099 /*******************************************************************/ 03980099 /******* FOR: FUNCTION 3 EXTENDED *****************************/ 03990099 DCL 04000099 1 PIWA2_FUNCTION3X BASED(PP2), 04010099 2 PIWA2_3X_ACCESS_KEY CHAR(21), 04020099 2 PIWA2_3X_DUP_KEY_FLAG CHAR(1),/*(OR CONT PARITY)*/ 04030099 2 PIWA2_3X_LOCATION_STATUS CHAR(1), 04040099 2 PIWA2_3X_COUNTY_BOUNDARY CHAR(1), 04050099 2 PIWA2_3X_PREF_LGC1 CHAR(2), 04060099 2 PIWA2_3X_PREF_LGC2 CHAR(2), 04070099 2 PIWA2_3X_PREF_LGC3 CHAR(2), 04080099 2 PIWA2_3X_NUM_X_ST_LOW_END CHAR(1), 04090099 2 PIWA2_3X_LOW_B5SC(5) CHAR(6), 04100099 2 PIWA2_3X_NUM_X_ST_HI_END CHAR(1), 04110099 2 PIWA2_3X_HI_B5SC(5) CHAR(6), 04120099 2 PIWA2_3X_REVERSAL_FLAG CHAR(1), 04130099 2 PIWA2_3X_LIONKEY, 04140099 3 PIWA2_3X_LION_BORO CHAR(1), 04150099 3 PIWA2_3X_LION_FACECODE CHAR(4), 04160099 3 PIWA2_3X_LION_SEQ CHAR(5), 04170099 2 PIWA2_3X_GENREC_FLAG CHAR(1), 04180099 2 PIWA2_3X_SEG_LEN CHAR(5), 04190099 2 PIWA2_3X_SEG_SLOPE CHAR(3), 04200099 2 PIWA2_3X_SEG_ORIENT CHAR(1), 04210099 2 PIWA2_3X_MARBLE_RIKERS_FLAG CHAR(1), 04220099 2 PIWA2_3X_FROM_TO_NODES, 04230099 3 PIWA2_3X_FROM_NODE CHAR(7), 04240099 3 PIWA2_3X_TO_NODE CHAR(7), 04250099 2 PIWA2_3X_SANIT_SNOW_PRIORITY CHAR(1), /*SANITATION STRT */ 04260099 /*SNOW PRIORITY */ 04270099 2 FILLER3X_600 CHAR(4), 04280099 2 PIWA2_3X_SEGMENT_ID CHAR(7), 04290099 2 PIWA2_3X_DOT_SLA CHAR(1), 04300099 2 PIWA2_3X_CURVE_FLAG CHAR(1), 04310099 2 PIWA2_3X_DOG_LEG CHAR(1), 04320099 2 PIWA2_3X_FEATURE_TYPE CHAR(1), 04330099 2 PIWA2_3X_SEGMENT_TYPE CHAR(1), 04340099 2 PIWA2_3X_COINCIDENT_SEG_CTR CHAR(1), 04350099 2 FILLER3X_700 CHAR(4), 04360099 2 PIWA2_3X_LEFT_SIDE_OF_STR, 04370099 3 PIWA2_3X_L_COM_DIST, 04380099 4 PIWA2_3X_L_COM_DIST_BORO CHAR(1), 04390099 4 PIWA2_3X_L_COM_DIST_NUM CHAR(2), 04400099 3 PIWA2_3X_L_LOW_HOUSENUM CHAR(16),/*DISPLAY FORMAT*/ 04410099 3 PIWA2_3X_L_HI_HOUSENUM CHAR(16),/*DISPLAY FORMAT*/ 04420099 3 FILLER3X_800 CHAR(33),/* FOR GSS USE*/ 04430099 3 PIWA2_3X_L_ZIP CHAR(5), 04440099 3 PIWA2_3X_L_HEALTH_AREA CHAR(4), /* HEALTH AREA*/ 04450099 3 PIWA2_3X_L_POLICE_DIST, 04460099 4 PIWA2_3X_L_POL_PAT_BORO_CMD CHAR(1), 04470099 4 PIWA2_3X_L_POL_PRECINCT CHAR(3), 04480099 3 PIWA2_3X_L_FIRE_DIV CHAR(2), 04490099 3 PIWA2_3X_L_FIRE_BAT CHAR(2), 04500099 3 PIWA2_3X_L_FIRE_CO, 04510099 4 PIWA2_3X_L_FIRE_CO_TYPE CHAR(1), 04520099 4 PIWA2_3X_L_FIRE_CO_NUM CHAR(3), 04530099 3 PIWA2_3X_L_SCHL_DIST CHAR(2), 04540099 3 PIWA2_3X_L_DYN_BLK CHAR(3), /*ATOMIC POLYGON*/ 04550099 3 PIWA2_3X_L_ED CHAR(3), 04560099 3 PIWA2_3X_L_AD CHAR(2), 04570099 3 PIWA2_3X_L_POLICE_PAT_BORO CHAR(2), 04580099 3 FILLER3X_880 CHAR(1), 04590099 3 PIWA2_3X_L_BORO CHAR(1), 04600099 3 PIWA2_3X_L_1990_CENS_TRCT CHAR(6), 04610099 3 PIWA2_3X_L_2010_CENSUS_TRACT CHAR(6), 04620099 3 PIWA2_3X_L_2010_CENSUS_BLOCK CHAR(4), 04630099 3 PIWA2_3X_L_2010_CENSUS_BLK_SF CHAR(1), /*NOT IMPLEMENTED*/ 04640099 3 PIWA2_3X_L_2000_CENS_TRACT CHAR(6), 04650099 3 PIWA2_3X_L_2000_CENS_BLOCK CHAR(4), 04660099 3 PIWA2_3X_L_2000_CENS_BLK_SF CHAR(1), 04670099 3 FILLER_3X_L_890 CHAR(7), 04680099 /** 3 PIWA2_3X_L_BLOCKFACE_ID *V16.1* CHAR(7) **/ 04690099 3 PIWA2_3X_L_NTA CHAR(4), /*NEIGHBORHOOD */ 04700099 /*TABULATION AREA */ 04710099 3 FILLER_3X_L_900 CHAR(8), 04720099 2 PIWA2_3X_RIGHT_SIDE_OF_STR, 04730099 3 PIWA2_3X_R_COM_DIST, 04740099 4 PIWA2_3X_R_COM_DIST_BORO CHAR(1), 04750099 4 PIWA2_3X_R_COM_DIST_NUM CHAR(2), 04760099 3 PIWA2_3X_R_LOW_HOUSENUM CHAR(16),/*DISPLAY FORMAT*/ 04770099 3 PIWA2_3X_R_HI_HOUSENUM CHAR(16),/*DISPLAY FORMAT*/ 04780099 3 FILLER3X_R_1000 CHAR(33),/*FOR GSS USE */ 04790099 3 PIWA2_3X_R_ZIP CHAR(5), 04800099 3 PIWA2_3X_R_HEALTH_AREA CHAR(4), /*HEALTH AREA*/ 04810099 3 PIWA2_3X_R_POLICE_DIST, 04820099 4 PIWA2_3X_R_POL_PAT_BORO_CMD CHAR(1), 04830099 4 PIWA2_3X_R_POL_PRECINCT CHAR(3), 04840099 3 PIWA2_3X_R_FIRE_DIV CHAR(2), 04850099 3 PIWA2_3X_R_FIRE_BAT CHAR(2), 04860099 3 PIWA2_3X_R_FIRE_CO, 04870099 4 PIWA2_3X_R_FIRE_CO_TYPE CHAR(1), 04880099 4 PIWA2_3X_R_FIRE_CO_NUM CHAR(3), 04890099 3 PIWA2_3X_R_SCHL_DIST CHAR(2), 04900099 3 PIWA2_3X_R_DYN_BLK CHAR(3), /*ATOMIC POLYGON*/ 04910099 3 PIWA2_3X_R_ED CHAR(3), 04920099 3 PIWA2_3X_R_AD CHAR(2), 04930099 3 PIWA2_3X_R_POLICE_PAT_BORO CHAR(2), 04940099 3 FILLER3X_R_1080 CHAR(1), 04950099 3 PIWA2_3X_R_BORO CHAR(1), 04960099 3 PIWA2_3X_R_1990_CENS_TRCT CHAR(6), 04970099 3 PIWA2_3X_R_2010_CENSUS_TRACT CHAR(6), 04980099 3 PIWA2_3X_R_2010_CENSUS_BLOCK CHAR(4), 04990099 3 PIWA2_3X_R_2010_CENSUS_BLK_SF CHAR(1), /*NOT IMPLEMENTED*/ 05000099 3 PIWA2_3X_R_2000_CENS_TRACT CHAR(6), 05010099 3 PIWA2_3X_R_2000_CENS_BLOCK CHAR(4), 05020099 3 PIWA2_3X_R_2000_CENS_BLK_SF CHAR(1), 05030099 3 FILLER3X_R_1090 CHAR(7), 05040099 /** 3 PIWA2_3X_R_BLOCKFACE_ID *V16.1* CHAR(7) **/ 05050099 3 PIWA2_3X_R_NTA CHAR(4), /*NEIGHBORHOOD */ 05060099 /*TABULATION AREA */ 05070099 3 FILLER_3X_R_1100 CHAR(8), 05080099 2 PIWA2_3X_LGCS CHAR(8), 05090099 2 PIWA2_3X_LGCS_FROM CHAR(8), 05100099 2 PIWA2_3X_LGCS_TO CHAR(8), 05110099 2 PIWA2_3X_L_HEALTH_CTR_DIST CHAR(2), /*HEALTH CENTER*/ 05120099 2 PIWA2_3X_R_HEALTH_CTR_DIST CHAR(2), /*HEALTH CENTER*/ 05130099 2 PIWA2_3X_FILL1 CHAR(1), 05140099 2 PIWA2_3X_TRAFFIC_DIR CHAR(1), 05150099 2 PIWA2_3X_ROADWAY_TYPE CHAR(2), 05160099 2 PIWA2_3X_PHYSICAL_ID CHAR(7), 05170099 2 PIWA2_3X_GENERIC_ID CHAR(7), 05180099 2 PIWA2_3X_INTP_ID CHAR(7), /*INTERNAL USE*/ 05190099 2 PIWA2_3X_INTF_ID CHAR(7), /*INTERNAL USE*/ 05200099 2 PIWA2_3X_STR_STATUS CHAR(1), 05210099 2 PIWA2_3X_STR_WIDTH CHAR(3), 05220099 2 PIWA2_3X_STR_WIDTH_IRREG CHAR(1), 05230099 2 PIWA2_3X_BIKE_LANE CHAR(1), 05240099 2 PIWA2_3X_FED_CLASS_CODE CHAR(2), 05250099 2 PIWA2_3X_ROW_TYPE CHAR(1), 05260099 2 PIWA2_3X_LGC_LIST CHAR(10), 05270099 2 PIWA2_3X_LEGACY_ID CHAR(7), 05280099 2 PIWA2_3X_L_NTA_NAME CHAR(75), 05290099 2 PIWA2_3X_R_NTA_NAME CHAR(75), 05300099 2 PIWA2_3X_FROM_XCOORD CHAR(7), 05310099 2 PIWA2_3X_FROM_YCOORD CHAR(7), 05320099 2 PIWA2_3X_TO_XCOORD CHAR(7), 05330099 2 PIWA2_3X_TO_YCOORD CHAR(7), 05340099 2 PIWA2_3X_FROM_LATITUDE CHAR(9), 05350099 2 PIWA2_3X_FROM_LONGITUDE CHAR(11), 05360099 2 PIWA2_3X_TO_LATITUDE CHAR(9), 05370099 2 PIWA2_3X_TO_LONGITUDE CHAR(11), 05380099 2 PIWA2_3X_L_BLOCKFACE_ID CHAR(10), 05390099 2 PIWA2_3X_R_BLOCKFACE_ID CHAR(10), 05400099 2 PIWA2_3X_NBR_TRAVEL_LANES CHAR(2), 05410099 2 PIWA2_3X_NBR_PARK_LANES CHAR(2), 05420099 2 PIWA2_3X_NBR_TOTAL_LANES CHAR(2), 05430099 2 PIWA2_3X_BIKE_LANE_2 CHAR(2), 05431099 2 PIWA2_3X_STR_WIDTH_MAX CHAR(3), 05432099 2 PIWA2_3X_BIKE_TRAFFIC_DIR CHAR(2), 05433099 2 PIWA2_3X_SPEED_LIMIT CHAR(2), 05434099 2 PIWA2_3X_LEFT_PUMA_CODE CHAR(5), 05435099 2 PIWA2_3X_RIGHT_PUMA_CODE CHAR(5), 05436099 2 PIWA2_3X_LEFT_POLICE_SECTOR CHAR(4), 05437099 2 PIWA2_3X_RIGHT_POLICE_SECTOR CHAR(4), 05437199 2 PIWA2_3X_FILL2 CHAR(193), 05438099 /* 2 PIWA2_3X_FILL2 ** V18.3 *** CHAR(201) **/ 05440099 /* 2 PIWA2_3X_FILL2 ** V18.1 *** CHAR(211) **/ 05440199 /* 2 PIWA2_3X_FILL2 ** V17.1 *** CHAR(215) **/ 05441099 /* 2 PIWA2_3X_FILL2 ** V16.4 *** CHAR(220) **/ 05442099 /* 2 PIWA2_3X_FILL2 ** V16.1 *** CHAR(246) **/ 05450099 /* 2 PIWA2_3X_FILL2 ** V15.3 *** CHAR(286) **/ 05460099 2 PIWA2_3X_SEGAUX, 05470099 3 PIWA2_3X_SEGAUX_FILL CHAR(6), 05480099 3 PIWA2_3X_SEGAUX_CTR CHAR(4), 05490099 3 PIWA2_3X_SEGAUX_SEGS(70) CHAR(7); 05500099 05510099 /*******************************************************************/ 05520099 /******* FOR: FUNCTION 3C *****************************/ 05530099 DCL 05540099 1 PIWA2_FUNCTION3C BASED(PP2), 05550099 2 PIWA2_FN3C_ACCESS_KEY CHAR(21), 05560099 2 PIWA2_FN3C_DUP_KEY_FLAG CHAR(1),/*(OR CONT PARITY)*/ 05570099 2 PIWA2_FN3C_LOCATION_STATUS CHAR(1), 05580099 2 PIWA2_FN3C_COUNTY_BOUNDARY CHAR(1), 05590099 2 PIWA2_FN3C_PREF_LGC1 CHAR(2), 05600099 2 PIWA2_FN3C_PREF_LGC2 CHAR(2), 05610099 2 PIWA2_FN3C_PREF_LGC3 CHAR(2), 05620099 2 PIWA2_FN3C_NUM_X_ST_LOW_END CHAR(1), 05630099 2 PIWA2_FN3C_LOW_B5SC(5) CHAR(6), 05640099 2 PIWA2_FN3C_NUM_X_ST_HI_END CHAR(1), 05650099 2 PIWA2_FN3C_HI_B5SC(5) CHAR(6), 05660099 2 PIWA2_FN3C_REVERSAL_FLAG CHAR(1), 05670099 2 PIWA2_FN3C_LIONKEY, 05680099 3 PIWA2_FN3C_LION_BORO CHAR(1), 05690099 3 PIWA2_FN3C_LION_FACECODE CHAR(4), 05700099 3 PIWA2_FN3C_LION_SEQ CHAR(5), 05710099 2 PIWA2_FN3C_GENREC_FLAG CHAR(1), 05720099 2 PIWA2_FN3C_SEG_LEN CHAR(5), 05730099 2 PIWA2_FN3C_SEG_SLOPE CHAR(3), 05740099 2 PIWA2_FN3C_SEG_ORIENT CHAR(1), 05750099 2 PIWA2_FN3C_MARBLE_RIKERS_FLAG CHAR(1), 05760099 2 PIWA2_FN3C_FROM_TO_NODES, 05770099 3 PIWA2_FN3C_FROM_NODE CHAR(7), 05780099 3 PIWA2_FN3C_TO_NODE CHAR(7), 05790099 2 PIWA2_FN3C_SANIT_SNOW_PRIORITY CHAR(1), /*SANITATION STRT */ 05800099 /*SNOW PRIORITY */ 05810099 2 FILLER_1200 CHAR(4), 05820099 2 PIWA2_FN3C_SEGMENT_ID CHAR(7), 05830099 2 PIWA2_FN3C_DOT_SLA CHAR(1), 05840099 2 PIWA2_FN3C_SIDE_OF_STR CHAR(1), 05850099 2 PIWA2_FN3C_CURVE_FLAG CHAR(1), 05860099 2 PIWA2_FN3C_FEATURE_TYPE CHAR(1), 05870099 2 PIWA2_FN3C_SEGMENT_TYPE CHAR(1), 05880099 2 PIWA2_FN3C_COINCIDENT_SEG_CTR CHAR(1), 05890099 2 FILLER_1300 CHAR(4), 05900099 2 PIWA2_FN3C_BLOCKFACE_INFO, 05910099 3 PIWA2_FN3C_COM_DIST, 05920099 4 PIWA2_FN3C_COM_DIST_BORO CHAR(1), 05930099 4 PIWA2_FN3C_COM_DIST_NUM CHAR(2), 05940099 3 PIWA2_FN3C_LOW_HOUSENUM CHAR(16),/*DISPLAY FORMAT*/ 05950099 3 PIWA2_FN3C_HI_HOUSENUM CHAR(16),/*DISPLAY FORMAT*/ 05960099 3 PIWA2_FN3C_LOW_HOUSENUM2 CHAR(16),/*DISPLAY FORMAT*/ 05970099 3 PIWA2_FN3C_HI_HOUSENUM2 CHAR(16),/*DISPLAY FORMAT*/ 05980099 3 FILLER_1400 CHAR(1), /* FOR GSS USE */ 05990099 3 PIWA2_FN3C_ZIP CHAR(5), 06000099 3 PIWA2_FN3C_HEALTH_AREA CHAR(4), /*HEALTH AREA*/ 06010099 3 PIWA2_FN3C_POLICE_DIST, 06020099 4 PIWA2_FN3C_POL_PAT_BORO_CMD CHAR(1), 06030099 4 PIWA2_FN3C_POL_PRECINCT CHAR(3), 06040099 3 PIWA2_FN3C_FIRE_DIV CHAR(2), 06050099 3 PIWA2_FN3C_FIRE_BAT CHAR(2), 06060099 3 PIWA2_FN3C_FIRE_CO, 06070099 4 PIWA2_FN3C_FIRE_CO_TYPE CHAR(1), 06080099 4 PIWA2_FN3C_FIRE_CO_NUM CHAR(3), 06090099 3 PIWA2_FN3C_SCHL_DIST CHAR(2), 06100099 3 PIWA2_FN3C_DYN_BLK CHAR(3), /*ATOMIC POLYGON*/ 06110099 3 PIWA2_FN3C_ED CHAR(3), 06120099 3 PIWA2_FN3C_AD CHAR(2), 06130099 3 PIWA2_FN3C_POLICE_PAT_BORO CHAR(2), 06140099 3 FILLER_1480 CHAR(1), 06150099 3 PIWA2_FN3C_BORO CHAR(1), 06160099 3 PIWA2_FN3C_1990_CENS_TRCT CHAR(6), 06170099 3 PIWA2_FN3C_2010_CENSUS_TRACT CHAR(6), 06180099 3 PIWA2_FN3C_2010_CENSUS_BLOCK CHAR(4), 06190099 3 PIWA2_FN3C_2010_CENSUS_BLK_SF CHAR(1), /*NOT IMPLEMENTED*/ 06200099 3 PIWA2_FN3C_2000_CENS_TRACT CHAR(6), 06210099 3 PIWA2_FN3C_2000_CENS_BLOCK CHAR(4), 06220099 3 PIWA2_FN3C_2000_CENS_BLK_SUF CHAR(1), 06230099 3 FILLER_1490 CHAR(7), 06240099 /** 3 PIWA2_FN3C_BLOCKFACE_ID *V16.1* CHAR(7) **/ 06250099 3 PIWA2_FN3C_NTA CHAR(4), /*NEIGHBORHOOD */ 06260099 /*TABULATION AREA */ 06270099 3 FILLER_1500 CHAR(8), 06280099 2 PIWA2_FN3C_SEGAUX, 06290099 3 PIWA2_FN3C_SEGAUX_FILL CHAR(6), 06300099 3 PIWA2_FN3C_SEGAUX_CTR CHAR(4), 06310099 3 PIWA2_FN3C_SEGAUX_SEGS(70) CHAR(7); 06320099 06330099 DCL PIWA2_FN3C_COMDIST CHAR(3) 06340099 BASED(ADDR(PIWA2_FN3C_COM_DIST)); 06350099 DCL PIWA2_FN3C_POLDIST CHAR(4) 06360099 BASED(ADDR(PIWA2_FN3C_POLICE_DIST)); 06370099 06380099 /*******************************************************************/ 06390099 /******* FOR: FUNCTION 3CX (EXTENDED) **************************/ 06400099 DCL 06410099 1 PIWA2_FUNCTION3CX BASED(PP2), 06420099 2 PIWA2_3CX_ACCESS_KEY CHAR(21), 06430099 2 PIWA2_3CX_DUP_KEY_FLAG CHAR(1),/*(OR CONT PARITY)*/ 06440099 2 PIWA2_3CX_LOCATION_STATUS CHAR(1), 06450099 2 PIWA2_3CX_COUNTY_BOUNDARY CHAR(1), 06460099 2 PIWA2_3CX_PREF_LGC1 CHAR(2), 06470099 2 PIWA2_3CX_PREF_LGC2 CHAR(2), 06480099 2 PIWA2_3CX_PREF_LGC3 CHAR(2), 06490099 2 PIWA2_3CX_NUM_X_ST_LOW_END CHAR(1), 06500099 2 PIWA2_3CX_LOW_B5SC(5) CHAR(6), 06510099 2 PIWA2_3CX_NUM_X_ST_HI_END CHAR(1), 06520099 2 PIWA2_3CX_HI_B5SC(5) CHAR(6), 06530099 2 PIWA2_3CX_REVERSAL_FLAG CHAR(1), 06540099 2 PIWA2_3CX_LIONKEY, 06550099 3 PIWA2_3CX_LION_BORO CHAR(1), 06560099 3 PIWA2_3CX_LION_FACECODE CHAR(4), 06570099 3 PIWA2_3CX_LION_SEQ CHAR(5), 06580099 2 PIWA2_3CX_GENREC_FLAG CHAR(1), 06590099 2 PIWA2_3CX_SEG_LEN CHAR(5), 06600099 2 PIWA2_3CX_SEG_SLOPE CHAR(3), 06610099 2 PIWA2_3CX_SEG_ORIENT CHAR(1), 06620099 2 PIWA2_3CX_MARBLE_RIKERS_FLAG CHAR(1), 06630099 2 PIWA2_3CX_FROM_TO_NODES, 06640099 3 PIWA2_3CX_FROM_NODE CHAR(7), 06650099 3 PIWA2_3CX_TO_NODE CHAR(7), 06660099 2 PIWA2_3CX_SANIT_SNOW_PRIORITY CHAR(1), /*SANITATION STRT */ 06670099 /*SNOW PRIORITY */ 06680099 2 FILLER3CX_1200 CHAR(4), 06690099 2 PIWA2_3CX_SEGMENT_ID CHAR(7), 06700099 2 PIWA2_3CX_DOT_SLA CHAR(1), 06710099 2 PIWA2_3CX_SIDE_OF_STR CHAR(1), 06720099 2 PIWA2_3CX_CURVE_FLAG CHAR(1), 06730099 2 PIWA2_3CX_FEATURE_TYPE CHAR(1), 06740099 2 PIWA2_3CX_SEGMENT_TYPE CHAR(1), 06750099 2 PIWA2_3CX_COINCIDENT_SEG_CTR CHAR(1), 06760099 2 FILLER3CX_1300 CHAR(4), 06770099 2 PIWA2_3CX_BLOCKFACE_INFO, 06780099 3 PIWA2_3CX_COM_DIST, 06790099 4 PIWA2_3CX_COM_DIST_BORO CHAR(1), 06800099 4 PIWA2_3CX_COM_DIST_NUM CHAR(2), 06810099 3 PIWA2_3CX_LOW_HOUSENUM CHAR(16),/*DISPLAY FORMAT*/ 06820099 3 PIWA2_3CX_HI_HOUSENUM CHAR(16),/*DISPLAY FORMAT*/ 06830099 3 PIWA2_3CX_LOW_HOUSENUM2 CHAR(16),/*DISPLAY FORMAT*/ 06840099 3 PIWA2_3CX_HI_HOUSENUM2 CHAR(16),/*DISPLAY FORMAT*/ 06850099 3 FILLER3CX_1400 CHAR(1), /* FOR GSS USE */ 06860099 3 PIWA2_3CX_ZIP CHAR(5), 06870099 3 PIWA2_3CX_HEALTH_AREA CHAR(4), /*HEALTH AREA*/ 06880099 3 PIWA2_3CX_POLICE_DIST, 06890099 4 PIWA2_3CX_POL_PAT_BORO_CMD CHAR(1), 06900099 4 PIWA2_3CX_POL_PRECINCT CHAR(3), 06910099 3 PIWA2_3CX_FIRE_DIV CHAR(2), 06920099 3 PIWA2_3CX_FIRE_BAT CHAR(2), 06930099 3 PIWA2_3CX_FIRE_CO, 06940099 4 PIWA2_3CX_FIRE_CO_TYPE CHAR(1), 06950099 4 PIWA2_3CX_FIRE_CO_NUM CHAR(3), 06960099 3 PIWA2_3CX_SCHL_DIST CHAR(2), 06970099 3 PIWA2_3CX_DYN_BLK CHAR(3), /*ATOMIC POLYGON*/ 06980099 3 PIWA2_3CX_ED CHAR(3), 06990099 3 PIWA2_3CX_AD CHAR(2), 07000099 3 PIWA2_3CX_POLICE_PAT_BORO CHAR(2), 07010099 3 FILLER3CX_1480 CHAR(1), 07020099 3 PIWA2_3CX_BORO CHAR(1), 07030099 3 PIWA2_3CX_1990_CENS_TRCT CHAR(6), 07040099 3 PIWA2_3CX_2010_CENSUS_TRACT CHAR(6), 07050099 3 PIWA2_3CX_2010_CENSUS_BLOCK CHAR(4), 07060099 3 PIWA2_3CX_2010_CENSUS_BLK_SF CHAR(1), /*NOT IMPLEMENTED*/ 07070099 3 PIWA2_3CX_2000_CENS_TRACT CHAR(6), 07080099 3 PIWA2_3CX_2000_CENS_BLOCK CHAR(4), 07090099 3 PIWA2_3CX_2000_CENS_BLK_S CHAR(1), 07100099 3 FILLER3CX_1490 CHAR(7), 07110099 /** 3 PIWA2_3CX_BLOCKFACE_ID *V16.1* CHAR(7) **/ 07120099 3 PIWA2_3CX_NTA CHAR(4), /*NEIGHBORHOOD */ 07130099 /*TABULATION AREA */ 07140099 3 FILLER3CX_1500 CHAR(8), 07150099 07160099 2 PIWA2_3CX_LGCS CHAR(8), 07170099 2 PIWA2_3CX_LGCS_FROM CHAR(8), 07180099 2 PIWA2_3CX_LGCS_TO CHAR(8), 07190099 2 PIWA2_3CX_L_HEALTH_CTR_DIST CHAR(2), /*HEALTH CENTER*/ 07200099 2 PIWA2_3CX_R_HEALTH_CTR_DIST CHAR(2), /*HEALTH CENTER*/ 07210099 2 PIWA2_3CX_FILL1550 CHAR(1), 07220099 2 PIWA2_3CX_TRAFFIC_DIRECTN CHAR(1), 07230099 2 PIWA2_3CX_ROADWAY_TYPE CHAR(2), 07240099 2 PIWA2_3CX_PHYSICAL_ID CHAR(7), 07250099 2 PIWA2_3CX_GENERIC_ID CHAR(7), 07260099 2 PIWA2_3CX_INTP_ID CHAR(7), /*INTERNAL USE*/ 07270099 2 PIWA2_3CX_INTF_ID CHAR(7), /*INTERNAL USE*/ 07280099 2 PIWA2_3CX_STREET_STATUS CHAR(1), 07290099 2 PIWA2_3CX_STREET_WIDTH CHAR(3), 07300099 2 PIWA2_3CX_STREET_WIDTH_IRREG CHAR(1), 07310099 2 PIWA2_3CX_BIKE_LANE CHAR(1), 07320099 2 PIWA2_3CX_FED_CLASS_CODE CHAR(2), 07330099 2 PIWA2_3CX_ROW_TYPE CHAR(1), 07340099 2 PIWA2_3CX_LGC_LIST CHAR(10), 07350099 2 PIWA2_3CX_LEGACY_ID CHAR(7), 07360099 2 PIWA2_3CX_NTA_NAME CHAR(75), 07370099 2 PIWA2_3CX_FROM_XCOORD CHAR(7), 07380099 2 PIWA2_3CX_FROM_YCOORD CHAR(7), 07390099 2 PIWA2_3CX_TO_XCOORD CHAR(7), 07400099 2 PIWA2_3CX_TO_YCOORD CHAR(7), 07410099 2 PIWA2_3CX_FROM_LATITUDE CHAR(9), 07420099 2 PIWA2_3CX_FROM_LONGITUDE CHAR(11), 07430099 2 PIWA2_3CX_TO_LATITUDE CHAR(9), 07440099 2 PIWA2_3CX_TO_LONGITUDE CHAR(11), 07450099 2 PIWA2_3CX_BLOCKFACE_ID CHAR(10), 07460099 2 PIWA2_3CX_NBR_TRAVEL_LANES CHAR(2), 07470099 2 PIWA2_3CX_NBR_PARK_LANES CHAR(2), 07480099 2 PIWA2_3CX_NBR_TOTAL_LANES CHAR(2), 07490099 2 PIWA2_3CX_BIKE_LANE_2 CHAR(2), 07491099 2 PIWA2_3CX_STREET_WIDTH_MAX CHAR(3), 07492099 2 PIWA2_3CX_BIKE_TRAFFIC_DIR CHAR(2), 07493099 2 PIWA2_3CX_SPEED_LIMIT CHAR(2), 07494099 2 PIWA2_3CX_PUMA_CODE CHAR(5), 07494199 2 PIWA2_3CX_POLICE_SECTOR CHAR(4), 07494299 2 PIWA2_3CX_FILL1560 CHAR(287), 07494499 /* 2 PIWA2_3CX_FILL1560 ** V18.3 ** CHAR(291) **/ 07495099 /* 2 PIWA2_3CX_FILL1560 ** V18.1 ** CHAR(296) **/ 07500099 /* 2 PIWA2_3CX_FILL1560 ** V17.4 ** CHAR(298) **/ 07500199 /* 2 PIWA2_3CX_FILL1560 ** V17.1 ** CHAR(300) **/ 07501099 /* 2 PIWA2_3CX_FILL1560 ** V16.4 ** CHAR(305) **/ 07502099 /* 2 PIWA2_3CX_FILL1560 ** V16.1 ** CHAR(321) **/ 07510099 /* 2 PIWA2_3CX_FILL1560 ** V15.3 ** CHAR(361) **/ 07520099 2 PIWA2_3CX_SEGAUX, 07530099 3 PIWA2_3CX_SEGAUX_FILL CHAR(6), 07540099 3 PIWA2_3CX_SEGAUX_CTR CHAR(4), 07550099 3 PIWA2_3CX_SEGAUX_SEGS(70) CHAR(7); 07560099 07570099 /*******************************************************************/ 07580099 /******* FOR: FUNCTION 5 *****************************/ 07590099 DCL 07600099 1 PIWA2_FUNCTION5 BASED(PP2), 07610099 2 PIWA2_FN5_ADDR_MATCHING_KEY CHAR(33), 07620099 2 FILLER_1600 CHAR(267); 07630099 07640099 PP2=ADDR(P2PL1); 07650099 P2PL11A COPY File /*******************************************************************/ 00000100 /*** THIS IS THE PL/1 STRUCTURE FOR GEOSUPPORT SYSTEM PLATFORM ***/ 00000200 /*** INDEPENDENT REGULAR WORK AREA 2 FOR FUNCTIONS: 1A , BL, ***/ 00000300 /*** AND BN. ***/ 00000400 /*** THESE THREE FUNCTIONS SHARE A SINGLE WORK AREA 2 LAYOUT. ***/ 00000500 /*** ***/ 00000600 /*** COPY FILE - P2PL11A. 10/10/97 ***/ 00000700 /*******************************************************************/ 00000800 00000900 DCL 00001000 1 P2PL11A, 00001100 2 PIWA2_1A_ACCESS_KEY CHAR(21), 00001200 2 PIWA2_1A_CONT_PARITY CHAR(1), /*(OR DUP ADDR IND)*/ 00001300 2 PIWA2_1A_LOW_HOUSENUM CHAR(11), /* SORT FORMAT */ 00001400 2 PIWA2_1A_BBL, 00001500 3 PIWA2_1A_BBL_BORO CHAR(1), 00001600 3 PIWA2_1A_BLOCK CHAR(5), 00001700 3 PIWA2_1A_LOT CHAR(4), 00001800 2 PIWA2_1A_LOT_VER CHAR(1), 00001900 2 PIWA2_1A_SCC CHAR(1), 00002000 2 FILLER_100 CHAR(1), 00002100 2 PIWA2_1A_GENERAL_LOT_INFO, 00002200 3 PIWA2_1A_RPAD_BLDG_CLASS CHAR(2), 00002300 3 PIWA2_1A_CORNER_CODE CHAR(2), 00002400 3 PIWA2_1A_NUM_OF_STRUCTURES CHAR(4), 00002502 3 PIWA2_1A_NUM_OF_BLOCKFACES CHAR(2), 00002600 3 PIWA2_1A_INTERIOR_FLAG CHAR(1), 00002700 3 PIWA2_1A_VACANT_FLAG CHAR(1), 00002800 3 PIWA2_1A_IRREG_LOT_FLAG CHAR(1), 00002900 2 PIWA2_1A_MARBLE_RIKERS_FLAG CHAR(1), 00003000 2 PIWA2_1A_ADDR_LIST_OVFLOW_FLAG CHAR(1), 00003100 2 PIWA2_1A_STROLL_KEY, 00003200 3 PIWA2_1A_STROLL_BORO CHAR(1), 00003300 3 PIWA2_1A_STROLL_5SC CHAR(5), 00003400 3 PIWA2_1A_STROLL_SIDE_OF_STR CHAR(1), /* L, R */ 00003500 3 PIWA2_1A_STROLL_HI_HOUSENUM CHAR(11), /* SORT FORMAT */ 00003600 3 FILLER_200 CHAR(1), 00003700 2 FILLER_300 CHAR(1), /* FOR GSS USE*/ 00003800 2 PIWA2_1A_BIN CHAR(7), 00003900 2 PIWA2_1A_CONDO_FLAG CHAR(1), 00004000 2 FILLER_400 CHAR(1), 00004100 2 PIWA2_1A_RPAD_CONDO_ID_NUM CHAR(4), 00004200 2 PIWA2_1A_CONDO_UNIT_ID_NUM CHAR(7), 00004300 2 PIWA2_1A_CONDO_BILL_BBL CHAR(10), 00004400 2 PIWA2_1A_CONDO_BILL_BBL_VER CHAR(1), 00004500 2 PIWA2_1A_CONDO_BILL_BBL_SCC CHAR(1), 00004600 2 PIWA2_1A_CONDO_LOW_BBL CHAR(10), 00004700 2 PIWA2_1A_CONDO_LOW_BBL_VER CHAR(1), 00004800 2 PIWA2_1A_CONDO_HIGH_BBL CHAR(10), 00004900 2 PIWA2_1A_CONDO_HIGH_BBL_VER CHAR(1), 00005000 2 FILLER_500 CHAR(15), 00005100 2 PIWA2_1A_COOP_NUM CHAR(4), 00005200 2 PIWA2_1A_SANBORN, 00005300 3 PIWA2_1A_SANBORN_BORO CHAR(1), 00005400 3 PIWA2_1A_SANBORN_VOL CHAR(3), 00005500 3 PIWA2_1A_SANBORN_PAGE CHAR(4), 00005600 2 PIWA2_1A_COMMERC_DIST CHAR(5), 00005700 2 PIWA2_1A_DOF_MAP_BORO CHAR(1), 00005803 2 PIWA2_1A_DOF_MAP_SECVOL CHAR(4), 00005902 2 PIWA2_1A_DOF_MAP_PAGE CHAR(4), 00006003 2 RESERVED_DCP CHAR(3), 00006110 2 PIWA2_1A_LATITUDE CHAR(09), 00006210 2 PIWA2_1A_LONGITUDE CHAR(11), 00006310 2 PIWA2_1A_X_COORD CHAR(07), 00006410 2 PIWA2_1A_Y_COORD CHAR(07), 00006510 2 PIWA2_1A_BID CHAR(06), 00006610 2 PIWA2_1A_TPAD_BIN_ST CHAR(01), /*CURRENT STATUS*/ 00006710 2 PIWA2_1A_TPAD_NEW_BIN CHAR(07), /*NEW BIN */ 00006810 2 PIWA2_1A_TPAD_NEW_BIN_ST CHAR(01), /*NEW BIN STATUS*/ 00006910 2 PIWA2_1A_TPAD_CONFLICT CHAR(01), /*CONFLICT FLAG */ 00007010 2 PIWA2_1A_DCP_ZONE_MAP CHAR(03), /*DCP ZONING MAP*/ 00007111 2 FILLER_650 CHAR(06), 00007211 2 FILLER_700 CHAR(8), /* LGC - GSS USE*/ 00007311 2 PIWA2_1A_NUM_OF_ADDR CHAR(4), 00007411 2 PIWA2_1A_ADDR_LIST(21), 00007511 3 PIWA2_1A_LIST_LOW_HOUSENUM CHAR(16), /*DISPLAY FORMAT*/ 00007611 3 PIWA2_1A_LIST_HI_HOUSENUM CHAR(16), /*DISPLAY FORMAT*/ 00007711 3 PIWA2_1A_LIST_BORO CHAR(1), 00007811 3 PIWA2_1A_LIST_5SC CHAR(5), 00007911 3 PIWA2_1A_LIST_LGC CHAR(2), 00008011 3 PIWA2_1A_LIST_BIN CHAR(7), 00008111 3 PIWA2_1A_LIST_SIDE_OF_STR CHAR(1), /* L, R */ 00008211 3 PIWA2_1A_ADDR_TYPE CHAR(1), /* */ 00008311 /* BLANK = NORMAL*/ 00008411 3 PIWA2_1A_TPAD_STATUS CHAR(1), /* 0 - 9 */ 00008511 3 FILLER_800 CHAR(3); 00008611 00008711 DCL PIWA2_1A_SANBORN_BVOLPAGE CHAR(8) 00008811 BASED(ADDR(PIWA2_1A_SANBORN)); 00008911 DCL PIWA2_1A_STROLLKEY CHAR(19) 00009011 BASED(ADDR(PIWA2_1A_STROLL_KEY)); 00010011 P2PL11AL COPY File /*******************************************************************/ 00000100 /*********************************************************************/00000276 /* */00000376 /*** P2PL1AL ***/00000480 /* ADD NEW 4 BYTE POLICE SECTOR TLV 06/18 V19.2*/00000687 /* ADD NEW 1 BYTE POLICE SERVICE AREA TLV 06/18 V19.2*/00000787 /* ADD NEW 5 BYTE PUMA CODE YNL 12/17 V18.1*/00000886 /*** LAST MODIFIED DECEMBER 2016 ***/00000986 /* ADD NEW 2 BYTE SPEED LIMIT TLV 09/17 V17.4*/00001086 /* ADD NEW 2 BYTE BIKE TRAFFIC DIRECTION YNL 12/16 V17,1*/00001186 /* REPLACED SANIT_RESERVED WITH SANIT_BULK_PICK_UP YNL 10/16 V16.4*/00001286 /* ADD NEW 2 BYTE BIKE LANE AND MAX STR WIDTH YNL 10/16 V16.4*/00001386 /* */00001486 /*********************************************************************/00001586 /*** THIS IS THE PL/1 STRUCTURE FOR GEOSUPPORT SYSTEM PLATFORM ***/ 00001686 /*** INDEPENDENT LONG WORK AREA 2 FOR FUNCTIONS: 1A , AND BL. ***/ 00001786 /*** THESE TWO FUNCTIONS SHARE A SINGLE LONG WORK AREA 2 LAYOUT.***/ 00001886 /*** THIS IS ALSO THE PL/1 STRUCTURE FOR GEOSUPPORT SYSTEM ***/ 00001986 /*** PLATFORM INDEPENDENT EXTENDED WORK AREA 2 FOR ***/ 00002086 /*** FUNCTIONS 1E AND 1A, AND FOR FUNCTION 1B WHICH IS A ***/ 00002186 /*** COMBINATION OF EXTENDED 1/1E AND EXTENDED 1A) ***/ 00002286 /*** ***/ 00002386 /*** LAST MODIFIED OCTOBER 2016 ***/ 00002486 /*** COPY FILE - P2PL11AL. 10/11/2000 ***/ 00002586 /*******************************************************************/ 00002686 00002786 DCL 00002886 1 P2PL11AL, 00002986 2 PIWA2_1AL_ACCESS_KEY CHAR(21), 00003086 2 PIWA2_1AL_CONT_PARITY CHAR(1), /*(OR DUP ADDR IND)*/ 00003186 2 PIWA2_1AL_LOW_HOUSENUM CHAR(11), /* SORT FORMAT */ 00003286 2 PIWA2_1AL_BBL, 00003386 3 PIWA2_1AL_BBL_BORO CHAR(1), 00003486 3 PIWA2_1AL_BLOCK CHAR(5), 00003586 3 PIWA2_1AL_LOT CHAR(4), 00003686 2 PIWA2_1AL_LOT_VER CHAR(1), 00003786 2 PIWA2_1AL_SCC CHAR(1), 00003886 2 FILLER_100 CHAR(1), 00003986 2 PIWA2_1AL_GENERAL_LOT_INFO, 00004086 3 PIWA2_1AL_RPAD_BLDG_CLASS CHAR(2), 00004186 3 PIWA2_1AL_CORNER_CODE CHAR(2), 00004286 3 PIWA2_1AL_NUM_OF_STRUCTURES CHAR(4), 00004386 3 PIWA2_1AL_NUM_OF_BLOCKFACES CHAR(2), 00004486 3 PIWA2_1AL_INTERIOR_FLAG CHAR(1), 00004586 3 PIWA2_1AL_VACANT_FLAG CHAR(1), 00004686 3 PIWA2_1AL_IRREG_LOT_FLAG CHAR(1), 00004786 2 PIWA2_1AL_MARBLE_RIKERS_FLAG CHAR(1), 00004886 2 PIWA2_1AL_ADDR_LIST_OVFLOW_FLAG CHAR(1), 00004986 2 PIWA2_1AL_STROLL_KEY, 00005086 3 PIWA2_1AL_STROLL_BORO CHAR(1), 00005186 3 PIWA2_1AL_STROLL_5SC CHAR(5), 00005286 3 PIWA2_1AL_STROLL_SIDE_OF_STR CHAR(1), /* L, R */ 00005386 3 PIWA2_1AL_STROLL_HI_HOUSENUM CHAR(11), /* SORT FORMAT */ 00005486 3 FILLER_200 CHAR(1), 00005586 2 FILLER_300 CHAR(1), /* FOR GSS USE*/ 00005686 2 PIWA2_1AL_BIN CHAR(7), 00005786 2 PIWA2_1AL_CONDO_FLAG CHAR(1), 00005886 2 FILLER_400 CHAR(1), 00005986 2 PIWA2_1AL_RPAD_CONDO_ID_NUM CHAR(4), 00006086 2 PIWA2_1AL_CONDO_UNIT_ID_NUM CHAR(7), 00006186 2 PIWA2_1AL_CONDO_BILL_BBL CHAR(10), 00006286 2 PIWA2_1AL_CONDO_BILL_BBL_VER CHAR(1), 00006386 2 PIWA2_1AL_CONDO_BILL_BBL_SCC CHAR(1), 00006486 2 PIWA2_1AL_CONDO_LOW_BBL CHAR(10), 00006586 2 PIWA2_1AL_CONDO_LOW_BBL_VER CHAR(1), 00006686 2 PIWA2_1AL_CONDO_HIGH_BBL CHAR(10), 00006786 2 PIWA2_1AL_CONDO_HIGH_BBL_VER CHAR(1), 00006886 2 FILLER_500 CHAR(15), 00006986 2 PIWA2_1AL_COOP_NUM CHAR(4), 00007086 2 PIWA2_1AL_SANBORN, 00007186 3 PIWA2_1AL_SANBORN_BORO CHAR(1), 00007286 3 PIWA2_1AL_SANBORN_VOL CHAR(3), 00007386 3 PIWA2_1AL_SANBORN_PAGE CHAR(4), 00007486 2 PIWA2_1AL_COMMERC_DIST CHAR(5), 00007586 2 PIWA2_1AL_DOF_MAP_BORO CHAR(1), 00007686 2 PIWA2_1AL_DOF_MAP_SECVOL CHAR(4), 00007786 2 PIWA2_1AL_DOF_MAP_PAGE CHAR(4), 00007886 2 FILLER_600 CHAR(3), 00007986 2 PIWA2_1AL_LATITUDE CHAR(9), 00008086 2 PIWA2_1AL_LONGITUDE CHAR(11), 00008186 2 PIWA2_1AL_X_COORD CHAR(07), 00008286 2 PIWA2_1AL_Y_COORD CHAR(07), 00008386 2 PIWA2_1AL_BID CHAR(06), 00008486 2 PIWA2_1AL_TPAD_BIN_ST CHAR(01), /*CURRENT STATUS*/ 00008586 2 PIWA2_1AL_TPAD_NEW_BIN CHAR(07), /*NEW BIN */ 00008686 2 PIWA2_1AL_TPAD_NEW_BIN_ST CHAR(01), /*NEW BIN STATUS*/ 00008786 2 PIWA2_1AL_TPAD_CONFLICT CHAR(01), /*CONFLICT FLAG */ 00008886 2 PIWA2_1AL_DCP_ZONE_MAP CHAR(03), /*DCP ZONING MAP*/ 00008986 2 FILLER_650 CHAR(06), 00009086 2 FILLER_700 CHAR(8), /*LGC -GSS USE*/ 00009186 2 PIWA2_1AL_NUM_OF_BINS CHAR(4), 00009286 2 PIWA2_1AL_BINS(2500) CHAR(7); 00009386 00009486 DCL 1 PIWA2_1AL_TPAD_BINLIST BASED(ADDR(PIWA2_1AL_BINS)), 00009586 2 PIWA2_1AL_TPAD_BINS(2187), 00009686 3 PIWA2_1AL_TPAD_BINS_BIN CHAR (7), 00009786 3 PIWA2_1AL_TPAD_BINS_STAT CHAR (1), 00009886 2 PIWA2_1AL_TPAD_FILL CHAR (4); 00009986 00010086 DCL PIWA2_1AL_SANBORN_BVOLPAGE CHAR(8) 00010186 BASED(ADDR(PIWA2_1AL_SANBORN)); 00010286 DCL PIWA2_1AL_STROLLKEY CHAR(19) 00010386 BASED(ADDR(PIWA2_1AL_STROLL_KEY)); 00010486 00010586 00010686 DCL 1 PIWA2_1EX BASED(ADDR(P2PL11AL)), 00010786 00010886 /*******************************************************************/ 00010986 /*** WORK AREA 2 FOR FUNCTION 1/1E EXTENDED ***/ 00011086 /*** ***/ 00011186 /*******************************************************************/ 00011286 /*******************************************************************/ 00011386 00011486 /*******************************************************************/ 00011586 /*** ***/ 00011686 /*** THE FOLLOWING FIELDS ARE FROM FUNCTION 1/1E ***/ 00011786 /*******************************************************************/ 00011886 2 PIWA2_1EX_ACCESS_KEY CHAR(21), 00011986 2 PIWA2_1EX_CONT_PARITY CHAR(1),/*(OR DUP ADDR IND)*/ 00012086 2 PIWA2_1EX_LOW_HOUSENUM CHAR(11),/* SORT FORMAT */ 00012186 2 PIWA2_1EX_HI_HOUSENUM CHAR(11),/* SORT FORMAT */ 00012286 2 PIWA2_1EX_DCP_PREF_LGC CHAR(2), 00012386 2 PIWA2_1EX_NUM_X_ST_LOW_END CHAR(1), 00012486 2 PIWA2_1EX_LOW_B5SC(5) CHAR(6), 00012586 2 PIWA2_1EX_NUM_X_ST_HI_END CHAR(1), 00012686 2 PIWA2_1EX_HI_B5SC(5) CHAR(6), 00012786 2 PIWA2_1EX_LIONKEY, 00012886 3 PIWA2_1EX_LION_BORO CHAR(1), 00012986 3 PIWA2_1EX_LION_FACECODE CHAR(4), 00013086 3 PIWA2_1EX_LION_SEQ CHAR(5), 00013186 2 PIWA2_1EX_SPECIAL_ADDR_FLAG CHAR(1), 00013286 2 PIWA2_1EX_SIDE_OF_STR CHAR(1), 00013386 2 PIWA2_1EX_SEG_LEN CHAR(5), 00013486 2 PIWA2_1EX_XCOORD CHAR(7), 00013586 2 PIWA2_1EX_YCOORD CHAR(7), 00013686 2 FILLER_1EX_100 CHAR(7), /* FOR ZCOORD */ 00013786 2 FILLER_1EX_200 CHAR(1), /* FOR GSS USE*/ 00013886 2 PIWA2_1EX_MARBLE_RIKERS_FLAG CHAR(1), 00013986 2 PIWA2_1EX_DOT_SLA CHAR(1), 00014086 2 PIWA2_1EX_COM_DIST, 00014186 3 PIWA2_1EX_COM_DIST_BORO CHAR(1), 00014286 3 PIWA2_1EX_COM_DIST_NUM CHAR(2), 00014386 2 PIWA2_1EX_ZIP CHAR(5), 00014486 00014586 2 PIWA2_1EX_ELECT_DIST CHAR(3), /*****************/ 00014686 2 PIWA2_1EX_ASSEM_DIST CHAR(2), /* FUNCTION 1E */ 00014786 2 PIWA2_1EX_SPLIT_ED_FLAG CHAR(1), /* FIELDS */ 00014886 2 PIWA2_1EX_CONG_DIST CHAR(2), /* */ 00014986 2 PIWA2_1EX_SENATE_DIST CHAR(2), /* */ 00015086 2 PIWA2_1EX_COURT_DIST CHAR(2), /* */ 00015186 2 PIWA2_1EX_COUNCIL_DIST CHAR(2), /*****************/ 00015286 00015386 2 PIWA2_1EX_HEALTH_CENTER_DIST CHAR(2), /*HEALTH CENTER*/ 00015486 2 PIWA2_1EX_HEALTH_AREA CHAR(4), /*HEALTH AREA*/ 00015586 2 PIWA2_1EX_SANI_DIST, 00015686 3 PIWA2_1EX_SANI_DIST_BORO CHAR(1), 00015786 3 PIWA2_1EX_SANI_DIST_NUM CHAR(2), 00015886 2 PIWA2_1EX_SANI_SUBSEC CHAR(2), 00015986 2 PIWA2_1EX_SANI_REG CHAR(5), 00016086 2 PIWA2_1EX_SANI_REC CHAR(3), 00016186 2 PIWA2_1EX_POLICE_DIST, 00016286 3 PIWA2_1EX_POL_PAT_BORO_CMD CHAR(1), 00016386 3 PIWA2_1EX_POL_PRECINCT CHAR(3), 00016486 2 PIWA2_1EX_FIRE_DIV CHAR(2), 00016586 2 PIWA2_1EX_FIRE_BAT CHAR(2), 00016686 2 PIWA2_1EX_FIRE_CO, 00016786 3 PIWA2_1EX_FIRE_CO_TYPE CHAR(1), 00016886 3 PIWA2_1EX_FIRE_CO_NUM CHAR(3), 00016986 2 PIWA2_1EX_FILL_DIST_SPLT_FLAG CHAR(1), 00017086 2 PIWA2_1EX_SCHL_DIST CHAR(2), 00017186 2 PIWA2_1EX_DYN_BLK CHAR(3), /*ATOMIC POLYGON*/ 00017286 2 PIWA2_1EX_POLICE_PAT_BORO CHAR(2), 00017386 2 PIWA2_1EX_FEATURE_TYPE CHAR(1), 00017486 2 PIWA2_1EX_SEGMENT_TYPE CHAR(1), 00017586 2 PIWA2_1EX_ALX CHAR(1), 00017686 2 PIWA2_1EX_COINCIDENT_SEG_CTR CHAR(1), 00017786 2 FILLER_1EX_290 CHAR(2), 00017886 2 PIWA2_1EX_CENS_TRCT_BORO CHAR(1), /*USED FOR GRIDGEN*/ 00017986 2 PIWA2_1EX_1990_CENS_TRCT CHAR(6), 00018086 2 PIWA2_1EX_2010_CENSUS_TRACT CHAR(6), 00018186 2 PIWA2_1EX_2010_CENSUS_BLOCK CHAR(4), 00018286 2 PIWA2_1EX_2010_CENSUS_BLK_SF CHAR(1), /*NOT IMPLEMENTED*/ 00018386 2 PIWA2_1EX_2000_CENS_TRACT CHAR(6), 00018486 2 PIWA2_1EX_2000_CENS_BLOCK CHAR(4), 00018586 2 PIWA2_1EX_2000_CENS_BLK_S CHAR(1), 00018686 2 PIWA2_1EX_NTA CHAR(4), /*NEIGHBORHOOD */ 00018786 /*TABULATION AREA */ 00018886 2 PIWA2_1EX_SANIT_SNOW_PRIORITY CHAR(1), /*SANITATION STRT */ 00018986 /*SNOW PRIORITY */ 00019086 2 PIWA2_1EX_SANIT_ORGANICS CHAR(5), /*SANITATION */ 00019186 /*ORGANIC PICK UP */ 00019286 2 PIWA2_1EX_SANIT_BULK_PICK_UP CHAR(5), /*SANITATION BULK */ 00019386 /* 2 PIWA2_1EX_SANIT_RESERVED *V16.4*CHAR(5), *SANITATION RESERVE*/ 00019486 2 PIWA2_1EX_HURRICANE_ZONE CHAR(2), /*OEM HURRICANE */ 00019586 /*EVACUATION ZONE */ 00019686 2 FILLER_1EX_400 CHAR(11), 00019786 2 PIWA2_1EX_UHNS CHAR(11), 00019886 2 PIWA2_1EX_REAL_B7SC CHAR(8), 00019986 2 PIWA2_1EX_SEGMENT_ID CHAR(7), 00020086 2 PIWA2_1EX_CURVE_FLAG CHAR(1), 00020186 2 PIWA2_1EX_LGCS CHAR(8), 00020286 2 PIWA2_1EX_BOE_PTR CHAR(1), 00020386 2 PIWA2_1EX_AZIMUTH CHAR(3), 00020486 2 PIWA2_1EX_ORIENT CHAR(1), 00020586 2 PIWA2_1EX_X_LOW CHAR(7), 00020686 2 PIWA2_1EX_Y_LOW CHAR(7), 00020786 2 PIWA2_1EX_Z_LOW CHAR(7), /*NOT IMPLEMENTED*/ 00020886 2 PIWA2_1EX_X_HI CHAR(7), 00020986 2 PIWA2_1EX_Y_HI CHAR(7), 00021086 2 PIWA2_1EX_Z_HI CHAR(7), /*NOT IMPLEMENTED*/ 00021186 /* SPATIAL COORDINATES OF CENTER OF CURVATURE */ 00021286 2 PIWA2_1EX_X_CC CHAR(7), 00021386 2 PIWA2_1EX_Y_CC CHAR(7), 00021486 2 PIWA2_1EX_Z_CC CHAR(7), /*NOT IMPLEMENTED*/ 00021586 2 PIWA2_1EX_RADIUS CHAR(7), 00021686 2 PIWA2_1EX_SECANT CHAR(1), 00021786 2 PIWA2_1EX_ANGLE_FROM CHAR(5), 00021886 2 PIWA2_1EX_ANGLE_TO CHAR(5), 00021986 2 PIWA2_1EX_NODE_FROM CHAR(7), 00022086 2 PIWA2_1EX_NODE_TO CHAR(7), 00022186 2 PIWA2_1EX_VANITY_LION CHAR(10), 00022286 2 PIWA2_1EX_SOS CHAR(1), 00022386 2 PIWA2_1EX_SPLIT_LOHSN CHAR(11), 00022486 2 PIWA2_1EX_TD CHAR(1), 00022586 2 PIWA2_1EX_TR CHAR(10), 00022686 2 PIWA2_1EX_CURVE_FRACTION CHAR(3), 00022786 2 PIWA2_1EX_ROADWAY_TYPE CHAR(2), 00022886 2 PIWA2_1EX_PHYSICAL_ID CHAR(7), 00022986 2 PIWA2_1EX_GENERIC_ID CHAR(7), 00023086 2 PIWA2_1EX_INTP_ID CHAR(7), /*INTERNAL USE*/ 00023186 2 PIWA2_1EX_INTF_ID CHAR(7), /*INTERNAL USE*/ 00023286 2 PIWA2_1EX_BIKE_LANE_2 CHAR(2), 00023386 2 PIWA2_1EX_BIKE_TRAFFIC_DIR CHAR(2), 00023486 2 PIWA2_1EX_FILL450 CHAR(3), 00023586 /* 2 PIWA2_1EX_FILL450 * V17.1 * CHAR(5), **/ 00023686 /* 2 PIWA2_1EX_FILL450 * V16.4 * CHAR(7), **/ 00023786 /* 2 PIWA2_1EX_BLOCKFACE_ID * V16.1* CHAR(7), **/ 00023886 2 PIWA2_1EX_STREET_STATUS CHAR(1), 00023986 2 PIWA2_1EX_STREET_WIDTH CHAR(3), 00024086 2 PIWA2_1EX_STREET_WIDTH_IRR CHAR(1), 00024186 2 PIWA2_1EX_BIKE_LANE CHAR(1), 00024286 2 PIWA2_1EX_FED_CLASS_CODE CHAR(2), 00024386 2 PIWA2_1EX_ROW_TYPE CHAR(1), 00024486 2 PIWA2_1EX_LGC_LIST_2 CHAR(10), 00024586 2 PIWA2_1EX_LEGACY_SEG_ID CHAR(7), 00024686 2 PIWA2_1EX_LGC_LIST_FROM_1 CHAR(10), 00024786 2 PIWA2_1EX_LGC_LIST_TO_1 CHAR(10), 00024886 2 PIWA2_1EX_LGC_LIST_FROM_2 CHAR(10), 00024986 2 PIWA2_1EX_LGC_LIST_TO_2 CHAR(10), 00025086 2 PIWA2_1EX_NOCROSS_FLG CHAR(1), 00025186 2 PIWA2_1EX_IND_SEG_LEN CHAR(5), 00025286 2 PIWA2_1EX_NTA_NAME CHAR(75), 00025386 2 PIWA2_1EX_USPS_CITY_NAME CHAR(25), 00025486 2 PIWA2_1EX_LATITUDE CHAR(9), 00025586 2 PIWA2_1EX_LONGITUDE CHAR(11), 00025686 2 PIWA2_1EX_SEG_FROM_NODE CHAR(7), 00025786 2 PIWA2_1EX_SEG_TO_NODE CHAR(7), 00025886 2 PIWA2_1EX_SEG_FROM_XYZ CHAR(21), 00025986 2 PIWA2_1EX_SEG_TO_XYZ CHAR(21), 00026086 2 PIWA2_1EX_BLOCKFACE_ID CHAR(10), 00026186 2 PIWA2_1EX_NBR_TRAVEL_LANES CHAR(2), 00026286 2 PIWA2_1EX_NBR_PARK_LANES CHAR(2), 00026386 2 PIWA2_1EX_NBR_TOTAL_LANES CHAR(2), 00026486 2 PIWA2_1EX_STR_WIDTH_MAX CHAR(3), 00026586 2 PIWA2_1EX_SPEED_LIMIT CHAR(2), 00026686 2 PIWA2_1EX_PUMA_CODE CHAR(5), 00026786 2 PIWA2_1EX_POLICE_SECTOR CHAR(4), 00026886 2 PIWA2_1EX_POLICE_SRVC_AREA CHAR(1), 00026986 2 PIWA2_1EX_FILL500 CHAR(240), 00027086 /* 2 PIWA2_1EX_FILL500 ** V18.3 ** CHAR(245),**/ 00027186 /* 2 PIWA2_1EX_FILL500 ** V18.1 ** CHAR(250),**/ 00027286 /* 2 PIWA2_1EX_FILL500 ** V17.4 ** CHAR(252),**/ 00027386 /* 2 PIWA2_1EX_FILL500 ** V16.4 ** CHAR(255) **/ 00027486 /* 2 PIWA2_1EX_FILL500 ** V16.1 ** CHAR(271) **/ 00027586 /* 2 PIWA2_1EX_FILL500 ** V15.3 ** CHAR(327) **/ 00027686 /*******************************************************************/ 00027786 /*** ***/ 00027886 /*** THE FOLLOWING FIELDS ARE AN ADDITION TO 1E ***/ 00027986 /*******************************************************************/ 00028086 2 PIWA2_1EX_REASON_CODE CHAR(1), 00028186 2 PIWA2_1EX_REASON_CODE_QUAL CHAR(1), 00028286 2 PIWA2_1EX_WARN_CODE CHAR(2), 00028386 2 PIWA2_1EX_RETURN_CODE CHAR(2), 00028486 2 PIWA2_1EX_NUM_X_STS_LO_END CHAR(1), 00028586 2 PIWA2_1EX_LO_B7SC(5) CHAR(8), 00028686 2 PIWA2_1EX_NUM_X_STS_HI_END CHAR(1), 00028786 2 PIWA2_1EX_HI_B7SC(5) CHAR(8), 00028886 2 PIWA2_1EX_LO_ST_NAME(5) CHAR(32), 00028986 2 PIWA2_1EX_HI_ST_NAME(5) CHAR(32), 00029086 2 PIWA2_1EX_BOE_B7SC CHAR(8), 00029186 2 PIWA2_1EX_BOE_ST_NAME CHAR(32), 00029286 2 PIWA2_1EX_FILL600 CHAR(52); 00029386 00029486 00029586 00029686 DCL 1 PIWA2_FN1AX BASED(ADDR(P2PL11AL)), 00029786 /*******************************************************************/ 00029886 /*** WORK AREA 2 FOR FUNCTION 1A EXTENDED ***/ 00029986 /*** ***/ 00030086 /*******************************************************************/ 00030186 00030286 00030386 2 PIWA2_1AX_ACCESS_KEY CHAR(21), 00030486 2 PIWA2_1AX_CONT_PARITY CHAR(1), /*(OR DUP ADDR IND)*/ 00030586 2 PIWA2_1AX_LOW_HOUSENUM CHAR(11), /* SORT FORMAT */ 00030686 2 PIWA2_1AX_BBL, 00030786 3 PIWA2_1AX_BBL_BORO CHAR(1), 00030886 3 PIWA2_1AX_BLOCK CHAR(5), 00030986 3 PIWA2_1AX_LOT CHAR(4), 00031086 2 PIWA2_1AX_LOT_VER CHAR(1), 00031186 2 PIWA2_1AX_SCC CHAR(1), 00031286 2 FILLER_1AX1 CHAR(1), 00031386 2 PIWA2_1AX_GENERAL_LOT_INFO, 00031486 3 PIWA2_1AX_RPAD_BLDG_CLASS CHAR(2), 00031586 3 PIWA2_1AX_CORNER_CODE CHAR(2), 00031686 3 PIWA2_1AX_NUM_OF_STRUCTURES CHAR(4), 00031786 3 PIWA2_1AX_NUM_OF_BLOCKFACES CHAR(2), 00031886 3 PIWA2_1AX_INTERIOR_FLAG CHAR(1), 00031986 3 PIWA2_1AX_VACANT_FLAG CHAR(1), 00032086 3 PIWA2_1AX_IRREG_LOT_FLAG CHAR(1), 00032186 2 PIWA2_1AX_MARBLE_RIKERS_FLAG CHAR(1), 00032286 2 PIWA2_1AX_ADDR_LIST_OVFLOW_FLAG CHAR(1), 00032386 2 PIWA2_1AX_STROLL_KEY, 00032486 3 PIWA2_1AX_STROLL_BORO CHAR(1), 00032586 3 PIWA2_1AX_STROLL_5SC CHAR(5), 00032686 3 PIWA2_1AX_STROLL_SIDE_OF_STR CHAR(1), /* L, R */ 00032786 3 PIWA2_1AX_STROLL_HI_HOUSENUM CHAR(11), /* SORT FORMAT */ 00032886 3 FILLER_1AX2 CHAR(1), 00032986 2 FILLER_1AX3 CHAR(1), /* FOR GSS USE*/ 00033086 2 PIWA2_1AX_BIN CHAR(7), 00033186 2 PIWA2_1AX_CONDO_FLAG CHAR(1), 00033286 2 FILLER_1AX4 CHAR(1), 00033386 2 PIWA2_1AX_RPAD_CONDO_ID_NUM CHAR(4), 00033486 2 PIWA2_1AX_CONDO_UNIT_ID_NUM CHAR(7), 00033586 2 PIWA2_1AX_CONDO_BILL_BBL CHAR(10), 00033686 2 PIWA2_1AX_CONDO_BILL_BBL_VER CHAR(1), 00033786 2 PIWA2_1AX_CONDO_BILL_BBL_SCC CHAR(1), 00033886 2 PIWA2_1AX_CONDO_LOW_BBL CHAR(10), 00033986 2 PIWA2_1AX_CONDO_LOW_BBL_VER CHAR(1), 00034086 2 PIWA2_1AX_CONDO_HIGH_BBL CHAR(10), 00034186 2 PIWA2_1AX_CONDO_HIGH_BBL_VER CHAR(1), 00034286 2 FILLER_1AX5 CHAR(15), 00034386 2 PIWA2_1AX_COOP_NUM CHAR(4), 00034486 2 PIWA2_1AX_SANBORN, 00034586 3 PIWA2_1AX_SANBORN_BORO CHAR(1), 00034686 3 PIWA2_1AX_SANBORN_VOL CHAR(3), 00034786 3 PIWA2_1AX_SANBORN_PAGE CHAR(4), 00034886 2 PIWA2_1AX_COMMERC_DIST CHAR(5), 00034986 2 PIWA2_1AX_DOF_MAP_BORO CHAR(1), 00035086 2 PIWA2_1AX_DOF_MAP_SECVOL CHAR(4), 00035186 2 PIWA2_1AX_DOF_MAP_PAGE CHAR(4), 00035286 2 PIWA2_1AX_RESERVED CHAR(03), 00035386 2 PIWA2_1AX_LATITUDE CHAR(09), 00035486 2 PIWA2_1AX_LONGITUDE CHAR(11), 00035586 2 PIWA2_1AX_X_COORD CHAR(07), 00035686 2 PIWA2_1AX_Y_COORD CHAR(07), 00035786 2 PIWA2_1AX_BID CHAR(06), 00035886 2 PIWA2_1AX_TPAD_BIN_ST CHAR(01), /*CURRENT STATUS*/ 00035986 2 PIWA2_1AX_TPAD_NEW_BIN CHAR(07), /*NEW BIN */ 00036086 2 PIWA2_1AX_TPAD_NEW_BIN_ST CHAR(01), /*NEW BIN STATUS*/ 00036186 2 PIWA2_1AX_TPAD_CONFLICT CHAR(01), /*CONFLICT FLAG */ 00036286 2 PIWA2_1AX_DCP_ZONE_MAP CHAR(03), /*DCP ZONING MAP*/ 00036386 2 FILLER_1AX7 CHAR(06), 00036486 2 FILLER_1AX8 CHAR(8), /* LGC - GSS USE*/ 00036586 2 PIWA2_1AX_REASON_CODE CHAR(01), 00036686 2 PIWA2_1AX_REASON_CODE_QUAL CHAR(01), 00036786 2 PIWA2_1AX_WARN_CODE CHAR(02), 00036886 2 PIWA2_1AX_RETURN_CODE CHAR(02), 00036986 2 FILLER_1AX9 CHAR(108), 00037086 2 PIWA2_1AX_NUM_OF_ADDR CHAR(4), 00037186 2 PIWA2_1AX_ADDR_LIST(21), 00037286 3 PIWA2_1AX_LIST_LOW_HOUSENUM CHAR(16), /*DISPLAY FORMAT*/ 00037386 3 PIWA2_1AX_LIST_HI_HOUSENUM CHAR(16), /*DISPLAY FORMAT*/ 00037486 3 PIWA2_1AX_LIST_BORO CHAR(1), 00037586 3 PIWA2_1AX_LIST_5SC CHAR(5), 00037686 3 PIWA2_1AX_LIST_LGC CHAR(2), 00037786 3 PIWA2_1AX_LIST_BIN CHAR(7), 00037886 3 PIWA2_1AX_LIST_SIDE_OF_STR CHAR(1), /* L, R */ 00037986 3 PIWA2_1AX_ADDR_TYPE CHAR(1), /* */ 00038086 /* BLANK = NORMAL*/ 00038186 3 PIWA2_1AX_TPAD_STATUS CHAR(1), 00038286 3 PIWA2_1AX_ST_NAME CHAR(32), 00038386 3 FILLER_1AX10 CHAR(34); 00038486 00038586 00038686 DCL 1 PIWA2_FN1B BASED(ADDR(P2PL11AL)), 00038786 00038886 /*******************************************************************/ 00038986 /*** WORK AREA 2 FOR FUNCTION 1B ***/ 00039086 /*** ***/ 00039186 /*******************************************************************/ 00039286 2 PIWA2_1B_1_ACCESS_KEY CHAR(21), 00039386 2 PIWA2_1B_1_CONT_PARITY CHAR(1), /*(DUP ADDR IND)*/ 00039486 2 PIWA2_1B_1_LOW_HOUSENUM CHAR(11), /* SORT FORMAT */ 00039586 2 PIWA2_1B_1_HI_HOUSENUM CHAR(11), /* SORT FORMAT */ 00039686 2 PIWA2_1B_1_PREF_LGC CHAR(2), 00039786 2 PIWA2_1B_1_NUM_X_ST_LOW_END CHAR(1), 00039886 2 PIWA2_1B_1_LOW_B5SC(5) CHAR(6), 00039986 2 PIWA2_1B_1_NUM_X_ST_HI_END CHAR(1), 00040086 2 PIWA2_1B_1_HI_B5SC(5) CHAR(6), 00040186 2 PIWA2_1B_1_LIONKEY, 00040286 3 PIWA2_1B_1_LION_BORO CHAR(1), 00040386 3 PIWA2_1B_1_LION_FACECODE CHAR(4), 00040486 3 PIWA2_1B_1_LION_SEQ CHAR(5), 00040586 2 PIWA2_1B_1_SPECIAL_ADDR_FLAG CHAR(1), 00040686 2 PIWA2_1B_1_SIDE_OF_STR CHAR(1), 00040786 2 PIWA2_1B_1_SEG_LEN CHAR(5), 00040886 2 PIWA2_1B_1_XCOORD CHAR(7), 00040986 2 PIWA2_1B_1_YCOORD CHAR(7), 00041086 2 FILLER_1B_1_100 CHAR(7), /* FOR ZCOORD */ 00041186 2 FILLER_1B_1_200 CHAR(1), /* FOR GSS USE*/ 00041286 2 PIWA2_1B_1_MARBLE_RIKERS_FLAG CHAR(1), 00041386 2 PIWA2_1B_1_DOT_SLA CHAR(1), 00041486 2 PIWA2_1B_1_COM_DIST, 00041586 3 PIWA2_1B_1_COM_DIST_BORO CHAR(1), 00041686 3 PIWA2_1B_1_COM_DIST_NUM CHAR(2), 00041786 2 PIWA2_1B_1_ZIP CHAR(5), 00041886 00041986 2 PIWA2_1B_1_ELECT_DIST CHAR(3), /*****************/ 00042086 2 PIWA2_1B_1_ASSEM_DIST CHAR(2), /* FUNCTION 1E */ 00042186 2 PIWA2_1B_1_SPLIT_ED_FLAG CHAR(1), /* FIELDS */ 00042286 2 PIWA2_1B_1_CONG_DIST CHAR(2), /* */ 00042386 2 PIWA2_1B_1_SENATE_DIST CHAR(2), /* */ 00042486 2 PIWA2_1B_1_COURT_DIST CHAR(2), /* */ 00042586 2 PIWA2_1B_1_COUNCIL_DIST CHAR(2), /*****************/ 00042686 00042786 2 PIWA2_1B_1_HEALTH_CENTER_DIST CHAR(2), 00042886 2 PIWA2_1B_1_HEALTH_AREA CHAR(4), 00042986 2 PIWA2_1B_1_SANI_DIST, 00043086 3 PIWA2_1B_1_SANI_DIST_BORO CHAR(1), 00043186 3 PIWA2_1B_1_SANI_DIST_NUM CHAR(2), 00043286 2 PIWA2_1B_1_SANI_SUBSEC CHAR(2), 00043386 2 PIWA2_1B_1_SANI_REG CHAR(5), 00043486 2 PIWA2_1B_1_SANI_REC CHAR(3), 00043586 2 PIWA2_1B_1_POLICE_DIST, 00043686 3 PIWA2_1B_1_POL_PAT_BORO_CMD CHAR(1), 00043786 3 PIWA2_1B_1_POL_PRECINCT CHAR(3), 00043886 2 PIWA2_1B_1_FIRE_DIV CHAR(2), 00043986 2 PIWA2_1B_1_FIRE_BAT CHAR(2), 00044086 2 PIWA2_1B_1_FIRE_CO, 00044186 3 PIWA2_1B_1_FIRE_CO_TYPE CHAR(1), 00044286 3 PIWA2_1B_1_FIRE_CO_NUM CHAR(3), 00044386 2 PIWA2_1B_1_FILL_DIST_SPLIT_FLAG CHAR(1), 00044486 2 PIWA2_1B_1_SCHL_DIST CHAR(2), 00044586 2 PIWA2_1B_1_DYN_BLK CHAR(3), /*ATOMIC POLYGON*/ 00044686 2 PIWA2_1B_1_POLICE_PAT_BORO CHAR(2), 00044786 2 PIWA2_1B_1_FEATURE_TYPE CHAR(1), 00044886 2 PIWA2_1B_1_SEGMENT_TYPE CHAR(1), 00044986 2 PIWA2_1B_1_ALX CHAR(1), 00045086 2 PIWA2_1B_1_COINCIDENT_SEG_CTR CHAR(1), 00045186 2 FILLER_1B_1_290 CHAR(2), 00045286 2 PIWA2_1B_1_CENS_TRCT_BORO CHAR(1), 00045386 2 PIWA2_1B_1_1990_CENS_TRCT CHAR(6), 00045486 2 PIWA2_1B_1_2010_CENSUS_TRACT CHAR(6), 00045586 2 PIWA2_1B_1_2010_CENSUS_BLOCK CHAR(4), 00045686 2 PIWA2_1B_1_2010_CENSUS_BLK_SF CHAR(1), /*NOT IMPLELMENTED*/00045786 2 PIWA2_1B_1_2000_CENS_TRACT CHAR(6), 00045886 2 PIWA2_1B_1_2000_CENS_BLOCK CHAR(4), 00045986 2 PIWA2_1B_1_2000_CENS_BLK_S CHAR(1), 00046086 2 PIWA2_1B_1_NTA CHAR(4), /*NEIGHBORHOOD */00046186 /*TABULATION AREA */00046286 2 PIWA2_1B_1_SANIT_SNOW_PRIORITY CHAR(1), /*SANITATION STRT*/ 00046386 /*SNOW PRIORITY */ 00046486 2 PIWA2_1B_1_SANIT_ORGANICS CHAR(5), /*SANITATION */ 00046586 /*ORGANIC PICK UP*/ 00046686 2 PIWA2_1B_1_SANIT_BULK_PICK_UP CHAR(5), /*SANIT BULK */ 00046786 /* 2 PIWA2_1B_1_SANIT_RESERVE *V16.4 ** CHAR(5), *SANIT RESERVE*/ 00046886 2 PIWA2_1B_1_HURRICANE_ZONE CHAR(2), /*OEM HURRICANE */ 00046986 /*EVACUATION ZONE*/ 00047086 2 FILLER_1B_1_400 CHAR(11), 00047186 2 PIWA2_1B_1_UHNS CHAR(11), 00047286 2 PIWA2_1B_1_REAL_B7SC CHAR(8), 00047386 2 PIWA2_1B_1_SEGMENT_ID CHAR(7), 00047486 2 PIWA2_1B_1_CURVE_FLAG CHAR(1), 00047586 2 PIWA2_1B_1_LGCS CHAR(8), 00047686 2 PIWA2_1B_1_BOE_PTR CHAR(1), 00047786 2 PIWA2_1B_1_AZIMUTH CHAR(3), 00047886 2 PIWA2_1B_1_ORIENT CHAR(1), 00047986 2 PIWA2_1B_1_X_LOW CHAR(7), 00048086 2 PIWA2_1B_1_Y_LOW CHAR(7), 00048186 2 PIWA2_1B_1_Z_LOW CHAR(7), /*NOT IMPLEMENTED*/ 00048286 2 PIWA2_1B_1_X_HI CHAR(7), 00049027 2 PIWA2_1B_1_Y_HI CHAR(7), 00049127 2 PIWA2_1B_1_Z_HI CHAR(7), /*NOT IMPLEMENTED*/ 00049227 /* SPATIAL COORDINATES OF CENTER OF CURVATURE */ 00049327 2 PIWA2_1B_1_X_CC CHAR(7), 00049427 2 PIWA2_1B_1_Y_CC CHAR(7), 00049527 2 PIWA2_1B_1_Z_CC CHAR(7), /*NOT IMPLEMENTED*/ 00049627 2 PIWA2_1B_1_RADIUS CHAR(7), 00049727 2 PIWA2_1B_1_SECANT CHAR(1), 00049827 2 PIWA2_1B_1_ANGLE_FROM CHAR(5), 00049927 2 PIWA2_1B_1_ANGLE_TO CHAR(5), 00050027 2 PIWA2_1B_1_NODE_FROM CHAR(7), 00051027 2 PIWA2_1B_1_NODE_TO CHAR(7), 00052027 2 PIWA2_1B_1_VANITY_LION CHAR(10), 00053027 2 PIWA2_1B_1_SOS CHAR(1), 00054027 2 PIWA2_1B_1_SPLIT_LOHSN CHAR(11), 00055027 2 PIWA2_1B_1_TD CHAR(1), 00056027 2 PIWA2_1B_1_TR CHAR(10), 00057027 2 PIWA2_1B_1_CURVE_FRACTION CHAR(3), 00058027 2 PIWA2_1B_1_ROADWAY_TYPE CHAR(2), 00058132 2 PIWA2_1B_1_PHYSICAL_ID CHAR(7), 00058232 2 PIWA2_1B_1_GENERIC_ID CHAR(7), 00058332 2 PIWA2_1B_1_INTP_ID CHAR(7), /*INTERNAL USE*/ 00058436 2 PIWA2_1B_1_INTF_ID CHAR(7), /*INTERNAL USE*/ 00058536 2 PIWA2_1B_1_BIKE_LANE_2 CHAR(2), 00058676 2 PIWA2_1B_1_BIKE_TRAFFIC_DIR CHAR(2), 00058781 2 PIWA2_1B_1_FILL450 CHAR(3), 00058879 /* 2 PIWA2_1B_1_FILL450 ** V17.1 ** CHAR(5),**/ 00058979 /* 2 PIWA2_1B_1_FILL450 ** V16.4 ** CHAR(7),**/ 00059079 /* 2 PIWA2_1B_1_BLOCKFACE_ID ** V16.1 ** CHAR(7) **/ 00059179 2 PIWA2_1B_1_STREET_STATUS CHAR(1), 00059279 2 PIWA2_1B_1_STREET_WIDTH CHAR(3), 00059379 2 PIWA2_1B_1_STREET_WIDTH_IRR CHAR(1), 00059479 2 PIWA2_1B_1_BIKE_LANE CHAR(1), 00059579 2 PIWA2_1B_1_FED_CLASS_CODE CHAR(2), 00059679 2 PIWA2_1B_1_ROW_TYPE CHAR(1), 00059779 2 PIWA2_1B_1_LGC_LIST_2 CHAR(10), 00059879 2 PIWA2_1B_1_LEGACY_SEG_ID CHAR(7), 00059979 2 PIWA2_1B_1_LGC_LIST_FROM_1 CHAR(10), 00060079 2 PIWA2_1B_1_LGC_LIST_TO_1 CHAR(10), 00060179 2 PIWA2_1B_1_LGC_LIST_FROM_2 CHAR(10), 00060279 2 PIWA2_1B_1_LGC_LIST_TO_2 CHAR(10), 00060379 2 PIWA2_1B_1_NOCROSS_FLG CHAR(1), 00060479 2 PIWA2_1B_1_IND_SEG_LEN CHAR(5), 00060579 2 PIWA2_1B_1_NTA_NAME CHAR(75), 00060679 2 PIWA2_1B_1_USPS_CITY_NAME CHAR(25), 00060779 2 PIWA2_1B_1_LATITUDE CHAR(9), 00060879 2 PIWA2_1B_1_LONGITUDE CHAR(11), 00060979 2 PIWA2_1B_1_SEG_FROM_NODE CHAR(7), 00061079 2 PIWA2_1B_1_SEG_TO_NODE CHAR(7), 00061179 2 PIWA2_1B_1_SEG_FROM_XYZ CHAR(21), 00061279 2 PIWA2_1B_1_SEG_TO_XYZ CHAR(21), 00061379 2 PIWA2_1B_1_BLOCKFACE_ID CHAR(10), 00061479 2 PIWA2_1B_1_NBR_TRAVEL_LANES CHAR(2), 00061579 2 PIWA2_1B_1_NBR_PARK_LANES CHAR(2), 00061679 2 PIWA2_1B_1_NBR_TOTAL_LANES CHAR(2), 00061779 2 PIWA2_1B_1_STREET_WIDTH_MAX CHAR(3), 00061879 2 PIWA2_1B_1_SPEED_LIMIT CHAR(2), 00061982 2 PIWA2_1B_1_PUMA_CODE CHAR(5), 00062085 2 PIWA2_1B_1_POLICE_SECTOR CHAR(4), 00062186 2 PIWA2_1B_1_POLICE_SRVC_AREA CHAR(1), 00062286 2 PIWA2_1B_1_FILL500 CHAR(240), 00062386 /* 2 PIWA2_1B_1_FILL500 ** V18.1 ** CHAR(245),**/ 00062486 /* 2 PIWA2_1B_1_FILL500 ** V18.1 ** CHAR(250),**/ 00062584 /* 2 PIWA2_1B_1_FILL500 ** V17.4 ** CHAR(252),**/ 00062684 /* 2 PIWA2_1B_1_FILL500 ** V16.4 ** CHAR(255) **/ 00062784 /**2 PIWA2_1B_1_FILL500 ** V16.1 ** CHAR(271) **/ 00062884 /**2 PIWA2_1B_1_FILL500 ** V15.3 ** CHAR(327) **/ 00062984 /*******************************************************************/ 00063084 /*** ***/ 00063184 /*** THE FOLLOWING FIELDS ARE AN ADDITION TO 1/1E ***/ 00063284 /*******************************************************************/ 00063384 2 PIWA2_1B_1_REASON_CODE CHAR(1), 00063484 2 PIWA2_1B_1_REASON_CODE_QUAL CHAR(1), 00063584 2 PIWA2_1B_1_WARN_CODE CHAR(2), 00063684 2 PIWA2_1B_1_RETURN_CODE CHAR(2), 00063784 2 PIWA2_1B_1_NUM_X_STS_LO_END CHAR(1), 00063884 2 PIWA2_1B_1_LO_B7SC(5) CHAR(8), 00063984 2 PIWA2_1B_1_NUM_X_STS_HI_END CHAR(1), 00064027 2 PIWA2_1B_1_HI_B7SC(5) CHAR(8), 00065027 2 PIWA2_1B_1_LO_ST_NAME(5) CHAR(32), 00066027 2 PIWA2_1B_1_HI_ST_NAME(5) CHAR(32), 00067027 2 PIWA2_1B_1_BOE_B7SC CHAR(8), 00068027 2 PIWA2_1B_1_BOE_ST_NAME CHAR(32), 00069027 2 PIWA2_1B_1_FILL600 CHAR(52), 00069127 00069227 /*******************************************************************/ 00069627 /*** THE FOLLOWING ARE FROM THE 1A WORK AREA 2 ***/ 00069727 /*** ***/ 00069827 /*******************************************************************/ 00069927 00070027 2 PIWA2_1B_1A_ACCESS_KEY CHAR(21), 00072027 2 PIWA2_1B_1A_CONT_PARITY CHAR(1), /*(DUP ADDR IND)*/ 00073027 2 PIWA2_1B_1A_LOW_HOUSENUM CHAR(11), /* SORT FORMAT */ 00074027 2 PIWA2_1B_1A_BBL, 00075027 3 PIWA2_1B_1A_BBL_BORO CHAR(1), 00076027 3 PIWA2_1B_1A_BLOCK CHAR(5), 00077027 3 PIWA2_1B_1A_LOT CHAR(4), 00078027 2 PIWA2_1B_1A_LOT_VER CHAR(1), 00079027 2 PIWA2_1B_1A_SCC CHAR(1), 00079127 2 FILLER_1B_1A_1 CHAR(1), 00079227 2 PIWA2_1B_1A_GENERAL_LOT_INFO, 00079327 3 PIWA2_1B_1A_RPAD_BLDG_CLASS CHAR(2), 00079427 3 PIWA2_1B_1A_CORNER_CODE CHAR(2), 00079527 3 PIWA2_1B_1A_NUM_OF_STRUCTURES CHAR(4), 00079627 3 PIWA2_1B_1A_NUM_OF_BLOCKFACES CHAR(2), 00079727 3 PIWA2_1B_1A_INTERIOR_FLAG CHAR(1), 00079827 3 PIWA2_1B_1A_VACANT_FLAG CHAR(1), 00079927 3 PIWA2_1B_1A_IRREG_LOT_FLAG CHAR(1), 00080027 2 PIWA2_1B_1A_MARBLE_RIKERS_FLAG CHAR(1), 00081028 2 PIWA2_1B_1A_OVERFLOW_FLAG CHAR(1), 00082072 2 PIWA2_1B_1A_STROLL_KEY, 00083027 3 PIWA2_1B_1A_STROLL_BORO CHAR(1), 00084027 3 PIWA2_1B_1A_STROLL_5SC CHAR(5), 00085027 3 PIWA2_1B_1A_STROLL_SIDE_OF_STR CHAR(1), /* L, R */ 00086027 3 PIWA2_1B_1A_STROLL_HI_HOUSENUM CHAR(11), /* SORT FORMAT */ 00087027 3 FILLER_1B_1A_2 CHAR(1), 00088027 2 FILLER_1B_1A_3 CHAR(1), /* FOR GSS USE*/ 00089029 2 PIWA2_1B_1A_BIN CHAR(7), 00089127 2 PIWA2_1B_1A_CONDO_FLAG CHAR(1), 00089227 2 FILLER_1B_1A_4 CHAR(1), 00089327 2 PIWA2_1B_1A_RPAD_CONDO_ID_NUM CHAR(4), 00089427 2 PIWA2_1B_1A_CONDO_UNIT_ID_NUM CHAR(7), 00089527 2 PIWA2_1B_1A_CONDO_BILL_BBL CHAR(10), 00089627 2 PIWA2_1B_1A_CONDO_BILL_BBL_VER CHAR(1), 00089727 2 PIWA2_1B_1A_CONDO_BILL_BBL_SCC CHAR(1), 00089827 2 PIWA2_1B_1A_CONDO_LOW_BBL CHAR(10), 00089927 2 PIWA2_1B_1A_CONDO_LOW_BBL_VER CHAR(1), 00090027 2 PIWA2_1B_1A_CONDO_HIGH_BBL CHAR(10), 00091027 2 PIWA2_1B_1A_CONDO_HIGH_BBL_VER CHAR(1), 00092027 2 FILLER_1B_1A_5 CHAR(15), 00093027 2 PIWA2_1B_1A_COOP_NUM CHAR(4), 00094027 2 PIWA2_1B_1A_SANBORN, 00095027 3 PIWA2_1B_1A_SANBORN_BORO CHAR(1), 00096027 3 PIWA2_1B_1A_SANBORN_VOL CHAR(3), 00097027 3 PIWA2_1B_1A_SANBORN_PAGE CHAR(4), 00098027 2 PIWA2_1B_1A_COMMERC_DIST CHAR(5), 00099027 2 PIWA2_1B_1A_DOF_MAP_BORO CHAR(1), 00099127 2 PIWA2_1B_1A_DOF_MAP_SECVOL CHAR(4), 00099227 2 PIWA2_1B_1A_DOF_MAP_PAGE CHAR(4), 00099327 2 PIWA2_1B_1A_RESERVED CHAR(3), 00099464 2 PIWA2_1B_1A_LATITUDE CHAR(9), 00099564 2 PIWA2_1B_1A_LONGITUDE CHAR(11), 00099664 2 PIWA2_1B_1A_X_COORD CHAR(07), 00099764 2 PIWA2_1B_1A_Y_COORD CHAR(07), 00099864 2 PIWA2_1B_1A_BID CHAR(06), 00099964 2 PIWA2_1B_1A_TPAD_BIN_ST CHAR(01), /*CURRENT STATUS*/ 00100064 2 PIWA2_1B_1A_TPAD_NEW_BIN CHAR(07), /*NEW BIN */ 00100164 2 PIWA2_1B_1A_TPAD_NEW_BIN_ST CHAR(01), /*NEW BIN STATUS*/ 00100264 2 PIWA2_1B_1A_TPAD_CONFLICT CHAR(01), /*CONFLICT FLAG */ 00101027 2 PIWA2_1B_1A_DCP_ZONE_MAP CHAR(03), /*DCP ZONING MAP*/ 00101183 2 FILLER_1B_1A_7 CHAR(06), 00102083 2 FILLER_1B_1A_8 CHAR(8), /*LGC M GSS USE*/ 00103070 2 PIWA2_1B_1A_REASON_CODE CHAR(01), 00104027 2 PIWA2_1B_1A_REASON_CODE_QUAL CHAR(01), 00105052 2 PIWA2_1B_1A_WARN_CODE CHAR(02), 00106027 2 PIWA2_1B_1A_RETURN_CODE CHAR(02), 00107027 2 FILLER_1B_1A_9 CHAR(108), 00108027 2 PIWA2_1B_1A_NUM_OF_ADDR CHAR(4), 00109027 2 PIWA2_1B_1A_ADDR_LIST(21), 00109127 3 PIWA2_1B_1A_LIST_LOW_HOUSENUM CHAR(16), /*DISPLAY FORMAT*/ 00109227 3 PIWA2_1B_1A_LIST_HI_HOUSENUM CHAR(16), /*DISPLAY FORMAT*/ 00109327 3 PIWA2_1B_1A_LIST_BORO CHAR(1), 00109427 3 PIWA2_1B_1A_LIST_5SC CHAR(5), 00109527 3 PIWA2_1B_1A_LIST_LGC CHAR(2), 00109627 3 PIWA2_1B_1A_LIST_BIN CHAR(7), 00109727 3 PIWA2_1B_1A_LIST_SIDE_OF_STR CHAR(1), /* L, R */ 00109827 3 PIWA2_1B_1A_ADDR_TYPE CHAR(1), /* */ 00109927 /*BLANK = NORMAL*/ 00110027 3 PIWA2_1B_1A_TPAD_STATUS CHAR(1), 00111027 3 PIWA2_1B_1A_ST_NAME CHAR(32), 00112027 3 FILLER_1B_1A_10 CHAR(34); 00113027 00120019 P2PL13S COPY FIle /*******************************************************************/ 00000100 /*** THIS IS THE PL/1 STRUCTURE FOR GEOSUPPORT SYSTEM PLATFORM ***/ 00000200 /*** INDEPENDENT WORK AREA 2 FOR FUNCTION: 3S. ***/ 00000300 /*** ***/ 00000400 /** COPY FILE - P2PL13S. 09/17/97 ***/ 00000500 /*******************************************************************/ 00000600 DCL 00000700 1 P2PL13S, 00000800 2 PIWA2_3S_ACCESS_KEY, 00000900 3 FILLER_GSS CHAR(2), 00001000 3 PIWA2_3S_PORS_STNAME_IND CHAR(1),/* P = PRIMARY */ 00001100 /* S = SECONDARY */ 00001200 3 PIWA2_3S_BORO CHAR(1), 00001300 3 PIWA2_3S_5SC CHAR(5), 00001400 3 PIWA2_3S_LGC CHAR(2),/* BLANK IF P IN */ 00001500 3 FILLER CHAR(10),/* POSITION 3 */ 00001600 2 PIWA2_3S_NUM_OF_INTERSECTS CHAR(3), 00001700 2 PIWA2_3S_LIST_OF_INTERSECTS(350), 00001800 3 PIWA2_3S_MARBLE_RIKERS_FLAG CHAR(1), 00001900 3 PIWA2_3S_DISTANCE CHAR(5), 00002000 3 PIWA2_3S_GAP_FLAG CHAR(1), 00002100 3 FILLER_100 CHAR(7), 00002200 3 PIWA2_3S_NUM_OF_STR CHAR(1), 00002300 3 PIWA2_3S_B7SC(5) CHAR(8); 00002400 P2PL1AP COPY File /*******************************************************************/ 00000100 /*** THIS IS THE PL/1 STRUCTURE FOR GEOSUPPORT SYSTEM PLATFORM ***/ 00000200 /*** INDEPENDENT WORK AREA 2 FOR FUNCTIONS: AP , AND APX. ***/ 00000370 /*** MARCH 2015 BY YNL V15.2 FOR ADDRESS POINT AND AP EXTENDED. ***/ 00000470 /*** COPY FILE - P2PL1AP. ***/ 00001170 /*******************************************************************/ 00001226 00001326 DCL 1 PIWA2_FNAPX, 00026170 /*******************************************************************/ 00026263 /*** WORK AREA 2 FOR FUNCTION AP EXTENDED ***/ 00026370 /*** ***/ 00026463 /*******************************************************************/ 00026563 00026663 00026763 2 PIWA2_APX_ACCESS_KEY CHAR(21), 00026870 2 PIWA2_APX_CONT_PARITY CHAR(1), /*(OR DUP ADDR IND)*/ 00026970 2 PIWA2_APX_LOW_HOUSENUM CHAR(11), /* SORT FORMAT */ 00027070 2 PIWA2_APX_BBL, 00027170 3 PIWA2_APX_BBL_BORO CHAR(1), 00027270 3 PIWA2_APX_BLOCK CHAR(5), 00027370 3 PIWA2_APX_LOT CHAR(4), 00027470 2 FILLER_APX01 CHAR(7), 00027771 2 PIWA2_APX_NUM_OF_STRUCTURES CHAR(4), 00028171 2 FILLER_APX02 CHAR(26), 00028271 2 FILLER_GSS1 CHAR(1), /* FOR GSS USE*/ 00029571 2 PIWA2_APX_BIN CHAR(7), 00029670 2 PIWA2_APX_CONDO_FLAG CHAR(1), 00029770 2 FILLER_APX03 CHAR(1), 00029871 2 PIWA2_APX_RPAD_CONDO_ID_NUM CHAR(4), 00029970 2 FILLER_APX04 CHAR(7), 00030071 2 PIWA2_APX_CONDO_BILL_BBL CHAR(10), 00030270 2 FILLER_APX05 CHAR(2), 00030371 2 PIWA2_APX_CONDO_LOW_BBL CHAR(10), 00030670 2 FILLER_APX06 CHAR(1), 00030771 2 PIWA2_APX_CONDO_HIGH_BBL CHAR(10), 00030970 2 FILLER_APX07 CHAR(16), 00031071 2 PIWA2_APX_COOP_NUM CHAR(4), 00031370 2 FILLER_APX08 CHAR(22), 00031475 2 PIWA2_APX_RESERVED CHAR(03), 00032370 2 PIWA2_APX_LATITUDE CHAR(09), 00032470 2 PIWA2_APX_LONGITUDE CHAR(11), 00032570 2 PIWA2_APX_X_COORD CHAR(07), 00032670 2 PIWA2_APX_Y_COORD CHAR(07), 00032770 2 FILLER_APX09 CHAR(16), 00032873 2 PIWA2_APX_AP_ID CHAR(09), 00033473 2 FILLER_GSS2 CHAR(8), /* LGC - GSS USE*/ 00033571 2 PIWA2_APX_REASON_CODE CHAR(01), 00033670 2 PIWA2_APX_REASON_CODE_QUAL CHAR(01), 00033770 2 PIWA2_APX_WARN_CODE CHAR(02), 00033870 2 PIWA2_APX_RETURN_CODE CHAR(02), 00033970 2 FILLER_APX10 CHAR(108), 00034072 2 PIWA2_APX_NUM_OF_ADDR CHAR(4), 00034170 2 PIWA2_APX_ADDR_LIST(21), 00034270 3 PIWA2_APX_LIST_LOW_HOUSENUM CHAR(16), /*DISPLAY FORMAT*/ 00034370 3 PIWA2_APX_LIST_HI_HOUSENUM CHAR(16), /*DISPLAY FORMAT*/ 00034470 3 PIWA2_APX_LIST_BORO CHAR(1), 00034570 3 PIWA2_APX_LIST_5SC CHAR(5), 00034670 3 PIWA2_APX_LIST_LGC CHAR(2), 00034770 3 PIWA2_APX_LIST_BIN CHAR(7), 00034870 3 PIWA2_APX_LIST_SIDE_OF_STR CHAR(1), /* L, R */ 00034970 3 PIWA2_APX_ADDR_TYPE CHAR(1), /* */ 00035070 /* BLANK = NORMAL*/ 00035165 3 FILLER_APX11 CHAR(1), 00035274 3 PIWA2_APX_ST_NAME CHAR(32), 00035470 3 FILLER_APX12 CHAR(34); 00035572 00036065 00037071 DCL 1 PIWA2_FNAP BASED(ADDR(PIWA2_FNAPX)), 00037171 /*******************************************************************/ 00039071 /*** WORK AREA 2 FOR FUNCTION AP ***/ 00040071 /*** ***/ 00050071 /*******************************************************************/ 00060071 00070071 00080071 2 PIWA2_AP_ACCESS_KEY CHAR(21), 00090071 2 PIWA2_AP_CONT_PARITY CHAR(1), /*(OR DUP ADDR IND)*/ 00100071 2 PIWA2_AP_LOW_HOUSENUM CHAR(11), /* SORT FORMAT */ 00110071 2 PIWA2_AP_BBL, 00120071 3 PIWA2_AP_BBL_BORO CHAR(1), 00130071 3 PIWA2_AP_BLOCK CHAR(5), 00140071 3 PIWA2_AP_LOT CHAR(4), 00150071 2 FILLER_AP01 CHAR(7), 00160071 2 PIWA2_AP_NUM_OF_STRUCTURES CHAR(4), 00170071 2 FILLER_AP02 CHAR(26), 00180071 2 FILLER_GSS1 CHAR(1), /* FOR GSS USE*/ 00190071 2 PIWA2_AP_BIN CHAR(7), 00200071 2 PIWA2_AP_CONDO_FLAG CHAR(1), 00210071 2 FILLER_AP03 CHAR(1), 00220071 2 PIWA2_AP_RPAD_CONDO_ID_NUM CHAR(4), 00230071 2 FILLER_AP04 CHAR(7), 00240071 2 PIWA2_AP_CONDO_BILL_BBL CHAR(10), 00250071 2 FILLER_AP05 CHAR(2), 00260071 2 PIWA2_AP_CONDO_LOW_BBL CHAR(10), 00270071 2 FILLER_AP06 CHAR(1), 00280071 2 PIWA2_AP_CONDO_HIGH_BBL CHAR(10), 00290071 2 FILLER_AP07 CHAR(16), 00300071 2 PIWA2_AP_COOP_NUM CHAR(4), 00310071 2 FILLER_AP08 CHAR(18), 00320072 2 PIWA2_AP_DOF_MAP_PAGE CHAR(4), 00330071 2 PIWA2_AP_RESERVED CHAR(03), 00340071 2 PIWA2_AP_LATITUDE CHAR(09), 00350071 2 PIWA2_AP_LONGITUDE CHAR(11), 00360071 2 PIWA2_AP_X_COORD CHAR(07), 00370071 2 PIWA2_AP_Y_COORD CHAR(07), 00380071 2 FILLER_AP09 CHAR(16), 00390073 2 PIWA2_AP_AP_ID CHAR(09), 00400073 2 FILLER_GSS2 CHAR(8), /* LGC - GSS USE*/ 00410071 2 PIWA2_AP_NUM_OF_ADDR CHAR(4), 00470071 2 PIWA2_AP_ADDR_LIST(21), 00480071 3 PIWA2_AP_LIST_LOW_HOUSENUM CHAR(16), /*DISPLAY FORMAT*/ 00490071 3 PIWA2_AP_LIST_HI_HOUSENUM CHAR(16), /*DISPLAY FORMAT*/ 00500071 3 PIWA2_AP_LIST_BORO CHAR(1), 00510071 3 PIWA2_AP_LIST_5SC CHAR(5), 00520071 3 PIWA2_AP_LIST_LGC CHAR(2), 00530071 3 PIWA2_AP_LIST_BIN CHAR(7), 00540071 3 PIWA2_AP_LIST_SIDE_OF_STR CHAR(1), /* L, R */ 00550071 3 PIWA2_AP_ADDR_TYPE CHAR(1), /* */ 00560071 /* BLANK = NORMAL*/ 00570071 3 FILLER_AP10 CHAR(4); 00600071 00610071 C COPY File (COW) PAC COPY File #ifndef GEOSUPPORT #define GEOSUPPORT #ifdef __cplusplus extern \"C\" { #endif /*********************************************************************/ /* */ /* Add new 1 byte field 'Police Service Area'in functions: */ /* 1/1E (Extended),1B. YNL 02/2019 V19.2*/ /* Add new 4 bytes field 'Police Sector' in functions: */ /* 1/1E (Extended),1B,2,3(Extended),3C(Extended). YNL 02/2019 V19.2*/ /* Add new 5 bytes field 'PUMA code' in functions: */ /* 1/1E (Extended),1B,3/3C (Extended). TLV 12/2017 V18.1*/ /* Add new 3 bytes field 'DCP Zoning Map' in TLV 09/2017 V17.4*/ /* functions: 1A,BL,BN; 1A,BL,BN(extended) and 1B. */ /* Add new 2 bytes field 'Speed Limit' in TLV 09/2017 V17.4*/ /* functions: 1/1E(extended), 1B, 3X, 3CX. */ /* Add new 2 bytes Bike Traffic Direction TLV 12/2016 V17.1*/ /* Replaced sanit_reserved with sanit_bulk_pick_up TLV 9/2016 V16.4*/ /* Added 'unit' fields to WA1 TLV 9/2016 V16.4*/ /* Add new 2 bytes Bike Lane and Max Str Width TLV 9/2016 V16.4*/ /* */ /*********************************************************************/ /* */ /* GeoSupport System C-Language Header File */ /* for Platform-Independent Work Areas */ /* */ /* Last Updated: February 2016 */ /* */ /*********************************************************************/ /*********************************************************************/ /* */ /* Group Items Used in Platform-Independent Work Area 1 */ /* */ /*********************************************************************/ #define UNIT_SIZE 14 //unit type+identifier v16.4 #define UNITT_SIZE 4 //unit type v16.4 #define UNITI_SIZE 10 //unit identfier v16.4 typedef struct { char boro; // Borough Code char SC10[10]; // 10 Digit Street Code char Street_name[32]; // Street Name } STREET; typedef union { char bbl[10]; /* Borough-Block-Lot */ struct { char boro; /* Borough */ char block[5]; /* Tax Block */ char lot[4]; /* Tax Lot */ } cas; } BBL; typedef struct { char unitt[UNITT_SIZE]; /* Output unit type V16.4 */ char uniti[UNITI_SIZE]; /* Output unit identifier */ } UNIT, *PUNIT; /* Output unit V16.4 */ typedef struct { char func_code[2]; /* Function Code */ char hse_nbr_disp[16]; /* House nbr in Disp form */ char hse_nbr_hns[11]; /* House nbr in Sort form */ char lohse_nbr_disp[16];/* Lo House nbr in Disp form*/ char lohse_nbr_hns[11]; /* Lo House nbr in Sort form*/ STREET sti[3]; /* Street Information */ BBL bbli; /* Borough-Block-Lot */ char filler01; /* Filler-Tax Lot Version # */ char bld_id[7]; /* Building Id Number (BIN) */ char comp_direction; /* Compass Direction */ char comp_direction2; /* Compass Direction-Fn 3S */ char node[7]; /* Node input for Fn2 */ char platform_ind; /* Must be equal to 'C' */ char zipin[5]; /* Input Zip Code */ char unit[UNIT_SIZE]; /* Input unit V16.4*/ char filler03[82]; /* Future Use */ /* Flags that influence processing */ char long_WA_flag; /* Long Work Area 2 Flag */ /* Next 2 fields not impl */ char hse_nbr_justify; /* Hse Nbr Justification Flg */ char hnl[2]; /* Hse Nbr Normalization len */ char hse_nbr_over_flag; /* Reserved for GSS Use */ char snl[2]; /* Street Name Norm Length */ char st_name_norm; /* Street Name Normalization */ /* Format Flag */ char expanded_format; /* Expanded Format Flag */ char roadbedrequest; /* Roadbed Request Switch */ char res_01; /* Reserved for Internal Use */ char segaux_switch; /* Request Auxiliary Segment */ /* Information */ char browse_flag; /* Determines if browse */ /* displays all or some names*/ char real_street_only; /* Display real streets only */ char tpad_switch; /* TPAD read for PAD process */ char mode_switch; /* Mode Flag */ /* X = Extended WA2 */ char wto_switch; /* WTOs Switch N = No WTOs */ /* should be issued */ char filler04[29]; /* Future Use */ } INWA1; typedef struct { char boro_name[9]; /* Boro Name of First Street*/ char hse_nbr_disp[16]; /* House nbr in Normalized */ /* Display form */ char hse_nbr_hns[11]; /* House number in Sort Form*/ STREET sto[3]; /* Street Information */ BBL bblo; /* Boro(len=1), Block(len=5)*/ /* and Lot (len=4)-Normalizd*/ char filler05; /* Filler-Tax Lot Version # */ char lo_hse_nbr_disp[16]; /* low Hse nbr - display */ char lo_hse_nbr_hns[11]; /* low Hse nbr - sort form */ char bin[7]; /* Building Id Number */ char attrbytes[3]; /* NAP Identification Number*/ char reason_code_2; /* 2nd Reason Code */ char reason_code_qual_2;/* 2nd Reason Code Qualifier*/ // char filler08_2; /* Future Use */ char warn_code_2[2]; /* 2nd Warning Return Code */ char ret_code_2[2]; /* 2nd GeoSupport Return Cod*/ char msg_2[80]; /* 2nd GeoSupport Message */ char node[7]; /* Node output for Fn 2 */ UNIT units; /* Output unit Sort V16.4*/ char unitd[UNIT_SIZE]; /* Output unit Display V16.4*/ char filler07[11]; /* Future Use */ char nap_id_nbr[6]; /* NAP Id Nbr - Not Impl. */ char int_use1; /* Internal Use Only */ char reason_code; /* Reason Code */ char reason_code_qual; /* Reason Code Qualifier */ // char filler08; /* Future Use */ char warn_code[2]; /* Warning Ret. Code-NotImpl*/ char ret_code[2]; /* GeoSupport Return Code */ char msg[80]; /* GeoSupport Message */ char nbr_names[2]; /* Nbr of Sreet Names */ char B_7SC[10][8]; /* 10 Boro+7-digit st codes */ char st_names[10][32]; /* Up to 10 Street Names */ } OUTWA1; /*********************************************************************/ /* */ /* Platform-Independent Work Area 1 */ /* */ /*********************************************************************/ typedef struct { INWA1 input; OUTWA1 output; } C_WA1; /******************************************************************/ /* */ /* Group Items Used in Platform-Independent Work Area 2's */ /* */ /******************************************************************/ typedef struct { /* LION KEY */ char lion_boro; /* LION Borough Code */ /* Differs from GeoSupport */ /* Borough Codes */ char face[4]; /* Face Code */ char seq[5]; /* Sequence Number */ } LION; typedef struct { char nbr_sts; /* Number of streets */ char B5SC[5][6]; /* Boro+5 Street Code*/ } St_list; typedef struct { /* used for longwa for TPAD */ char bin[7]; /* BIN */ char status; /* Status of BIN */ } TPAD_LIST; typedef struct { TPAD_LIST tpadlist[2187]; /* or BINs + Status Byte */ char fill[4]; } TPADLST; typedef struct { char lo_hse_nbr[16]; /* Low House Nbr-Disply form*/ char hi_hse_nbr[16]; /* Hi House Nbr-Display form*/ char B5SC[6]; /* Boro & 5 digit Str Code */ char lgc[2]; /* DCP Preferred Street LGC */ char bld_id[7]; /* BIN of address range */ char sos_ind; /* Side of Street Indicator */ char adr_type; /* Address type - P=NAP, */ /* B=NAB, Blank=Normal */ char TPAD_bin_status; /* Status of Job */ char filler01[3]; /* Future Use */ } ADDR_RANGE; typedef struct { char lo_hse_nbr[16]; /* Low House Nbr-Disply form*/ char hi_hse_nbr[16]; /* Hi House Nbr-Display form*/ char B5SC[6]; /* Boro & 5 digit Str Code */ char lgc[2]; /* DCP Preferred Street LGC */ char bld_id[7]; /* BIN of address range */ char sos_ind; /* Side of Street Indicator */ char adr_type; /* Address type */ /* (Blank = Normal) */ char TPAD_bin_status; /* Status of BIN from TPAD */ char st_name[32]; /* Street Name */ char filler01[34]; /* Future Use */ } ADDR_RANGE_1AX; typedef struct { char lo_hse_nbr[16]; /* Low House Nbr-Disply form*/ char hi_hse_nbr[16]; /* Hi House Nbr-Display form*/ char B5SC[6]; /* Boro & 5 digit Str Code */ char lgc[2]; /* DCP Preferred Street LGC */ char bld_id[7]; /* BIN of address range */ char sos_ind; /* Side of Street Indicator */ char adr_type; /* Address type - V=VANITY */ /* Blank=Normal */ char filler02; /* filler for func AP */ char filler01[3]; /* Future Use */ } ADDR_RANGE_AP; typedef struct { char lo_hse_nbr[16]; /* Low House Nbr-Disply form*/ char hi_hse_nbr[16]; /* Hi House Nbr-Display form*/ char B5SC[6]; /* Boro & 5 digit Str Code */ char lgc[2]; /* DCP Preferred Street LGC */ char bld_id[7]; /* BIN of address range */ char sos_ind; /* Side of Street Indicator */ char adr_type; /* Address type - V=VANITY */ /* Blank=Normal */ char filler02; /* filler for func APX */ char st_name[32]; /* Street Name */ char filler01[34]; /* Future Use */ } ADDR_RANGE_APX; typedef struct { char sanborn_boro; /* Sanborn Borough Code */ char sanborn_vol[3]; /* Sanborn Volume */ char sanborn_page[4]; /* Sanborn Page */ } SANBORN; typedef struct { char com_dist[3]; /* Community District */ char lo_hse_nbr[16]; /* Low House Nbr-Disply form*/ char hi_hse_nbr[16]; /* Hi House Nbr-Display form*/ char filler01[32]; /* Future Use */ char iaei; /* Interim Ass'tance Elig */ /* Indicator */ char zip_code[5]; /* Zip code for Street seg. */ char health_area[4]; /* Health Area */ char police_boro_com; /* Police Patrl Boro Command*/ char police_pre[3]; /* Police Precinct */ char fire_divisn[2]; /* Fire Division */ char fire_bat[2]; /* Fire Battalion */ char fire_co_type; /* Fire Company Type */ char fire_co_nbr[3]; /* Fire Company Number */ char com_schl_dist[2]; /* Community School District*/ char dynam_blk[3]; /* Atomic Polygon */ /* (was Dynamic Block) */ char ED[3]; /* ED */ char AD[2]; /* AD */ char police_pat_boro[2];/* Police Patrol Borough */ // char instruc_div[2]; /* Instructional Division */ char filler02; /* Future Use */ char boro; /* Used for the NTA name */ char cen_tract_90[6]; /* 1990 Census Tract */ char cen_tract_10[6]; /* 2010 Census Tract */ char cen_blk_10[4]; /* 2010 Census Block */ char cen_blk_10_sufx; /* 2010 Census Block Suffix */ /* 2010 Suffix Not Implement*/ char cen_tract_2000[6]; /* 2000 Census Tract */ char cen_blk_2000[4]; /* 2000 Census Block */ char cen_blk_2000_sufx; /* 2000 Census Block Suffix */ // char blockface_id[7]; /* \"Blockface ID\" became */ char filler03[7]; /* filler V16.1 */ char nta[4]; /* Neighborhood Tabulation */ /* Area */ char filler04[8]; /* Future Use */ } SEGSIDE; typedef struct { char mh_ri_flag; /* Marble Hill/Rikers Island*/ /* Alternative Boro flag */ char len[5]; /* Len in ft from prev node */ char gap_flag; /* Gap Flag */ char node_nbr[7]; /* Node Number of Intersect */ char nbr_streets; /* Nbr streets intersecting */ char B7SC[5][8]; /* Lowest B7SC at Intersect */ /* is first and 2nd Lowest */ /* B7SC is next. Remaining */ /* B7SC's in no particular */ /* order. */ } CROSS_STRS; /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function 1 */ /* */ /********************************************************************/ typedef struct { char filler01[21]; char cont_parity_ind; /* Continuous Parity Ind. */ /* or Duplicate Address Ind.*/ char lo_hse_nbr[11]; /* Lo House nbr in Sort form*/ char hi_hse_nbr[11]; /* Hi House Nbr in Sort form*/ char lgc[2]; /* DCP or BOE Preferred LGC */ St_list st[2]; /* 1=Low and 2=High */ /* Nbr of cross streets at */ /* low house nbr end of st */ /* B5SCs of lo end cross st */ LION key; /* LION Key - 10 Characters */ char sagr_flag; /* Special Address Generated*/ /* Record flag */ char sos_ind; /* Side of Street Indicator */ char seg_len[5]; /* Segment Length in Feet */ char coord[3][7]; /* 1 = X coordinate, */ /* 2 = Y coordinate, */ /* 3 = Z coordinate, Not Imp*/ char iaei; /* Interim Ass'tance Elig */ /* Indicator */ char mh_ri_flag; /* Marble Hill/Rikers Island*/ /* Alternative Borough flag */ char DOT_slca; /* DOT St Lght Contractr Are*/ char com_dist[3]; /* Community District */ /* Position 0 contains the */ /* CD Boro Code & Pos 1 & 2,*/ /* the district number */ char zip_code[5]; /* Zip code for st seg */ /* Following seven fields used for Function 1E only*/ char ed[3]; /* Election District */ char ad[2]; /* Assembly District */ char sped_flag; /* Split Elect District Flag*/ char congress_dist[2]; /* Congressional District */ char state_sen_dist[2]; /* State Senatorial District*/ char civil_court[2]; /* Civil Court District */ char city_council[2]; /* City Council District */ char health_cent[2]; /* Health Center Dictr*/ char health_area[4]; /* Health Area */ char sanit_dist[3]; /* Sanitation District */ char sanit_sub_sect[2]; /* Sanit Collect Scheduling */ /* Section and Subsection */ char sanit_reg_pick_up[5]; /* Regular Pick up */ char sanit_recycle[3]; /* Recycle pick up */ char police_boro_com; /* Police Patrol Boro Commnd*/ char police_pre[3]; /* Police Precinct */ char fire_divisn[2]; /* Fire Division */ char fire_bat[2]; /* Fire Battalion */ char fire_co_type; /* Fire Company Type */ char fire_co_nbr[3]; /* Fire Company Number */ char filler_scsd; /* Was Split Com School */ /* District Flag */ char com_schl_dist[2]; /* Community School District*/ char dynam_blk[3]; /* Atomic Polygon */ /* (was Dynamic Block) */ char police_pat_boro[2];/* Police Patrol Borough */ // char filler_indv[2]; /* */ // char instruc_div[2]; /* Instructional Division */ char feature_type; /* Feature Type Code */ char segmenttypecode; /* Segment Type Code */ char alx; /* Segment split by Alley(s)*/ /* A=Split by Alley(s) */ /* X=Cross Streets Modified */ char coincident_seg_cnt; /* Coincident Segment */ /* Counter */ char filler02[2]; /* Future Use */ char boro_of_cen_tract; /* boro of Census Tract used*/ char cen_tract_90[6]; /* 1990 Census Tract */ char cen_tract_10[6]; /* 2010 Census Tract */ char cen_blk_10[4]; /* 2010 Census Block */ char cen_blk_10_sufx; /* 2010 Census Block Suffix */ /* 2010 Suffix Not Implement*/ char cen_tract_2000[6]; /* 2000 Census Tract */ char cen_blk_2000[4]; /* 2000 Census Block */ char cen_blk_2000_sufx; /* 2000 Census Block Suffix */ char nta[4]; /* Neighborhood Tabulation */ /* Area */ char sanit_snow_priority;/* Sanitation Street Snow */ /* Priority (P,S,T,V) */ char sanit_org_pick_up[5];/* Organics Pick up */ char sanit_bulk_pick_up[5]; /* Bulk Pick Up V16.4 */ //char sanit_reserved[5]; /* Reserved for Possible */ char hurricane_zone[2]; /* Hurricane Evacuation Zone*/ char filler04[11]; /* Future Use */ char true_hns[11]; /* Underlying HNS */ char true_b7sc[8]; /* True Boro 7 Street Code */ char seg_id[7]; /* Segment Identifier */ char curv_flag; /* Curve Flag */ } C_WA2_F1; /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function 1V/1W */ /* */ /********************************************************************/ typedef struct { C_WA2_F1 c_wa2_f1; char int_use[8]; /* valid on street lgcs */ char boe_lgc; /* BOE LGC Pointer */ char seg_azm[3]; /* Segment Azimuth */ char seg_orient; /* Segment Orientation */ char seg_coord[2][3][7]; /* Spatial Coordinates of */ /* Segment */ char cc_coord[3][7]; /* Spatial Coordinates of */ /* Center of Curvature */ char radius[7]; /* Radius of Circle */ char cc_sos; /* Center of Curvature Side */ /* of Street Flag */ char node_angles[2][5]; /* Angle to FROM & TO Nodes */ char nodes[2][7]; /* LION Node Numbers of */ /* FROM and TO nodes */ LION LION_key; /* LION Key for Vanity */ /* Addresses */ char LION_sos_ind; /* LION SoS Indicator */ char split_low_hn[11]; /* Split Low House Number */ char traffic_dir; /* Traffic Direction */ char turn_restricts[10]; /* Turn restrictions */ char curve_fraction[3]; /* */ char roadway_type[2]; /* Roadway Type */ char physical_id[7]; /* */ char generic_id[7]; /* */ char filler03[7]; /* DCP internal use */ char filler04[7]; /* DCP internal use */ //char blockface_id[7]; /** V16.1 ** blockface id 10 bytes long*/ char bike_lane_2[2]; /*Bike Lane has 2 bytes */ /* numeric value moved in */ /* wa2 of F1EX */ char bike_traffic_dir[2]; //V17.1 Bike Traffic Direction char filler05[3]; // V17.1 char status; /* */ char str_width[3]; /* */ char str_width_irregular; /* Yes or No */ char bike_lane; /* */ char fcc[2]; /* Federal Classification Cd*/ char row_type; /* */ char lgcs_additional[5][2]; /* additional lgcs for on st*/ } C_WA2_F1V; /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function 1E Extended */ /* */ /********************************************************************/ typedef struct { /* Fn 1E with extra bytes */ C_WA2_F1V cwa2f1v; char legacy_segid[7]; /* */ char from_preferred_lgcs[5][2]; /* */ char to_preferred_lgcs[5][2]; /* */ char from_additional_lgcs[5][2]; /* */ char to_additional_lgcs[5][2]; /* */ char no_x_st_calc_flg; /* No Cross Street */ /* Calculation Flag */ char indiv_seg_len[5]; /* Individual Segment Length*/ /* Used with Above Flag */ char nta_name[75]; /* Neighborhood Tabulation */ /* Area Name */ char USPS_city_name[25]; /* USPS Preferred City Name */ char latitude[9]; /* Latitude calc from X-Y */ char longitude[11]; /* Longitude calc from X-Y */ char seg_from_node[7]; /* Segment from node */ char seg_to_node[7]; /* Segment to node */ char seg_from_xyz[3][7]; /* XYZ coord (segment from) */ char seg_to_xyz[3][7]; /* XYZ coord (segment to) */ char blockface_id[10]; /* NEW location V16.1 */ /* because of length changed*/ char nbr_travel_lanes[2]; /* nbr of traveling lanes */ char nbr_park_lanes[2]; /* nbr of parking lanes */ char nbr_total_lanes[2]; /* total nbr of lanes */ char str_width_max[3]; /*street width maximum */ char speed_limit[2]; /* Speed Limit */ char puma_code[5]; /* PUMA Code V18.1*/ char police_sector[4]; /* Police Sector V19.2*/ char police_service_area; /* Police Service Area V19.2*/ char filler6[240]; /* V18.3*/ //char filler6[245]; /* V18.1*/ //char filler6[252]; /* Future Use */ char reason_code; /* Reason Code */ char reason_code_qual; /* Reason Code Qualifier */ char warn_code[2]; /* Warning Return Code */ char ret_code[2]; /* GeoSupport Return Code */ char nbr_names_lo; /* Nbr of St Names Low End */ char B7SC_lo[5][8]; /* 5(Boro+7-digit) st codes */ char nbr_names_hi; /* Nbr of St Names High End */ char B7SC_hi[5][8]; /* 5 Boro+7-digit st codes */ char st_names_lo[5][32]; /* Up to 5 St Names Low End */ char st_names_hi[5][32]; /* Up to 5 St Names High End*/ char BOE_B5SC[6]; /* BOE Preffered B7SC */ char BOE_lgc[2]; /* BOE Preffered B7SC */ char BOE_st_name[32]; /* BOE Preffered Street Name*/ char filler7[52]; /* Future Use */ } C_WA2_F1EX; /* Fn 1EX with filler */ /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function 1A Extended */ /* */ /********************************************************************/ typedef struct { /* Fn 1A with extra bytes */ char filler01[21]; char cont_parity_ind; /* Continuous Parity Ind */ /* or Duplicate Address Ind */ char lo_hse_nbr[11]; /* Low House Number-Sort Frm*/ BBL bbl; /* Borough-Block-Lot */ char filler02; /* Reserved for Tax Lot Ver#*/ char RPAD_scc; /* RPAD Self_Check Code(SCC)*/ char filler03; char RPAD_lucc[2]; /* RPAD Land Use Class. Code*/ char corner[2]; /* Corner Code */ char nbr_blds[4]; /* Nbr of buildings on lot */ char nbr_str[2]; /* Nbr Street Frontages */ char inter_flag; /* Interior Lot Flag */ char vacant_flag; /* Vacant Lot Flag */ char irreg_flag; /* Irregularly-Shaped Lot Fl*/ char mh_ri_flag; /* Marble Hill/Rikers Island*/ char adr_range_overflow; /* Addr Rnge Lst Ovrflow Flg*/ char stroll_key[18]; /* Strolling key Not Implem */ char filler04; char res_internal_use; /* Reserved for Internal Use*/ char bld_id[7]; /* Building Ident. Number */ /* (BIN) of Input Address of*/ /* Existing Building, If any*/ char condo_flag; /* Condominium Flag */ char filler05; /* Future Use */ char condo_id[4]; /* RPAD Condo Id Number */ char condo_unit_id[7]; /* Condo Unit Id Nbr-Not Imp*/ BBL condo_bill_bbl; /* Condo Billing BBL */ char filler06; /* Reserved for Tax Lot Ver */ char condo_scc; /* Self-Check Code */ BBL condo_lo_bbl; /* Low BBL of Condo */ char filler07; /* Reserved for Tax Lot Ver */ BBL condo_hi_bbl; /* High BBL of Condo */ char filler08; /* Reserved for Tax Lot Ver */ char filler09[15]; char co_op_nbr[4]; /* Co-op Number */ SANBORN San; /* Sanborn Information */ char business_area[5]; /* Business Area */ char tax_map_nbr[5]; /* Tax Map Nbr-Sect and Vol */ char filler10[4]; /* Tax Map Nbr Page Not Impl*/ char filler11[3]; char latitude[9]; /* Latitude calc from X-Y */ char longitude[11]; /* Longitude calc from X-Y */ char coord[2][7]; /* 1 = X coordinate-Annotat */ /* 2 = Y coordinate-Annotat */ char bid_id[6]; /* Business Improvement */ /* District ID (BID) */ char TPAD_bin_status; /* Status of Demolition job */ /* on Existing BIN of Input */ /* Address */ char TPAD_new_bin[7]; /* BIN for New Building */ char TPAD_new_bin_status; /* Status of New Buildng BIN*/ char TPAD_conflict_flag; /* From TPAD */ char dcp_zone_map[3]; /* DCP Zoning Map */ char filler12[6]; char int_use[8]; /* Internal Use */ char reason_code; /* Reason Code */ char reason_code_qual; /* Reason Code Qualifier */ char warn_code[2]; /* Warning Return Code */ char ret_code[2]; /* GeoSupport Return Code */ char filler14[108]; char nbr_addr[4]; /* Nbr of Addr Ranges or Nbr*/ /* of BINs in List */ ADDR_RANGE_1AX addr_range_1ax[21]; } C_WA2_F1AX; /* Fn 1AX with filler */ /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function 1B */ /* */ /********************************************************************/ typedef struct { /* Function 1B */ C_WA2_F1EX cwa2f1ex; /* 1EX Component */ C_WA2_F1AX cwa2f1ax; /* 1AX Component */ } C_WA2_F1B; /* Fn 1B */ /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function 1A */ /* */ /********************************************************************/ typedef struct { char filler01[21]; char cont_parity_ind; /* Continuous Parity Ind */ /* or Duplicate Address Ind */ char lo_hse_nbr[11]; /* Low House Number-Sort Frm*/ BBL bbl; /* Borough-Block-Lot */ char filler02; /* Reserved for Tax Lot Ver#*/ char RPAD_scc; /* RPAD Self_Check Code(SCC)*/ char filler03; char RPAD_lucc[2]; /* RPAD Land Use Class. Code*/ char corner[2]; /* Corner Code */ char nbr_blds[4]; /* Nbr of buildings on lot */ char nbr_str[2]; /* Nbr Street Frontages */ char inter_flag; /* Interior Lot Flag */ char vacant_flag; /* Vacant Lot Flag */ char irreg_flag; /* Irregularly-Shaped Lot Fl*/ char mh_ri_flag; /* Marble Hill/Rikers Island*/ char adr_range_overflow;/* Addr Rnge Lst Ovrflow Flg*/ char stroll_key[18]; /* Strolling key */ char filler04; char res_internal_use; /* Reserved for Internal Use*/ char bld_id[7]; /* Building Ident. Number */ /* (BIN) of Input Address of*/ /* Existing Building, If any*/ char condo_flag; /* Condominium Flag */ char filler05; /* Future Use */ char condo_id[4]; /* RPAD Condo Id Number */ char condo_unit_id[7]; /* Condo Unit Id Nbr-Not Impl*/ BBL condo_bill_bbl; /* Condo Billing BBL */ char filler06; /* Reserved for Tax Lot Ver */ char condo_scc; /* Self-Check Code */ BBL condo_lo_bbl; /* Low BBL of Condo */ char filler07; /* Reserved for Tax Lot Ver */ BBL condo_hi_bbl; /* High BBL of Condo */ char filler08; /* Reserved for Tax Lot Ver */ char filler09[15]; char co_op_nbr[4]; /* Co-op Number */ SANBORN San; /* Sanborn Information */ char business_area[5]; /* Business Area */ char tax_map_nbr[5]; /* Tax Map Nbr-Sect and Vol */ char filler10[4]; /* Tax Map Nbr Page Not Impl*/ char filler11[3]; char latitude[9]; /* Latitude calc from X-Y */ char longitude[11]; /* Longitude calc from X-Y */ char coord[2][7]; /* 1 = X coordinate-Annotat */ /* 2 = Y coordinate-Annotat */ char bid_id[6]; /* Business Improvement Dist */ /* District ID (BID) */ char TPAD_bin_status; /* Existing BIN of Input Addr*/ char TPAD_new_bin[7]; /* BIN for New Building job */ char TPAD_new_bin_status;/* Status of New Buildng BIN*/ char TPAD_conflict_flag; /* From TPAD */ char dcp_zone_map[3]; /* DCP Zoning Map */ char filler12[6]; char int_use[8]; /* Internal Use */ char nbr_addr[4]; /* Nbr of Addr Ranges or Nbr*/ /* of BINs in List */ union { ADDR_RANGE addr_range[21]; /* List of Addr */ TPADLST tpad_list; /*or BINs + Status Byte */ char bin_list[2500][7]; /* or BINs*/ } bar; } C_WA2_F1A; /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function AP */ /* */ /********************************************************************/ typedef struct { char filler01[21]; char cont_parity_ind; /* Continuous Parity Ind */ /* or Duplicate Address Ind */ char lo_hse_nbr[11]; /* Low House Number-Sort Frm*/ BBL bbl; /* Borough-Block-Lot */ char filler02; /* Reserved for Tax Lot Ver#*/ char fil_RPAD_scc; /* filler for func AP */ char filler03; char fil_RPAD_lucc[2]; /* fillers for func AP */ char fil_corner[2]; /* fillers for func AP */ char nbr_blds[4]; /* Nbr of buildings on lot */ char fil_nbr_str[2]; /* fillers for func AP */ char fil_inter_flag; /* filler for func AP */ char fil_vacant_flag; /* filler for func AP */ char fil_irreg_flag; /* filler for func AP */ char fil_mh_ri_flag; /* filler for func AP */ char fil_adr_range_overflow;/* filler for func AP */ char fil_stroll_key[18];/* fillers for func AP */ char filler04; char res_internal_use; /* Reserved for Internal Use*/ char bld_id[7]; /* Building Ident. Number */ /* (BIN) of Input Address of*/ /* Existing Building, */ char condo_flag; /* Condominium Flag */ char filler05; /* Future Use */ char condo_id[4]; /* RPAD Condo Id Number */ char filler_unit_id[7]; /* Condo Unit Id Nbr-Not Impl*/ BBL condo_bill_bbl; /* Condo Billing BBL */ char filler06; /* Reserved for Tax Lot Ver */ char fil_condo_scc; /* filler for func AP */ BBL condo_lo_bbl; /* Low BBL of Condo */ char filler07; /* Reserved for Tax Lot Ver */ BBL condo_hi_bbl; /* High BBL of Condo */ char filler08; /* Reserved for Tax Lot Ver */ char filler09[15]; char co_op_nbr[4]; /* Co-op Number */ char fil_sanborn[8]; /* fillers for func AP */ char fil_business_area[5]; /* fillers for func AP */ char fil_tax_map_nbr[5]; /* fillers for func AP */ char filler10[4]; char filler11[3]; char latitude[9]; /* Latitude calc from X-Y */ char longitude[11]; /* Longitude calc from X-Y */ char coord[2][7]; /* 1 = X coordinate from AP */ /* 2 = Y coordinate from AP */ char fil_bid_id[6]; /* fillers for func AP */ char fil_TPAD_bin_status; /* fillers for func AP */ char fil_TPAD_new_bin[7]; /* fillers for func AP */ char fil_TPAD_new_bin_status;/* filler for func AP */ char fil_TPAD_conflict_flag; /* filler for func AP */ char ap_id[9]; /* Address Point Id */ char int_use[8]; /* Internal Use */ char nbr_addr[4]; /* Nbr of Addr = 0001 */ union { ADDR_RANGE_AP addr_range_ap[21]; /* List of Addr */ char fil_tpad_list[2191]; char fil_bin_list[2500][7]; } bar; } C_WA2_FAP; /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function APX */ /* */ /********************************************************************/ typedef struct { char filler01[21]; /* Fn AP with extra bytes */ char cont_parity_ind; /* Continuous Parity Ind */ /* or Duplicate Address Ind */ char lo_hse_nbr[11]; /* Low House Number-Sort Frm*/ BBL bbl; /* Borough-Block-Lot */ char filler02; /* Reserved for Tax Lot Ver#*/ char fil_RPAD_scc; /* filler for func AP */ char filler03; char fil_RPAD_lucc[2]; /* fillers for func AP */ char fil_corner[2]; /* fillers for func AP */ char nbr_blds[4]; /* Nbr of buildings on lot */ char fil_nbr_str[2]; /* fillers for func AP */ char fil_inter_flag; /* filler for func AP */ char fil_vacant_flag; /* filler for func AP */ char fil_irreg_flag; /* filler for func AP */ char fil_mh_ri_flag; /* filler for func AP */ char fil_adr_range_overflow;/* filler for func AP */ char fil_stroll_key[18];/* fillers for func AP */ char filler04; char res_internal_use; /* Reserved for Internal Use*/ char bld_id[7]; /* Building Ident. Number */ /* (BIN) of Input Address of*/ /* Existing Building, */ char condo_flag; /* Condominium Flag */ char filler05; /* Future Use */ char condo_id[4]; /* RPAD Condo Id Number */ char filler_unit_id[7]; /* Condo Unit Id Nbr-Not Impl*/ BBL condo_bill_bbl; /* Condo Billing BBL */ char filler06; /* Reserved for Tax Lot Ver */ char fil_condo_scc; /* filler for func AP */ BBL condo_lo_bbl; /* Low BBL of Condo */ char filler07; /* Reserved for Tax Lot Ver */ BBL condo_hi_bbl; /* High BBL of Condo */ char filler08; /* Reserved for Tax Lot Ver */ char filler09[15]; char co_op_nbr[4]; /* Co-op Number */ char fil_sanborn[8]; /* fillers for func AP */ char fil_business_area[5]; /* fillers for func AP */ char fil_tax_map_nbr[5]; /* fillers for func AP */ char filler10[4]; char filler11[3]; char latitude[9]; /* Latitude calc from X-Y */ char longitude[11]; /* Longitude calc from X-Y */ char coord[2][7]; /* 1 = X coordinate from AP */ /* 2 = Y coordinate from AP */ char fil_bid_id[6]; /* fillers for func AP */ char fil_TPAD_bin_status; /* fillers for func AP */ char fil_TPAD_new_bin[7]; /* fillers for func AP */ char fil_TPAD_new_bin_status;/* filler for func AP */ char fil_TPAD_conflict_flag; /* filler for func AP */ char ap_id[9]; /* Address Point Id */ char int_use[8]; /* Internal Use */ char reason_code; /* Reason Code */ char reason_code_qual; /* Reason Code Qualifier */ char warn_code[2]; /* Warning Return Code */ char ret_code[2]; /* GeoSupport Return Code */ char filler14[108]; char nbr_addr[4]; /* Nbr of Addr = 0001 */ ADDR_RANGE_APX addr_range_apx[21]; } C_WA2_FAPX; /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function 2 */ /* */ /********************************************************************/ typedef struct { char filler01[21]; char rep_cnt; /* Intersection Replication */ /* Counter*/ char lgc[2][2]; /* Preferred LGCs */ St_list inter; /* Number of Intersecting St*/ /* B5SCs of Intersection St */ char Dup_comp; /* Duplicate compass Directn*/ char atomic_polygon[3]; /* Atomic Polygon added V131*/ char filler02[2]; char LION_node_nbr[7]; /* LION Node Number */ char coord[3][7]; /* 1 = X coordinate, */ /* 2 = Y coordinate, */ /* 3 = Z coordinate, Not Imp*/ SANBORN San[2]; /* Sanborn Information */ char mh_ri_flag; /* Marble Hill/Rikers Island*/ char DOT_slca; /* DOT St Lght Contractr Are*/ char com_dist[3]; /* Community District */ char zip_code[5]; /* Zip code for st segment */ char health_area[4]; /* Health Area */ char police_boro_com; /* Police Patrol Boro Commnd*/ char police_pre[3]; /* Police Precinct */ char fire_sector[2]; /* Fire Sector */ char fire_bat[2]; /* Fire Battalion */ char fire_co_type; /* Fire Company Type */ char fire_co_nbr[3]; /* Fire Company Number */ char com_schl_dist[2]; /* Community School District*/ char cen_tract_10[6]; /* 2010 Census Tract */ char cen_tract_90[6]; /* 1990 Census Tract */ char level_codes [10]; /* Level codes */ char police_pat_boro[2];/* Police Patrol Borough */ // char filler_indv[2]; /* */ // char instruc_div [2]; /* Instructional Division */ char ad[2]; /* Assembly District */ char congress_dist[2]; /* Congressional District */ char state_sen_dist[2]; /* State Senatorial District*/ char civil_court[2]; /* Civil Court District */ char city_council[2]; /* City Council District */ char cd_eligible; /* CD Eligibility */ char dup_intersect_distance[5]; /*Distance in Feet */ /*Betwn Duplicate Intersects*/ /* not implemented */ char cen_tract_2000[6]; /* 2000 Census Tract */ char health_cen_dist[2];/* Health Cent Distr*/ char sanit_dist[3]; /* Sanitation District */ char sanit_sub_sect[2]; /* Sanit Collect Scheduling */ /* Section and Subsection */ char police_sector[4]; /* Police Sector V19.2 */ char filler03[8]; /* V18.3 */ // char filler03[12]; /* */ } C_WA2_F2; /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function 2W */ /********************************************************************/ typedef struct { /* Fn 2 - 200 Bytes */ C_WA2_F2 cwa2f2; /* Start with Fn 2 WA2 */ char filler04[22]; /* Fields used for Grid gen */ char lgcs_first_intersct[4][2]; /* Up to 4 LGC's for 1st */ /* intersecting street; */ char lgcs_second_intersct[4][2]; /* Up to 4 LGC's for 2nd */ /* intersecting street; */ char turn_restricts[10]; /* Up to 10 Turn restrictns */ char pref_lgc_list[5][2]; /* Preferd LGCs for Str list*/ char true_rep_cnt[2]; /* True Int Replication Cntr*/ char dup_node_list[20][7]; /* 140 *Node list for dup str code*/ char b7sc_list[20][5][4][8]; /* 3200 *B7SC lists for Node list */ char reason_code; /* Reason Code */ char reason_code_qual; /* future use */ char warn_code[2]; /* Warning Return Code */ char ret_code[2]; /* GeoSupport Return Code */ char latitude[9]; /* Latitude calc from X-Y */ char longitude[11]; /* Longitude calc from X-Y */ char filler8[374]; /* Future Use */ } C_WA2_F2W, *PC_WA2_F2W; /* Fn 2W with filler */ /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function 3 */ /* */ /********************************************************************/ typedef struct { char filler01[21]; char dup_key_flag; /* Duplicate Key Flag or */ /* Continuous Parity Flag */ char loc_stat_seg; /* Locational Status of Seg */ char cnty_bnd_ind; /* County Boundary Indicat */ char lgc[3][2]; /* Preferred LGCs */ St_list st[2]; /* 1=Low and 2=High */ /* Nbr of cross sts at low */ /* house nbr end of street */ /* B5SCs of lo end X sts */ char x_street_reversal_flag; /* X St Reversal Flag */ LION key; /* LION Key */ char genr_flag; /* Generated Record Flag */ char seg_len[5]; /* Segment Length in Feet */ char seg_azm[3]; /* Segment Azimuth */ char seg_orient; /* Segment Orientation */ char mh_ri_flag; /* Marble Hill/Rikers Island*/ /* Alternative Boro flag */ char from_node[7]; /* From node */ char to_node[7]; /* To node */ char sanit_snow_priority;/* Sanitation Street Snow */ /* Priority (P,S,T,V) */ char filler02[4]; /* Future use */ char seg_id[7]; /* Segment Identifier */ char DOT_slca; /* DOT St Lght Contractr Are*/ char curve_flag; /* Curve Flag */ char dog_leg; /* Dog leg flag */ char feature_type; /* Feature Type Code */ char segmenttypecode; /* Segment Type Code */ char coincident_seg_cnt; /* Coincident Segment */ /* Counter */ char filler03[4]; SEGSIDE side[2]; /* 1 = Left Side of street */ /* 2 = Right Side of street */ } C_WA2_F3; typedef struct { C_WA2_F3 cwa2f3; char filler1[6]; /* Future use */ char seg_cnt[4]; /* Number of Segments */ char segments[70][7]; /* Segment Ids */ } C_WA2_F3_AUXSEG; /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function 3 EXTENDED */ /* */ /********************************************************************/ typedef struct { /* Data from CSCL added */ C_WA2_F3 cwa2f3; char lgc_list[4][2]; /* List of LGC's */ char from_lgcs[4][2]; /* List of from LGC's */ char to_lgcs[4][2]; /* List of to LGC's */ char left_hcd[2]; /* Left Health Center */ /* District */ char right_hcd[2]; /* Right Health Center */ /* District */ char filler_csd; /* */ char traffic_dir; /* Traffic Direction */ char roadway_type[2]; /* */ char physical_id[7]; /* */ char generic_id[7]; /* */ char filler03[7]; /* DCP internal use */ char filler04[7]; /* DCP internal use */ char street_status; /* */ char str_width[3]; /* Street Width */ char str_width_irr; /* Irregular Width Y or N */ char bike_lane; /* */ char fcc[2]; /* Federal Classification Cd*/ char row_type; /* */ char lgc5[2]; /* */ char lgc6[2]; /* */ char lgc7[2]; /* */ char lgc8[2]; /* */ char lgc9[2]; /* */ char legacy_id[7]; /* */ char nta_name_left[75]; /* Neighborhood Tabulation */ /* Area Name (Left) */ char nta_name_right[75]; /* Neighborhood Tabulation */ /* Area Name (Right) */ char from_coord[2][7]; /* 1 = X Coordinate */ /* 2 = Y Coordinate */ char to_coord[2][7]; /* 1 = X Coordinate */ /* 2 = Y Coordinate */ char from_latitude[9]; /*Latitude of from intersct.*/ char from_longitude[11]; /*Longitude of from intersct*/ char to_latitude[9]; /*Latitude of to intersect. */ char to_longitude[11]; /*Longitude of to intersect.*/ char left_blockface_id[10]; //NEW location of blockface id char right_blockface_id[10]; char nbr_travel_lanes[2]; /* nbr of traveling lanes */ char nbr_park_lanes[2]; /* nbr of parking lanes */ char nbr_total_lanes[2]; /* total nbr of lanes */ char bike_lane_2[2]; /*Bike Lane has 2 bytes */ /* numeric value */ char str_width_max[3]; /*Street width maximum */ char bike_traffic_dir[2]; //V17.1 Bike Traffic Direction char speed_limit[2]; //V17.4 Speed Limit char left_puma_code[5]; // PUMA Code (left) V18.1 char right_puma_code[5]; // PUMA Code (right) V18.1 char left_police_sector[4]; // Police Sector(left) V19.2 char right_police_sector[4]; // Police Sector(right)V19.2 char filler05[193]; // V18.3 //char filler05[201]; // V18.1 //char filler05[211]; // V17.4 //char filler05[213]; // V17.1 } C_WA2_F3X; typedef struct { /* Fn 3 Extended with */ C_WA2_F3X cwa2f3x; /* Auxilary Segments */ char filler1[6]; /* Future use */ char seg_cnt[4]; /* Number of Segments */ char segments[70][7]; /* Segment Ids */ } C_WA2_F3X_AUXSEG; /* Fn 3X with AUXSEGID */ /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function 3C */ /* */ /********************************************************************/ typedef struct { char filler01[21]; char dup_key_flag; /* Duplicate Key Flag or */ /* Continuous Parity Flag */ char loc_stat_seg; /* Locational Status of Seg */ char cnty_bnd_ind; /* County Boundary Indicat */ char lgc[3][2]; /* Preferred LGCs */ St_list st[2]; /* 1=Low and 2=High */ /* Nbr of cross sts at low */ /* house nbr end of street */ /* B5SCs of lo end Cross sts*/ char x_street_reversal_flag; /* X St Reversal Flag */ LION key; /* LION key */ char genr_flag; /* Generated Record Flag */ char seg_len[5]; /* Segment Length in Feet */ char seg_azm[3]; /* Segment Azimuth */ char seg_orient; /* Segment Orientation */ char mh_ri_flag; /* Marble Hill/Rikers Island*/ /* Alternative Boro flag */ char from_node[7]; /* From node */ char to_node[7]; /* To Node */ char sanit_snow_priority;/* Sanitation Street Snow */ /* Priority (P,S,T,V) */ char filler02[4]; /* Future use */ char seg_id [7]; /* Segment Identifier */ char DOT_slca; /* DOT St Lght Contractr Are*/ char sos_ind; /* Side of Street Indicator */ char curve_flag; /* Curve Flag */ char feature_type; /* Feature Type Code */ char segmenttypecode; /* Segment Type Code */ char coincident_seg_cnt; /* Coincident Segment */ /* Counter */ char filler03[4]; SEGSIDE req; /* Geographic Information for*/ } C_WA2_F3C; typedef struct { C_WA2_F3C cwa2f3c; char filler1[6]; /* Future use */ char seg_cnt[4]; /* Number of Segments */ char segments[70][7]; /* Segment ids */ } C_WA2_F3C_AUXSEG; /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function 3C EXTENDED */ /* */ /********************************************************************/ typedef struct { /* Data from CSCL added */ C_WA2_F3C cwa2f3c; char lgc_list[4][2]; /* List of LGC's */ char from_lgcs[4][2]; /* List of from LGC's */ char to_lgcs[4][2]; /* List of to LGC's */ char left_hcd[2]; /* Left Health Center Distr */ char right_hcd[2]; /* Right Health Center Distr*/ char fill_csd; /* Filler */ char traffic_dir; /* Traffic Direction */ char roadway_type[2]; /* */ char physical_id[7]; /* */ char generic_id[7]; /* */ char filler03[7]; /* DCP internal use */ char filler04[7]; /* DCP internal use */ char street_status; /* */ char str_width[3]; /* Street Width */ char str_width_irr; /* Irregular Width Y or N */ char bike_lane; /* */ char fcc[2]; /* Federal Classification Cd*/ char row_type; /* */ char lgc5[2]; /* */ char lgc6[2]; /* */ char lgc7[2]; /* */ char lgc8[2]; /* */ char lgc9[2]; /* */ char legacy_id[7]; /* */ char nta_name[75]; /* Neighborhood Tabulation */ /* Area Name */ char from_coord[2][7]; /* 1 = X Coordinate */ /* 2 = Y Coordinate */ char to_coord[2][7]; /* 1 = X Coordinate */ /* 2 = Y Coordinate */ char from_latitude[9]; /* Latitude of from intersct.*/ char from_longitude[11]; /* Longitude of from intersct*/ char to_latitude[9]; /* Latitude of to intersct. */ char to_longitude[11]; /* Longitude of to intersct. */ char blockface_id[10]; /* NEW location of this field*/ /* because of length changed */ char nbr_travel_lanes[2]; /* nbr of traveling lanes */ char nbr_park_lanes[2]; /* nbr of parking lanes */ char nbr_total_lanes[2]; /* total nbr of lanes */ char bike_lane_2[2]; /*Bike Lane has 2 bytes */ /* numeric value */ char str_width_max[3]; /*street width maximum */ char bike_traffic_dir[2]; //V17.1 Bike Traffic Direction char speed_limit[2]; //V17.4 Speed Limit char puma_code[5]; // PUMA Code V18.1 char police_sector[4]; // Police Sector V19.2 char filler05[287]; // V18.3 //char filler05[291]; // V18.1 //char filler05[296]; // V17.4 //char filler05[298]; // V17.1 } C_WA2_F3CX; typedef struct { /* Fn 3C Extended with */ C_WA2_F3CX cwa2f3cx; /* Auxilary Segments */ char filler1[6]; /* Future use */ char seg_cnt[4]; /* Number of Segments */ char segments[70][7]; /* Segment Ids */ } C_WA2_F3CX_AUXSEG; /* Fn 3CX with AUXSEGID */ /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function 3S */ /* */ /********************************************************************/ typedef struct { char filler01[21]; char nbr_x_str[3]; /* Nbr of Cross sts in list */ CROSS_STRS cross_strs[350];/* Cross Street structure*/ } C_WA2_F3S; #ifdef __cplusplus } #endif #endif NATURAL LDAs (COW) GEOLP1 COPY File * USER PROGRAMS MUST RESET GEOLP1 BEFORE PRIMING WORKAREA 1 1 GEOLP1 /* LRECL=1200 * THE FIELD P1NAT IS USED AS A PARAMETER TO CALL GEOSUPPORT RT 2 P1NAT A 2 R 2 P1NAT * * * * * INPUT FIELDS * * * * * * * * * * /* WORK AREA 1 FOR * * /* ALL FUNCTIONS 3 PIWA1-IN-FUNCTION-CODE A 2 R 3 PIWA1-IN-FUNCTION-CODE 4 PIWA1-IN-FUNCTION-1 A 1 4 PIWA1-IN-FUNCTION-2 A 1 2 PIWA1-IN-HOUSENUM-DISPLAY A 16 2 PIWA1-IN-HOUSENUM-SORT A 11 2 PIWA1-IN-LOW-HOUSENUM-DISPLAY A 16 2 PIWA1-IN-LOW-HOUSENUM-SORT A 11 2 PIWA1-IN-BORO-1 A 1 2 PIWA1-IN-10SC-1 A 10 2 PIWA1-IN-STREET-1 A 32 2 PIWA1-IN-BORO-2 A 1 2 PIWA1-IN-10SC-2 A 10 2 PIWA1-IN-STREET-2 A 32 2 PIWA1-IN-BORO-3 A 1 2 PIWA1-IN-10SC-3 A 10 2 PIWA1-IN-STREET-3 A 32 2 PIWA1-IN-BBL A 10 /* 3 LEVEL 3 ITEMS R 2 PIWA1-IN-BBL 3 PIWA1-IN-BBL-BORO A 1 3 PIWA1-IN-BLOCK A 5 3 PIWA1-IN-LOT A 4 2 PIWA1-IN-LOT-VERSION A 1 /* NA 2 PIWA1-IN-BIN A 7 2 PIWA1-IN-COMPASS A 1 2 PIWA1-IN-COMPASS2 A 1 2 PIWA1-IN-NODE A 7 2 PIWA1-IN-PLATFORM-INDICATOR A 1 2 PIWA1-IN-ZIPCODE A 5 2 PIWA1-IN-UNIT A 14 /* V16.4 ADDITION 2 FILLER-200 A 82 /* V16.4 ALTERATION * 2 FILLER-200 A 96 2 PIWA1-IN-LONG-WORKAREA2-FLAG A 1 /* L=LONG WA - 1A/BL(1200) 2 PIWA1-IN-HSE-NBR-JUSTIFY A 1 2 PIWA1-IN-HNL A 2 /* HN LENGTH 2 PIWA1-IN-HSE-OVER-FLAG A 1 /* HN OVERRIDE *,$,' ' 2 PIWA1-IN-SNL A 2 2 PIWA1-IN-SN-NORM-FORMAT A 1 /* C=COMPACT,S OR ' '=SORTT 2 PIWA1-IN-EXPANDED-FORMAT A 1 2 PIWA1-IN-ROADBED-REQ-SWITCH A 1 2 PIWA1-IN-INTERNAL-USE-LEGACY A 1 /* RESERVED FOR GSS USE 2 PIWA1-IN-SEGAUX-SWITCH A 1 2 PIWA1-IN-BROWSE-FLAG A 1 2 PIWA1-IN-REAL-STREET-ONLY A 1 /* FN 3S 2 PIWA1-IN-TPAD-SWITCH A 1 /* FN 1A 2 PIWA1-IN-MODE-SWITCH A 1 2 PIWA1-IN-WTO-SWITCH A 1 2 FILLER-400 A 29 * * * * * OUTPUT FIELDS * * * * * * * * * * 2 PIWA1-OUT-BORONAME A 9 2 PIWA1-OUT-HOUSENUM-DISPLAY A 16 2 PIWA1-OUT-HOUSENUM-SORT A 11 2 PIWA1-OUT-B10SC-1 A 11 2 PIWA1-OUT-STREET-1 A 32 2 PIWA1-OUT-B10SC-2 A 11 2 PIWA1-OUT-STREET-2 A 32 2 PIWA1-OUT-B10SC-3 A 11 2 PIWA1-OUT-STREET-3 A 32 2 PIWA1-OUT-BBL A 10 /* 3 LEVEL 3 ITEMS R 2 PIWA1-OUT-BBL 3 PIWA1-OUT-BBL-BORO A 1 3 PIWA1-OUT-BLOCK A 5 3 PIWA1-OUT-LOT A 4 2 PIWA1-OUT-LOT-VERSION A 1 /* FOR FUTRUE LOT VERSION # 2 PIWA1-OUT-LOW-HOUSENUM-DISPLAY A 16 2 PIWA1-OUT-LOW-HOUSENUM-SORT A 11 2 PIWA1-OUT-BIN A 7 2 PIWA1-OUT-STREET-ATTR A 1 (1:3) /* RES FOR GSS 2 PIWA1-OUT-REASON-CODE-2 A 1 /* FN 1B 2 PIWA1-OUT-REASON-CODE-QUAL-2 A 1 /*TPAD 2ND REASON CODE * * /*QUALIFIER 2 PIWA1-OUT-WARNING-CODE-2 A 2 /* FN 1B 2 PIWA1-OUT-RETURN-CODE-2 A 2 /* FN 1B 2 PIWA1-OUT-ERROR-MESSAGE-2 A 80 /* FN 1B 2 PIWA1-OUT-NODE A 7 2 PIWA1-OUT-UNIT-SORT A 14 /* V16.4 ADDITION R 2 PIWA1-OUT-UNIT-SORT 3 PIWA1-OUT-UNIT-TYPE A 4 /* V16.4 ADDITION 3 PIWA1-OUT-UNIT-ID A 10 /* V16.4 ADDITION 2 PIWA1-OUT-UNIT-DISP A 14 /* V16.4 ADDITION 2 FILLER-550 A 11 /* V16.4 ALTERATION * 2 FILLER-550 A 39 2 FILLER-555 A 6 /* NIN, NYI 2 PIWA1-OUT-SND-ATTR A 1 /* RES FOR GSS 2 PIWA1-OUT-REASON-CODE A 1 2 PIWA1-OUT-REASON-CODE-QUAL A 1 /*TAPAD REASON CODE * * /*QUALIFIER 2 PIWA1-OUT-WARNING-CODE A 2 2 PIWA1-OUT-RETURN-CODE A 2 2 PIWA1-OUT-ERROR-MESSAGE A 80 2 PIWA1-OUT-NUM-SIMILAR-STRS A 2 2 PIWA1-OUT-SIMILAR-B7SC A 8 (1:10) 2 PIWA1-OUT-SIMILAR-NAMES A 32 (1:10) GEOLP2 COPY File 0010 1 GEOLP2 DSR 0744 0020 * THE FIELD P2NAT IS USED AS A PARAMETER TO CALL GEOSUPPORT FOR ALLLL C 0030 * FUNCTIONS THAT ARE REDEFINED ON GEOLP2 C 0040 * * MAXIMUM LENGTH 2W - 4000 BYTES C 0050 2 P2NAT A 21 DK 0746 0060 R 2 P2NAT DRR 0747 0070 * * BEGINNING OF FUNCTION 1 LAYOUT * **** ******* C 0080 3 PIWA2-FN1-ACCESS-KEY A 21 DFR 0748 0090 2 PIWA2-FN1-CONT-PARITY A 1 /* (OR DUP ADDR IND) DK 0749 0100 2 PIWA2-FN1-LOW-HOUSENUM A 11 /* SORT FORMAT DK 0750 0110 2 PIWA2-FN1-HI-HOUSENUM A 11 /* SORT FORMAT DK 0751 0120 2 PIWA2-FN1-PREFERRED-LGC A 2 DK 0752 0130 2 PIWA2-FN1-NUM-X-ST-LOW-END A 1 DK 0753 0140 2 PIWA2-FN1-LOW-B5SC A 6 (1:5) /* 30-BYTES DK I1 0754 M 0150 2 PIWA2-FN1-NUM-X-ST-HI-END A 1 DK 0755 0160 2 PIWA2-FN1-HI-B5SC A 6 (1:5) /* 30-BYTES DK I1 0756 M 0170 2 PIWA2-FN1-LIONKEY A 10 DK 0757 0180 R 2 PIWA2-FN1-LIONKEY DRR 0758 0190 3 PIWA2-FN1-LION-BORO A 1 DFR 0759 0200 3 PIWA2-FN1-LION-FACECODE A 4 DFR 0760 0210 3 PIWA2-FN1-LION-SEQ A 5 DFR 0761 0220 2 PIWA2-FN1-SPECIAL-ADDR-FLAG A 1 DK 0762 0230 2 PIWA2-FN1-SIDE-OF-STR A 1 DK 0763 0240 2 PIWA2-FN1-SEG-LEN A 5 DK 0764 0250 2 PIWA2-FN1-X-COORD A 7 DK 0765 0260 2 PIWA2-FN1-Y-COORD A 7 DK 0766 0270 2 FILLER-100 A 7 /* FOR ZCOORD DK 0767 0280 2 FILLER-200 A 1 /* FOR GSS USE DK 0768 0290 2 PIWA2-FN1-MARBLE-RIKERS-FLAG A 1 DK 0769 0300 2 PIWA2-FN1-DOT-SLA A 1 DK 0770 0310 2 PIWA2-FN1-COM-DIST A 3 DK 0771 0320 R 2 PIWA2-FN1-COM-DIST DRR 0772 0330 3 PIWA2-FN1-COM-DIST-BORO A 1 DFR 0773 0340 3 PIWA2-FN1-COM-DIST-NUM A 2 DFR 0774 0350 2 PIWA2-FN1-ZIP A 5 DK 0775 0360 * * * **** ***** C 0370 * * THE FN1E FIELDS ARE VALID ONLY * **** ***** C 0380 * * FOR FUNCTION 1E, NOT FUNC 1. * **** ***** C 0390 2 PIWA2-FN1E-ELECT-DIST A 3 DK 0776 0400 2 PIWA2-FN1E-ASSEM-DIST A 2 DK 0777 0410 2 PIWA2-FN1E-SPLIT-ED-FLAG A 1 DK 0778 0420 2 PIWA2-FN1E-CONG-DIST A 2 DK 0779 0430 2 PIWA2-FN1E-SENATE-DIST A 2 DK 0780 0440 2 PIWA2-FN1E-COURT-DIST A 2 DK 0781 0450 2 PIWA2-FN1E-COUNCIL-DIST A 2 DK 0782 0460 * * * **** ***** C 0470 2 PIWA2-FN1-HEALTH-CENTER-DIST A 2 DK 0783 0480 2 PIWA2-FN1-HEALTH-AREA A 4 DK 0784 0490 2 PIWA2-FN1-SANI-DIST A 3 DK 0785 0500 R 2 PIWA2-FN1-SANI-DIST DRR 0786 0510 3 PIWA2-FN1-SANI-DIST-BORO A 1 DFR 0787 0520 3 PIWA2-FN1-SANI-DIST-NUM A 2 DFR 0788 0530 2 PIWA2-FN1-SANI-SUBSEC A 2 DK 0789 0540 2 PIWA2-FN1-SANI-REG A 5 DK 0790 0550 2 PIWA2-FN1-SANI-REC A 3 DK 0791 0560 2 PIWA2-FN1-POLICE-DIST A 4 DK 0792 0570 R 2 PIWA2-FN1-POLICE-DIST DRR 0793 0580 3 PIWA2-FN1-POL-PAT-BORO-CMD A 1 DFR 0794 0590 3 PIWA2-FN1-POL-PRECINCT A 3 DFR 0795 0600 2 PIWA2-FN1-FIRE-DIV A 2 DK 0796 0610 2 PIWA2-FN1-FIRE-BAT A 2 DK 0797 0620 2 PIWA2-FN1-FIRE-CO A 4 DK 0798 0630 R 2 PIWA2-FN1-FIRE-CO DRR 0799 0640 3 PIWA2-FN1-FIRE-CO-TYPE A 1 DFR 0800 0650 3 PIWA2-FN1-FIRE-CO-NUM A 3 DFR 0801 0660 2 PIWA2-FN1-SCHL-DIST-SPLIT-FLAG A 1 DK 0802 0670 2 PIWA2-FN1-SCHL-DIST A 2 DK 0803 0680 2 PIWA2-FN1-DYN-BLK A 3 DK 0804 0690 2 PIWA2-FN1-POLICE-PAT-BORO A 2 DK 0805 0700 2 PIWA2-FN1-FEATURE-TYPE A 1 DK 0806 0710 2 PIWA2-FN1-SEGMENT-TYPE A 1 DK 0807 0720 2 PIWA2-FN1-ALX A 1 DK 0808 0730 2 PIWA2-FN1-COINCIDENT-SEG-CTR A 1 DK 0809 0740 2 FILLER-290 A 3 DK 0810 0750 2 PIWA2-FN1-1990-CENSUS-TRACT A 6 DK 0811 0760 2 PIWA2-FN1-2010-CENSUS-TRACT A 6 DK 0812 0770 2 PIWA2-FN1-2010-CENSUS-BLOCK A 4 DK 0813 0780 2 PIWA2-FN1-2010-CENSUS-BLOCK-SUF A 1 /* NA DK 0814 0790 2 PIWA2-FN1-2000-CENS-TRACT A 6 DK 0815 0800 2 PIWA2-FN1-2000-CENS-BLOCK A 4 DK 0816 0810 2 PIWA2-FN1-2000-CENS-BLOCK-SUF A 1 /* NA DK 0817 0820 2 PIWA2-FN1-NTA A 4 DK 0818 0830 2 PIWA2-FN1-SANIT-SNOW-PRIORITY A 1 DK 0819 0840 2 PIWA2-FN1-SANIT-ORGANICS A 5 DK 0820 0850 2 PIWA2-FN1-SANIT-BULK-PICK-UP A 5 /* V16.4 ADDITION DK 0821 0860 * 2 PIWA2-FN1-SANIT-RESERVED A 5 /*FOR POSSIBLE FUTURE USE CK 0821 0870 2 PIWA2-FN1-HURRICANE-ZONE A 2 /*OEM HURRICANE EVAC ZONE DK 0822 0880 2 FILLER-300 A 11 DK 0823 0890 2 PIWA2-FN1-UHNS A 11 /* UNDERLYING HNS DK 0824 0900 2 PIWA2-FN1-REAL-B7SC A 8 DK 0825 0910 2 PIWA2-FN1-SEGMENT-ID A 7 DK 0826 0920 2 PIWA2-FN1-CURVE-FLAG A 1 DK 0827 0930 2 PIWA2-FN1-PSEUDO-FILLER A 3700 /*MAX RECORD 2W IS 4000 DK 0828 0940 * * END OF FUNCTION 1 LAYOUT * **** ******* C 0950 * - -------------------------------- - ---- -------------------------------- C 0960 * * BEGINNING OF FUNCTION 2 C 0970 * * & FUNCTION 2C LAYOUT * ********** ******* C 0980 R 1 GEOLP2 DRR 0829 0990 2 PIWA2-FN2-ACCESS-KEY A 21 /* FOR FUNCTIONS 2 & 2C DFR 0830 1000 2 PIWA2-FN2-DUP-INTERSECT-FLAG A 1 DFR 0831 1010 2 PIWA2-FN2-PREFERRED-LGC1 A 2 DFR 0832 1020 2 PIWA2-FN2-PREFERRED-LGC2 A 2 DFR 0833 1030 2 PIWA2-FN2-NUM-OF-INTERSECTS A 1 DFR 0834 1040 2 PIWA2-FN2-INTERSECT-B5SC A 6 (1:5) /* 30-BYTES DFRI1 0835 M 1050 2 PIWA2-FN2-COMP-DIR A 1 DFR 0836 1060 2 PIWA2-FN2-ATOMIC-POLYGON A 3 DFR 0837 1070 2 FILLER-350 A 2 DFR 0838 1080 2 PIWA2-FN2-NODE-NUM A 7 DFR 0839 1090 2 PIWA2-FN2-X-COORD A 7 DFR 0840 1100 2 PIWA2-FN2-Y-COORD A 7 DFR 0841 1110 2 FILLER-400 A 7 /* FOR ZCOORD DFR 0842 1120 2 PIWA2-FN2-SANBORN1 A 8 DFR 0843 1130 R 2 PIWA2-FN2-SANBORN1 DRR 0844 1140 3 PIWA2-FN2-SANBORN1-BORO A 1 DFR 0845 1150 3 PIWA2-FN2-SANBORN1-VOL A 3 DFR 0846 1160 3 PIWA2-FN2-SANBORN1-PAGE A 4 DFR 0847 1170 2 PIWA2-FN2-SANBORN2 A 8 DFR 0848 1180 R 2 PIWA2-FN2-SANBORN2 DRR 0849 1190 3 PIWA2-FN2-SANBORN2-BORO A 1 DFR 0850 1200 3 PIWA2-FN2-SANBORN2-VOL A 3 DFR 0851 1210 3 PIWA2-FN2-SANBORN2-PAGE A 4 DFR 0852 1220 2 PIWA2-FN2-MARBLE-RIKERS-FLAG A 1 DFR 0853 1230 2 PIWA2-FN2-DOT-SLA A 1 DFR 0854 1240 2 PIWA2-FN2-COM-DIST A 3 DFR 0855 1250 R 2 PIWA2-FN2-COM-DIST DRR 0856 1260 3 PIWA2-FN2-COM-DIST-BORO A 1 DFR 0857 1270 3 PIWA2-FN2-COM-DIST-NUM A 2 DFR 0858 1280 2 PIWA2-FN2-ZIP A 5 DFR 0859 1290 2 PIWA2-FN2-HEALTH-AREA A 4 DFR 0860 1300 2 PIWA2-FN2-POLICE-DIST A 4 DFR 0861 1310 R 2 PIWA2-FN2-POLICE-DIST DRR 0862 1320 3 PIWA2-FN2-POL-PAT-BORO-CMD A 1 DFR 0863 1330 3 PIWA2-FN2-POL-PRECINCT A 3 DFR 0864 1340 2 PIWA2-FN2-FIRE-DIV A 2 DFR 0865 1350 2 PIWA2-FN2-FIRE-BAT A 2 DFR 0866 1360 2 PIWA2-FN2-FIRE-CO A 4 DFR 0867 1370 R 2 PIWA2-FN2-FIRE-CO DRR 0868 1380 3 PIWA2-FN2-FIRE-CO-TYPE A 1 DFR 0869 1390 3 PIWA2-FN2-FIRE-CO-NUM A 3 DFR 0870 1400 2 PIWA2-FN2-SCHL-DIST A 2 DFR 0871 1410 2 PIWA2-FN2-2010-CENSUS-TRACT A 6 DFR 0872 1420 2 PIWA2-FN2-1990-CENSUS-TRACT A 6 DFR 0873 1430 2 PIWA2-FN2-LEVEL-CODE-TBL A 10 DFR 0874 1440 R 2 PIWA2-FN2-LEVEL-CODE-TBL DRR 0875 1450 3 PIWA2-FN2-LEVEL-CODE A 1 (5,2) /* 10-BYTES DFRI2 0876 M 1460 2 PIWA2-FN2-POLICE-PAT-BORO A 2 DFR 0877 1470 2 PIWA2-FN2-ASSEM-DIST A 2 DFR 0878 1480 2 PIWA2-FN2-CONG-DIST A 2 DFR 0879 1490 2 PIWA2-FN2-SENATE-DIST A 2 DFR 0880 1500 2 PIWA2-FN2-COURT-DIST A 2 DFR 0881 1510 2 PIWA2-FN2-COUNCIL-DIST A 2 DFR 0882 1520 2 PIWA2-FN2-CD-ELIGIBLE A 1 DFR 0883 1530 2 PIWA2-FN2-DUP-INTERSECT-DIST A 5 DFR 0884 1540 2 PIWA2-FN2-2000-CENS-TRACT A 6 DFR 0885 1550 2 PIWA2-FN2-HEALTH-CENTER-DIST A 2 DFR 0886 1560 2 PIWA2-FN2-SANITATION-DIST A 3 DFR 0887 1570 2 PIWA2-FN2-SANITATION-SUBSEC A 2 DFR 0888 1580 2 PIWA2-FN2-POLICE-SECTOR A 4 DFR 1590 2 FILLER-500 A 8 DFR 0889 1600 * 2 PIWA2-FN2-PSEUDO-FILLER A 3800 CFR 0789 1610 * * END OF FUNCTION 2 * ********** ******** C 1620 * * & FUNCTION 2C LAYOUT * ********** ******** C 1630 * * -------------------------------- - ---------- ----------------- C 1640 * * BEGINNING OF FUNCTION 2W * ********** ******* C 1650 R 1 GEOLP2 DRR 0890 1660 2 PIWA2-FN2W-ACCESS-KEY A 21 /* FOR FUNCTION 2W DFR 0891 1670 2 PIWA2-FN2W-DUP-INTERSECT-FLAG A 1 DFR 0892 1680 2 PIWA2-FN2W-PREFERRED-LGC1 A 2 DFR 0893 1690 2 PIWA2-FN2W-PREFERRED-LGC2 A 2 DFR 0894 1700 2 PIWA2-FN2W-NUM-OF-INTERSECTS A 1 DFR 0895 1710 2 PIWA2-FN2W-INTERSECT-B5SC A 6 (1:5) /* 30-BYTES DFRI1 0896 M 1720 2 PIWA2-FN2W-COMP-DIR A 1 DFR 0897 1730 2 PIWA2-FN2W-ATOMIC-POLYGON A 3 DFR 0898 1740 2 FILLER-350W A 2 DFR 0899 1750 2 PIWA2-FN2W-NODE-NUM A 7 DFR 0900 1760 2 PIWA2-FN2W-X-COORD A 7 DFR 0901 1770 2 PIWA2-FN2W-Y-COORD A 7 DFR 0902 1780 2 FILLER-400W A 7 /* FOR ZCOORD DFR 0903 1790 2 PIWA2-FN2W-SANBORN1 A 8 DFR 0904 1800 R 2 PIWA2-FN2W-SANBORN1 DRR 0905 1810 3 PIWA2-FN2W-SANBORN1-BORO A 1 DFR 0906 1820 3 PIWA2-FN2W-SANBORN1-VOL A 3 DFR 0907 1830 3 PIWA2-FN2W-SANBORN1-PAGE A 4 DFR 0908 1840 2 PIWA2-FN2W-SANBORN2 A 8 DFR 0909 1850 R 2 PIWA2-FN2W-SANBORN2 DRR 0910 1860 3 PIWA2-FN2W-SANBORN2-BORO A 1 DFR 0911 1870 3 PIWA2-FN2W-SANBORN2-VOL A 3 DFR 0912 1880 3 PIWA2-FN2W-SANBORN2-PAGE A 4 DFR 0913 1890 2 PIWA2-FN2W-MARBLE-RIKERS-FLAG A 1 DFR 0914 1900 2 PIWA2-FN2W-DOT-SLA A 1 DFR 0915 1910 2 PIWA2-FN2W-COM-DIST A 3 DFR 0916 1920 R 2 PIWA2-FN2W-COM-DIST DRR 0917 1930 3 PIWA2-FN2W-COM-DIST-BORO A 1 DFR 0918 1940 3 PIWA2-FN2W-COM-DIST-NUM A 2 DFR 0919 1950 2 PIWA2-FN2W-ZIP A 5 DFR 0920 1960 2 PIWA2-FN2W-HEALTH-AREA A 4 DFR 0921 1970 2 PIWA2-FN2W-POLICE-DIST A 4 DFR 0922 1980 R 2 PIWA2-FN2W-POLICE-DIST DRR 0923 1990 3 PIWA2-FN2W-POL-PAT-BORO-CMD A 1 DFR 0924 2000 3 PIWA2-FN2W-POL-PRECINCT A 3 DFR 0925 2010 2 PIWA2-FN2W-FIRE-DIV A 2 DFR 0926 2020 2 PIWA2-FN2W-FIRE-BAT A 2 DFR 0927 2030 2 PIWA2-FN2W-FIRE-CO A 4 DFR 0928 2040 R 2 PIWA2-FN2W-FIRE-CO DRR 0929 2050 3 PIWA2-FN2W-FIRE-CO-TYPE A 1 DFR 0930 2060 3 PIWA2-FN2W-FIRE-CO-NUM A 3 DFR 0931 2070 2 PIWA2-FN2W-SCHL-DIST A 2 DFR 0932 2080 2 PIWA2-FN2W-2010-CENSUS-TRACT A 6 DFR 0933 2090 2 PIWA2-FN2W-1990-CENSUS-TRACT A 6 DFR 0934 2100 2 PIWA2-FN2W-LEVEL-CODE-TBL A 10 DFR 0935 2110 R 2 PIWA2-FN2W-LEVEL-CODE-TBL DRR 0936 2120 3 PIWA2-FN2W-LEVEL-CODE A 1 (5,2) /* 10-BYTES DFRI2 0937 M 2130 2 PIWA2-FN2W-POLICE-PAT-BORO A 2 DFR 0938 2140 2 PIWA2-FN2W-ASSEM-DIST A 2 DFR 0939 2150 2 PIWA2-FN2W-CONG-DIST A 2 DFR 0940 2160 2 PIWA2-FN2W-SENATE-DIST A 2 DFR 0941 2170 2 PIWA2-FN2W-COURT-DIST A 2 DFR 0942 2180 2 PIWA2-FN2W-COUNCIL-DIST A 2 DFR 0943 2190 2 PIWA2-FN2W-CD-ELIGIBLE A 1 DFR 0944 2200 2 PIWA2-FN2W-DUP-INTERSECT-DIST A 5 DFR 0945 2210 2 PIWA2-FN2W-2000-CENS-TRACT A 6 DFR 0946 2220 2 PIWA2-FN2W-HEALTH-CENTER-DIST A 2 DFR 0947 2230 2 PIWA2-FN2W-SANITATION-DIST A 3 DFR 0948 2240 2 PIWA2-FN2W-SANITATION-SUBSEC A 2 DFR 0949 2250 2 PIWA2-FN2W-POLICE-SECTOR A 4 /* V19.2 ADDITION DFR 2260 2 FILLER-500W A 8 DFR 0950 2270 2 PIWA2-FN2W-FILLER-GRIDGEN A 22 /*INTERNAL USE DFR 0951 2280 2 PIWA2-FN2W-LGCS-FIRST-INTERSCT A 2 (1:4) /*UP TO 4 LGCS DFRI1 0952 M 2290 2 PIWA2-FN2W-LGCS-SECOND-INTERSCT A 2 (1:4) /*UP TO 4 LGCS DFRI1 0953 M 2300 2 PIWA2-FN2W-TURN-RESTRICTIONS A 1 (1:10) DFRI1 0954 M 2310 2 PIWA2-FN2W-INTERSECT-B5SC-LGCS A 2 (1:5) /*LGCS FOR LIST DFRI1 0955 M 2320 * /*OF INTERSECTING STS C 2330 2 PIWA2-FN2W-REPLICATION-CNTR A 2 DFR 0956 2340 2 PIWA2-FN2W-NODE-LIST A 7 (1:20) /*UP TO 20 NODES DFRI1 0957 M 2350 2 PIWA2-FN2W-NODE-LIST-B7SCS-TBLS A 3200 DFR 0958 2360 R 2 PIWA2-FN2W-NODE-LIST-B7SCS-TBLS /* REDEF. BEGIN : PIWA2-FN2W-NOD DRR 0959 2370 3 PIWA2-FN2W-NODE-LIST-B7SCS-TBL A 160 (20) DFRI1 0960 M 2380 R 2 PIWA2-FN2W-NODE-LIST-B7SCS-TBLS /* REDEF. BEGIN : PIWA2-FN2W-NOD DRR 0961 2390 3 PIWA2-FN2W-NODE-LIST-B7SCS-STS A 32 (20,5) DFRI2 0962 M 2400 R 2 PIWA2-FN2W-NODE-LIST-B7SCS-TBLS /* REDEF. BEGIN : PIWA2-FN2W-NOD DRR 0963 2410 3 PIWA2-FN2W-NODE-LIST-B7SCS A 8 (20,5,4) DFRI3 0964 M 2420 2 PIWA2-FN2W-REASON-CODE A 1 DFR 0965 2430 2 PIWA2-FN2W-REASON-CODE-QUAL A 1 DFR 0966 2440 2 PIWA2-FN2W-WARN-CODE A 2 DFR 0967 2450 2 PIWA2-FN2W-RETURN-CODE A 2 DFR 0968 2460 2 PIWA2-FN2W-LATITUDE A 9 DFR 2470 2 PIWA2-FN2W-LONGITUDE A 11 DFR 2480 2 PIWA2-FN2W-FILLER2W A 374 DFR 0969 2490 * * END OF FUNCTION 2W * ********** ******** C 2500 * * -------------------------------- - ---------- ----------------- C 2510 * * BEGINNING OF FUNCTION 3 LAYOUT * ********** ********* CSR 0096 2520 R 1 GEOLP2 DRR 0970 2530 2 PIWA2-FN3-ACCESS-KEY A 21 DFR 0971 2540 2 PIWA2-FN3-DUP-KEY-FLAG A 1 /* OR CONTI PARITY DFR 0972 2550 2 PIWA2-FN3-LOCATION-STATUS A 1 DFR 0973 2560 2 PIWA2-FN3-COUNTY-BOUNDARY A 1 DFR 0974 2570 2 PIWA2-FN3-PREFERRED-LGC1 A 2 DFR 0975 2580 2 PIWA2-FN3-PREFERRED-LGC2 A 2 DFR 0976 2590 2 PIWA2-FN3-PREFERRED-LGC3 A 2 DFR 0977 2600 2 PIWA2-FN3-NUM-X-ST-LOW-END A 1 DFR 0978 2610 2 PIWA2-FN3-LOW-B5SC A 6 (1:5) /* 30-BYTES DFRI1 0979 M 2620 2 PIWA2-FN3-NUM-X-ST-HI-END A 1 DFR 0980 2630 2 PIWA2-FN3-HI-B5SC A 6 (1:5) /* 30-BYTES DFRI1 0981 M 2640 2 PIWA2-FN3-REVERSAL-FLAG A 1 DFR 0982 2650 2 PIWA2-FN3-LION-KEY A 10 DFR 0983 2660 R 2 PIWA2-FN3-LION-KEY DRR 0984 2670 3 PIWA2-FN3-LION-BORO A 1 DFR 0985 2680 3 PIWA2-FN3-LION-FACECODE A 4 DFR 0986 2690 3 PIWA2-FN3-LION-SEQ A 5 DFR 0987 2700 2 PIWA2-FN3-GENREC-FLAG A 1 DFR 0988 2710 2 PIWA2-FN3-SEG-LENGTH A 5 DFR 0989 2720 2 PIWA2-FN3-SEG-SLOP A 3 DFR 0990 2730 2 PIWA2-FN3-SEG-ORIENT A 1 DFR 0991 2740 2 PIWA2-FN3-MARBLE-RIKERS-FLAG A 1 DFR 0992 2750 2 PIWA2-FN3-FROM-NODE A 7 DFR 0993 2760 2 PIWA2-FN3-TO-NODE A 7 DFR 0994 2770 2 PIWA2-FN3-SANIT-SNOW-PRIORITY A 1 /*SANITATION STRT DFR 0995 2780 * * /*SNOW PRIORITY C 2790 2 FILLER-600 A 4 DFR 0996 2800 2 PIWA2-FN3-SEGMENT-ID A 7 DFR 0997 2810 2 PIWA2-FN3-DOT-SLA A 1 DFR 0998 2820 2 PIWA2-FN3-CURVE-FLAG A 1 DFR 0999 2830 2 PIWA2-FN3-DOG-LEG A 1 DFR 1000 2840 2 PIWA2-FN3-FEATURE-TYPE A 1 DFR 1001 2850 2 PIWA2-FN3-SEGMENT-TYPE A 1 DFR 1002 2860 2 PIWA2-FN3-COINCIDENT-SEG-CTR A 1 DFR 1003 2870 2 FILLER-700 A 4 DFR 1004 2880 * * *** LEFT SIDE OF THE STREET **** * ********** ****** C 2890 2 PIWA2-FN3-LEFT-SIDE-OF-STR A 150 DFR 1005 2900 R 2 PIWA2-FN3-LEFT-SIDE-OF-STR DRR 1006 2910 3 PIWA2-FN3-L-COM-DIST A 3 DFR 1007 2920 R 3 PIWA2-FN3-L-COM-DIST DRR 1008 2930 4 PIWA2-FN3-L-COM-DIST-BORO A 1 DFR 1009 2940 4 PIWA2-FN3-L-COM-DIST-NUM A 2 DFR 1010 2950 3 PIWA2-FN3-L-LOW-HOUSENUM A 16 /* DISPLAY FORMAT DFR 1011 2960 3 PIWA2-FN3-L-HI-HOUSENUM A 16 /* DISPLAY FORMAT DFR 1012 2970 3 FILLER-800 A 32 /* FOR FUTURE USE DFR 1013 2980 3 PIWA2-FN3-L-CD-ELIGIBLE A 1 DFR 1014 2990 3 PIWA2-FN3-L-ZIP A 5 DFR 1015 3000 3 PIWA2-FN3-L-HEALTH-AREA A 4 DFR 1016 3010 3 PIWA2-FN3-L-POLICE-DIST A 4 DFR 1017 3020 R 3 PIWA2-FN3-L-POLICE-DIST DRR 1018 3030 4 PIWA2-FN3-L-POL-PAT-BORO-CMD A 1 DFR 1019 3040 4 PIWA2-FN3-L-POL-PRECINCT A 3 DFR 1020 3050 3 PIWA2-FN3-L-FIRE-DIV A 2 DFR 1021 3060 3 PIWA2-FN3-L-FIRE-BAT A 2 DFR 1022 3070 3 PIWA2-FN3-L-FIRE-CO A 4 DFR 1023 3080 R 3 PIWA2-FN3-L-FIRE-CO DRR 1024 3090 4 PIWA2-FN3-L-FIRE-CO-TYPE A 1 DFR 1025 3100 4 PIWA2-FN3-L-FIRE-CO-NUM A 3 DFR 1026 3110 3 PIWA2-FN3-L-SCHL-DIST A 2 DFR 1027 3120 3 PIWA2-FN3-L-DYN-BLK A 3 DFR 1028 3130 3 PIWA2-FN3-L-ED A 3 DFR 1029 3140 3 PIWA2-FN3-L-AD A 2 DFR 1030 3150 3 PIWA2-FN3-L-POLICE-PAT-BORO A 2 DFR 3160 3 FILLER-880 A 1 DFR 1031 3170 3 PIWA2-FN3-L-BORO A 1 DFR 1032 3180 3 PIWA2-FN3-L-1990-CENSUS-TRACT A 6 DFR 1033 3190 3 PIWA2-FN3-L-2010-CENSUS-TRACT A 6 DFR 1034 3200 3 PIWA2-FN3-L-2010-CENSUS-BLOCK A 4 DFR 1035 3210 3 PIWA2-FN3-L-2010-CENSUS-BLK-SUF A 1 /* NA DFR 1036 3220 3 PIWA2-FN3-L-2000-CENS-TRACT A 6 DFR 1037 3230 3 PIWA2-FN3-L-2000-CENS-BLOCK A 4 DFR 1038 3240 3 PIWA2-FN3-L-2000-CENS-BLK-SUF A 1 /* NA DFR 1039 3250 3 PIWA2-FN3-L-FILLER-890 A 7 /* V16.1 REPLACEMENT DFR 1040 3260 3 PIWA2-FN3-L-NTA A 4 /*NEIGHBORHOOD DFR 1041 3270 * * /*TABULATION AREA C 3280 3 FILLER-900 A 8 DFR 1042 3290 * * *** RIGHT SIDE OF THE STREET *** * ********** *********** C 3300 2 PIWA2-FN3-RIGHT-SIDE-OF-STR A 150 DFR 1043 3310 R 2 PIWA2-FN3-RIGHT-SIDE-OF-STR DRR 1044 3320 3 PIWA2-FN3-R-COM-DIST A 3 DFR 1045 3330 R 3 PIWA2-FN3-R-COM-DIST DRR 1046 3340 4 PIWA2-FN3-R-COM-DIST-BORO A 1 DFR 1047 3350 4 PIWA2-FN3-R-COM-DIST-NUM A 2 DFR 1048 3360 3 PIWA2-FN3-R-LOW-HOUSENUM A 16 /* DISPLAY FORMAT DFR 1049 3370 3 PIWA2-FN3-R-HI-HOUSENUM A 16 /* DISPLAY FORMAT DFR 1050 3380 3 FILLER-1000 A 32 /* FOR FUTURE USE DFR 1051 3390 3 PIWA2-FN3-R-CD-ELIGIBLE A 1 DFR 1052 3400 3 PIWA2-FN3-R-ZIP A 5 DFR 1053 3410 3 PIWA2-FN3-R-HEALTH-AREA A 4 DFR 1054 3420 3 PIWA2-FN3-R-POLICE-DIST A 4 DFR 1055 3430 R 3 PIWA2-FN3-R-POLICE-DIST DRR 1056 3440 4 PIWA2-FN3-R-POL-PAT-BORO-CMD A 1 DFR 1057 3450 4 PIWA2-FN3-R-POL-PRECINCT A 3 DFR 1058 3460 3 PIWA2-FN3-R-FIRE-DIV A 2 DFR 1059 3470 3 PIWA2-FN3-R-FIRE-BAT A 2 DFR 1060 3480 3 PIWA2-FN3-R-FIRE-CO A 4 DFR 1061 3490 R 3 PIWA2-FN3-R-FIRE-CO DRR 1062 3500 4 PIWA2-FN3-R-FIRE-CO-TYPE A 1 DFR 1063 3510 4 PIWA2-FN3-R-FIRE-CO-NUM A 3 DFR 1064 3520 3 PIWA2-FN3-R-SCHL-DIST A 2 DFR 1065 3530 3 PIWA2-FN3-R-DYN-BLK A 3 DFR 1066 3540 3 PIWA2-FN3-R-ED A 3 DFR 1067 3550 3 PIWA2-FN3-R-AD A 2 DFR 1068 3560 3 PIWA2-FN3-R-POLICE-PAT-BORO A 2 DFR 3570 3 FILLER-1080 A 1 DFR 1069 3580 3 PIWA2-FN3-R-BORO A 1 DFR 1070 3590 3 PIWA2-FN3-R-1990-CENSUS-TRACT A 6 DFR 1071 3600 3 PIWA2-FN3-R-2010-CENSUS-TRACT A 6 DFR 1072 3610 3 PIWA2-FN3-R-2010-CENSUS-BLOCK A 4 DFR 1073 3620 3 PIWA2-FN3-R-2010-CENSUS-BLK-SUF A 1 /* NA DFR 1074 3630 3 PIWA2-FN3-R-2000-CENS-TRACT A 6 DFR 1075 3640 3 PIWA2-FN3-R-2000-CENS-BLOCK A 4 DFR 1076 3650 3 PIWA2-FN3-R-2000-CENS-BLK-SUF A 1 /* NA DFR 1077 3660 3 PIWA2-FN3-R-FILLER-1090 A 7 /* V16.1 REPLACEMENT DFR 1078 3670 3 PIWA2-FN3-R-NTA A 4 /*NEIGHBORHOOD DFR 1079 3680 * * /*TABULATION AREA C 3690 3 FILLER-1100 A 8 DFR 1080 3700 * 2 PIWA2-FN3-PSEUDO-FILLER A 3550 CFR 0901 3710 * * ******************************** * ********** ********** C 3720 * ** *** END OF FUNCTION 3 LAYOUT**** * ********** ********** C 3730 R 1 GEOLP2 DRR 1081 3740 2 PIWA2-FN3-SEGAUX A 450 /* SAME AS FN3 DFR 1082 3750 2 PIWA2-FN3-FILLER-SEGAUX A 6 /* FOR FUTURE USE DFR 1083 3760 2 PIWA2-FN3-SEGAUX-COUNTER A 4 DFR 1084 3770 2 PIWA2-FN3-SEGAUX-SEGMENTS A 7 (1:70) DFRI1 1085 M 3780 * 2 PIWA2-FN3-SEGAUX-PSEUDO-FILLER A 3050 CFR 0905 3790 * * ******************************** * ********** FOR AUX SEGS C 3800 * * END OF FUNCTION 3 AUX LAYOUT * ********** ******** C 3810 * * -------------------------------- - ---------- -------- C 3820 * * START OF FUNCTION 3 EXTENDED LAYOUT ******** CSR 0096 3830 R 1 GEOLP2 DRR 1086 3840 2 PIWA2-3X-ACCESS-KEY A 21 DFR 1087 3850 2 PIWA2-3X-DUP-KEY-FLAG A 1 /* OR CONTI PARITY DFR 1088 3860 2 PIWA2-3X-LOCATION-STATUS A 1 DFR 1089 3870 2 PIWA2-3X-COUNTY-BOUNDARY A 1 DFR 1090 3880 2 PIWA2-3X-PREFERRED-LGC1 A 2 DFR 1091 3890 2 PIWA2-3X-PREFERRED-LGC2 A 2 DFR 1092 3900 2 PIWA2-3X-PREFERRED-LGC3 A 2 DFR 1093 3910 2 PIWA2-3X-NUM-X-ST-LOW-END A 1 DFR 1094 3920 2 PIWA2-3X-LOW-B5SC A 6 (1:5) /* 30-BYTES DFRI1 1095 M 3930 2 PIWA2-3X-NUM-X-ST-HI-END A 1 DFR 1096 3940 2 PIWA2-3X-HI-B5SC A 6 (1:5) /* 30-BYTES DFRI1 1097 M 3950 2 PIWA2-3X-REVERSAL-FLAG A 1 DFR 1098 3960 2 PIWA2-3X-LION-KEY A 10 DFR 1099 3970 R 2 PIWA2-3X-LION-KEY DRR 1100 3980 3 PIWA2-3X-LION-BORO A 1 DFR 1101 3990 3 PIWA2-3X-LION-FACECODE A 4 DFR 1102 4000 3 PIWA2-3X-LION-SEQ A 5 DFR 1103 4010 2 PIWA2-3X-GENREC-FLAG A 1 DFR 1104 4020 2 PIWA2-3X-SEG-LENGTH A 5 DFR 1105 4030 2 PIWA2-3X-SEG-SLOP A 3 DFR 1106 4040 2 PIWA2-3X-SEG-ORIENT A 1 DFR 1107 4050 2 PIWA2-3X-MARBLE-RIKERS-FLAG A 1 DFR 1108 4060 2 PIWA2-3X-FROM-NODE A 7 DFR 1109 4070 2 PIWA2-3X-TO-NODE A 7 DFR 1110 4080 2 PIWA2-3X-SANIT-SNOW-PRIORITY A 1 /*SANITATION STRT DFR 1111 4090 * * /*SNOW PRIORITY C 4100 2 FILLER-3X-600 A 4 DFR 1112 4110 2 PIWA2-3X-SEGMENT-ID A 7 DFR 1113 4120 2 PIWA2-3X-DOT-SLA A 1 DFR 1114 4130 2 PIWA2-3X-CURVE-FLAG A 1 DFR 1115 4140 2 PIWA2-3X-DOG-LEG A 1 DFR 1116 4150 2 PIWA2-3X-FEATURE-TYPE A 1 DFR 1117 4160 2 PIWA2-3X-SEGMENT-TYPE A 1 DFR 1118 4170 2 PIWA2-3X-COINCIDENT-SEG-CTR A 1 DFR 1119 4180 2 FILLER-3X-700 A 4 DFR 1120 4190 * * *** LEFT SIDE OF THE STREET **** * *** ****** ****** C 4200 2 PIWA2-3X-LEFT-SIDE-OF-STR A 150 DFR 1121 4210 R 2 PIWA2-3X-LEFT-SIDE-OF-STR DRR 1122 4220 3 PIWA2-3X-L-COM-DIST A 3 DFR 1123 4230 R 3 PIWA2-3X-L-COM-DIST DRR 1124 4240 4 PIWA2-3X-L-COM-DIST-BORO A 1 DFR 1125 4250 4 PIWA2-3X-L-COM-DIST-NUM A 2 DFR 1126 4260 3 PIWA2-3X-L-LOW-HOUSENUM A 16 /* DISPLAY FORMAT DFR 1127 4270 3 PIWA2-3X-L-HI-HOUSENUM A 16 /* DISPLAY FORMAT DFR 1128 4280 3 FILLER-3X-800 A 32 /* FOR FUTURE USE DFR 1129 4290 3 PIWA2-3X-L-CD-ELIGIBLE A 1 DFR 1130 4300 3 PIWA2-3X-L-ZIP A 5 DFR 1131 4310 3 PIWA2-3X-L-HEALTH-AREA A 4 DFR 1132 4320 3 PIWA2-3X-L-POLICE-DIST A 4 DFR 1133 4330 R 3 PIWA2-3X-L-POLICE-DIST DRR 1134 4340 4 PIWA2-3X-L-POL-PAT-BORO-CMD A 1 DFR 1135 4350 4 PIWA2-3X-L-POL-PRECINCT A 3 DFR 1136 4360 3 PIWA2-3X-L-FIRE-DIV A 2 DFR 1137 4370 3 PIWA2-3X-L-FIRE-BAT A 2 DFR 1138 4380 3 PIWA2-3X-L-FIRE-CO A 4 DFR 1139 4390 R 3 PIWA2-3X-L-FIRE-CO DRR 1140 4400 4 PIWA2-3X-L-FIRE-CO-TYPE A 1 DFR 1141 4410 4 PIWA2-3X-L-FIRE-CO-NUM A 3 DFR 1142 4420 3 PIWA2-3X-L-SCHL-DIST A 2 DFR 1143 4430 3 PIWA2-3X-L-DYN-BLK A 3 DFR 1144 4440 3 PIWA2-3X-L-ED A 3 DFR 1145 4450 3 PIWA2-3X-L-AD A 2 DFR 1146 4460 3 PIWA2-3X-L-POLICE-PAT-BORO A 2 DFR 4470 3 FILLER-3X-880 A 1 DFR 1147 4480 3 PIWA2-3X-L-BORO A 1 DFR 1148 4490 3 PIWA2-3X-L-1990-CENSUS-TRACT A 6 DFR 1149 4500 3 PIWA2-3X-L-2010-CENSUS-TRACT A 6 DFR 1150 4510 3 PIWA2-3X-L-2010-CENSUS-BLOCK A 4 DFR 1151 4520 3 PIWA2-3X-L-2010-CENSUS-BLK-SUF A 1 /* NA DFR 1152 4530 3 PIWA2-3X-L-2000-CENS-TRACT A 6 DFR 1153 4540 3 PIWA2-3X-L-2000-CENS-BLOCK A 4 DFR 1154 4550 3 PIWA2-3X-L-2010-CENS-BLK-SUF A 1 /* NA DFR 1155 4560 3 PIWA2-3X-L-FILLER-890 A 7 /* V16.1 REPLACEMENT DFR 1156 4570 3 PIWA2-3X-L-NTA A 4 /*NEIGHBORHOOD DFR 1157 4580 * * /*TABULATION AREA C 4590 3 FILLER-3X-900 A 8 DFR 1158 4600 * * *** RIGHT SIDE OF THE STREET *** * ********** *********** C 4610 2 PIWA2-3X-RIGHT-SIDE-OF-STR A 150 DFR 1159 4620 R 2 PIWA2-3X-RIGHT-SIDE-OF-STR DRR 1160 4630 3 PIWA2-3X-R-COM-DIST A 3 DFR 1161 4640 R 3 PIWA2-3X-R-COM-DIST DRR 1162 4650 4 PIWA2-3X-R-COM-DIST-BORO A 1 DFR 1163 4660 4 PIWA2-3X-R-COM-DIST-NUM A 2 DFR 1164 4670 3 PIWA2-3X-R-LOW-HOUSENUM A 16 /* DISPLAY FORMAT DFR 1165 4680 3 PIWA2-3X-R-HI-HOUSENUM A 16 /* DISPLAY FORMAT DFR 1166 4690 3 FILLER-3X-1000 A 32 /* FOR FUTURE USE DFR 1167 4700 3 PIWA2-3X-R-CD-ELIGIBLE A 1 DFR 1168 4710 3 PIWA2-3X-R-ZIP A 5 DFR 1169 4720 3 PIWA2-3X-R-HEALTH-AREA A 4 DFR 1170 4730 3 PIWA2-3X-R-POLICE-DIST A 4 DFR 1171 4740 R 3 PIWA2-3X-R-POLICE-DIST DRR 1172 4750 4 PIWA2-3X-R-POL-PAT-BORO-CMD A 1 DFR 1173 4760 4 PIWA2-3X-R-POL-PRECINCT A 3 DFR 1174 4770 3 PIWA2-3X-R-FIRE-DIV A 2 DFR 1175 4780 3 PIWA2-3X-R-FIRE-BAT A 2 DFR 1176 4790 3 PIWA2-3X-R-FIRE-CO A 4 DFR 1177 4800 R 3 PIWA2-3X-R-FIRE-CO DRR 1178 4810 4 PIWA2-3X-R-FIRE-CO-TYPE A 1 DFR 1179 4820 4 PIWA2-3X-R-FIRE-CO-NUM A 3 DFR 1180 4830 3 PIWA2-3X-R-SCHL-DIST A 2 DFR 1181 4840 3 PIWA2-3X-R-DYN-BLK A 3 DFR 1182 4850 3 PIWA2-3X-R-ED A 3 DFR 1183 4860 3 PIWA2-3X-R-AD A 2 DFR 1184 4870 3 PIWA2-3X-R-POLICE-PAT-BORO A 2 DFR 4880 3 FILLER-3X-1080 A 1 DFR 1185 4890 3 PIWA2-3X-R-BORO A 1 DFR 1186 4900 3 PIWA2-3X-R-1990-CENSUS-TRACT A 6 DFR 1187 4910 3 PIWA2-3X-R-2010-CENSUS-TRACT A 6 DFR 1188 4920 3 PIWA2-3X-R-2010-CENSUS-BLOCK A 4 DFR 1189 4930 3 PIWA2-3X-R-2010-CENSUS-BLK-SUF A 1 /* NA DFR 1190 4940 3 PIWA2-3X-R-2000-CENS-TRACT A 6 DFR 1191 4950 3 PIWA2-3X-R-2000-CENS-BLOCK A 4 DFR 1192 4960 3 PIWA2-3X-R-2000-CENS-BLK-SUF A 1 /* NA DFR 1193 4970 3 PIWA2-3X-R-FILLER-1090 A 7 /* V16.1 REPLACEMENT DFR 1194 4980 3 PIWA2-3X-R-NTA A 4 /*NEIGHBORHOOD DFR 1195 4990 * * /*TABULATION AREA C 5000 3 FILLER-3X-1100 A 8 DFR 1196 5010 2 PIWA2-3X-LGCS A 8 DFR 1197 5020 2 PIWA2-3X-LGCS-FROM A 8 DFR 1198 5030 2 PIWA2-3X-LGCS-TO A 8 DFR 1199 5040 2 PIWA2-3X-L-HEALTH-CTR-DIST A 2 DFR 1200 5050 2 PIWA2-3X-R-HEALTH-CTR-DIST A 2 DFR 1201 5060 2 PIWA2-3X-FILL1 A 1 DFR 1202 5070 2 PIWA2-3X-TRAFFIC-DIR A 1 DFR 1203 5080 2 PIWA2-3X-ROADWAY-TYPE A 2 DFR 1204 5090 2 PIWA2-3X-PHYSICAL-ID A 7 DFR 1205 5100 2 PIWA2-3X-GENERIC-ID A 7 DFR 1206 5110 2 PIWA2-3X-INTP-ID A 7 /* INTERNAL USE DFR 1207 5120 2 PIWA2-3X-INTF-ID A 7 /* INTERNAL USE DFR 1208 5130 2 PIWA2-3X-STR-STATUS A 1 DFR 1209 5140 2 PIWA2-3X-STR-WIDTH A 3 DFR 1210 5150 2 PIWA2-3X-STR-WIDTH-IRREG A 1 DFR 1211 5160 2 PIWA2-3X-BIKE-LANE A 1 DFR 1212 5170 2 PIWA2-3X-FED-CLASS-CODE A 2 DFR 1213 5180 2 PIWA2-3X-ROW-TYPE A 1 DFR 1214 5190 2 PIWA2-3X-LGC-LIST A 10 DFR 1215 5200 2 PIWA2-3X-LEGACY-ID A 7 DFR 1216 5210 2 PIWA2-3X-L-NTA-NAME A 75 DFR 1217 5220 2 PIWA2-3X-R-NTA-NAME A 75 DFR 1218 5230 2 PIWA2-3X-FROM-XCOORD A 7 DFR 1219 5240 2 PIWA2-3X-FROM-YCOORD A 7 DFR 1220 5250 2 PIWA2-3X-TO-XCOORD A 7 DFR 1221 5260 2 PIWA2-3X-TO-YCOORD A 7 DFR 1222 5270 2 PIWA2-3X-FROM-LATITUDE A 9 DFR 5280 2 PIWA2-3X-FROM-LONGITUDE A 11 DFR 5290 2 PIWA2-3X-TO-LATITUDE A 9 DFR 5300 2 PIWA2-3X-TO-LONGITUDE A 11 DFR 5310 2 PIWA2-3X-L-BLOCKFACE-ID A 10 /* V16.1 ADD DFR 5320 2 PIWA2-3X-R-BLOCKFACE-ID A 10 /* V16.1 ADD DFR 5330 2 PIWA2-3X-NBR-TRAVEL-LANES A 2 /* V16.1 ADD DFR 5340 2 PIWA2-3X-NBR-PARK-LANES A 2 /* V16.1 ADD DFR 5350 2 PIWA2-3X-NBR-TOTAL-LANES A 2 /* V16.1 ADD DFR 5360 2 PIWA2-3X-BIKE-LANE-2 A 2 /* V16.4 ADDITION DFR 5370 2 PIWA2-3X-STR-WIDTH-MAX A 3 /* V16.4 ADDITION DFR 5380 2 PIWA2-3X-BIKE-TRAFFIC-DIR A 2 /* V17.1 ADDITION DFR 5390 2 PIWA2-3X-SPEED-LIMIT A 2 /* V17.4 ADDITION DFR 5400 2 PIWA2-3X-LEFT-PUMA-CODE A 5 /* V18.1 ADDITION DFR 5410 2 PIWA2-3X-RIGHT-PUMA-CODE A 5 /* V18.1 ADDITION DFR 5420 2 PIWA2-3X-LEFT-POLICE-SECTOR A 4 /* V19.2 ADDITION DFR 5430 2 PIWA2-3X-RIGHT-POLICE-SECTOR A 4 /* V19.2 ADDITION DFR 5440 2 FILLER-3X-FILL2 A 193 /* V17.1,V18.1 MOD DFR 1223 5450 * 2 FILLER-3X-FILL2 A 215 /* V16.4 ALTERATION CFR 1223 5460 * 2 FILLER-3X-FILL2 A 220 /* V16.1 MOD CFR 1223 5470 * 2 PIWA2-3X-PSEUDO-FILLER A 3000 CFR 1038 5480 * * ******************************** * ********** ********** C 5490 * * END OF FCT 3 EXTENDED LAYOUT *** * ********** ********** C 5500 R 1 GEOLP2 DRR 1224 5510 2 PIWA2-3X-SEGAUX A 1000 /* SAME AS FN 3X DFR 1225 5520 2 PIWA2-3X-FILLER-SEGAUX A 6 /* FOR FUTURE USE DFR 1226 5530 2 PIWA2-3X-SEGAUX-COUNTER A 4 DFR 1227 5540 2 PIWA2-3X-SEGAUX-SEGMENTS A 7 (1:70) DFRI1 1228 M 5550 * * ******************************** * ********** FOR AUX SEGS C 5560 * * END OF FCT 3 EXTENDED AUX LAYOUT * ********** ************* C 5570 * * -------------------------------- - ---------- -------- C 5580 * * BEGINNING OF FUNCTION 3C LAYOUT * ********** ******** C 5590 R 1 GEOLP2 DRR 1229 5600 2 PIWA2-FN3C-ACCESS-KEY A 21 DFR 1230 5610 2 PIWA2-FN3C-DUP-KEY-FLAG A 1 /* OR CONTI PARITY DFR 1231 5620 2 PIWA2-FN3C-LOCATION-STATUS A 1 DFR 1232 5630 2 PIWA2-FN3C-COUNTY-BOUNDARY A 1 DFR 1233 5640 2 PIWA2-FN3C-PREFERRED-LGC1 A 2 DFR 1234 5650 2 PIWA2-FN3C-PREFERRED-LGC2 A 2 DFR 1235 5660 2 PIWA2-FN3C-PREFERRED-LGC3 A 2 DFR 1236 5670 2 PIWA2-FN3C-NUM-X-ST-LOW-END A 1 DFR 1237 5680 2 PIWA2-FN3C-LOW-B5SC A 6 (1:5) /* 30-BYTES DFRI1 1238 M 5690 2 PIWA2-FN3C-NUM-X-ST-HI-END A 1 DFR 1239 5700 2 PIWA2-FN3C-HI-B5SC A 6 (1:5) /* 30-BYTES DFRI1 1240 M 5710 2 PIWA2-FN3C-REVERSAL-FLAG A 1 DFR 1241 5720 2 PIWA2-FN3C-LIONKEY A 10 DFR 1242 5730 R 2 PIWA2-FN3C-LIONKEY DRR 1243 5740 3 PIWA2-FN3C-LION-BORO A 1 DFR 1244 5750 3 PIWA2-FN3C-LION-FACECODE A 4 DFR 1245 5760 3 PIWA2-FN3C-LION-SEQ A 5 DFR 1246 5770 2 PIWA2-FN3C-GENREC-FLAG A 1 DFR 1247 5780 2 PIWA2-FN3C-SEG-LENGTH A 5 DFR 1248 5790 2 PIWA2-FN3C-SEG-AZIMUTH A 3 DFR 1249 5800 2 PIWA2-FN3C-SEG-ORIENT A 1 DFR 1250 5810 2 PIWA2-FN3C-MARBLE-RIKERS-FLAG A 1 DFR 1251 5820 2 PIWA2-FN3C-FROM-NODE A 7 DFR 1252 5830 2 PIWA2-FN3C-TO-NODE A 7 DFR 1253 5840 2 PIWA2-FN3C-SANIT-SNOW-PRIORITY A 1 /*SANITATION STRT DFR 1254 5850 * * /*SNOW PRIORITY C 5860 2 FILLER-1200 A 4 DFR 1255 5870 2 PIWA2-FN3C-SEGMENT-ID A 7 DFR 1256 5880 2 PIWA2-FN3C-DOT-SLA A 1 DFR 1257 5890 2 PIWA2-FN3C-SIDE-OF-STR A 1 DFR 1258 5900 2 PIWA2-FN3C-CURVE-FLAG A 1 DFR 1259 5910 2 PIWA2-FN3C-FEATURE-TYPE A 1 DFR 1260 5920 2 PIWA2-FN3C-SEGMENT-TYPE A 1 DFR 1261 5930 2 PIWA2-FN3C-COINCIDENT-SEG-CTR A 1 DFR 1262 5940 2 FILLER-1300 A 4 DFR 1263 5950 * * *** FCT 3C BLOCKFACE INFORMATION * ********** ****************** CRR 0545 5960 2 PIWA2-FN3C-BLOCKFACE-INFO A 150 DFR 1264 5970 R 2 PIWA2-FN3C-BLOCKFACE-INFO DRR 1265 5980 3 PIWA2-FN3C-COM-DIST A 3 DFR 1266 5990 R 3 PIWA2-FN3C-COM-DIST DRR 1267 6000 4 PIWA2-FN3C-COMDIST-BORO A 1 DFR 1268 6010 4 PIWA2-FN3C-COMDIST-NUM A 2 DFR 1269 6020 3 PIWA2-FN3C-LOW-HOUSENUM A 16 /* DISPLAY FORMAT DFR 1270 6030 3 PIWA2-FN3C-HI-HOUSENUM A 16 /* DISPLAY FORMAT DFR 1271 6040 3 PIWA2-FN3C-LOW-HOUSENUM2 A 16 /* DISPLAY FORMAT DFR 1272 6050 3 PIWA2-FN3C-HI-HOUSENUM2 A 16 /* DISPLAY FORMAT DFR 1273 6060 3 PIWA2-FN3C-FILLER-1400 A 1 /* FOR GSS USE DFR 1274 6070 3 PIWA2-FN3C-ZIP A 5 DFR 1275 6080 3 PIWA2-FN3C-HEALTH-AREA A 4 DFR 1276 6090 3 PIWA2-FN3C-POLICE-DIST A 4 DFR 1277 6100 R 3 PIWA2-FN3C-POLICE-DIST DRR 1278 6110 4 PIWA2-FN3C-POL-PAT-BORO-CMD A 1 DFR 1279 6120 4 PIWA2-FN3C-POL-PRECINCT A 3 DFR 1280 6130 3 PIWA2-FN3C-FIRE-DIV A 2 DFR 1281 6140 3 PIWA2-FN3C-FIRE-BAT A 2 DFR 1282 6150 3 PIWA2-FN3C-FIRE-CO A 4 DFR 1283 6160 R 3 PIWA2-FN3C-FIRE-CO DRR 1284 6170 4 PIWA2-FN3C-FIRE-CO-TYPE A 1 DFR 1285 6180 4 PIWA2-FN3C-FIRE-CO-NUM A 3 DFR 1286 6190 3 PIWA2-FN3C-SCHL-DIST A 2 DFR 1287 6200 3 PIWA2-FN3C-DYN-BLK A 3 DFR 1288 6210 3 PIWA2-FN3C-ED A 3 DFR 1289 6220 3 PIWA2-FN3C-AD A 2 DFR 1290 6230 3 PIWA2-FN3C-POLICE-PAT-BORO A 2 DFR 6240 3 FILLER-1480 A 1 DFR 1291 6250 3 PIWA2-FN3C-BORO A 1 DFR 1292 6260 3 PIWA2-FN3C-1900-CENSUS-TRACT A 6 DFR 1293 6270 3 PIWA2-FN3C-2010-CENSUS-TRACT A 6 DFR 1294 6280 3 PIWA2-FN3C-2010-CENSUS-BLOCK A 4 DFR 1295 6290 3 PIWA2-FN3C-2010-CENSUS-BLOCK-SUF A 1 /* NA DFR 1296 6300 3 PIWA2-FN3C-2000-CENS-TRACT A 6 DFR 1297 6310 3 PIWA2-FN3C-2000-CENS-BLOCK A 4 DFR 1298 6320 3 PIWA2-FN3C-2000-CENS-BLK-SUF A 1 /* NA DFR 1299 6330 3 PIWA2-FN3C-FILLER-1490 A 7 /* V16.1 REPLACEMENT DFR 1300 6340 3 PIWA2-FN3C-NTA A 4 /*NEIGHBORHOOD DFR 1301 6350 * * /*TABULATION AREA C 6360 * 3 FILLER-1500 A 8 CFR 1057 6370 * * PIWA2-FN3C-PSEUDO-FILLER A 3700 /*LEVEL 2 IN DEF CFR 1093 6380 * * ******************************** * ********** ****** C 6390 * * END OF FCT 3C LAYOUT ********** * ********** ****** C 6400 R 1 GEOLP2 DRR 1302 6410 2 PIWA2-FN3C-SEGAUX A 300 /*SAME AS FN3C DFR 1303 6420 2 PIWA2-FN3C-SEGAUX-FILL A 6 DFR 1304 6430 2 PIWA2-FN3C-SEGAUX-CTR A 4 DFR 1305 6440 2 PIWA2-FN3C-SEGAUX-SEGS A 7 (1:70) DFRI1 1306 M 6450 * 2 PIWA2-FN3C-AUX-PSEUDO-FILLER A 3200 CFR 1121 6460 * ** ******************************** * ********** FN3C AUX SEGS C 6470 * * END OF FCT 3C AUX LAYOUT ****** * ********** ******* C 6480 * ** ******************************** * ********** ************* C 6490 * ** ******************************** * ********** ************* C 6500 * * START OF FUNCTION 3CX LAYOUT * ********** ******** C 6510 R 1 GEOLP2 DRR 1307 6520 2 PIWA2-3CX-ACCESS-KEY A 21 DFR 1308 6530 2 PIWA2-3CX-DUP-KEY-FLAG A 1 /* OR CONTI PARITY DFR 1309 6540 2 PIWA2-3CX-LOCATION-STATUS A 1 DFR 1310 6550 2 PIWA2-3CX-COUNTY-BOUNDARY A 1 DFR 1311 6560 2 PIWA2-3CX-PREFERRED-LGC1 A 2 DFR 1312 6570 2 PIWA2-3CX-PREFERRED-LGC2 A 2 DFR 1313 6580 2 PIWA2-3CX-PREFERRED-LGC3 A 2 DFR 1314 6590 2 PIWA2-3CX-NUM-X-ST-LOW-END A 1 DFR 1315 6600 2 PIWA2-3CX-LOW-B5SC A 6 (1:5) /* 30-BYTES DFRI1 1316 M 6610 2 PIWA2-3CX-NUM-X-ST-HI-END A 1 DFR 1317 6620 2 PIWA2-3CX-HI-B5SC A 6 (1:5) /* 30-BYTES DFRI1 1318 M 6630 2 PIWA2-3CX-REVERSAL-FLAG A 1 DFR 1319 6640 2 PIWA2-3CX-LIONKEY A 10 DFR 1320 6650 R 2 PIWA2-3CX-LIONKEY DRR 1321 6660 3 PIWA2-3CX-LION-BORO A 1 DFR 1322 6670 3 PIWA2-3CX-LION-FACECODE A 4 DFR 1323 6680 3 PIWA2-3CX-LION-SEQ A 5 DFR 1324 6690 2 PIWA2-3CX-GENREC-FLAG A 1 DFR 1325 6700 2 PIWA2-3CX-SEG-LENGTH A 5 DFR 1326 6710 2 PIWA2-3CX-SEG-SLOPE A 3 DFR 1327 6720 2 PIWA2-3CX-SEG-ORIENT A 1 DFR 1328 6730 2 PIWA2-3CX-MARBLE-RIKERS-FLAG A 1 DFR 1329 6740 2 PIWA2-3CX-FROM-NODE A 7 DFR 1330 6750 2 PIWA2-3CX-TO-NODE A 7 DFR 1331 6760 2 PIWA2-3CX-SANIT-SNOW-PRIORITY A 1 /*SANITATION STRT DFR 1332 6770 * * /*SNOW PRIORITY C 6780 2 FILLER-3CX-1200 A 4 DFR 1333 6790 2 PIWA2-3CX-SEGMENT-ID A 7 DFR 1334 6800 2 PIWA2-3CX-DOT-SLA A 1 DFR 1335 6810 2 PIWA2-3CX-SIDE-OF-STR A 1 DFR 1336 6820 2 PIWA2-3CX-CURVE-FLAG A 1 DFR 1337 6830 2 PIWA2-3CX-FEATURE-TYPE A 1 DFR 1338 6840 2 PIWA2-3CX-SEGMENT-TYPE A 1 DFR 1339 6850 2 PIWA2-3CX-COINCIDENT-SEG-CTR A 1 DFR 1340 6860 2 FILLER-3CX-1300 A 4 DFR 1341 6870 * * ***FCT 3C BLOCKFACE INFORMATION * ********** ****************** CRR 0545 6880 2 PIWA2-3CX-BLOCKFACE-INFO A 150 DFR 1342 6890 R 2 PIWA2-3CX-BLOCKFACE-INFO DRR 1343 6900 3 PIWA2-3CX-COM-DIST A 3 DFR 1344 6910 R 3 PIWA2-3CX-COM-DIST DRR 1345 6920 4 PIWA2-3CX-COMDIST-BORO A 1 DFR 1346 6930 4 PIWA2-3CX-COMDIST-NUM A 2 DFR 1347 6940 3 PIWA2-3CX-LOW-HOUSENUM A 16 /* DISPLAY FORMAT DFR 1348 6950 3 PIWA2-3CX-HI-HOUSENUM A 16 /* DISPLAY FORMAT DFR 1349 6960 3 PIWA2-3CX-LOW-HOUSENUM2 A 16 /* DISPLAY FORMAT DFR 1350 6970 3 PIWA2-3CX-HI-HOUSENUM2 A 16 /* DISPLAY FORMAT DFR 1351 6980 3 FIWA2-3CX-CD-ELIGIBLE A 1 DFR 1352 6990 3 PIWA2-3CX-ZIP A 5 DFR 1353 7000 3 PIWA2-3CX-HEALTH-AREA A 4 DFR 1354 7010 3 PIWA2-3CX-POLICE-DIST A 4 DFR 1355 7020 R 3 PIWA2-3CX-POLICE-DIST DRR 1356 7030 4 PIWA2-3CX-POL-PAT-BORO-CMD A 1 DFR 1357 7040 4 PIWA2-3CX-POL-PRECINCT A 3 DFR 1358 7050 3 PIWA2-3CX-FIRE-DIV A 2 DFR 1359 7060 3 PIWA2-3CX-FIRE-BAT A 2 DFR 1360 7070 3 PIWA2-3CX-FIRE-CO A 4 DFR 1361 7080 R 3 PIWA2-3CX-FIRE-CO DRR 1362 7090 4 PIWA2-3CX-FIRE-CO-TYPE A 1 DFR 1363 7100 4 PIWA2-3CX-FIRE-CO-NUM A 3 DFR 1364 7110 3 PIWA2-3CX-SCHL-DIST A 2 DFR 1365 7120 3 PIWA2-3CX-DYN-BLK A 3 DFR 1366 7130 3 PIWA2-3CX-ED A 3 DFR 1367 7140 3 PIWA2-3CX-AD A 2 DFR 1368 7150 3 PIWA2-3CX-POLICE-PAT-BORO A 2 DFR 7160 3 FILLER-3CX-1480 A 1 DFR 1369 7170 3 PIWA2-3CX-BORO A 1 DFR 1370 7180 3 PIWA2-3CX-1990-CENSUS-TRACT A 6 DFR 1371 7190 3 PIWA2-3CX-2010-CENSUS-TRACT A 6 DFR 1372 7200 3 PIWA2-3CX-2010-CENSUS-BLOCK A 4 DFR 1373 7210 3 PIWA2-3CX-2010-CENSUS-BLOCK-SUF A 1 /* NA DFR 1374 7220 3 PIWA2-3CX-2000-CENS-TRACT A 6 DFR 1375 7230 3 PIWA2-3CX-2000-CENS-BLOCK A 4 DFR 1376 7240 3 PIWA2-3CX-2000-CENS-BLK-SUF A 1 /* NA DFR 1377 7250 3 PIWA2-3CX-FILLER-1490 A 7 /* V16.1 REPLACEMENT DFR 1378 7260 3 PIWA2-3CX-NTA A 4 /*NEIGHBORHOOD DFR 1379 7270 * * /*TABULATION AREA C 7280 3 FILLER-1500 A 8 DFR 1380 7290 2 PIWA2-3CX-LGCS A 8 DFR 1381 7300 2 PIWA2-3CX-LGCS-FROM A 8 DFR 1382 7310 2 PIWA2-3CX-LGCS-TO A 8 DFR 1383 7320 2 PIWA2-3CX-L-HEALTH-CTR-DIST A 2 DFR 1384 7330 2 PIWA2-3CX-R-HEALTH-CTR-DIST A 2 DFR 1385 7340 2 PIWA2-3CX-FILL1 A 1 DFR 1386 7350 2 PIWA2-3CX-TRAFFIC-DIR A 1 DFR 1387 7360 2 PIWA2-3CX-ROADWAY-TYPE A 2 DFR 1388 7370 2 PIWA2-3CX-PHYSICAL-ID A 7 DFR 1389 7380 2 PIWA2-3CX-GENERIC-ID A 7 DFR 1390 7390 2 PIWA2-3CX-INTP-ID A 7 /* INTERNAL USE DFR 1391 7400 2 PIWA2-3CX-INTF-ID A 7 /* INTERNAL USE DFR 1392 7410 2 PIWA2-3CX-STREET-STATUS A 1 DFR 1393 7420 2 PIWA2-3CX-STREET-WIDTH A 3 DFR 1394 7430 2 PIWA2-3CX-STREET-WIDTH-IRREG A 1 DFR 1395 7440 2 PIWA2-3CX-BIKE-LANE A 1 DFR 1396 7450 2 PIWA2-3CX-FED-CLASS-CODE A 2 DFR 1397 7460 2 PIWA2-3CX-ROW-TYPE A 1 DFR 1398 7470 2 PIWA2-3CX-LGC-LIST A 10 DFR 1399 7480 2 PIWA2-3CX-LEGACY-ID A 7 DFR 1400 7490 2 PIWA2-3CX-NTA-NAME A 75 DFR 1401 7500 2 PIWA2-3CX-FROM-XCOORD A 7 DFR 1402 7510 2 PIWA2-3CX-FROM-YCOORD A 7 DFR 1403 7520 2 PIWA2-3CX-TO-XCOORD A 7 DFR 1404 7530 2 PIWA2-3CX-TO-YCOORD A 7 DFR 1405 7540 2 PIWA2-3CX-FROM-LATITUDE A 9 DFR 7550 2 PIWA2-3CX-FROM-LONGITUDE A 11 DFR 7560 2 PIWA2-3CX-TO-LATITUDE A 9 DFR 7570 2 PIWA2-3CX-TO-LONGITUDE A 11 DFR 7580 2 PIWA2-3CX-BLOCKFACE-ID A 10 /* V16.1 ADD DFR 7590 2 PIWA2-3CX-NBR-TRAVEL-LANES A 2 /* V16.1 ADD DFR 7600 2 PIWA2-3CX-NBR-PARK-LANES A 2 /* V16.1 ADD DFR 7610 2 PIWA2-3CX-NBR-TOTAL-LANES A 2 /* V16.1 ADD DFR 7620 2 PIWA2-3CX-BIKE-LANE-2 A 2 /* V16.4 ADDITION DFR 7630 2 PIWA2-3CX-STR-WIDTH-MAX A 3 /* V16.4 ADDITION DFR 7640 2 PIWA2-3CX-BIKE-TRAFFIC-DIR A 2 /* V17.1 ADDITION DFR 7650 2 PIWA2-3CX-SPEED-LIMIT A 2 /* V17.4 ADDITION DFR 7660 2 PIWA2-3CX-PUMA-CODE A 5 /* V18.1 ADDITION DFR 7670 2 PIWA2-3CX-POLICE-SECTOR A 4 /* V19.2 ADDITION DFR 7680 2 FILLER-3CX-FILL1560 A 287 /* V17.1,V18.1 MOD DFR 1406 7690 * 2 FILLER-3CX-FILL1560 A 300 /* V16.4 ALTERATION CFR 1406 7700 * 2 FILLER-3CX-FILL1560 A 305 /* V16.1 MOD CFR 1406 7710 * 2 PIWA2-3CX-PSEUDO-FILER A 3150 CFR 1225 7720 * * ******************************** * ********** ****** C 7730 * * END OF FCT 3CX LAYOUT ********* * ********** ****** C 7740 R 1 GEOLP2 DRR 1407 7750 2 PIWA2-3CX-SEGAUX A 850 /* SAME AS FN 3CX DFR 1408 7760 2 PIWA2-3CX-SEGAUX-FILL A 6 DFR 1409 7770 2 PIWA2-3CX-SEGAUX-CTR A 4 DFR 1410 7780 2 PIWA2-3CX-SEGAUX-SEGS A 7 (1:70) DFRI1 1411 M 7790 * 2 PIWA2-3CX-AUX-PSEUDO-FILLER A 2650 CFR 1223 7800 * ** ******************************** * ********** FN3C AUX SEGS C 7810 * * END OF FCT 3CX AUX LAYOUT***** * ********** ******* C 7820 * ** ******************************** * ********** ************* C 7830 * ** ******************************** * ********** ************* C 7840 * * BEGINNING OF FUNCTION 5 LAYOUT * **** ******* C 7850 R 1 GEOLP2 DRR 1412 7860 2 PIWA2-FN5-ADDR-MATCHING-KEY A 33 DFR 1413 7870 2 FILLER-1600 A 267 DFR 1414 7880 * * END OF FUNCTION 5 LAYOUT * **** ******* C 7890 * - -------------------------------- - ---- -------------------------------- C ***** End of List ***** GEOLP21A COPY File 0010 1 GEOLP21A /*FCT 1A,BL USE SAME WA2 AYOUT DS 0082 0020 * * THE FIELD P2NAT1A IS USED AS A PARAMETER TO CALL GEOSUPPORT C 0030 2 P2NAT1A A 21 DK 0084 0040 R 2 P2NAT1A DRR 0085 0050 3 PIWA2-1A-ACCESS-KEY A 21 DFR 0086 0060 2 PIWA2-1A-CONT-PARITY A 1 /* OR DUP ADDR IND DK 0087 0070 2 PIWA2-1A-LOW-HOUSENUM A 11 /* SORT FORMAT DK 0088 0080 2 PIWA2-1A-BBL A 10 DK 0089 0090 R 2 PIWA2-1A-BBL DRR 0090 0100 3 PIWA2-1A-BBL-BORO A 1 DFR 0091 0110 3 PIWA2-1A-BLOCK A 5 DFR 0092 0120 3 PIWA2-1A-LOT A 4 DFR 0093 0130 2 PIWA2-1A-LOT-VERSION A 1 /* NYI */ DK 0094 0140 2 PIWA2-1A-SCC A 1 DK 0095 0150 2 FILLER-100 A 1 DK 0096 0160 2 PIWA2-1A-GENERAL-LOT-INFO DS 0097 0170 3 PIWA2-1A-RPAD-BLDG-CLASS A 2 DK 0098 0180 3 PIWA2-1A-CORNER-CODE A 2 DK 0099 0190 3 PIWA2-1A-NUM-OF-STRUCTURES A 4 DK 0100 0200 3 PIWA2-1A-NUM-OF-BLOCKFACES A 2 DK 0101 0210 3 PIWA2-1A-INTERIOR-FLAG A 1 DK 0102 0220 3 PIWA2-1A-VACANT-FLAG A 1 DK 0103 0230 3 PIWA2-1A-IRREG-LOT-FLAG A 1 DK 0104 0240 2 PIWA2-1A-MARBLE-RIKERS-FLAG A 1 DK 0105 0250 2 PIWA2-1A-ADDR-LIST-OVFLOW-FLAG A 1 DK 0106 0260 2 PIWA2-1A-STROLL-KEY A 19 DK 0107 0270 R 2 PIWA2-1A-STROLL-KEY DRR 0108 0280 3 PIWA2-1A-STROLL-BORO A 1 DFR 0109 0290 3 PIWA2-1A-STROLL-5SC A 5 DFR 0110 0300 3 PIWA2-1A-STROLL-SIDE-OF-STR A 1 /* L OR R DFR 0111 0310 3 PIWA2-1A-STROLL-HI-HOUSENUM A 11 /* SORT FORMAT DFR 0112 0320 3 FILLER-200 A 1 DFR 0113 0330 2 FILLER-300 A 1 /* FOR GSS USE DK 0114 0340 2 PIWA2-1A-BIN A 7 DK 0115 0350 2 PIWA2-1A-CONDO-FLAG A 1 DK 0116 0360 2 FILLER-400 A 1 DK 0117 0370 2 PIWA2-1A-RPAD-CONDO-ID-NUM A 4 DK 0118 0380 2 PIWA2-1A-CONDO-UNIT-ID-NUM A 7 DK 0119 0390 2 PIWA2-1A-CONDO-BILL-BBL A 10 DK 0120 0400 2 PIWA2-1A-CONDO-BILL-BBL-VER A 1 DK 0121 0410 2 PIWA2-1A-CONDO-BILL-BBL-SCC A 1 DK 0122 0420 2 PIWA2-1A-CONDO-LOW-BBL A 10 DK 0123 0430 2 PIWA2-1A-CONDO-LOW-BBL-VER A 1 DK 0124 0440 2 PIWA2-1A-CONDO-HIGH-BBL A 10 DK 0125 0450 2 PIWA2-1A-CONDO-HIGH-BBL-VER A 1 DK 0126 0460 2 FILLER-500 A 15 DK 0127 0470 2 PIWA1-1A-COOP-NUM A 4 DK 0128 0480 2 PIWA2-1A-SANBORN A 8 DK 0129 0490 R 2 PIWA2-1A-SANBORN DRR 0130 0500 3 PIWA2-1A-SANBORN-BORO A 1 DFR 0131 0510 3 PIWA2-1A-SANBORN-VOL A 3 DFR 0132 0520 3 PIWA2-1A-SANBORN-PAGE A 4 DFR 0133 0530 2 PIWA2-1A-COMMERC-DIST A 5 DK 0134 0540 2 PIWA2-1A-DOF-MAP-BORO A 1 DK 0135 0550 2 PIWA2-1A-DOF-MAP-SECVOL A 4 DK 0136 0560 2 PIWA2-1A-DOF-MAP-PAGE A 4 DK 0137 0570 2 FILLER-1A-RESERVED-DCP A 3 DK 0138 0580 2 PIWA2-1A-LATITUDE A 9 DK 0139 0590 2 PIWA2-1A-LONGITUDE A 11 DK 0140 0600 2 PIWA2-1A-X-COORD A 7 DK 0141 0610 2 PIWA2-1A-Y-COORD A 7 DK 0142 0620 2 PIWA2-1A-BID A 6 DK 0143 0630 2 PIWA2-1A-TPAD-BIN-ST A 1 /* CURRENT STATUS */ DK 0144 0640 2 PIWA2-1A-TPAD-NEW-BIN A 7 /* NEW BIN */ DK 0145 0650 2 PIWA2-1A-TPAD-NEW-BIN-ST A 1 /* NEW BIN STATUS */ DK 0146 0660 2 PIWA2-1A-TPAD-CONFLICT A 1 /* CONFLICT FLAG */ DK 0147 0670 2 PIWA2-1A-DCP-ZONE-MAP A 3 /* V17.4 ADDITION DK 0680 2 FILLER-650 A 6 DK 0148 0690 2 FILLER-700 A 8 /* FOR GSS USE DK 0149 0700 2 PIWA2-1A-NUM-OF-ADDR A 4 DK 0150 0710 2 PIWA2-1A-LIST-OF-ADDR (1:21) DS I1 0151 M 0720 3 PIWA2-1A-LIST-LOW-HOUSENUM A 16 /* DISPLAY FORMAT DK 0152 0730 3 PIWA2-1A-LIST-HI-HOUSENUM A 16 /* DISPLAY FORMAT DK 0153 0740 3 PIWA2-1A-LIST-BORO A 1 DK 0154 0750 3 PIWA2-1A-LIST-5SC A 5 DK 0155 0760 3 PIWA2-1A-LIST-LGC A 2 DK 0156 0770 3 PIWA2-1A-LIST-BIN A 7 DK 0157 0780 3 PIWA2-1A-LIST-SIDE-OF-STR A 1 /* L OR R DK 0158 0790 3 PIWA2-1A-LIST-ADDR-TYPE A 1 /* P=NAP, B=NAB, MAL DK 0159 0800 * * /* BLANK=NORMAL C 0810 3 PIWA2-1A-LIST-TPAD-STATUS A 1 /* 0 - 9 DK 0160 0820 3 FILLER-800 A 3 DK 0161 ***** End of List ***** GEOLP2AL COPY File 0010 1 GEOLP2AL /* FCT 1A, BL LONG WA2 WA2 DS 0572 0020 * * THE FIELD P2NAT1AL IS USED AS A PARAMETER TO CALL GEOSUPPORT C 0030 2 P2NAT1AL A 21 DK 0574 0040 R 2 P2NAT1AL DRR 0575 0050 3 PIWA2-1AL-ACCESS-KEY A 21 DFR 0576 0060 * * BEGINNING OF FUNCTION 1AL LAYOUT * ********** ******************* C 0070 2 PIWA2-1AL-CONT-PARITY A 1 /* OR DUP ADDR IND DK 0577 0080 2 PIWA2-1AL-LOW-HOUSENUM A 11 /* SORT FORMAT DK 0578 0090 2 PIWA2-1AL-BBL A 10 DK 0579 0100 R 2 PIWA2-1AL-BBL DRR 0580 0110 3 PIWA2-1AL-BBL-BORO A 1 DFR 0581 0120 3 PIWA2-1AL-BLOCK A 5 DFR 0582 0130 3 PIWA2-1AL-LOT A 4 DFR 0583 0140 2 FILLER-1AL-LOT-VERSION A 1 /* NA DK 0584 0150 2 PIWA2-1AL-SCC A 1 DK 0585 0160 2 FILLER-100 A 1 DK 0586 0170 2 PIWA2-1AL-GENERAL-LOT-INFO DS 0587 0180 3 PIWA2-1AL-RPAD-BLDG-CLASS A 2 DK 0588 0190 3 PIWA2-1AL-CORNER-CODE A 2 DK 0589 0200 3 PIWA2-1AL-NUM-OF-STRUCTURES A 4 DK 0590 0210 3 PIWA2-1AL-NUM-OF-BLOCKFACES A 2 DK 0591 0220 3 PIWA2-1AL-INTERIOR-FLAG A 1 DK 0592 0230 3 PIWA2-1AL-VACANT-FLAG A 1 DK 0593 0240 3 PIWA2-1AL-IRREG-LOT-FLAG A 1 DK 0594 0250 2 PIWA2-1AL-MARBLE-RIKERS-FLAG A 1 DK 0595 0260 2 PIWA2-1AL-ADDR-LIST-OVFLOW-FLAG A 1 DK 0596 0270 2 PIWA2-1AL-STROLL-KEY A 19 DK 0597 0280 R 2 PIWA2-1AL-STROLL-KEY DRR 0598 0290 3 PIWA2-1AL-STROLL-KEY-BORO A 1 DFR 0599 0300 3 PIWA2-1AL-STROLL-KEY-5SC A 5 DFR 0600 0310 3 PIWA2-1AL-STROLL-SIDE-OF-STR A 1 /* L OR R DFR 0601 0320 3 PIWA2-1AL-STROLL-HI-HOUSENUM A 11 /* SORT FORMAT DFR 0602 0330 3 FILLER-200 A 1 DFR 0603 0340 2 FILLER-300 A 1 /* FOR GSS USE DK 0604 0350 2 PIWA2-1AL-BIN A 7 DK 0605 0360 2 PIWA2-1AL-CONDO-FLAG A 1 DK 0606 0370 2 FILLER-400 A 1 DK 0607 0380 2 PIWA2-1AL-RPAD-CONDO-ID-NUM A 4 DK 0608 0390 2 PIWA2-1AL-CONDO-UNIT-ID-NUM A 7 DK 0609 0400 2 PIWA2-1AL-CONDO-BILL-BBL A 10 DK 0610 0410 2 PIWA2-1AL-CONDO-BILL-BBL-VER A 1 DK 0611 0420 2 PIWA2-1AL-CONDO-BILL-BBL-SCC A 1 DK 0612 0430 2 PIWA2-1AL-CONDO-LOW-BBL A 10 DK 0613 0440 2 PIWA2-1AL-CONDO-LOW-BBL-VER A 1 DK 0614 0450 2 PIWA2-1AL-CONDO-HIGH-BBL A 10 DK 0615 0460 2 PIWA2-1AL-CONDO-HIGH-BBL-VER A 1 DK 0616 0470 2 FILLER-500 A 15 DK 0617 0480 2 PIWA2-1AL-COOP-NUM A 4 DK 0618 0490 2 PIWA2-1AL-SANBORN A 8 DK 0619 0500 R 2 PIWA2-1AL-SANBORN DRR 0620 0510 3 PIWA2-1AL-SANBORN-BORO A 1 DFR 0621 0520 3 PIWA2-1AL-SANBORN-VOL A 3 DFR 0622 0530 3 PIWA2-1AL-SANBORN-PAGE A 4 DFR 0623 0540 2 PIWA2-1AL-COMMERC-DIST A 5 DK 0624 0550 2 PIWA2-1AL-DOF-MAP-BORO A 1 DK 0625 0560 2 PIWA2-1AL-DOF-MAP-SECVOL A 4 DK 0626 0570 2 PIWA2-1AL-DOF-MAP-PAGE A 4 DK 0627 0580 2 FILLER-600 A 3 DK 0628 0590 2 PIWA2-1AL-LATITUDE A 9 DK 0629 0600 2 PIWA2-1AL-LONGITUDE A 11 DK 0630 0610 2 PIWA2-1AL-X-COORD A 7 DK 0631 0620 2 PIWA2-1AL-Y-COORD A 7 DK 0632 0630 2 PIWA2-1AL-BID A 6 DK 0633 0640 2 PIWA2-1AL-TPAD-BIN-ST A 1 /*CURRENT STATUS DK 0634 0650 2 PIWA2-1AL-TPAD-NEW-BIN A 7 /*NEW BIN DK 0635 0660 2 PIWA2-1AL-TPAD-NEW-BIN-ST A 1 /*NEW BIN STATUS DK 0636 0670 2 PIWA2-1AL-TPAD-CONFLICT A 1 /*CONFLICT FLAG DK 0637 0680 2 PIWA2-1AL-DCP-ZONE-MAP A 3 /* V17.4 ADDITION DK 0690 2 FILLER-650 A 6 DK 0638 0700 2 FILLER-700 A 8 /* LGC GSS USE DK 0639 0710 2 PIWA2-1AL-NUM-OF-BINS A 4 DK 0640 0720 2 PIWA2-1AL-TPAD-BINLIST A 17500 DK 0641 0730 R 2 PIWA2-1AL-TPAD-BINLIST /* REDEF. BEGIN : PIWA2-1AL-TPAD DRR 0642 0740 3 PIWA2-1AL-TPAD-BINS (1:2187) DSRI1 0643 M 0750 4 PIWA2-1AL-TPAD-BIN A 7 DKR 0644 0760 4 PIWA2-1AL-TPAD-BINS-STAT A 1 DKR 0645 0770 3 PIWA2-1AL-TPAD-FILL A 4 DKR 0646 0780 R 2 PIWA2-1AL-TPAD-BINLIST DRR 0647 0790 3 PIWA2-1AL-BINS A 7 (1:2500) DKRI1 0648 M 0800 * ** END OF FUNCTION 1AL LAYOUT ***** * ********** ********************** C 0810 * -- -------------------------------- - ---------- -------------------------- C 0820 * ** BEGINNING OF FCT 1/1E EXTENDED * * ********** ********************** C 0830 R 1 GEOLP2AL DRR 0649 0840 2 PIWA2-1EX-ACCESS-KEY A 21 DFR 0650 0850 2 PIWA2-1EX-CONT-PARITY A 1 /* (OR DUP ADDR IND) DFR 0651 0860 2 PIWA2-1EX-LOW-HOUSENUM A 11 /* SORT FORMAT DFR 0652 0870 2 PIWA2-1EX-HI-HOUSENUM A 11 /* SORT FORMAT DFR 0653 0880 2 PIWA2-1EX-PREFERRED-LGC A 2 DFR 0654 0890 2 PIWA2-1EX-NUM-X-ST-LOW-END A 1 DFR 0655 0900 2 PIWA2-1EX-LOW-B5SC A 6 (1:5) /* 30-BYTES DFRI1 0656 M 0910 2 PIWA2-1EX-NUM-X-ST-HI-END A 1 DFR 0657 0920 2 PIWA2-1EX-HI-B5SC A 6 (1:5) /* 30-BYTES DFRI1 0658 M 0930 2 PIWA2-1EX-LIONKEY A 10 DFR 0659 0940 R 2 PIWA2-1EX-LIONKEY DRR 0660 0950 3 PIWA2-1EX-LION-BORO A 1 DFR 0661 0960 3 PIWA2-1EX-LION-FACECODE A 4 DFR 0662 0970 3 PIWA2-1EX-LION-SEQ A 5 DFR 0663 0980 2 PIWA2-1EX-SPECIAL-ADDR-FLAG A 1 DFR 0664 0990 2 PIWA2-1EX-SIDE-OF-STR A 1 DFR 0665 1000 2 PIWA2-1EX-SEG-LEN A 5 DFR 0666 1010 2 PIWA2-1EX-X-COORD A 7 DFR 0667 1020 2 PIWA2-1EX-Y-COORD A 7 DFR 0668 1030 2 FILLER-1EX-100 A 7 /* FOR ZCOORD DFR 0669 1040 2 FILLER-1EX-200 A 1 /* FOR GSS USE DFR 0670 1050 2 PIWA2-1EX-MARBLE-RIKERS-FLAG A 1 DFR 0671 1060 2 PIWA2-1EX-DOT-SLA A 1 DFR 0672 1070 2 PIWA2-1EX-COM-DIST A 3 DFR 0673 1080 R 2 PIWA2-1EX-COM-DIST DRR 0674 1090 3 PIWA2-1EX-COM-DIST-BORO A 1 DFR 0675 1100 3 PIWA2-1EX-COM-DIST-NUM A 2 DFR 0676 1110 2 PIWA2-1EX-ZIP A 5 DFR 0677 1120 * * * **** ***** C 1130 * * THE FN1E FIELDS ARE VALID ONLY * **** ***** C 1140 * * FOR FUNCTION 1E, NOT FUNC 1. * **** ***** C 1150 2 PIWA2-1EX-ELECT-DIST A 3 DFR 0678 1160 2 PIWA2-1EX-ASSEM-DIST A 2 DFR 0679 1170 2 PIWA2-1EX-SPLIT-ED-FLAG A 1 DFR 0680 1180 2 PIWA2-1EX-CONG-DIST A 2 DFR 0681 1190 2 PIWA2-1EX-SENATE-DIST A 2 DFR 0682 1200 2 PIWA2-1EX-COURT-DIST A 2 DFR 0683 1210 2 PIWA2-1EX-COUNCIL-DIST A 2 DFR 0684 1220 * * * **** ***** C 1230 2 PIWA2-1EX-HEALTH-CENTER-DIST A 2 DFR 0685 1240 2 PIWA2-1EX-HEALTH-AREA A 4 DFR 0686 1250 2 PIWA2-1EX-SANI-DIST A 3 DFR 0687 1260 R 2 PIWA2-1EX-SANI-DIST DRR 0688 1270 3 PIWA2-1EX-SANI-DIST-BORO A 1 DFR 0689 1280 3 PIWA2-1EX-SANI-DIST-NUM A 2 DFR 0690 1290 2 PIWA2-1EX-SANI-SUBSEC A 2 DFR 0691 1300 2 PIWA2-1EX-SANI-REG A 5 DFR 0692 1310 2 PIWA2-1EX-SANI-REC A 3 DFR 0693 1320 2 PIWA2-1EX-POLICE-DIST A 4 DFR 0694 1330 R 2 PIWA2-1EX-POLICE-DIST DRR 0695 1340 3 PIWA2-1EX-POL-PAT-BORO-CMD A 1 DFR 0696 1350 3 PIWA2-1EX-POL-PRECINCT A 3 DFR 0697 1360 2 PIWA2-1EX-FIRE-DIV A 2 DFR 0698 1370 2 PIWA2-1EX-FIRE-BAT A 2 DFR 0699 1380 2 PIWA2-1EX-FIRE-CO A 4 DFR 0700 1390 R 2 PIWA2-1EX-FIRE-CO DRR 0701 1400 3 PIWA2-1EX-FIRE-CO-TYPE A 1 DFR 0702 1410 3 PIWA2-1EX-FIRE-CO-NUM A 3 DFR 0703 1420 2 PIWA2-1EX-SCHL-DIST-SPLIT-FLAG A 1 DFR 0704 1430 2 PIWA2-1EX-SCHL-DIST A 2 DFR 0705 1440 2 PIWA2-1EX-DYN-BLK A 3 DFR 0706 1450 2 PIWA2-1EX-POLICE-PAT-BORO A 2 DFR 0707 1460 2 PIWA2-1EX-FEATURE-TYPE A 1 DFR 0708 1470 2 PIWA2-1EX-SEGMENT-TYPE A 1 DFR 0709 1480 2 PIWA2-1EX-ALX A 1 DFR 0710 1490 2 PIWA2-1EX-COINCIDENT-SEG-CTR A 1 DFR 0711 1500 2 FILLER-290 A 3 DFR 0712 1510 2 PIWA2-1EX-1990-CENSUS-TRACT A 6 DFR 0713 1520 2 PIWA2-1EX-2010-CENSUS-TRACT A 6 DFR 0714 1530 2 PIWA2-1EX-2010-CENSUS-BLOCK A 4 DFR 0715 1540 2 PIWA2-1EX-2010-CENSUS-BLOCK-SUF A 1 DFR 0716 1550 2 PIWA2-1EX-2000-CENSUS-TRACT A 6 /* NA DFR 0717 1560 2 PIWA2-1EX-2000-CENSUS-BLOCK A 4 /* NA DFR 0718 1570 2 PIWA2-1EX-2000-CENSUS-BLOCK-SUF A 1 /* NA DFR 0719 1580 2 PIWA2-1EX-NTA A 4 /*NEIGHBORHOOD DFR 0720 1590 * * /*TABULATION AREA*/ C 1600 2 PIWA2-1EX-SANIT-SNOW-PRIORITY A 1 /*SANITATION STRT DFR 0721 1610 * * /*SNOW PRIORITY C 1620 2 PIWA2-1EX-SANIT-ORGANICS A 5 DFR 0722 1630 2 PIWA2-1EX-SANIT-BULK-PICK-UP A 5 /* V16.4 ADDITION DFR 0723 1640 * 2 PIWA2-1EX-SANIT-RESERVED A 5 CFR 0723 1650 2 PIWA2-1EX-HURRICANE-ZONE A 2 /*OEM HURRICANE EVAC ZONE DFR 0724 1660 2 FILLER-1EX-300 A 11 DFR 0725 1670 2 PIWA2-1EX-UHNS A 11 DFR 0726 1680 2 PIWA2-1EX-REAL-B7SC A 8 DFR 0727 1690 2 PIWA2-1EX-SEGMENT-ID A 7 DFR 0728 1700 2 PIWA2-1EX-CURVE-FLAG A 1 DFR 0729 1710 2 PIWA2-1EX-LGC A 8 DFR 0730 1720 2 PIWA2-1EX-BOE-PTR A 1 DFR 0731 1730 2 PIWA2-1EX-AZIMUTH A 3 DFR 0732 1740 2 PIWA2-1EX-ORIENT A 1 DFR 0733 1750 2 PIWA2-1EX-X-LOW A 7 DFR 0734 1760 2 PIWA2-1EX-Y-LOW A 7 DFR 0735 1770 2 PIWA2-1EX-Z-LOW A 7 DFR 0736 1780 2 PIWA2-1EX-X-HI A 7 DFR 0737 1790 2 PIWA2-1EX-Y-HI A 7 DFR 0738 1800 2 PIWA2-1EX-Z-HI A 7 DFR 0739 1810 2 PIWA2-1EX-X-CC A 7 DFR 0740 1820 2 PIWA2-1EX-Y-CC A 7 DFR 0741 1830 2 PIWA2-1EX-Z-CC A 7 DFR 0742 1840 2 PIWA2-1EX-RADIUS A 7 DFR 0743 1850 2 PIWA2-1EX-SECANT A 1 DFR 0744 1860 2 PIWA2-1EX-ANGLE-FROM A 5 DFR 0745 1870 2 PIWA2-1EX-ANGLE-TO A 5 DFR 0746 1880 2 PIWA2-1EX-NODE-FROM A 7 DFR 0747 1890 2 PIWA2-1EX-NODE-TO A 7 DFR 0748 1900 2 PIWA2-1EX-VANITY-LION A 10 DFR 0749 1910 2 PIWA2-1EX-SOS A 1 DFR 0750 1920 2 PIWA2-1EX-SPLIT-LOHSN A 11 DFR 0751 1930 2 PIWA2-1EX-TD A 1 DFR 0752 1940 2 PIWA2-1EX-TR A 10 DFR 0753 1950 2 PIWA2-1EX-CURVE-FRACTION A 3 DFR 0754 1960 2 PIWA2-1EX-ROADWAY-TYPE A 2 DFR 0755 1970 2 PIWA2-1EX-PHYSICAL-ID A 7 DFR 0756 1980 2 PIWA2-1EX-GENERIC-ID A 7 DFR 0757 1990 2 PIWA2-1EX-INTP-ID A 7 DFR 0758 2000 2 PIWA2-1EX-INTF-ID A 7 DFR 0759 2010 2 PIWA2-1EX-BIKE-LANE-2 A 2 /* V16.4 ADDITION DFR 2020 2 PIWA2-1EX-BIKE-TRAFFIC-DIR A 2 /* V17.1 ADDITION DFR 2030 2 PIWA2-1EX-FILL450 A 3 /* V17.1 ALTERATION DFR 0760 2040 * 2 PIWA2-1EX-FILL450 A 5 /* V16.4 ALTERATION CFR 0760 2050 * 2 PIWA2-1EX-FILL450 A 7 /* V16.1 REPLACEMENT CFR 0760 2060 2 PIWA2-1EX-STREET-STATUS A 1 DFR 0761 2070 2 PIWA2-1EX-STREET-WIDTH A 3 DFR 0762 2080 2 PIWA2-1EX-STREET-IRR A 1 DFR 0763 2090 2 PIWA2-1EX-BIKE-LANE A 1 DFR 0764 2100 2 PIWA2-1EX-FED-CLASS-CODE A 2 DFR 0765 2110 2 PIWA2-1EX-ROW-TYPE A 1 DFR 0766 2120 2 PIWA2-1EX-LGC-LIST-2 A 10 DFR 0767 2130 2 PIWA2-1EX-LEGACY-SEG-ID A 7 DFR 0768 2140 2 PIWA2-1EX-LGC-LIST-FROM-1 A 10 DFR 0769 2150 2 PIWA2-1EX-LGC-LIST-TO-1 A 10 DFR 0770 2160 2 PIWA2-1EX-LGC-LIST-FROM-2 A 10 DFR 0771 2170 2 PIWA2-1EX-LGC-LIST-TO-2 A 10 DFR 0772 2180 2 PIWA2-1EX-NOCROSS-FLG A 1 DFR 0773 2190 2 PIWA2-1EX-IND-SEG-LEN A 5 DFR 0774 2200 2 PIWA2-1EX-NTA-NAME A 75 DFR 0775 2210 2 PIWA2-1EX-USPS-CITY-NAME A 25 /*USPS PREFERRED CITY NAME DFR 0776 2220 2 PIWA2-1EX-LATITUDE A 9 DFR 0777 2230 2 PIWA2-1EX-LONGITUDE A 11 DFR 0778 2240 2 PIWA2-1EX-SEG-FROM-NODE A 7 DFR 2250 2 PIWA2-1EX-SEG-TO-NODE A 7 DFR 2260 2 PIWA2-1EX-SEG-FROM-XYZ A 21 DFR 2270 2 PIWA2-1EX-SEG-TO-XYZ A 21 DFR 2280 2 PIWA2-1EX-BLOCKFACE-ID A 10 /* V16.1 ADD DFR 2290 2 PIWA2-1EX-NBR-TRAVEL-LANES A 2 /* V16.1 ADD DFR 2300 2 PIWA2-1EX-NBR-PARK-LANES A 2 /* V16.1 ADD DFR 2310 2 PIWA2-1EX-NBR-TOTAL-LANES A 2 /* V16.1 ADD DFR 2320 2 PIWA2-1EX-STR-WIDTH-MAX A 3 /* V16.4 ADDITION DFR 2330 2 PIWA2-1EX-SPEED-LIMIT A 2 /* V17.4 ADDITION DFR 2340 2 PIWA2-1EX-PUMA-CODE A 5 /* V18.1 ADDITION DFR 2350 2 PIWA2-1EX-POLICE-SECTOR A 4 /* V19.2 ADDITION DFR 2360 2 PIWA2-1EX-POLICE-SRVC-AREA A 1 /* V19.2 ADDITION DFR 2370 2 FILLER-1EX-500 A 240 /* V16.1,V16.4,V18.1 MODS DFR 0779 2380 * 2 FILLER-1EX-500 A 255 /* V16.1 MOD CFR 0779 2390 * ** *** THE FOLLOWING FIELDS ARE IN ADDITION TO 1E ***************** CK 0432 2400 2 PIWA2-1EX-REASON-CODE A 1 DFR 0780 2410 2 PIWA2-1EX-REASON-CODE-QUAL A 1 DFR 0781 2420 2 PIWA2-1EX-WARN-CODE A 2 DFR 0782 2430 2 PIWA2-1EX-RETURN-CODE A 2 DFR 0783 2440 2 PIWA2-1EX-NUM-X-STS-LO-END A 1 DFR 0784 2450 2 PIWA2-1EX-LO-B7SC A 8 (1:5) DFRI1 0785 M 2460 2 PIWA2-1EX-NUM-X-STS-HI-END A 1 DFR 0786 2470 2 PIWA2-1EX-HI-B7SC A 8 (1:5) DFRI1 0787 M 2480 2 PIWA2-1EX-LO-ST-NAME A 32 (1:5) DFRI1 0788 M 2490 2 PIWA2-1EX-HI-ST-NAME A 32 (1:5) DFRI1 0789 M 2500 2 PIWA2-1EX-BOE-B7SC A 8 DFR 0790 2510 2 PIWA2-1EX-BOE-ST-NAME A 32 DFR 0791 2520 2 FILLER-1EX-600 A 52 DFR 0792 2530 * * END OF FUNCTION 1/1E LAYOUT * **** ******* C 2540 * - -------------------------------- - ---- -------------------------------- C 2550 * * BEGNING OF FCT 1A EXTENDED * ********** ******* C 2560 R 1 GEOLP2AL DRR 0793 2570 2 PIWA2-1AX-ACCESS-KEY A 21 DFR 0794 2580 2 PIWA2-1AX-CONT-PARITY A 1 /* OR DUP ADDR IND DFR 0795 2590 2 PIWA2-1AX-LOW-HOUSENUM A 11 /* SORT FORMAT DFR 0796 2600 2 PIWA2-1AX-BBL A 10 DFR 0797 2610 R 2 PIWA2-1AX-BBL DRR 0798 2620 3 PIWA2-1AX-BBL-BORO A 1 DFR 0799 2630 3 PIWA2-1AX-BLOCK A 5 DFR 0800 2640 3 PIWA2-1AX-LOT A 4 DFR 0801 2650 2 PIWA2-1AX-LOT-VERSION A 1 /* NYI */ DFR 0802 2660 2 PIWA2-1AX-SCC A 1 DFR 0803 2670 2 FILLER-1AX-100 A 1 DFR 0804 2680 2 PIWA2-1AX-GENERAL-LOT-INFO DSR 0805 2690 3 PIWA2-1AX-RPAD-BLDG-CLASS A 2 DKR 0806 2700 3 PIWA2-1AX-CORNER-CODE A 2 DKR 0807 2710 3 PIWA2-1AX-NUM-OF-STRUCTURES A 4 DKR 0808 2720 3 PIWA2-1AX-NUM-OF-BLOCKFACES A 2 DKR 0809 2730 3 PIWA2-1AX-INTERIOR-FLAG A 1 DKR 0810 2740 3 PIWA2-1AX-VACANT-FLAG A 1 DKR 0811 2750 3 PIWA2-1AX-IRREG-LOT-FLAG A 1 DKR 0812 2760 2 PIWA2-1AX-MARBLE-RIKERS-FLAG A 1 DKR 0813 2770 2 PIWA2-1AX-ADDR-LIST-OVFLOW-FLAG A 1 DKR 0814 2780 2 PIWA2-1AX-STROLL-KEY A 19 DKR 0815 2790 R 2 PIWA2-1AX-STROLL-KEY DRR 0816 2800 3 PIWA2-1AX-STROLL-BORO A 1 DKR 0817 2810 3 PIWA2-1AX-STROLL-5SC A 5 DKR 0818 2820 3 PIWA2-1AX-STROLL-SIDE-OF-STR A 1 /* L OR R DKR 0819 2830 3 PIWA2-1AX-STROLL-HI-HOUSENUM A 11 /* SORT FORMAT DKR 0820 2840 3 FILLER-1AX-200 A 1 DKR 0821 2850 2 FILLER-1AX-300 A 1 /* FOR GSS USE DKR 0822 2860 2 PIWA2-1AX-BIN A 7 DKR 0823 2870 2 PIWA2-1AX-CONDO-FLAG A 1 DKR 0824 2880 2 FILLER-1AX-400 A 1 DKR 0825 2890 2 PIWA2-1AX-RPAD-CONDO-ID-NUM A 4 DKR 0826 2900 2 PIWA2-1AX-CONDO-UNIT-ID-NUM A 7 DKR 0827 2910 2 PIWA2-1AX-CONDO-BILL-BBL A 10 DKR 0828 2920 2 PIWA2-1AX-CONDO-BILL-BBL-VER A 1 DKR 0829 2930 2 PIWA2-1AX-CONDO-BILL-BBL-SCC A 1 DKR 0830 2940 2 PIWA2-1AX-CONDO-LOW-BBL A 10 DKR 0831 2950 2 PIWA2-1AX-CONDO-LOW-BBL-VER A 1 DKR 0832 2960 2 PIWA2-1AX-CONDO-HIGH-BBL A 10 DKR 0833 2970 2 PIWA2-1AX-CONDO-HIGH-BBL-VER A 1 DKR 0834 2980 2 FILLER-1AX-600 A 15 DKR 0835 2990 2 PIWA1-1AX-COOP-NUM A 4 DKR 0836 3000 2 PIWA2-1AX-SANBORN A 8 DKR 0837 3010 R 2 PIWA2-1AX-SANBORN DRR 0838 3020 3 PIWA2-1AX-SANBORN-BORO A 1 DKR 0839 3030 3 PIWA2-1AX-SANBORN-VOL A 3 DKR 0840 3040 3 PIWA2-1AX-SANBORN-PAGE A 4 DKR 0841 3050 2 PIWA2-1AX-COMMERC-DIST A 5 DKR 0842 3060 2 PIWA2-1AX-DOF-MAP-BORO A 1 DKR 0843 3070 2 PIWA2-1AX-DOF-MAP-SECVOL A 4 DKR 0844 3080 2 PIWA2-1AX-DOF-MAP-PAGE A 4 DKR 0845 3090 2 FILLER-1AX-RESERVED-DCP A 3 DKR 0846 3100 2 PIWA2-1AX-LATITUDE A 9 DKR 0847 3110 2 PIWA2-1AX-LONGITUDE A 11 DKR 0848 3120 2 PIWA2-1AX-X-COORD A 7 DKR 0849 3130 2 PIWA2-1AX-Y-COORD A 7 DKR 0850 3140 2 PIWA2-1AX-BID A 6 DKR 0851 3150 2 PIWA2-1AX-TPAD-BIN-ST A 1 /* CURRENT STATUS */ DKR 0852 3160 2 PIWA2-1AX-TPAD-NEW-BIN A 7 /* NEW BIN */ DKR 0853 3170 2 PIWA2-1AX-TPAD-NEW-BIN-ST A 1 /* NEW BIN STATUS */ DKR 0854 3180 2 PIWA2-1AX-TPAD-CONFLICT A 1 /* CONFLICT FLAG */ DKR 0855 3190 2 PIWA2-1AX-DCP-ZONE-MAP A 3 /* V17.4 ADDITION DKR 3200 2 FILLER-1AX-650 A 6 DKR 0856 3210 2 FILLER-1AX-700 A 8 /* FOR GSS USE DKR 0857 3220 2 PIWA2-1AX-REASON-CODE A 1 DKR 0858 3230 2 PIWA2-1AX-REASON-CODE-QUAL A 1 DKR 0859 3240 2 PIWA2-1AX-WARN-CODE A 2 DKR 0860 3250 2 PIWA2-1AX-RETURN-CODE A 2 DKR 0861 3260 2 FILLER-1AX-750 A 108 DKR 0862 3270 2 PIWA2-1AX-NUM-OF-ADDR A 4 DKR 0863 3280 2 PIWA2-1AX-LIST-OF-ADDR (1:21) DSRI1 0864 M 3290 3 PIWA2-1AX-LIST-LOW-HOUSENUM A 16 /* DISPLAY FORMAT DKR 0865 3300 3 PIWA2-1AX-LIST-HI-HOUSENUM A 16 /* DISPLAY FORMAT DKR 0866 3310 3 PIWA2-1AX-LIST-BORO A 1 DKR 0867 3320 3 PIWA2-1AX-LIST-5SC A 5 DKR 0868 3330 3 PIWA2-1AX-LIST-LGC A 2 DKR 0869 3340 3 PIWA2-1AX-LIST-BIN A 7 DKR 0870 3350 3 PIWA2-1AX-LIST-SIDE-OF-STR A 1 /* L OR R DKR 0871 3360 3 PIWA2-1AX-ADDR-TYPE A 1 /* P=NAP, B=NAB, MAL DKR 0872 3370 R 3 PIWA2-1AX-ADDR-TYPE /* REDEF. BEGIN : PIWA2-1AX-ADDR DRR 0873 3380 4 PIWA2-1AX-LIST-ADDR-TYPE A 1 /* BLANK=NORMAL DKR 0874 3390 * * /* BLANK=NORMAL C 3400 3 PIWA2-1AX-TPAD-STATUS A 1 /* 0 - 9 DKR 0875 3410 R 3 PIWA2-1AX-TPAD-STATUS /* REDEF. BEGIN : PIWA2-1AX-TPAD DRR 0876 3420 4 PIWA2-1AX-LIST-TPAD-STATUS A 1 DKR 0877 3430 3 PIWA2-1AX-ST-NAME A 32 /* 0 - 9 DKR 0878 3440 R 3 PIWA2-1AX-ST-NAME /* REDEF. BEGIN : PIWA2-1AX-ST-N DRR 0879 3450 4 PIWA2-1AX-LIST-ST-NAME A 32 DKR 0880 3460 3 FILLER-800 A 34 DKR 0881 3470 * ** END OF FUNCTION 1A EXTENDED **** * ********** *********************** C 3480 * -- -------------------------------- - ---------- -------------------------- C 3490 * ** BEGINNING OF FUNCTION 1B ******* * ********** *********************** C 3500 R 1 GEOLP2AL DRR 0882 3510 2 PIWA2-1B-1-ACCESS-KEY A 21 DFR 0883 3520 2 PIWA2-1B-1-CONT-PARITY A 1 /* (OR DUP ADDR IND) DFR 0884 3530 2 PIWA2-1B-1-LOW-HOUSENUM A 11 /* SORT FORMAT DFR 0885 3540 2 PIWA2-1B-1-HI-HOUSENUM A 11 /* SORT FORMAT DFR 0886 3550 2 PIWA2-1B-1-PREFERRED-LGC A 2 DFR 0887 3560 2 PIWA2-1B-1-NUM-X-ST-LOW-END A 1 DFR 0888 3570 2 PIWA2-1B-1-LOW-B5SC A 6 (1:5) /* 30-BYTES DFRI1 0889 M 3580 2 PIWA2-1B-1-NUM-X-ST-HI-END A 1 DFR 0890 3590 2 PIWA2-1B-1-HI-B5SC A 6 (1:5) /* 30-BYTES DFRI1 0891 M 3600 2 PIWA2-1B-1-LIONKEY A 10 DFR 0892 3610 R 2 PIWA2-1B-1-LIONKEY DRR 0893 3620 3 PIWA2-1B-1-LION-BORO A 1 DFR 0894 3630 3 PIWA2-1B-1-LION-FACECODE A 4 DFR 0895 3640 3 PIWA2-1B-1-LION-SEQ A 5 DFR 0896 3650 2 PIWA2-1B-1-SPECIAL-ADDR-FLAG A 1 DFR 0897 3660 2 PIWA2-1B-1-SIDE-OF-STR A 1 DFR 0898 3670 2 PIWA2-1B-1-SEG-LEN A 5 DFR 0899 3680 2 PIWA2-1B-1-X-COORD A 7 DFR 0900 3690 2 PIWA2-1B-1-Y-COORD A 7 DFR 0901 3700 2 FILLER-1B-1-100 A 7 /* FOR ZCOORD DFR 0902 3710 2 PIWA2-1B-1-CD-ELIGIBLE A 1 DFR 0903 3720 2 PIWA2-1B-1-MARBLE-RIKERS-FLAG A 1 DFR 0904 3730 2 PIWA2-1B-1-DOT-SLA A 1 DFR 0905 3740 2 PIWA2-1B-1-COM-DIST A 3 DFR 0906 3750 R 2 PIWA2-1B-1-COM-DIST DRR 0907 3760 3 PIWA2-1B-1-COM-DIST-BORO A 1 DFR 0908 3770 3 PIWA2-1B-1-COM-DIST-NUM A 2 DFR 0909 3780 2 PIWA2-1B-1-ZIP A 5 DFR 0910 3790 * * * **** ***** C 3800 * * THE FN1E FIELDS ARE VALID ONLY * **** ***** C 3810 * * FOR FUNCTION 1E, NOT FUNC 1. * **** ***** C 3820 2 PIWA2-1B-1-ELECT-DIST A 3 DFR 0911 3830 2 PIWA2-1B-1-ASSEM-DIST A 2 DFR 0912 3840 2 PIWA2-1B-1-SPLIT-ED-FLAG A 1 DFR 0913 3850 2 PIWA2-1B-1-CONG-DIST A 2 DFR 0914 3860 2 PIWA2-1B-1-SENATE-DIST A 2 DFR 0915 3870 2 PIWA2-1B-1-COURT-DIST A 2 DFR 0916 3880 2 PIWA2-1B-1-COUNCIL-DIST A 2 DFR 0917 3890 * * * **** ***** C 3900 2 PIWA2-1B-1-HEALTH-CENTER-DIST A 2 DFR 0918 3910 2 PIWA2-1B-1-HEALTH-AREA A 4 DFR 0919 3920 2 PIWA2-1B-1-SANI-DIST A 3 DFR 0920 3930 R 2 PIWA2-1B-1-SANI-DIST DRR 0921 3940 3 PIWA2-1B-1-SANI-DIST-BORO A 1 DFR 0922 3950 3 PIWA2-1B-1-SANI-DIST-NUM A 2 DFR 0923 3960 2 PIWA2-1B-1-SANI-SUBSEC A 2 DFR 0924 3970 2 PIWA2-1B-1-SANI-REG A 5 DFR 0925 3980 2 PIWA2-1B-1-SANI-REC A 3 DFR 0926 3990 2 PIWA2-1B-1-POLICE-DIST A 4 DFR 0927 4000 R 2 PIWA2-1B-1-POLICE-DIST DRR 0928 4010 3 PIWA2-1B-1-POL-PAT-BORO-CMD A 1 DFR 0929 4020 3 PIWA2-1B-1-POL-PRECINCT A 3 DFR 0930 4030 2 PIWA2-1B-1-FIRE-DIV A 2 DFR 0931 4040 2 PIWA2-1B-1-FIRE-BAT A 2 DFR 0932 4050 2 PIWA2-1B-1-FIRE-CO A 4 DFR 0933 4060 R 2 PIWA2-1B-1-FIRE-CO DRR 0934 4070 3 PIWA2-1B-1-FIRE-CO-TYPE A 1 DFR 0935 4080 3 PIWA2-1B-1-FIRE-CO-NUM A 3 DFR 0936 4090 2 FILLER-1B-1-250 A 1 /* WAS SPLIT COM SCHL DFR 0937 4100 2 PIWA2-1B-1-SCHL-DIST A 2 DFR 0938 4110 2 PIWA2-1B-1-DYN-BLK A 3 DFR 0939 4120 2 PIWA2-1B-1-POLICE-PAT-BORO A 2 DFR 0940 4130 2 PIWA2-1B-1-FEATURE-TYPE A 1 DFR 0941 4140 2 PIWA2-1B-1-SEGMENT-TYPE A 1 DFR 0942 4150 2 PIWA2-1B-1-ALX A 1 DFR 0943 4160 2 PIWA2-1B-1-COINCIDENT-SEG-CTR A 1 DFR 0944 4170 2 FILLER-1B-1-290 A 3 DFR 0945 4180 2 PIWA2-1B-1-1990-CENSUS-TRACT A 6 DFR 0946 4190 2 PIWA2-1B-1-2010-CENSUS-TRACT A 6 DFR 0947 4200 2 PIWA2-1B-1-2010-CENSUS-BLOCK A 4 DFR 0948 4210 2 PIWA2-1B-1-2010-CENSUS-BLOCK-SUF A 1 DFR 0949 4220 2 PIWA2-1B-1-2000-CENSUS-TRACT A 6 /* NA DFR 0950 4230 2 PIWA2-1B-1-2000-CENSUS-BLOCK A 4 /* NA DFR 0951 4240 2 PIWA2-1B-1-2000-CENSUS-BLOCK-SUF A 1 /* NA DFR 0952 4250 2 PIWA2-1B-1-NTA A 4 /*NEIGHBORHOOD DFR 0953 4260 * * /*TABULATION AREA C 4270 2 PIWA2-1B-1-SANIT-SNOW-PRIORITY A 1 /*SANITATION STRT DFR 0954 4280 * * /*SNOW PRIORITY C 4290 2 PIWA2-1B-1-SANIT-ORGANICS A 5 DFR 0955 4300 2 PIWA2-1B-1-SANIT-BULK-PICK-UP A 5 /* V16.4 ADDITION DFR 0956 4310 * 2 PIWA2-1B-1-SANIT-RESERVED A 5 CFR 0956 4320 2 PIWA2-1B-1-HURRICANE-ZONE A 2 /*OEM HURRICANE EVAC ZONE DFR 0957 4330 2 FILLER-1B-1-300 A 11 DFR 0958 4340 2 PIWA2-1B-1-UHNS A 11 /* UNDERLYING HNS DFR 0959 4350 2 PIWA2-1B-1-REAL-B7SC A 8 DFR 0960 4360 2 PIWA2-1B-1-SEGMENT-ID A 7 DFR 0961 4370 2 PIWA2-1B-1-CURVE-FLAG A 1 DFR 0962 4380 2 PIWA2-1B-1-LGCS A 8 DFR 0963 4390 2 PIWA2-1B-1-BOE-PTR A 1 DFR 0964 4400 2 PIWA2-1B-1-AZIMUTH A 3 DFR 0965 4410 2 PIWA2-1B-1-ORIENT A 1 DFR 0966 4420 2 PIWA2-1B-1-X-LOW A 7 DFR 0967 4430 2 PIWA2-1B-1-Y-LOW A 7 DFR 0968 4440 2 PIWA2-1B-1-Z-LOW A 7 DFR 0969 4450 2 PIWA2-1B-1-X-HI A 7 DFR 0970 4460 2 PIWA2-1B-1-Y-HI A 7 DFR 0971 4470 2 PIWA2-1B-1-Z-HI A 7 DFR 0972 4480 2 PIWA2-1B-1-X-CC A 7 DFR 0973 4490 2 PIWA2-1B-1-Y-CC A 7 DFR 0974 4500 2 PIWA2-1B-1-Z-CC A 7 DFR 0975 4510 2 PIWA2-1B-1-RADIUS A 7 DFR 0976 4520 2 PIWA2-1B-1-SECANT A 1 DFR 0977 4530 2 PIWA2-1B-1-ANGLE-FROM A 5 DFR 0978 4540 2 PIWA2-1B-1-ANGLE-TO A 5 DFR 0979 4550 2 PIWA2-1B-1-NODE-FROM A 7 DFR 0980 4560 2 PIWA2-1B-1-NODE-TO A 7 DFR 0981 4570 2 PIWA2-1B-1-VANITY-LION A 10 DFR 0982 4580 2 PIWA2-1B-1-SOS A 1 DFR 0983 4590 2 PIWA2-1B-1-SPLIT-LOHSN A 11 DFR 0984 4600 2 PIWA2-1B-1-TD A 1 DFR 0985 4610 2 PIWA2-1B-1-TR A 10 DFR 0986 4620 2 PIWA2-1B-1-CURVE-FRACTION A 3 DFR 0987 4630 2 PIWA2-1B-1-ROADWAY-TYPE A 2 DFR 0988 4640 2 PIWA2-1B-1-PHYSICAL-ID A 7 DFR 0989 4650 2 PIWA2-1B-1-GENERIC-ID A 7 DFR 0990 4660 2 PIWA2-1B-1-INTP-ID A 7 DFR 0991 4670 2 PIWA2-1B-1-INTF-ID A 7 DFR 0992 4680 2 PIWA2-1B-1-BIKE-LANE-2 A 2 DFR 4690 2 PIWA2-1B-1-BIKE-TRAFFIC-DIR A 2 /* V17.1 ADDITION DFR 4700 2 PIWA2-1B-1-FILL450 A 3 /* V17.1 ALTERATION DFR 0993 4710 * 2 PIWA2-1B-1-FILL450 A 5 /* V16.4 ALTERATION CFR 0993 4720 * 2 PIWA2-1B-1-FILL450 A 7 /* V16.1 REPLACEMENT CFR 0993 4730 2 PIWA2-1B-1-STREET-STATUS A 1 DFR 0994 4740 2 PIWA2-1B-1-STREET-WIDTH A 3 DFR 0995 4750 2 PIWA2-1B-1-STREET-WIDTH-IRR A 1 DFR 0996 4760 2 PIWA2-1B-1-BIKE-LANE A 1 DFR 0997 4770 2 PIWA2-1B-1-FED-CLASS-CODE A 2 DFR 0998 4780 2 PIWA2-1B-1-ROW-TYPE A 1 DFR 0999 4790 2 PIWA2-1B-1-LGC-LIST-2 A 10 DFR 1000 4800 2 PIWA2-1B-1-LEGACY-SEG-ID A 7 DFR 1001 4810 2 PIWA2-1B-1-LGC-LIST-FROM-1 A 10 DFR 1002 4820 2 PIWA2-1B-1-LGC-LIST-TO-1 A 10 DFR 1003 4830 2 PIWA2-1B-1-LGC-LIST-FROM-2 A 10 DFR 1004 4840 2 PIWA2-1B-1-LGC-LIST-TO-2 A 10 DFR 1005 4850 2 PIWA2-1B-1-NOCROSS-FLG A 1 DFR 1006 4860 2 PIWA2-1B-1-IND-SEG-LEN A 5 DFR 1007 4870 2 PIWA2-1B-1-NTA-NAME A 75 DFR 1008 4880 2 PIWA2-1B-1-USPS-CITY-NAME A 25 /*USPS PREFERRED CITY NAME DFR 1009 4890 2 PIWA2-1B-1-LATITUDE A 9 DFR 1010 4900 2 PIWA2-1B-1-LONGITUDE A 11 DFR 1011 4910 2 PIWA2-1B-1-SEG-FROM-NODE A 7 DFR 4920 2 PIWA2-1B-1-SEG-TO-NODE A 7 DFR 4930 2 PIWA2-1B-1-SEG-FROM-XYZ A 21 DFR 4940 2 PIWA2-1B-1-SEG-TO-XYZ A 21 DFR 4950 2 PIWA2-1B-1-BLOCKFACE-ID A 10 /* V16.1 ADD DFR 4960 2 PIWA2-1B-1-NBR-TRAVEL-LANES A 2 /* V16.1 ADD DFR 4970 2 PIWA2-1B-1-NBR-PARK-LANES A 2 /* V16.1 ADD DFR 4980 2 PIWA2-1B-1-NBR-TOTAL-LANES A 2 /* V16.1 ADD DFR 4990 2 PIWA2-1B-1-STR-WIDTH-MAX A 3 /* V16.4 ADDITION DFR 5000 2 PIWA2-1B-1-SPEED-LIMIT A 2 /* V17.4 ADDITION DFR 5010 2 PIWA2-1B-1-PUMA-CODE A 5 /* V18.1 ADDITION DFR 5020 2 PIWA2-1B-1-POLICE-SECTOR A 4 /* V19.2 ADDITION DFR 5030 2 PIWA2-1B-1-POLICE-SRVC-AREA A 1 /* V19.2 ADDITION DFR 5040 2 FILLER-1B-1-500 A 240 /* V16.4,V18.1 MOD DFR 1012 5050 * 2 FILLER-1B-1-500 A 255 /* V16.1 MOD CFR 1012 5060 * ** **** THE FOLLOWING FIELDS ARE IN ADDITION TO 1/1E**************** C 5070 2 PIWA2-1B-1-REASON-CODE A 1 DFR 1013 5080 2 PIWA2-1B-1-REASON-CODE-QUAL A 1 DFR 1014 5090 2 PIWA2-1B-1-WARN-CODE A 2 DFR 1015 5100 2 PIWA2-1B-1-RETURN-CODE A 2 DFR 1016 5110 2 PIWA2-1B-1-NUM-X-STS-LO-END A 1 DFR 1017 5120 2 PIWA2-1B-1-LO-B7SC A 8 (1:5) DFRI1 1018 M 5130 2 PIWA2-1B-1-NUM-X-STS-HI-END A 1 DFR 1019 5140 2 PIWA2-1B-1-HI-B7SC A 8 (1:5) DFRI1 1020 M 5150 2 PIWA2-1B-1-LO-ST-NAME A 32 (1:5) DFRI1 1021 M 5160 2 PIWA2-1B-1-HI-ST-NAME A 32 (1:5) DFRI1 1022 M 5170 2 PIWA2-1B-1-BOE-B7SC A 8 DFR 1023 5180 2 PIWA2-1B-1-BOE-ST-NAME A 32 DFR 1024 5190 2 FILLER-1B-1-600 A 52 DFR 1025 5200 * * ******************************** * ********** ****************** C 5210 * * THE FOLLOWING FIELDS ARE * ********** ******** C 5220 * * PROPERTY LEVEL FIELDS * ********** ******** C 5230 2 PIWA2-1B-1A-ACCESS-KEY A 21 /*CHG FROM LEVEL 3 TO 2??? DFR 1026 5240 2 PIWA2-1B-1A-CONT-PARITY A 1 /* OR DUP ADDR IND DFR 1027 5250 2 PIWA2-1B-1A-LOW-HOUSENUM A 11 /* SORT FORMAT DFR 1028 5260 2 PIWA2-1B-1A-BBL A 10 DFR 1029 5270 R 2 PIWA2-1B-1A-BBL DRR 1030 5280 3 PIWA2-1B-1A-BBL-BORO A 1 DFR 1031 5290 3 PIWA2-1B-1A-BLOCK A 5 DFR 1032 5300 3 PIWA2-1B-1A-LOT A 4 DFR 1033 5310 2 PIWA2-1B-1A-LOT-VERSION A 1 /* NYI */ DFR 1034 5320 2 PIWA2-1B-1A-SCC A 1 DFR 1035 5330 2 FILLER-1B-1A-100 A 1 DFR 1036 5340 2 PIWA2-1B-1A-GENERAL-LOT-INFO DSR 1037 5350 3 PIWA2-1B-1A-RPAD-BLDG-CLASS A 2 DKR 1038 5360 3 PIWA2-1B-1A-CORNER-CODE A 2 DKR 1039 5370 3 PIWA2-1B-1A-NUM-OF-STRUCTURES A 4 DKR 1040 5380 3 PIWA2-1B-1A-NUM-OF-BLOCKFACES A 2 DKR 1041 5390 3 PIWA2-1B-1A-INTERIOR-FLAG A 1 DKR 1042 5400 3 PIWA2-1B-1A-VACANT-FLAG A 1 DKR 1043 5410 3 PIWA2-1B-1A-IRREG-LOT-FLAG A 1 DKR 1044 5420 2 PIWA2-1B-1A-MARBLE-RIKERS-FLAG A 1 DKR 1045 5430 2 PIWA2-1B-1A-ADDR-LIST-OVFLOW-FLG A 1 /*FLAG,FLG????????? DKR 1046 5440 2 PIWA2-1B-1A-STROLL-KEY A 19 DKR 1047 5450 R 2 PIWA2-1B-1A-STROLL-KEY DRR 1048 5460 3 PIWA2-1B-1A-STROLL-BORO A 1 DKR 1049 5470 3 PIWA2-1B-1A-STROLL-5SC A 5 DKR 1050 5480 3 PIWA2-1B-1A-STROLL-SIDE-OF-STR A 1 /* L OR R DKR 1051 5490 3 PIWA2-1B-1A-STROLL-HI-HOUSENUM A 11 /* SORT FORMAT DKR 1052 5500 3 FILLER-1B-1A-200 A 1 DKR 1053 5510 2 FILLER-1B-1A-300 A 1 /* FOR GSS USE DKR 1054 5520 2 PIWA2-1B-1A-BIN A 7 DKR 1055 5530 2 PIWA2-1B-1A-CONDO-FLAG A 1 DKR 1056 5540 2 FILLER-1B-1A-400 A 1 DKR 1057 5550 2 PIWA2-1B-1A-RPAD-CONDO-ID-NUM A 4 DKR 1058 5560 2 PIWA2-1B-1A-CONDO-UNIT-ID-NUM A 7 DKR 1059 5570 2 PIWA2-1B-1A-CONDO-BILL-BBL A 10 DKR 1060 5580 2 PIWA2-1B-1A-CONDO-BILL-BBL-VER A 1 DKR 1061 5590 2 PIWA2-1B-1A-CONDO-BILL-BBL-SCC A 1 DKR 1062 5600 2 PIWA2-1B-1A-CONDO-LOW-BBL A 10 DKR 1063 5610 2 PIWA2-1B-1A-CONDO-LOW-BBL-VER A 1 DKR 1064 5620 2 PIWA2-1B-1A-CONDO-HIGH-BBL A 10 DKR 1065 5630 2 PIWA2-1B-1A-CONDO-HIGH-BBL-VER A 1 DKR 1066 5640 2 FILLER-1B-1A-500 A 15 DKR 1067 5650 2 PIWA1-1B-1A-COOP-NUM A 4 DKR 1068 5660 2 PIWA2-1B-1A-SANBORN A 8 DKR 1069 5670 R 2 PIWA2-1B-1A-SANBORN DRR 1070 5680 3 PIWA2-1B-1A-SANBORN-BORO A 1 DKR 1071 5690 3 PIWA2-1B-1A-SANBORN-VOL A 3 DKR 1072 5700 3 PIWA2-1B-1A-SANBORN-PAGE A 4 DKR 1073 5710 2 PIWA2-1B-1A-COMMERC-DIST A 5 DKR 1074 5720 2 PIWA2-1B-1A-DOF-MAP-BORO A 1 DKR 1075 5730 2 PIWA2-1B-1A-DOF-MAP-SECVOL A 4 DKR 1076 5740 2 PIWA2-1B-1A-DOF-MAP-PAGE A 4 DKR 1077 5750 2 FILLER-1B-1A-RESERVED-DCP A 3 DKR 1078 5760 2 PIWA2-1B-1A-LATITUDE A 9 DKR 1079 5770 2 PIWA2-1B-1A-LONGITUDE A 11 DKR 1080 5780 2 PIWA2-1B-1A-X-COORD A 7 DKR 1081 5790 2 PIWA2-1B-1A-Y-COORD A 7 DKR 1082 5800 2 PIWA2-1B-1A-BID A 6 DKR 1083 5810 2 PIWA2-1B-1A-TPAD-BIN-ST A 1 /* CURRENT STATUS */ DKR 1084 5820 2 PIWA2-1B-1A-TPAD-NEW-BIN A 7 /* NEW BIN */ DKR 1085 5830 2 PIWA2-1B-1A-TPAD-NEW-BIN-ST A 1 /* NEW BIN STATUS */ DKR 1086 5840 2 PIWA2-1B-1A-TPAD-CONFLICT A 1 /* CONFLICT FLAG */ DKR 1087 5850 2 PIWA2-1B-1A-DCP-ZONE-MAP A 3 /* V17.4 ADDITION DKR 5860 2 FILLER-1B-1A-650 A 6 DKR 1088 5870 2 FILLER-1B-1A-700 A 8 /* FOR GSS USE DKR 1089 5880 2 PIWA2-1B-1A-REASON-CODE A 1 DKR 1090 5890 2 PIWA2-1B-1A-REASON-CODE-FILL A 1 DKR 1091 5900 2 PIWA2-1B-1A-WARN-CODE A 2 DKR 1092 5910 2 PIWA2-1B-1A-RETURN-CODE A 2 DKR 1093 5920 2 FILLER-1B-1A-750 A 108 DKR 1094 5930 2 PIWA2-1B-1A-NUM-OF-ADDR A 4 DKR 1095 5940 2 PIWA2-1B-1A-LIST-OF-ADDR (1:21) DSRI1 1096 M 5950 3 PIWA2-1B-1A-LIST-LOW-HOUSENUM A 16 /* DISPLAY FORMAT DKR 1097 5960 3 PIWA2-1B-1A-LIST-HI-HOUSENUM A 16 /* DISPLAY FORMAT DKR 1098 5970 3 PIWA2-1B-1A-LIST-BORO A 1 DKR 1099 5980 3 PIWA2-1B-1A-LIST-5SC A 5 DKR 1100 5990 3 PIWA2-1B-1A-LIST-LGC A 2 DKR 1101 6000 3 PIWA2-1B-1A-LIST-BIN A 7 DKR 1102 6010 3 PIWA2-1B-1A-LIST-SIDE-OF-STR A 1 /* L OR R DKR 1103 6020 3 PIWA2-1B-1A-ADDR-TYPE A 1 /* P=NAP, B=NAB, MAL DKR 1104 6030 R 3 PIWA2-1B-1A-ADDR-TYPE /* REDEF. BEGIN : PIWA2-1B-1A-AD DRR 1105 6040 4 PIWA2-1B-1A-LIST-ADDR-TYPE A 1 /* BLANK=NORMAL DKR 1106 6050 3 PIWA2-1B-1A-TPAD-STATUS A 1 /* 0 - 9 DKR 1107 6060 R 3 PIWA2-1B-1A-TPAD-STATUS /* REDEF. BEGIN : PIWA2-1B-1A-TP DRR 1108 6070 4 PIWA2-1B-1A-LIST-TPAD-STATUS A 1 DKR 1109 6080 3 PIWA2-1B-1A-ST-NAME A 32 DKR 1110 6090 R 3 PIWA2-1B-1A-ST-NAME /* REDEF. BEGIN : PIWA2-1B-1A-ST DRR 1111 6100 4 PIWA2-1B-1A-LIST-ST-NAME A 32 DKR 1112 6110 3 FILLER-1B-1A-800 A 34 DKR 1113 6120 * ** END OF FUNCTION 1B ************* * ********** ************************** C ***** End of List ***** GEOLP23S COPY File 1 GEOLP23S * * THE FIELD P2NAT3S IS USED AS A PARAMETER TO CALL GEOSUPPORT 2 P2NAT3S A 21 R 2 P2NAT3S 3 PIWA2-3S-ACCESS-KEY A 21 R 3 PIWA2-3S-ACCESS-KEY 4 FILLER-GSS A 2 4 PIWA2-3S-PORS-STNAME-IND A 1 4 PIWA2-3S-BORO A 1 /* P=PRIMARY * * /* B=SECONDARY 4 PIWA2-3S-5SC A 5 4 PIWA2-3S-LGC A 2 /* BLANK IF P IN 4 FILLER A 10 /* POSITION 3 2 PIWA2-3S-NUM-OF-INTERSECTS A 3 2 PIWA2-3S-LIST-OF-INTERSECTS (1:350) 3 PIWA2-3S-MARBLE-RIKERS-FLAG A 1 3 PIWA2-3S-DISTANCE A 5 3 PIWA2-3S-GAP-FLAG A 1 3 FILLER-100 A 7 3 PIWA2-3S-NUM-OF-STR A 1 3 PIWA2-3S-B7SC A 8 (1:5) GEOL2AP COPY File 1 GEOL2AP 2 P2NATAP A 21 R 2 P2NATAP 3 PIWA2-AP-ACCESS-KEY A 21 2 PIWA2-AP-CONT-PARITY A 1 2 PIWA2-AP-LOW-HOUSENUM A 11 2 PIWA2-AP-BBL A 10 R 2 PIWA2-AP-BBL 3 PIWA2-AP-BBL-BORO A 1 3 PIWA2-AP-BBL-BLOCK A 5 3 PIWA2-AP-BBL-LOT A 4 2 FILLER-AP01 A 7 2 PIWA2-AP-NUM-OF-STRUCTURES A 4 2 FILLER-AP02 A 26 2 FILLER-AP-GSS1 A 1 2 PIWA2-AP-BIN A 7 2 PIWA2-AP-CONDO-FLAG A 1 2 FILLER-AP03 A 1 2 PIWA2-AP-RPAD-CONDO-ID-NUM A 4 2 FILLER-AP04 A 7 2 PIWA2-AP-CONDO-BILL-BBL A 10 2 FILLER-AP05 A 2 2 PIWA2-AP-CONDO-LOW-BBL A 10 2 FILLER-AP06 A 1 2 PIWA2-AP-CONDO-HIGH-BBL A 10 2 FILLER-AP07 A 16 2 PIWA2-AP-COOP-NUM A 4 2 FILLER-AP08 A 22 2 PIWA2-AP-RESERVED A 3 2 PIWA2-AP-LATITUDE A 9 2 PIWA2-AP-LONGITUDE A 11 2 PIWA2-AP-X-COORD A 7 2 PIWA2-AP-Y-COORD A 7 2 FILLER-AP09 A 16 2 PIWA2-AP-AP-ID A 9 2 FILLER-AP-GSS2 A 8 2 PIWA2-AP-NUM-OF-ADDR A 4 2 PIWA2-AP-ADDR-LIST (1:21) 3 PIWA2-AP-LIST-LOW-HOUSENUM A 16 3 PIWA2-AP-LIST-HI-HOUSENUM A 16 3 PIWA2-AP-LIST-BORO A 1 3 PIWA2-AP-LIST-5SC A 5 3 PIWA2-AP-LIST-LGC A 2 3 PIWA2-AP-LIST-BIN A 7 3 PIWA2-AP-LIST-SIDE-OF-STR A 1 3 PIWA2-AP-ADDR-TYPE A 1 R 3 PIWA2-AP-ADDR-TYPE 4 PIWA2-AP-LIST-ADDR-TYPE A 1 3 FILLER-AP10 A 4 GEOL2APX COPY File 1 GEOL2APX 2 P2NATAPX A 21 R 2 P2NATAPX 3 PIWA2-APX-ACCESS-KEY A 21 2 PIWA2-APX-CONT-PARITY A 1 2 PIWA2-APX-LOW-HOUSENUM A 11 2 PIWA2-APX-BBL A 10 R 2 PIWA2-APX-BBL 3 PIWA2-APX-BBL-BORO A 1 3 PIWA2-APX-BBL-BLOCK A 5 3 PIWA2-APX-BBL-LOT A 4 2 FILLER-APX01 A 7 2 PIWA2-APX-NUM-OF-STRUCTURES A 4 2 FILLER-APX02 A 26 2 FILLER-APX-GSS1 A 1 2 PIWA2-APX-BIN A 7 2 PIWA2-APX-CONDO-FLAG A 1 2 FILLER-APX03 A 1 2 PIWA2-APX-RPAD-CONDO-ID-NUM A 4 2 FILLER-APX04 A 7 2 PIWA2-APX-CONDO-BILL-BBL A 10 2 FILLER-APX05 A 2 2 PIWA2-APX-CONDO-LOW-BBL A 10 2 FILLER-APX06 A 1 2 PIWA2-APX-CONDO-HIGH-BBL A 10 2 FILLER-APX07 A 16 2 PIWA2-APX-COOP-NUM A 4 2 FILLER-APX08 A 22 2 PIWA2-APX-RESERVED A 3 2 PIWA2-APX-LATITUDE A 9 2 PIWA2-APX-LONGITUDE A 11 2 PIWA2-APX-X-COORD A 7 2 PIWA2-APX-Y-COORD A 7 2 FILLER-APX09 A 16 2 PIWA2-APX-AP-ID A 9 2 FILLER-APX-GSS2 A 8 2 PIWA2-APX-REASON-CODE A 1 2 PIWA2-APX-REASON-CODE-QUAL A 1 2 PIWA2-APX-WARN-CODE A 2 2 PIWA2-APX-RETURN-CODE A 2 2 FILLER-APX10 A 108 2 PIWA2-APX-NUM-OF-ADDR A 4 2 PIWA2-APX-ADDR-LIST (1:21) 3 PIWA2-APX-LIST-LOW-HOUSENUM A 16 3 PIWA2-APX-LIST-HI-HOUSENUM A 16 3 PIWA2-APX-LIST-BORO A 1 3 PIWA2-APX-LIST-5SC A 5 3 PIWA2-APX-LIST-LGC A 2 3 PIWA2-APX-LIST-BIN A 7 3 PIWA2-APX-LIST-SIDE-OF-STR A 1 3 PIWA2-APX-ADDR-TYPE A 1 R 3 PIWA2-APX-ADDR-TYPE 4 PIWA2-APX-LIST-ADDR-TYPE A 1 3 FILLER-APX11 A 1 3 PIWA2-APX-ST-NAME A 32 R 3 PIWA2-APX-ST-NAME 4 PIWA2-APX-LIST-ST-NAME A 32 3 FILLER-APX12 A 34","title":"Appendix 14: Geosupport Copy Files (COW)"},{"location":"appendices/appendix14/#cobol-copy-files-cow","text":"","title":"COBOL COPY Files (COW)"},{"location":"appendices/appendix14/#p1cob-copy-file","text":"******************************************************************* 00010010 **** LAST UPDATED OCTOBER 2016 *** 00020021 **** OCT. 2016 ADDED UNIT IN INPUT AND OUTPUT V16.4 *** 00020121 **** THIS IS THE COBOL STRUCTURE FOR GEOSUPPORT SYSTEM PLATFORM *** 00021021 **** INDEPENDENT WORK AREA 1. *** 00030010 **** COPY FILE - P1COB. 04/07/98 *** 00040010 ******************************************************************* 00050010 **** INPUT FIELDS **** 00060010 ******************************************************************* 00070010 05 PIWA1-IN-FUNC-CODE PIC X(2). 00080010 05 GEO-WA1-IN-FUNCTION-CODE REDEFINES PIWA1-IN-FUNC-CODE. 00090010 10 GEO-WA1-IN-FUNCTION-1 PIC X. 00100010 10 GEO-WA1-IN-FUNCTION-2 PIC X. 00110010 05 PIWA1-IN-HOUSENUM-DISPLAY PIC X(16). 00120010 05 GEO-WA1-IN-HOUSENUM-DISPLAY REDEFINES 00130010 PIWA1-IN-HOUSENUM-DISPLAY. 00140010 10 GEO-WA1-IN-HOUSENUM PIC X(12). 00150010 10 FILLER PIC X(4). 00160010 05 PIWA1-IN-HOUSENUM-SORT PIC X(11). 00170010 05 PIWA1-IN-LOW-HOUSENUM-DISPLAY PIC X(16). 00180010 05 GEO-WA1-IN-LO-HOUSENUM-DISPLAY REDEFINES 00190010 PIWA1-IN-LOW-HOUSENUM-DISPLAY. 00200010 10 GEO-WA1-IN-LOW-HOUSENUM PIC X(12). 00210010 10 FILLER PIC X(4). 00220010 05 PIWA1-IN-LOW-HOUSENUM-SORT PIC X(11). 00230010 05 GEO-WA1-IN-10SC-1. 00240010 10 GEO-WA1-IN-BORO PIC X. 00250010 10 PIWA1-IN-10SC-1 PIC X(10). 00260010 05 GEO-WA1-IN-STREET-1 PIC X(32). 00270010 05 GEO-WA1-IN-10SC-2. 00280010 10 GEO-WA1-IN-BORO-2 PIC X. 00290010 10 PIWA1-IN-10SC-2 PIC X(10). 00300010 05 GEO-WA1-IN-STREET-2 PIC X(32). 00310010 05 GEO-WA1-IN-10SC-3. 00320010 10 GEO-WA1-IN-BORO-3 PIC X. 00330010 10 PIWA1-IN-10SC-3 PIC X(10). 00340010 05 GEO-WA1-IN-STREET-3 PIC X(32). 00350010 05 GEO-WA1-IN-BBL. 00360010 10 GEO-WA1-IN-BL-BORO PIC X. 00370010 10 GEO-WA1-IN-BLOCKNUM PIC X(5). 00380010 10 GEO-WA1-IN-LOTNUM PIC X(5). 00390010 05 PIWA1-IN-BIN PIC X(7). 00400010 05 GEO-WA1-IN-COMPASS. 00410010 10 PIWA1-IN-COMPASS1 PIC X. 00420010 10 PIWA1-IN-COMPASS2 PIC X. 00430010 05 PIWA1-IN-NODE PIC X(7). 00440018 05 GEO-WA1-IN-NON-IBM-MAIN-FRAME PIC X(1). 00450010 05 GEO-WA1-IN-ZIPIN PIC X(5). 00460010 05 GEO-WA1-IN-UNIT PIC X(14). 00471021 05 FILLER PIC X(82). 00471121 ***** 05 FILLER V16.4 PIC X(96). 00472021 05 GEO-WA1-IN-LONG-WORKAREA2-FLAG PIC X. 00480010 05 PIWA1-IN-HSE-NBR-JUSTIFY PIC X. 00490010 05 PIWA1-IN-HNL PIC X(2). 00500010 05 PIWA1-IN-HSE-NBR-OVER-FLAG PIC X. 00510010 05 GEO-WA1-IN-SNL PIC X(2). 00520010 05 GEO-WA1-IN-COMPACT-NAME-FLAG PIC X. 00530010 05 GEO-WA1-IN-XSTREET-FLAG PIC X. 00540010 05 PIWA1-IN-ROADBED-REQ-SWITCH PIC X. 00550010 05 PIWA1-IN-INTERNAL-USE-LEGACY PIC X. 00560010 05 PIWA1-IN-SEGAUX-SWITCH PIC X. 00570010 05 PIWA1-IN-BROWSE-FLAG PIC X. 00580010 05 PIWA1-IN-REAL-STREET-ONLY PIC X. 00590010 05 PIWA1-IN-TPAD-SWITCH PIC X. 00600010 05 PIWA1-IN-MODE-SWITCH PIC X. 00601013 05 PIWA1-IN-WTO-SWITCH PIC X. 00602016 05 FILLER PIC X(29). 00610017 ******************************************************************** 00620010 ***** OUTPUT FIELDS ***** 00630010 ******************************************************************** 00640010 05 GEO-WA1-OUT-BORONAME PIC X(9). 00650010 05 PIWA1-OUT-HOUSENUM-DISPLAY PIC X(16). 00660010 05 GEO-WA1-OUT-HOUSENUM-DISPLAY REDEFINES 00670010 PIWA1-OUT-HOUSENUM-DISPLAY. 00680010 10 GEO-WA1-OUT-HOUSENUM PIC X(12). 00690010 10 FILLER PIC X(4). 00700010 05 PIWA1-OUT-HOUSENUM-SORT PIC X(11). 00710010 05 GEO-WA1-OUT-10SC-1 PIC X(11). 00720010 05 GEO-WA1-OUT-STREET-1 PIC X(32). 00730010 05 GEO-WA1-OUT-10SC-2 PIC X(11). 00740010 05 GEO-WA1-OUT-STREET-2 PIC X(32). 00750010 05 GEO-WA1-OUT-10SC-3 PIC X(11). 00760010 05 GEO-WA1-OUT-STREET-3 PIC X(32). 00770010 05 GEO-WA1-OUT-BBL. 00780010 10 GEO-WA1-OUT-BBL-BORO PIC X. 00790010 10 GEO-WA1-OUT-BLOCKNUM PIC X(5). 00800010 10 GEO-WA1-OUT-LOTNUM PIC X(5). 00810010 05 PIWA1-OUT-LOW-HN-DISPLAY PIC X(16). 00820010 05 GEO-WA1-OUT-LOW-HN-DISPLAY REDEFINES 00830010 PIWA1-OUT-LOW-HN-DISPLAY. 00840010 10 GEO-WA1-OUT-LOW-HOUSENUM PIC X(12). 00850012 10 FILLER PIC X(4). 00860010 05 PIWA1-OUT-LOW-HN-SORT PIC X(11). 00870010 05 GEO-WA1-OUT-BIN PIC X(7). 00880010 05 GEO-WA1-OUT-STREET-ATTR OCCURS 3 TIMES PIC X. 00890010 05 GEO-WA1-OUT-REASON-CODE2 PIC X. 00891013 05 GEO-WA1-OUT-REASON-CODE-QUAL-2 PIC X. 00891115 05 GEO-WA1-OUT-WARNING-CODE2 PIC XX. 00893013 05 GEO-WA1-OUT-RETURN-CODE2. 00894013 10 GEO-WA1-OUT-RC2-1 PIC X. 00895013 10 GEO-WA1-OUT-RC2-2 PIC X. 00896013 05 GEO-WA1-OUT-ERROR-MESSAGE2 PIC X(80). 00897013 05 PIWA1-OUT-NODE PIC X(7). 00899019 05 PIWA1-OUT-UNIT-SORT. 00899122 10 PIWA1-OUT-UNIT-TYPE PIC X(4). 00899221 10 PIWA1-OUT-UNIT-ID PIC X(10). 00899321 05 PIWA1-OUT-UNIT-DISP PIC X(14). 00899421 05 FILLER PIC X(17). 00900021 ***** 05 FILLER V16.4 PIC X(45). 00901021 05 GEO-WA1-OUT-SND-ATTR PIC X. 00910010 05 GEO-WA1-OUT-REASON-CODE PIC X. 00920010 05 GEO-WA1-OUT-REASON-CODE-QUAL PIC X. 00921014 05 GEO-WA1-OUT-WARNING-CODE PIC XX. 00940010 05 GEO-WA1-OUT-RETURN-CODE. 00950010 10 GEO-WA1-OUT-RC-1 PIC X. 00960010 10 GEO-WA1-OUT-RC-2 PIC X. 00970010 05 GEO-WA1-OUT-ERROR-MESSAGE PIC X(80). 00980010 05 PIWA1-OUT-NUM-SIMILAR-STRS PIC X(2). 00990010 05 PIWA1-OUT-SIMILAR-B7SC PIC X(8) 01000010 OCCURS 10 TIMES. 01010010 05 GEO-WA1-OUT-SIMILAR-NAMES PIC X(32) 01020010 OCCURS 10 TIMES. 01030010","title":"P1COB COPY File "},{"location":"appendices/appendix14/#p2cob-copy-file","text":"****************************************************************** 00010032 **** P2COB ** 00011082 **** LAST MODIFIED JUNE 2018 ** 00012087 **** ADD POLICE SECTOR AND NYPD SERVICE AREA YNL 06/14 V19.2 ** 00014089 **** ADD NEW 5 BYTE PUMA CODE YNL 12/17 V18,1 ** 00014187 **** ADD NEW 2 BYTE SPEED LIMIT YNL 09/17 V17,4 ** 00014287 **** ADD NEW 2 BYTE BIKE TRAFFIC DIRECTION YNL 12/16 V17,1 ** 00015084 **** THIS IS THE COBOL- STRUCTURE FOR GEOSUPPORT SYSTEM PLATFORM** 00020032 **** INDEPENDENT WORK AREA 2 FOR FUNCTIONS: 1, 1E, 2, 2C, 3, ** 00030032 **** 3C, AND 5. ** 00040032 **** ** 00050032 **** COPY FILE - P2COB. ** 00060032 **** PLEASE NOTE THAT FUNCTIONS 1 AND 1E SHARE A SINGLE ** 00070032 **** WORK AREA 2 LAYOUT, AND FUNCTIONS 2 AND 2C ALSO ** 00080032 **** SHARE A SINGLE WORK AREA 2 LAYOUT. 04/03/01 ** 00090032 ****************************************************************** 00100032 **** LAST MODIFIED FEBRUARY 2016 ** 00110078 ****************************************************************** 00120032 00130032 05 PIWA2 PIC X(7000). 00140066 00150032 ****************************************************************** 00160032 **** FOR: FUNCTIONS 1 & 1E ****************************** 00170032 00180032 05 PIWA2-FUNCTION1 REDEFINES PIWA2. 00190032 10 GEO-WA2-FN1-ACCESS-KEY PIC X(21). 00200032 10 GEO-WA2-FN1-CONT-PARITY PIC X. 00210032 10 PIWA2-FN1-LOW-HOUSENUM-SORT PIC X(11). 00220032 10 PIWA2-FN1-HI-HOUSENUM-SORT PIC X(11). 00230032 10 GEO-WA2-FN1-PREFERRED-LGC PIC X(2). 00240032 10 GEO-WA2-FN1-NUM-X-ST-LOW-END PIC X. 00250032 10 PIWA2-FN1-LOW-B5SC PIC X(6) 00260032 OCCURS 5 TIMES. 00270032 10 GEO-WA2-FN1-NUM-X-ST-HI-END PIC X. 00280032 10 PIWA2-FN1-HI-B5SC PIC X(6) 00290032 OCCURS 5 TIMES. 00300032 10 PIWA2-FN1-LIONKEY. 00310032 15 PIWA2-FN1-LION-BORO PIC X. 00320032 15 GEO-WA2-FN1-LIONFACECODE PIC X(4). 00330032 15 GEO-WA2-FN1-LIONSEQ PIC X(5). 00340032 10 GEO-WA2-FN1-SPECIAL-ADDR-FLAG PIC X(1). 00350032 10 PIWA2-FN1-SIDE-OF-STR PIC X. 00360032 10 GEO-WA2-FN1-SEGMENTLENGTH PIC X(5). 00370032 10 GEO-WA2-FN1-XCOORD PIC X(7). 00380032 10 GEO-WA2-FN1-YCOORD PIC X(7). 00390032 10 FILLER-GSS PIC X(8). 00400032 10 GEO-WA2-FN1-MARBLE-RIKER-FLAG PIC X(1). 00410032 10 GEO-WA2-FN1-SLA PIC X. 00420032 10 GEO-WA2-FN1-COMDIST. 00430032 15 GEO-WA2-FN1-COMDIST-BORO PIC X(1). 00440032 15 GEO-WA2-FN1-COMDIST-NUMBER PIC X(2). 00450032 10 GEO-WA2-FN1-ZIP PIC X(5). 00460032 00470032 *** THE FN1E FIELDS ARE VALID ONLY FOR FUNCTION 1E, NOT FUNC 1.** 00480032 10 GEO-WA2-FN1E-ELECTDIST PIC X(3). 00490032 10 GEO-WA2-FN1E-ASSEMDIST PIC X(2). 00500032 10 GEO-WA2-FN1E-SPLIT-ED-FLAG PIC X(1). 00510032 10 GEO-WA2-FN1E-CONGDIST PIC X(2). 00520032 10 GEO-WA2-FN1E-SENATEDIST PIC X(2). 00530032 10 GEO-WA2-FN1E-COURTDIST PIC X(2). 00540032 10 GEO-WA2-FN1E-COUNCILDIST PIC X(2). 00550032 00560032 10 GEO-WA2-FN1-HCD PIC X(2). 00570053 10 GEO-WA2-FN1-HEALTHAREA PIC X(4). 00580053 10 GEO-WA2-FN1-SANIDIST. 00590032 15 GEO-WA2-FN1-SANIDIST-BORO PIC X(1). 00600032 15 GEO-WA2-FN1-SANIDIST-NUMBER PIC X(2). 00610032 10 GEO-WA2-FN1-SANITATION-SUBSEC PIC X(2). 00620032 10 GEO-WA2-FN1-SANI-REG PIC X(5). 00630032 10 GEO-WA2-FN1-SANI-REC PIC X(3). 00640032 10 GEO-WA2-FN1-POLICEDIST. 00650032 15 GEO-WA2-FN1-POL-PATR-BORO-CMD PIC X(1). 00660032 15 GEO-WA2-FN1-POL-PRECINCT PIC X(3). 00670032 ** NOTE:10 GEO-WA2-FN1-FIRESEC ==> FIRE DIVISION ** 00680032 10 GEO-WA2-FN1-FIRESEC PIC X(2). 00690032 10 GEO-WA2-FN1-FIREBAT PIC X(2). 00700032 10 GEO-WA2-FN1-FIRECO. 00710032 15 GEO-WA2-FN1-FIRECO-TYPE PIC X(1). 00720032 15 GEO-WA2-FN1-FIRECO-NUM PIC X(3). 00730032 *** NEXT LINE WAS PREVIOUSLY SPLIT SCHOOL FLAG 00731044 10 GEO-WA2-FN1-FILL-SCHOOL-FLAG PIC X. 00740044 10 GEO-WA2-FN1-SCHOOLDIST PIC X(2). 00750032 10 GEO-WA2-FN1-DYN-BLOCK PIC X(3). 00760032 10 PIWA2-FN1-POLICE-PAT-BORO PIC X(2). 00770073 10 GEO-WA2-FN1-FEATURE-TYPE PIC X. 00790032 10 GEO-WA2-FN1-SEGMENT-TYPE PIC X. 00800032 10 GEO-WA2-FN1-ALX PIC X. 00810032 10 GEO-WA2-FN1-COINCIDENT-CNT PIC X. 00820032 10 FILLER PIC X(2). 00830058 10 PIWA2-FN1-CENS-TRCT-BORO PIC X. 00840158 10 GEO-WA2-FN1-1990-CENSUSTRACT PIC X(6). 00841058 10 GEO-WA2-FN1-2010-CENS-TRCT PIC X(6). 00850035 10 GEO-WA2-FN1-2010-CENS-BLK PIC X(4). 00860035 10 GEO-WA2-FN1-2010-CENS-BLK-SFX PIC X. 00870035 10 GEO-WA2-FN1-2000-CENS-TRACT PIC X(6). 00890035 10 GEO-WA2-FN1-2000-CENS-BLOCK PIC X(4). 00900035 10 GEO-WA2-FN1-2000-CENS-BLK-SUF PIC X. 00910035 10 GEO-WA2-FN1-NTA PIC X(4). 00911050 10 GEO-WA2-FN1-SANIT-SNOW-PRRTY PIC X. 00912050 10 PIWA2-FN1-SANIT-ORGANICS PIC X(5). 00922061 10 PIWA2-FN1-SANIT-BULK-PICK-UP PIC X(5). 00924080 **V16.4 10 PIWA2-FN1-SANIT-RESERVED PIC X(5). 00924180 10 PIWA2-FN1-HURRICANE-ZONE PIC XX. 00925072 10 FILLER PIC X(11). 00926072 10 GEO-WA2-FN1-TRUE-HNS PIC X(11). 00930032 10 GEO-WA2-FN1-TRUE-B7SC PIC X(8). 00940032 10 GEO-WA2-FN1-SEG-ID PIC X(7). 00950032 10 GEO-WA2-FN1-CURVE-FLAG PIC X(1). 00960032 00970032 ****************************************************************** 00980032 **** FOR: FUNCTIONS 2 ********************************** 00990032 01000032 05 PIWA2-FUNCTION2 REDEFINES PIWA2. 01010032 10 PIWA2-FN2-ACCESS-KEY PIC X(21). 01020032 10 GEO-WA2-FN2-DUPINTERFLAG PIC X. 01030032 10 GEO-WA2-FN2-PREFERRED-LGC1 PIC X(2). 01040032 10 GEO-WA2-FN2-PREFERRED-LGC2 PIC X(2). 01050032 10 GEO-WA2-FN2-NUM-OF-INTERSECTS PIC X. 01060032 10 PIWA2-FN2-INTERSECT-B5SC PIC X(6) 01070032 OCCURS 5 TIMES. 01080032 10 GEO-WA2-FN2-COMPDIR PIC X. 01090032 10 GEO-WA2-FN2-ATOMIC-POLYGON PIC X(3). 01091064 10 FILLER PIC X(2). 01100057 10 GEO-WA2-FN2-NODE-NUM PIC X(7). 01110032 10 GEO-WA2-FN2-XCOORD PIC X(7). 01120032 10 GEO-WA2-FN2-YCOORD PIC X(7). 01130032 10 FILLER-GSS PIC X(7). 01140032 10 GEO-WA2-FN2-SANBORN1-BVOLPAGE. 01150032 15 GEO-WA2-FN2-SANBORN1-BORO PIC X(1). 01160032 15 GEO-WA2-FN2-SANBORN1-VOL-NUM PIC X(3). 01170032 15 GEO-WA2-FN2-SANBORN1-PAGE-NUM PIC X(4). 01180032 10 GEO-WA2-FN2-SANBORN2-BVOLPAGE. 01190032 15 GEO-WA2-FN2-SANBORN2-BORO PIC X(1). 01200032 15 GEO-WA2-FN2-SANBORN2-VOL-NUM PIC X(3). 01210032 15 GEO-WA2-FN2-SANBORN2-PAGE-NUM PIC X(4). 01220032 10 GEO-WA2-FN2-MARBLE-RIKER-FLAG PIC X(1). 01230032 10 GEO-WA2-FN2-SLA PIC X. 01240032 10 GEO-WA2-FN2-COMDIST. 01250032 15 GEO-WA2-FN2-COMDIST-BORO PIC X(1). 01260032 15 GEO-WA2-FN2-COMDIST-NUMBER PIC X(2). 01270032 10 GEO-WA2-FN2-ZIP PIC X(5). 01280032 10 GEO-WA2-FN2-HEALTHAREA PIC X(4). 01290053 10 GEO-WA2-FN2-POLICEDIST. 01300032 15 GEO-WA2-FN2-POL-PATR-BORO-CMD PIC X(1). 01310032 15 GEO-WA2-FN2-POL-PRECINCT PIC X(3). 01320032 ** NOTE:10 GEO-WA2-FN2-FIRESEC ==> FIRE DIVISION ** 01330032 10 GEO-WA2-FN2-FIRESEC PIC X(2). 01340032 10 GEO-WA2-FN2-FIREBAT PIC X(2). 01350032 10 GEO-WA2-FN2-FIRECO. 01360032 15 GEO-WA2-FN2-FIRECO-TYPE PIC X(1). 01370032 15 GEO-WA2-FN2-FIRECO-NUM PIC X(3). 01380032 10 GEO-WA2-FN2-SCHOOLDIST PIC X(2). 01390032 10 GEO-WA2-FN2-2010-CENS-TRCT PIC X(6). 01400035 10 GEO-WA2-FN2-1990-CENSUSTRACT PIC X(6). 01410032 10 GEO-WA2-FN2-LEVEL-LIST OCCURS 5 TIMES. 01420032 15 GEO-WA2-FN2-LEVEL-CODES 01430032 OCCURS 2 TIMES PIC X. 01440032 10 PIWA2-FN2-POLICE-PAT-BORO PIC X(2). 01470073 10 GEO-WA2-FN2-ASSEMDIST PIC X(2). 01471073 10 GEO-WA2-FN2-CONGDIST PIC X(2). 01480032 10 GEO-WA2-FN2-SENATEDIST PIC X(2). 01490032 10 GEO-WA2-FN2-COURTDIST PIC X(2). 01500032 10 GEO-WA2-FN2-COUNCILDIST PIC X(2). 01510032 10 GEO-WA2-FN2-CDELIG PIC X(1). 01520032 10 GEO-WA2-FN2-DUP-INT-DISTANCE PIC X(5). 01530032 10 GEO-WA2-FN2-2000-CENS-TRACT PIC X(6). 01550035 10 PIWA2-FN2-HCD PIC X(2). 01551053 10 PIWA2-FN2-SANITATION-DIST PIC X(3). 01552045 10 PIWA2-FN2-SANITATION-SUBSEC PIC X(2). 01553047 10 PIWA2-FN2-POLICE-SECTOR PIC X(4). 01554088 10 FILLER PIC X(8). 01560088 01561059 ****************************************************************** 01562059 **** FOR: FUNCTIONS 2W ********************************** 01563065 01564059 05 PIWA2-FUNCTION2W REDEFINES PIWA2. 01565065 10 PIWA2-2W-ACCESS-KEY PIC X(21). 01566065 10 GEO-WA2-2W-DUPINTERFLAG PIC X. 01567065 10 GEO-WA2-2W-PREFERRED-LGC1 PIC X(2). 01568065 10 GEO-WA2-2W-PREFERRED-LGC2 PIC X(2). 01569065 10 GEO-WA2-2W-NUM-OF-INTERSECTS PIC X. 01569165 10 PIWA2-2W-INTERSECT-B5SC PIC X(6) 01569265 OCCURS 5 TIMES. 01569359 10 GEO-WA2-2W-COMPDIR PIC X. 01569465 10 GEO-WA2-2W-ATOMIC-POLYGON PIC X(3). 01569565 10 FILLER PIC X(2). 01569659 10 GEO-WA2-2W-NODE-NUM PIC X(7). 01569765 10 GEO-WA2-2W-XCOORD PIC X(7). 01569865 10 GEO-WA2-2W-YCOORD PIC X(7). 01569965 10 FILLER-GSS PIC X(7). 01570059 10 GEO-WA2-2W-SANBORN1-BVOLPAGE. 01570165 15 GEO-WA2-2W-SANBORN1-BORO PIC X(1). 01570265 15 GEO-WA2-2W-SANBORN1-VOL-NUM PIC X(3). 01570365 15 GEO-WA2-2W-SANBORN1-PAGE-NUM PIC X(4). 01570465 10 GEO-WA2-2W-SANBORN2-BVOLPAGE. 01570565 15 GEO-WA2-2W-SANBORN2-BORO PIC X(1). 01570665 15 GEO-WA2-2W-SANBORN2-VOL-NUM PIC X(3). 01570765 15 GEO-WA2-2W-SANBORN2-PAGE-NUM PIC X(4). 01570865 10 GEO-WA2-2W-MARBLE-RIKER-FLAG PIC X(1). 01570965 10 GEO-WA2-2W-SLA PIC X. 01571065 10 GEO-WA2-2W-COMDIST. 01571165 15 GEO-WA2-2W-COMDIST-BORO PIC X(1). 01571265 15 GEO-WA2-2W-COMDIST-NUMBER PIC X(2). 01571365 10 GEO-WA2-2W-ZIP PIC X(5). 01571465 10 GEO-WA2-2W-HEALTHAREA PIC X(4). 01571565 10 GEO-WA2-2W-POLICEDIST. 01571665 15 GEO-WA2-2W-POL-PATR-BORO-CMD PIC X(1). 01571765 15 GEO-WA2-2W-POL-PRECINCT PIC X(3). 01571865 ** NOTE:10 GEO-WA2-2W-FIRESEC ==> FIRE DIVISION ** 01571965 10 GEO-WA2-2W-FIRESEC PIC X(2). 01572065 10 GEO-WA2-2W-FIREBAT PIC X(2). 01572165 10 GEO-WA2-2W-FIRECO. 01572265 15 GEO-WA2-2W-FIRECO-TYPE PIC X(1). 01572365 15 GEO-WA2-2W-FIRECO-NUM PIC X(3). 01572465 10 GEO-WA2-2W-SCHOOLDIST PIC X(2). 01572565 10 GEO-WA2-2W-2010-CENS-TRCT PIC X(6). 01572665 10 GEO-WA2-2W-1990-CENSUSTRACT PIC X(6). 01572765 10 GEO-WA2-2W-LEVEL-LIST OCCURS 5 TIMES. 01572865 15 GEO-WA2-2W-LEVEL-CODES 01572965 OCCURS 2 TIMES PIC X. 01573059 10 PIWA2-2W-POLICE-PAT-BORO PIC X(2). 01573373 10 GEO-WA2-2W-ASSEMDIST PIC X(2). 01573473 10 GEO-WA2-2W-CONGDIST PIC X(2). 01573573 10 GEO-WA2-2W-SENATEDIST PIC X(2). 01573673 10 GEO-WA2-2W-COURTDIST PIC X(2). 01573773 10 GEO-WA2-2W-COUNCILDIST PIC X(2). 01573873 10 GEO-WA2-2W-CDELIG PIC X(1). 01573973 10 GEO-WA2-2W-DUP-INT-DISTANCE PIC X(5). 01574073 10 GEO-WA2-2W-2000-CENS-TRACT PIC X(6). 01574173 10 PIWA2-2W-HCD PIC X(2). 01574273 10 PIWA2-2W-SANITATION-DIST PIC X(3). 01574373 10 PIWA2-2W-SANITATION-SUBSEC PIC X(2). 01574473 10 PIWA2-2W-POLICE-SECTOR PIC X(4). 01574588 10 FILLER PIC X(8). 01574688 10 FILLER PIC X(22). 01574788 10 PIWA2-2W-LGCS-1 PIC X(8). 01574888 10 PIWA2-2W-LGCS-2 PIC X(8). 01574988 10 PIWA2-2W-TURN-RESTRICTIONS PIC X(10). 01575088 10 PIWA2-2W-LGCS-FOR-B5SCS PIC X(2) 01575188 OCCURS 5 TIMES. 01575288 10 PIWA2-2W-TRUE-REP-COUNTER PIC XX. 01575388 10 PIWA2-2W-NODE-LIST PIC X(7) 01575488 OCCURS 20 TIMES. 01575588 10 PIWA2-2W-NODE-LIST-B7SCS-LIST OCCURS 20 TIMES. 01575771 15 PIWA2-2W-NODE-LIST-B7SCS OCCURS 5 TIMES. 01575871 20 PIWA2-2W-NODE-LIST-B7SC PIC X(8) 01575971 OCCURS 4 TIMES. 01576067 10 PIWA2-2W-REASON-CODE PIC X. 01585471 10 PIWA2-2W-REASON-CODE-QUAL PIC X. 01585571 10 PIWA2-2W-WARN-CODE PIC XX. 01585671 10 PIWA2-2W-RETURN-CODE PIC XX. 01585771 10 PIWA2-2W-LATITUDE PIC X(9). 01585874 10 PIWA2-2W-LONGITUDE PIC X(11). 01585974 10 FILLER PIC X(374). 01586474 **** 10 FILLER V15.3 PIC X(394). 01586574 01586674 ****************************************************************** 01587065 **** FOR: FUNCTION 3 ****************************** 01590032 01600032 05 PIWA2-FUNCTION3 REDEFINES PIWA2. 01610032 10 GEO-WA2-FN3-ACCESS-KEY PIC X(21). 01620032 10 GEO-WA2-FN3-DUP-KEY-FLAG PIC X. 01630032 10 GEO-WA2-FN3-LOCATION-STATUS PIC X. 01640032 10 GEO-WA2-FN3-COUNTY-BOUNDARY PIC X. 01650032 10 GEO-WA2-FN3-PREFERRED-LGC1 PIC X(2). 01660032 10 GEO-WA2-FN3-PREFERRED-LGC2 PIC X(2). 01670032 10 GEO-WA2-FN3-PREFERRED-LGC3 PIC X(2). 01680032 10 GEO-WA2-FN3-NUM-X-ST-LOW-END PIC X. 01690032 10 PIWA2-FN3-LOW-B5SC PIC X(6) 01700032 OCCURS 5 TIMES. 01710032 10 GEO-WA2-FN3-NUM-X-ST-HI-END PIC X. 01720032 10 PIWA2-FN3-HI-B5SC PIC X(6) 01730032 OCCURS 5 TIMES. 01740032 10 GEO-WA2-FN3-REVERSALFLAG PIC X. 01750032 10 PIWA2-FN3-LIONKEY. 01760032 15 PIWA2-FN3-LION-BORO PIC X. 01770032 15 GEO-WA2-FN3-LIONFACECODE PIC X(4). 01780032 15 GEO-WA2-FN3-LIONSEQ PIC X(5). 01790032 10 GEO-WA2-FN3-GENRECFLAG PIC X. 01800032 10 PIWA2-FN3-SEG-LEN PIC X(5). 01810032 10 GEO-WA2-FN3-SEGMENTSLOPE PIC X(3). 01820032 10 GEO-WA2-FN3-SEGMENTORIENT PIC X. 01830032 10 GEO-WA2-FN3-MARBLE-RIKER-FLAG PIC X(1). 01840032 10 GEO-WA2-FN3-FROM-NODE PIC X(7). 01850032 10 GEO-WA2-FN3-TO-NODE PIC X(7). 01860032 10 GEO-WA2-FN3-SANIT-SNOW-PRRTY PIC X. 01861050 10 FILLER PIC X(4). 01870050 10 GEO-WA2-FN3-SEG-ID PIC X(7). 01880032 10 GEO-WA2-FN3-SLA PIC X. 01890032 10 GEO-WA2-FN3-CURVE-FLAG PIC X. 01900032 10 GEO-WA2-FN3-DOG-LEG PIC X. 01910032 10 GEO-WA2-FN3-FEATURE-TYPE PIC X. 01920032 10 GEO-WA2-FN3-SEGMENT-TYPE PIC X. 01930032 10 GEO-WA2-FN3-COINCIDENT-CNT PIC X. 01940032 10 FILLER PIC X(4). 01950032 10 PIWA2-FN3-LEFT-SIDE-OF-STR. 01960032 15 GEO-WA2-FN3-LEFT-COMDIST. 01970032 20 GEO-WA2-FN3-LEFT-COMDIST-BORO PIC X(1). 01980032 20 GEO-WA2-FN3-LEFT-COMDIST-NUM PIC X(2). 01990032 15 PIWA2-FN3-L-LOW-HOUSENUM PIC X(16). 02000032 15 PIWA2-FN3-L-HI-HOUSENUM PIC X(16). 02010032 15 FILLER-GSS PIC X(33). 02020032 15 GEO-WA2-FN3-LEFT-ZIP PIC X(5). 02030032 15 GEO-WA2-FN3-LEFT-HEALTHAREA PIC X(4). 02040053 15 GEO-WA2-FN3-LEFT-POLDIST. 02050032 20 GEO-WA2-FN3-L-POL-PATR-BOR-CMD PIC X(1). 02060032 20 GEO-WA2-FN3-L-POL-PRECINCT PIC X(3). 02070032 ** NOTE:10 GEO-WA2-3L-R-FIRESEC ==> FIRE DIV ** 02080032 15 GEO-WA2-3L-L-FIRESEC PIC X(2). 02090032 15 GEO-WA2-3L-L-FIREBAT PIC X(2). 02100032 15 GEO-WA2-3L-L-FIRECO. 02110032 20 GEO-WA2-3L-L-FIRECO-TYPE PIC X(1). 02120032 20 GEO-WA2-3L-L-FIRECO-NUM PIC X(3). 02130032 15 GEO-WA2-FN3-LEFT-SCHLDIST PIC X(2). 02140032 15 GEO-WA2-3L-L-DYN-BLOCK PIC X(3). 02150032 15 PIWA2-FN3-L-ED PIC X(3). 02161036 15 PIWA2-FN3-L-AD PIC X(2). 02162036 15 PIWA2-FN3-L-POLICE-PAT-BORO PIC X(2). 02163073 15 FILLER PIC X. 02170073 15 GEO-WA2-3L-L-BORO PIC X . 02190051 15 GEO-WA2-3L-L-1990-CENSUSTRACT PIC X(6) . 02191051 15 GEO-WA2-3L-L-2010-CENS-TRCT PIC X(6). 02200035 15 GEO-WA2-3L-L-2010-CENS-BLK PIC X(4). 02210035 15 GEO-WA2-3L-L-2010-CENS-BLK-SFX PIC X. 02220035 15 GEO-WA2-3L-L-2000-CENS-TRACT PIC X(6). 02240035 15 GEO-WA2-3L-L-2000-CENS-BLOCK PIC X(4). 02250035 15 GEO-WA2-3L-L-2000-CENS-BLK-SUF PIC X. 02260035 15 FILLER PIC X(7). 02260176 **** 15 PIWA2-FN3-L-BLOCKFACE-ID *V16.1*PIC X(7)** 02261076 15 PIWA2-FN3-L-NTA PIC X(4). 02261150 15 FILLER PIC X(8). 02270050 10 PIWA2-FN3-RIGHT-SIDE-OF-STR. 02280032 15 GEO-WA2-FN3-RIGHT-COMDIST. 02290032 20 GEO-WA2-FN3-RIGHT-COMDIST-BORO PIC X(1). 02300032 20 GEO-WA2-FN3-RIGHT-COMDIST-NUM PIC X(2). 02310032 15 PIWA2-FN3-R-LOW-HOUSENUM PIC X(16). 02320032 15 PIWA2-FN3-R-HI-HOUSENUM PIC X(16). 02330032 15 FILLER-GSS PIC X(33). 02340032 15 GEO-WA2-FN3-RIGHT-ZIP PIC X(5). 02350032 15 GEO-WA2-FN3-RIGHT-HEALTHAREA PIC X(4). 02360053 15 GEO-WA2-FN3-RIGHT-POLDIST. 02370032 20 GEO-WA2-FN3-R-POL-PATR-BOR-CMD PIC X(1). 02380032 20 GEO-WA2-FN3-R-POL-PRECINCT PIC X(3). 02390032 15 GEO-WA2-3L-R-FIRESEC PIC X(2). 02400032 15 GEO-WA2-3L-R-FIREBAT PIC X(2). 02410032 15 GEO-WA2-3L-R-FIRECO. 02420032 20 GEO-WA2-3L-R-FIRECO-TYPE PIC X(1). 02430032 20 GEO-WA2-3L-R-FIRECO-NUM PIC X(3). 02440032 15 GEO-WA2-FN3-RIGHT-SCHLDIST PIC X(2). 02450032 15 GEO-WA2-3L-R-DYN-BLOCK PIC X(3). 02460032 15 PIWA2-FN3-R-ED PIC X(3). 02471036 15 PIWA2-FN3-R-AD PIC X(2). 02472036 15 PIWA2-FN3-R-POLICE-PAT-BORO PIC X(2). 02473073 15 FILLER PIC X. 02490073 15 GEO-WA2-3L-R-BORO PIC X. 02500051 15 GEO-WA2-3L-R-1990-CENSUSTRACT PIC X(6). 02501051 15 GEO-WA2-3L-R-2010-CENS-TRCT PIC X(6). 02510035 15 GEO-WA2-3L-R-2010-CENS-BLK PIC X(4). 02520035 15 GEO-WA2-3L-R-2010-CENS-BLK-SFX PIC X. 02530035 15 GEO-WA2-3L-R-2000-CENS-TRACT PIC X(6). 02550035 15 GEO-WA2-3L-R-2000-CENS-BLOCK PIC X(4). 02560035 15 GEO-WA2-3L-R-2000-CENS-BLK-SUF PIC X. 02570035 15 FILLER PIC X(7). 02570176 **** 15 PIWA2-FN3-R-BLOCKFACE-ID *V16.1*PIC X(7)** 02570276 15 PIWA2-FN3-R-NTA PIC X(4). 02572050 15 FILLER PIC X(8). 02580050 02590032 05 PIWA2-AUX-FUNCTION3 REDEFINES PIWA2. 02600032 10 FILLER PIC X(450). 02610032 10 PIWA2-FN3-SEGAUX. 02620032 15 PIWA2-FN3-SEGAUX-FILL PIC X(6). 02630032 15 PIWA2-FN3-SEGAUX-CTR PIC X(4). 02640032 15 PIWA2-FN3-SEGAUX-SEGS OCCURS 70 TIMES 02650032 PIC X(7). 02660032 02670032 ****************************************************************** 02670136 **** FOR: FUNCTION 3 EXTENDED ****************************** 02671036 02672036 05 PIWA2-FUNCTION3X REDEFINES PIWA2. 02673036 10 PIWA2-3X-ACCESS-KEY PIC X(21). 02674042 10 PIWA2-3X-DUP-KEY-FLAG PIC X. 02675042 10 PIWA2-3X-LOCATION-STATUS PIC X. 02676042 10 PIWA2-3X-COUNTY-BOUNDARY PIC X. 02677042 10 PIWA2-3X-PREFERRED-LGC1 PIC X(2). 02678042 10 PIWA2-3X-PREFERRED-LGC2 PIC X(2). 02679042 10 PIWA2-3X-PREFERRED-LGC3 PIC X(2). 02679142 10 PIWA2-3X-NUM-X-ST-LOW-END PIC X. 02679242 10 PIWA2-3X-LOW-B5SC PIC X(6) 02679338 OCCURS 5 TIMES. 02679436 10 PIWA2-3X-NUM-X-ST-HI-END PIC X. 02679542 10 PIWA2-3X-HI-B5SC PIC X(6) 02679638 OCCURS 5 TIMES. 02679736 10 PIWA2-3X-REVERSALFLAG PIC X. 02679842 10 PIWA2-3X-LIONKEY. 02679938 15 PIWA2-3X-LION-BORO PIC X. 02680038 15 PIWA2-3X-LIONFACECODE PIC X(4). 02680142 15 PIWA2-3X-LIONSEQ PIC X(5). 02680242 10 PIWA2-3X-GENRECFLAG PIC X. 02680342 10 PIWA2-3X-SEG-LEN PIC X(5). 02680438 10 PIWA2-3X-SEGMENTSLOPE PIC X(3). 02680542 10 PIWA2-3X-SEGMENTORIENT PIC X. 02680642 10 PIWA2-3X-MARBLE-RIKER-FLAG PIC X(1). 02680742 10 PIWA2-3X-FROM-NODE PIC X(7). 02680842 10 PIWA2-3X-TO-NODE PIC X(7). 02680942 10 PIWA2-3X-SANIT-SNOW-PRRTY PIC X. 02681050 10 FILLER PIC X(4). 02681150 10 PIWA2-3X-SEG-ID PIC X(7). 02681250 10 PIWA2-3X-SLA PIC X. 02681350 10 PIWA2-3X-CURVE-FLAG PIC X. 02681450 10 PIWA2-3X-DOG-LEG PIC X. 02681550 10 PIWA2-3X-FEATURE-TYPE PIC X. 02681650 10 PIWA2-3X-SEGMENT-TYPE PIC X. 02681750 10 PIWA2-3X-COINCIDENT-CNT PIC X. 02681850 10 FILLER PIC X(4). 02681950 10 PIWA2-3X-LEFT-SIDE-OF-STR. 02682050 15 PIWA2-3X-LEFT-COMDIST. 02682150 20 PIWA2-3X-LEFT-COMDIST-BORO PIC X(1). 02682250 20 PIWA2-3X-LEFT-COMDIST-NUM PIC X(2). 02682350 15 PIWA2-3X-L-LOW-HOUSENUM PIC X(16). 02682450 15 PIWA2-3X-L-HI-HOUSENUM PIC X(16). 02682550 15 FILLER-GSS PIC X(33). 02682650 15 PIWA2-3X-LEFT-ZIP PIC X(5). 02682750 15 PIWA2-3X-LEFT-HEALTHAREA PIC X(4). 02682853 15 PIWA2-3X-LEFT-POLDIST. 02682950 20 PIWA2-3X-L-POL-PATR-BOR-CMD PIC X(1). 02683050 20 PIWA2-3X-L-POL-PRECINCT PIC X(3). 02683150 ** NOTE:10 PIWA2-3XL-R-FIRESEC ==> FIRE DIV ** 02683250 15 PIWA2-3X-L-FIRESEC PIC X(2). 02683350 15 PIWA2-3X-L-FIREBAT PIC X(2). 02683450 15 PIWA2-3X-L-FIRECO. 02683550 20 PIWA2-3X-L-FIRECO-TYPE PIC X(1). 02683650 20 PIWA2-3X-L-FIRECO-NUM PIC X(3). 02683750 15 PIWA2-3X-LEFT-SCHLDIST PIC X(2). 02683850 15 PIWA2-3X-L-DYN-BLOCK PIC X(3). 02683950 15 PIWA2-3X-L-ED PIC X(3). 02684138 15 PIWA2-3X-L-AD PIC X(2). 02684238 15 PIWA2-3X-L-POLICE-PAT-BORO PIC X(2). 02684373 15 FILLER PIC X. 02684473 15 PIWA2-3X-L-BORO PIC X . 02684551 15 PIWA2-3X-L-1990-CENSUSTRACT PIC X(6) . 02684651 15 PIWA2-3X-L-2010-CENS-TRCT PIC X(6). 02684751 15 PIWA2-3X-L-2010-CENS-BLK PIC X(4). 02684851 15 PIWA2-3X-L-2010-CENS-BLK-SFX PIC X. 02684951 15 PIWA2-3X-L-2000-CENS-TRACT PIC X(6). 02685051 15 GIWA2-3X-L-2000-CENS-BLOCK PIC X(4). 02685151 15 PIWA2-3X-L-2000-CENS-BLK-SUF PIC X. 02685251 15 FILLER PIC X(7). 02685376 **** 15 PIWA2-3X-L-BLOCKFACE-ID *V16.1* PIC X(7)*** 02685476 15 PIWA2-3X-L-NTA PIC X(4). 02685551 15 FILLER PIC X(8). 02685651 10 PIWA2-3X-RIGHT-SIDE-OF-STR. 02685751 15 PIWA2-3X-RIGHT-COMDIST. 02685851 20 PIWA2-3X-RIGHT-COMDIST-BORO PIC X(1). 02685951 20 PIWA2-3X-RIGHT-COMDIST-NUM PIC X(2). 02686051 15 PIWA2-3X-R-LOW-HOUSENUM PIC X(16). 02686151 15 PIWA2-3X-R-HI-HOUSENUM PIC X(16). 02686251 15 FILLER-GSS PIC X(33). 02686351 15 PIWA2-3X-RIGHT-ZIP PIC X(5). 02686451 15 PIWA2-3X-RIGHT-HEALTHAREA PIC X(4). 02686553 15 PIWA2-3X-RIGHT-POLDIST. 02686651 20 PIWA2-3X-R-POL-PATR-BOR-CMD PIC X(1). 02686751 20 PIWA2-3X-R-POL-PRECINCT PIC X(3). 02686851 15 PIWA2-3X-R-FIRESEC PIC X(2). 02686951 15 PIWA2-3X-R-FIREBAT PIC X(2). 02687051 15 PIWA2-3X-R-FIRECO. 02687151 20 PIWA2-3X-R-FIRECO-TYPE PIC X(1). 02687251 20 PIWA2-3X-R-FIRECO-NUM PIC X(3). 02687351 15 PIWA2-3X-RIGHT-SCHLDIST PIC X(2). 02687451 15 PIWA2-3X-R-DYN-BLOCK PIC X(3). 02687551 *** NEXT LINE WAS PREVIOUSLY INSTRUC-DIV 02687651 15 PIWA2-3X-R-ED PIC X(3). 02687751 15 PIWA2-3X-R-AD PIC X(2). 02687851 15 PIWA2-3X-R-POLICE-PAT-BORO PIC X(2). 02687973 15 FILLER PIC X. 02688073 15 PIWA2-3X-R-BORO PIC X. 02688173 15 PIWA2-3X-R-1990-CENSUSTRACT PIC X(6). 02688273 15 PIWA2-3X-R-2010-CENS-TRCT PIC X(6). 02688373 15 PIWA2-3X-R-2010-CENS-BLK PIC X(4). 02688473 15 PIWA2-3X-R-2010-CENS-BLK-SFX PIC X. 02688573 15 PIWA2-3X-R-2000-CENS-TRACT PIC X(6). 02688673 15 PIWA2-3X-R-2000-CENS-BLOCK PIC X(4). 02688773 15 PIWA2-3X-R-2000-CENS-BLK-SUF PIC X. 02688873 15 FILLER PIC X(7). 02688976 **** 15 PIWA2-3X-R-BLOCKFACE-ID *V16.1* PIC X(7)*** 02689076 15 PIWA2-3X-R-NTA PIC X(4). 02689273 15 FILLER PIC X(8). 02689373 15 PIWA2-3X-LGCS PIC X(8). 02689473 15 PIWA2-3X-LGCS-FROM PIC X(8). 02689573 15 PIWA2-3X-LGCS-TO PIC X(8). 02689673 15 PIWA2-3X-L-HCD PIC X(2). 02689773 15 PIWA2-3X-R-HCD PIC X(2). 02689873 15 FILLER PIC X(1). 02689973 15 PIWA2-3X-TRAFFIC-DIR PIC X(1). 02690073 15 PIWA2-3X-ROADWAY-TYPE PIC X(2). 02690173 15 PIWA2-3X-PHYSICAL-ID PIC X(7). 02690273 15 PIWA2-3X-GENERIC-ID PIC X(7). 02690373 15 PIWA2-3X-INTP-ID-INT-USE PIC X(7). 02690473 15 PIWA2-3X-INFD-ID-INT-USE PIC X(7). 02690573 15 PIWA2-3X-STR-STATUS PIC X(1). 02690673 15 PIWA2-3X-STR-WIDTH PIC X(3). 02690773 15 PIWA2-3X-STR-WIDTH-IRREG PIC X(1). 02690873 15 PIWA2-3X-BIKE-LANE PIC X(1). 02690973 15 PIWA2-3X-FED-CLASS-CODE PIC X(2). 02691073 15 PIWA2-3X-ROW-TYPE PIC X(1). 02691173 15 PIWA2-3X-LGC-LIST PIC X(10). 02691273 15 PIWA2-3X-LEGACY-ID PIC X(7). 02691373 15 PIWA2-3X-L-NTA-NAME PIC X(75). 02691473 15 PIWA2-3X-R-NTA-NAME PIC X(75). 02691573 15 PIWA2-3X-FROM-XCOORD PIC X(7). 02691673 15 PIWA2-3X-FROM-YCOORD PIC X(7). 02691773 15 PIWA2-3X-TO-XCOORD PIC X(7). 02691873 15 PIWA2-3X-TO-YCOORD PIC X(7). 02691973 15 PIWA2-3X-FROM-LATITUDE PIC X(9). 02692075 15 PIWA2-3X-FROM-LONGITUDE PIC X(11). 02692175 15 PIWA2-3X-TO-LATITUDE PIC X(9). 02692275 15 PIWA2-3X-TO-LONGITUDE PIC X(11). 02692375 15 PIWA2-3X-L-BLOCKFACE-ID PIC X(10). 02692476 15 PIWA2-3X-R-BLOCKFACE-ID PIC X(10). 02692576 15 PIWA2-3X-NBR-TRAVEL-LANES PIC X(2). 02692676 15 PIWA2-3X-NBR-PARK-LANES PIC X(2). 02692776 15 PIWA2-3X-NBR-TOTAL-LANES PIC X(2). 02692876 15 PIWA2-3X-BIKE-LANE-2 PIC X(2). 02692979 15 PIWA2-3X-STR-WIDTH-MAX PIC X(3). 02693079 15 PIWA2-3X-BIKE-TRAFFIC-DIR PIC X(2). 02693181 15 PIWA2-3X-SPEED-LIMIT PIC X(2). 02693283 15 PIWA2-3X-LEFT-PUMA-CODE PIC X(5). 02693386 15 PIWA2-3X-RIGHT-PUMA-CODE PIC X(5). 02693486 15 PIWA2-3X-LEFT-POLICE-SECTOR PIC X(4). 02693587 15 PIWA2-3X-RIGHT-POLICE-SECTOR PIC X(4). 02693687 15 FILLER PIC X(193). 02693787 **** 15 FILLER V18.3 PIC X(201). 02693887 **** 15 FILLER V18.1 PIC X(211). 02693987 **** 15 FILLER V17.4 PIC X(213). 02694087 **** 15 FILLER V17.1 PIC X(215). 02694187 **** 15 FILLER V16.4 PIC X(220). 02694287 **** 15 FILLER V16.1 PIC X(246). 02694387 **** 15 FILLER V15.3 PIC X(286). 02694487 02694587 05 PIWA2-AUX-FUNCTION3X REDEFINES PIWA2. 02694687 10 FILLER PIC X(1000). 02694787 10 PIWA2-3X-SEGAUX. 02694887 15 PIWA2-3X-SEGAUX-FILL PIC X(6). 02694987 15 PIWA2-3X-SEGAUX-CTR PIC X(4). 02695087 15 PIWA2-3X-SEGAUX-SEGS OCCURS 70 TIMES 02695187 PIC X(7). 02695287 02695387 ****************************************************************** 02695487 **** FOR: FUNCTION 3C ****************************** 02696085 02700032 05 PIWA2-FUNCTION3C REDEFINES PIWA2. 02710032 10 GEO-WA2-FN3C-ACCESS-KEY PIC X(21). 02720032 10 PIWA2-FN3C-DUP-KEY-FLAG PIC X. 02730032 10 GEO-WA2-FN3C-LOCATION-STATUS PIC X. 02740032 10 GEO-WA2-FN3C-COUNTY-BOUNDARY PIC X. 02750032 10 GEO-WA2-FN3C-PREFERRED-LGC1 PIC X(2). 02760032 10 GEO-WA2-FN3C-PREFERRED-LGC2 PIC X(2). 02770032 10 GEO-WA2-FN3C-PREFERRED-LGC3 PIC X(2). 02780032 10 GEO-WA2-FN3C-NUM-X-ST-LOW-END PIC X. 02790032 10 PIWA2-FN3C-LOW-B5SC PIC X(6) 02800032 OCCURS 5 TIMES. 02810032 10 GEO-WA2-FN3C-NUM-X-ST-HI-END PIC X. 02820032 10 PIWA2-FN3C-HI-B5SC PIC X(6) 02830032 OCCURS 5 TIMES. 02840032 10 GEO-WA2-FN3C-REVERSALFLAG PIC X. 02850032 10 PIWA2-FN3C-LIONKEY. 02860032 15 PIWA2-FN3C-LION-BORO PIC X. 02870032 15 GEO-WA2-FN3C-LIONFACECODE PIC X(4). 02880032 15 GEO-WA2-FN3C-LIONSEQ PIC X(5). 02890032 10 GEO-WA2-FN3C-GENRECFLAG PIC X. 02900032 10 PIWA2-FN3C-SEG-LEN PIC X(5). 02910032 10 GEO-WA2-FN3C-SEGMENTSLOPE PIC X(3). 02920032 10 GEO-WA2-FN3C-SEGMENTORIENT PIC X. 02930032 10 GEO-WA2-FN3C-MARBLE-RIKER-FLAG PIC X(1). 02940032 10 GEO-WA2-FN3C-FROM-NODE PIC X(7). 02950032 10 GEO-WA2-FN3C-TO-NODE PIC X(7). 02960032 10 GEO-WA2-FN3C-SANIT-SNOW-PRRTY PIC X. 02961050 10 FILLER PIC X(4). 02970050 10 GEO-WA2-FN3C-SEG-ID PIC X(7). 02980032 10 GEO-WA2-FN3C-SLA PIC X. 02990032 10 PIWA2-FN3C-SIDE-OF-STR PIC X. 03000032 10 GEO-WA2-FN3C-CURVE-FLAG PIC X. 03010032 10 GEO-WA2-FN3C-FEATURE-TYPE PIC X. 03020032 10 GEO-WA2-FN3C-SEGMENT-TYPE PIC X. 03030032 10 GEO-WA2-FN3C-COINCIDENT-CNT PIC X. 03040032 10 FILLER PIC X(4). 03050032 10 PIWA2-FN3C-BLOCKFACE-INFO. 03060032 15 GEO-WA2-FN3C-COMDIST. 03070032 20 GEO-WA2-FN3C-COMDIST-BORO PIC X(1). 03080032 20 GEO-WA2-FN3C-COMDIST-NUMBER PIC X(2). 03090032 15 PIWA2-FN3C-LOW-HOUSENUM PIC X(16). 03100032 15 PIWA2-FN3C-HI-HOUSENUM PIC X(16). 03110032 15 PIWA2-FN3C-LOW-HOUSENUM2 PIC X(16). 03120032 15 PIWA2-FN3C-HI-HOUSENUM2 PIC X(16). 03130032 15 FILLER-GSS PIC X. 03140032 15 GEO-WA2-FN3C-ZIP PIC X(5). 03150032 15 GEO-WA2-FN3C-HEALTHAREA PIC X(4). 03160053 15 GEO-WA2-FN3C-POLICEDIST. 03170032 20 GEO-WA2-FN3C-POL-PATR-BORO-CMD PIC X(1). 03180032 20 GEO-WA2-FN3C-POL-PRECINCT PIC X(3). 03190032 ** NOTE:10 GEO-WA2-FN3C-FIRESEC ==> FIRE DIVISION ** 03200032 15 GEO-WA2-FN3C-FIRESEC PIC X(2). 03210032 15 GEO-WA2-FN3C-FIREBAT PIC X(2). 03220032 15 GEO-WA2-FN3C-FIRECO. 03230032 20 GEO-WA2-FN3C-FIRECO-TYPE PIC X(1). 03240032 20 GEO-WA2-FN3C-FIRECO-NUM PIC X(3). 03250032 15 GEO-WA2-FN3C-SCHOOLDIST PIC X(2). 03260032 15 GEO-WA2-FN3C-DYN-BLOCK PIC X(3). 03270032 15 PIWA2-FN3C-ED PIC X(3). 03281041 15 PIWA2-FN3C-AD PIC X(2). 03282041 15 PIWA2-FN3C-POLICE-PAT-BORO PIC X(2). 03282173 15 FILLER PIC X. 03283073 15 GEO-WA2-FN3C-BORO PIC X. 03310051 15 GEO-WA2-FN3C-1990-CENSUSTRACT PIC X(6). 03311051 15 GEO-WA2-FN3C-2010-CENS-TRCT PIC X(6). 03320035 15 GEO-WA2-FN3C-2010-CENS-BLK PIC X(4). 03330035 15 GEO-WA2-FN3C-2010-CENS-BLK-SFX PIC X. 03340035 15 GEO-WA2-FN3C-2000-CENS-TRACT PIC X(6). 03360035 15 GEO-WA2-FN3C-2000-CENS-BLOCK PIC X(4). 03370035 15 GEO-WA2-FN3C-2000-CENS-BLK-SUF PIC X. 03380035 15 FILLER PIC X(7). 03380177 ****** 15 PIWA2-FN3C-BLOCKFACE-ID V16.1 PIC X(7)*** 03381077 15 PIWA2-FN3C-NTA PIC X(4). 03382050 15 FILLER PIC X(8). 03390050 03400032 05 PIWA2-AUX-FUNCTION3C REDEFINES PIWA2. 03410032 10 FILLER PIC X(300). 03420037 10 PIWA2-FN3C-SEGAUX. 03430032 15 PIWA2-FN3C-SEGAUX-FILL PIC X(4). 03440032 15 PIWA2-FN3C-SEGAUX-CTR PIC X(4). 03450032 15 PIWA2-FN3C-SEGAUX-SEGS OCCURS 70 TIMES 03460032 PIC X(7). 03470032 03480032 ****************************************************************** 03481036 **** FOR: FUNCTION 3C EXTENDED ****************************** 03482036 03483036 05 PIWA2-FUNCTION3CX REDEFINES PIWA2. 03484036 10 PIWA2-3CX-ACCESS-KEY PIC X(21). 03485042 10 PIWA2-3CX-DUP-KEY-FLAG PIC X. 03486039 10 PIWA2-3CX-LOCATION-STATUS PIC X. 03487042 10 PIWA2-3CX-COUNTY-BOUNDARY PIC X. 03488042 10 PIWA2-3CX-PREFERRED-LGC1 PIC X(2). 03489042 10 PIWA2-3CX-PREFERRED-LGC2 PIC X(2). 03489142 10 PIWA2-3CX-PREFERRED-LGC3 PIC X(2). 03489242 10 PIWA2-3CX-NUM-X-ST-LOW-END PIC X. 03489342 10 PIWA2-3CX-LOW-B5SC PIC X(6) 03489439 OCCURS 5 TIMES. 03489536 10 PIWA2-3CX-NUM-X-ST-HI-END PIC X. 03489642 10 PIWA2-3CX-HI-B5SC PIC X(6) 03489739 OCCURS 5 TIMES. 03489836 10 PIWA2-3CX-REVERSALFLAG PIC X. 03489942 10 PIWA2-3CX-LIONKEY. 03490039 15 PIWA2-3CX-LION-BORO PIC X. 03490139 15 PIWA2-3CX-LIONFACECODE PIC X(4). 03490242 15 PIWA2-3CX-LIONSEQ PIC X(5). 03490342 10 PIWA2-3CX-GENRECFLAG PIC X. 03490442 10 PIWA2-3CX-SEG-LEN PIC X(5). 03490539 10 PIWA2-3CX-SEGMENTSLOPE PIC X(3). 03490642 10 PIWA2-3CX-SEGMENTORIENT PIC X. 03490742 10 PIWA2-3CX-MARBLE-RIKER-FLAG PIC X(1). 03490842 10 PIWA2-3CX-FROM-NODE PIC X(7). 03490942 10 PIWA2-3CX-TO-NODE PIC X(7). 03491042 10 PIWA2-3CX-SANIT-SNOW-PRRTY PIC X. 03491150 10 FILLER PIC X(4). 03491250 10 PIWA2-3CX-SEG-ID PIC X(7). 03491342 10 PIWA2-3CX-SLA PIC X. 03491442 10 PIWA2-3CX-SIDE-OF-STR PIC X. 03491539 10 PIWA2-3CX-CURVE-FLAG PIC X. 03491642 10 PIWA2-3CX-FEATURE-TYPE PIC X. 03491742 10 PIWA2-3CX-SEGMENT-TYPE PIC X. 03491842 10 PIWA2-3CX-COINCIDENT-CNT PIC X. 03491942 10 FILLER PIC X(4). 03492036 10 PIWA2-3CX-BLOCKFACE-INFO. 03492139 15 PIWA2-3CX-COMDIST. 03492242 20 PIWA2-3CX-COMDIST-BORO PIC X(1). 03492342 20 PIWA2-3CX-COMDIST-NUMBER PIC X(2). 03492442 15 PIWA2-3CX-LOW-HOUSENUM PIC X(16). 03492539 15 PIWA2-3CX-HI-HOUSENUM PIC X(16). 03492639 15 PIWA2-3CX-LOW-HOUSENUM2 PIC X(16). 03492739 15 PIWA2-3CX-HI-HOUSENUM2 PIC X(16). 03492839 15 FILLER-GSS PIC X. 03492936 15 PIWA2-3CX-ZIP PIC X(5). 03493042 15 PIWA2-3CX-HEALTHAREA PIC X(4). 03493153 15 PIWA2-3CX-POLICEDIST. 03493242 20 PIWA2-3CX-POL-PATR-BORO-CMD PIC X(1). 03493342 20 PIWA2-3CX-POL-PRECINCT PIC X(3). 03493442 ** NOTE:10 PIWA2-3CX-FIRESEC ==> FIRE DIVISION ** 03493542 15 PIWA2-3CX-FIRESEC PIC X(2). 03493642 15 PIWA2-3CX-FIREBAT PIC X(2). 03493742 15 PIWA2-3CX-FIRECO. 03493842 20 PIWA2-3CX-FIRECO-TYPE PIC X(1). 03493942 20 PIWA2-3CX-FIRECO-NUM PIC X(3). 03494042 15 PIWA2-3CX-SCHOOLDIST PIC X(2). 03494142 15 PIWA2-3CX-DYN-BLOCK PIC X(3). 03494242 15 PIWA2-3CX-ED PIC X(3). 03494439 15 PIWA2-3CX-AD PIC X(2). 03494539 15 PIWA2-3CX-POLICE-PAT-BORO PIC X(2). 03494673 15 FILLER PIC X. 03494773 15 PIWA2-3CX-BORO PIC X. 03494851 15 PIWA2-3CX-1990-CENSUSTRACT PIC X(6). 03494951 15 PIWA2-3CX-2010-CENS-TRCT PIC X(6). 03495051 15 PIWA2-3CX-2010-CENS-BLK PIC X(4). 03495151 15 PIWA2-3CX-2010-CENS-BLK-SFX PIC X. 03495251 15 PIWA2-3CX-2000-CENS-TRACT PIC X(6). 03495351 15 PIWA2-3CX-2000-CENS-BLOCK PIC X(4). 03495451 15 PIWA2-3CX-2000-CENS-BLK-SUF PIC X. 03495551 15 FILLER PIC X(7). 03495677 ***** 15 PIWA2-3CX-BLOCKFACE-ID V16.1 PIC X(7)*** 03495777 15 PIWA2-3CX-NTA PIC X(4). 03495851 15 FILLER PIC X(8). 03495951 15 PIWA2-3CX-LGCS PIC X(8). 03496051 15 PIWA2-3CX-LGCS-FROM PIC X(8). 03496151 15 PIWA2-3CX-LGCS-TO PIC X(8). 03496251 15 PIWA2-3CX-L-HCD PIC X(2). 03496353 15 PIWA2-3CX-R-HCD PIC X(2). 03496453 15 FILLER PIC X(1). 03496551 15 PIWA2-3CX-TRAFFIC-DIR PIC X(1). 03496651 15 PIWA2-3CX-ROADWAY-TYPE PIC X(2). 03496751 15 PIWA2-3CX-PHYSICAL-ID PIC X(7). 03496851 15 PIWA2-3CX-GENERIC-ID PIC X(7). 03496951 15 PIWA2-3CX-INTP-ID PIC X(7). 03497051 15 PIWA2-3CX-INFD-ID PIC X(7). 03497151 15 PIWA2-3CX-STR-STATUS PIC X(1). 03497251 15 PIWA2-3CX-STR-WIDTH PIC X(3). 03497351 15 PIWA2-3CX-STR-WIDTH-IRREF PIC X(1). 03497451 15 PIWA2-3CX-BIKE-LANE PIC X(1). 03497551 15 PIWA2-3CX-FED-CLASS-CODE PIC X(2). 03497651 15 PIWA2-3CX-ROW-TYPE PIC X(1). 03497751 15 PIWA2-3CX-LGC-LIST PIC X(10). 03497851 15 PIWA2-3CX-LEGACY-ID PIC X(7). 03497951 15 PIWA2-3CX-NTA-NAME PIC X(75). 03498052 15 PIWA2-3CX-FROM-XCOORD PIC X(7). 03498156 15 PIWA2-3CX-FROM-YCOORD PIC X(7). 03498256 15 PIWA2-3CX-TO-XCOORD PIC X(7). 03498356 15 PIWA2-3CX-TO-YCOORD PIC X(7). 03498456 15 PIWA2-3CX-FROM-LATITUDE PIC X(9). 03498575 15 PIWA2-3CX-FROM-LONGITUDE PIC X(11). 03498675 15 PIWA2-3CX-TO-LATITUDE PIC X(9). 03498775 15 PIWA2-3CX-TO-LONGITUDE PIC X(11). 03498875 15 PIWA2-3CX-BLOCKFACE-ID PIC X(10). 03498977 15 PIWA2-3CX-NBR-TRAVEL-LANES PIC X(2). 03499077 15 PIWA2-3CX-NBR-PARK-LANES PIC X(2). 03499177 15 PIWA2-3CX-NBR-TOTAL-LANES PIC X(2). 03499277 15 PIWA2-3CX-BIKE-LANE-2 PIC X(2). 03499379 15 PIWA2-3CX-STR-WIDTH-MAX PIC X(3). 03499479 15 PIWA2-3CX-BIKE-TRAFFIC-DIR PIC X(2). 03499581 15 PIWA2-3CX-SPEED-LIMIT PIC X(2). 03499683 15 PIWA2-3CX-PUMA-CODE PIC X(5). 03499785 15 PIWA2-3CX-POLICE-SECTOR PIC X(4). 03499887 15 FILLER PIC X(287). 03500087 **** 15 FILLER V18.3 PIC X(291). 03500187 **** 15 FILLER V18.1 PIC X(296). 03500287 **** 15 FILLER V17.4 PIC X(298). 03500387 **** 15 FILLER V17.1 PIC X(300). 03500487 **** 15 FILLER V16.4 PIC X(305). 03500587 **** 15 FILLER V16.1 PIC X(321). 03500687 **** 15 FILLER V15.3 PIC X(361). 03500787 03500887 05 PIWA2-AUX-FUNCTION3CX REDEFINES PIWA2. 03500987 10 FILLER PIC X(850). 03501087 10 PIWA2-3CX-SEGAUX. 03501187 15 PIWA2-3CX-SEGAUX-FILL PIC X(4). 03501287 15 PIWA2-3CX-SEGAUX-CTR PIC X(4). 03501387 15 PIWA2-3CX-SEGAUX-SEGS OCCURS 70 TIMES 03501487 PIC X(7). 03501587 03501687 ****************************************************************** 03501787 **** FOR: FUNCTION 5 ****************************** 03502081 03510032 05 PIWA2-FUNCTION5 REDEFINES PIWA2. 03520032 10 GEO-WA2-FN5-ADDR-MATCHING-KEY PIC X(33). 03530034","title":"P2COB COPY File"},{"location":"appendices/appendix14/#p2cob1a-copy-file","text":"***************************************************************** 00010007 ** YL 9/27/2017 ADDED DCP ZONE MAP FIELD ** 00020011 ** THIS IS THE COBOL STRUCTURE FOR GEOSUPPORT SYSTEM PLATFORM ** 00021011 ** INDEPENDENT REGULAR WORK AREA 2 FOR FUNCTIONS: 1A, BL, AND ** 00030007 ** BN. THESE THREE FUNCTIONS SHARE A SINGLE WORK AREA 2 ** 00040007 ** LAYOUT. COPY FILE - P2COB1A. 10/10/97 ** 00050007 ***************************************************************** 00060007 00070007 05 GEO-WA2-1A-ACCESS-KEY PIC X(21). 00080007 05 GEO-WA2-1A-CONT-PARITY PIC X. 00090007 05 PIWA2-1A-LOW-HOUSENUM PIC X(11). 00100007 05 GEO-WA2-1A-ALTKEY-1. 00110007 10 GEO-WA2-1A-ALTKEY-1-BORO PIC X. 00120007 10 GEO-WA2-1A-ALTKEY-1-TAXBLOCK PIC X(5). 00130007 10 GEO-WA2-1A-ALTKEY-1-TAXLOT PIC X(4). 00140007 05 FILLER PIC X. 00150007 05 GEO-WA2-1A-SCC PIC X(1). 00160007 05 FILLER PIC X. 00170007 05 GEO-WA2-1A-GENERAL-LOT-INFO. 00180007 10 GEO-WA2-1A-RPAD-BLDG-CLASS PIC X(2). 00190007 10 GEO-WA2-1A-CORNER-CODE PIC X(2). 00200007 10 GEO-WA2-1A-TOT-NBR-BLDG PIC X(4). 00210007 10 GEO-WA2-1A-NUM-OF-BLOCKFACES PIC X(2). 00220007 10 GEO-WA2-1A-INTERIOR-FLAG PIC X. 00230007 10 GEO-WA2-1A-VACANT-FLAG PIC X. 00240007 10 GEO-WA2-1A-IRREG-FLAG PIC X. 00250007 05 GEO-WA2-1A-ALT-BORO-FLAG PIC X. 00260007 05 GEO-WA2-1A-OVERFLOW-FLAG PIC X(1). 00270007 05 PIWA2-1A-STROLL-KEY PIC X(19). 00280007 05 FILLER-GSS PIC X. 00290007 05 GEO-WA2-1A-BLDG-ID-NUM PIC X(7). 00300007 05 GEO-WA2-1A-CONDO-LOT-FLAG PIC X. 00310007 05 FILLER PIC X. 00320007 05 GEO-WA2-1A-RPAD-COND-NUM PIC X(4). 00330007 05 FILLER PIC X(7). 00340007 05 GEO-WA2-1A-CONDO-BILLING-BBL PIC X(10). 00350007 05 FILLER PIC X. 00360007 05 GEO-WA2-1A-CONDO-BILL-BBL-SCC PIC X(1). 00370007 05 GEO-WA2-1A-CONDO-LOW-BBL PIC X(10). 00380007 05 FILLER PIC X. 00390007 05 GEO-WA2-1A-CONDO-HIGH-BBL PIC X(10). 00400007 05 FILLER PIC X. 00410007 05 FILLER PIC X(15). 00420007 05 GEO-WA2-1A-CO-OP-NBR PIC X(4). 00430007 05 GEO-WA2-1A-SANBORN-BVOLPAGE. 00440007 10 GEO-WA2-1A-SANBORN-BORO PIC X(1). 00450007 10 GEO-WA2-1A-SANBORN-VOL-PAGE. 00460007 15 GEO-WA2-1A-SANBORN-VOL-NUM PIC X(3). 00470007 15 GEO-WA2-1A-SANBORN-PAGE-NUM PIC X(4). 00480007 05 GEO-WA2-1A-COMMERC-DIST PIC X(5). 00490007 05 GEO-WA2-1A-DOF-MAP-BOROUGH PIC X. 00500007 05 GEO-WA2-1A-TAX-MAP-NBR PIC X(4). 00510007 05 FILLER-FOR-TAX-MAP-PAGE PIC X(4). 00520007 05 FILLER PIC X(3). 00530009 05 PIWA2-1A-LATITUDE PIC X(9). 00540009 05 PIWA2-1A-LONGITUDE PIC X(11). 00540110 05 PIWA2-1A-X-COORD PIC X(7). 00541009 05 PIWA2-1A-Y-COORD PIC X(7). 00550007 05 PIWA2-1A-BID PIC X(6). 00560007 05 PIWA2-1A-TPAD-BIN-ST PIC X. 00570007 05 PIWA2-1A-TPAD-NEW-BIN PIC X(7). 00580007 05 PIWA2-1A-TPAD-NEW-BIN-ST PIC X. 00590007 05 PIWA2-1A-TPAD-CONFLICT PIC X. 00600007 05 PIWA2-1A-DCP-ZONE-MAP PIC X(3). 00601011 05 FILLER PIC X(6). 00610011 05 FILLER-GSS PIC X(8). 00620007 05 PIWA2-1A-NUM-OF-ADDR PIC X(4). 00630007 05 PIWA2-1A-ADDR-LIST OCCURS 21 TIMES. 00640007 10 PIWA2-1A-LIST-LOW-HOUSENUM PIC X(16). 00650007 10 PIWA2-1A-LIST-HI-HOUSENUM PIC X(16). 00660007 10 PIWA2-1A-LIST-BORO PIC X. 00670007 10 PIWA2-1A-LIST-5SC PIC X(5). 00680007 10 PIWA2-1A-LIST-LGC PIC X(2). 00690007 10 GEO-WA2-1A-LIST-BIN PIC X(7). 00700007 10 GEO-WA2-1A-LIST-SOS PIC X. 00710007 10 GEO-WA2-1A-ADDR-TYPE PIC X. 00720007 10 PIWA2-1A-TPAD-STATUS PIC X. 00730007 10 FILLER PIC X(3). 00740007","title":"P2COB1A COPY File"},{"location":"appendices/appendix14/#p2cob1al-copy-file","text":"***************************************************************** 00010006 ** P2COBIAL ** 00020034 ** LAST MODIFIED JANUARY 2019 ** 00021044 ** ADD POLICE SECTOR AND POLICE SERVICE AREA YNL 06/14 V19.2 ** 00022044 ** NOTE: (POLICE SERVICE AREA FIELD NAME IS POLICE-SRVC-AREA) ** 00023043 ** ADD NEW 5 BYTE PUMA CODE YNL 12/17 V18,1 ** 00031039 ** YL 9/27/2017 ADDED DCP ZONE MAP FIELD ** 00040037 ** ADD NEW 2 BYTE SPEED LIMIT YNL 09/17 V17,4 ** 00050036 ** ADD NEW 2 BYTE BIKE TRAFFIC DIRECTION YNL 12/16 V17,1 ** 00060036 ** THIS IS THE COBOL STRUCTURE FOR GEOSUPPORT SYSTEM PLATFORM ** 00070006 ** INDEPENDENT LONG WORK AREA 2 FOR FUNCTIONS: 1A, AND BL. ** 00080006 ** THESE TWO FUNCTIONS SHARE A SINGLE LONG WORK AREA 2 LAYOU. ** 00090006 ** COPY FILE - P2COB1AL. 11/06/97 ** 00100006 ***************************************************************** 00110006 ** LAST MODIFIED OCTOBER 2016 ** 00120030 ***************************************************************** 00130027 ** JANUARY 2011 YNL ADDED THREE WORK AREAS: ** 00140006 ** 1. P2COB1EX - FUNCTION 1E EXTENDED. ** 00150007 ** 2. P2COB1AX - FUNCTION 1A EXTENDED. ** 00160006 ** 2. P2COB1B - P2COB1EX COMBINED WITH P2COB1AX ** 00170016 ***************************************************************** 00180006 03 PIWA2 PIC X(17750). 00190006 ****************************************************************** 00200006 **** FOR: FUNCTION 1A LONG ****************************** 00210006 00220006 03 PIWA2-FUNCTION1AL REDEFINES PIWA2. 00230006 00240006 05 GEO-WA2-1AL-ACCESS-KEY PIC X(21). 00250006 05 GEO-WA2-1AL-CONT-PARITY PIC X. 00260006 05 PIWA2-1AL-LOW-HOUSENUM PIC X(11). 00270006 05 GEO-WA2-1AL-ALTKEY-1. 00280006 10 GEO-WA2-1AL-ALTKEY-1-BORO PIC X. 00290006 10 GEO-WA2-1AL-ALTKEY-1-TAXBLOCK PIC X(5). 00300006 10 GEO-WA2-1AL-ALTKEY-1-TAXLOT PIC X(4). 00310006 05 FILLER PIC X. 00320006 05 GEO-WA2-1AL-SCC PIC X. 00330006 05 FILLER PIC X. 00340006 05 GEO-WA2-1AL-GENERAL-LOT-INFO. 00350006 10 GEO-WA2-1AL-RPAD-BLDG-CLASS PIC X(2). 00360006 10 GEO-WA2-1AL-CORNER-CODE PIC X(2). 00370006 10 GEO-WA2-1AL-NUM-OF-STRUCTURES PIC X(4). 00380006 10 GEO-WA2-1AL-NUM-OF-BLOCKFACES PIC X(2). 00390006 10 GEO-WA2-1AL-INTERIOR-FLAG PIC X. 00400006 10 GEO-WA2-1AL-VACANT-FLAG PIC X. 00410006 10 GEO-WA2-1AL-IRREG-FLAG PIC X. 00420006 05 GEO-WA2-1AL-ALT-BORO-FLAG PIC X. 00430006 05 FILLER PIC X. 00440006 05 PIWA2-1AL-STROLL-KEY PIC X(19). 00450006 05 FILLER-GSS PIC X. 00460006 05 GEO-WA2-1AL-BLDG-ID-NUM PIC X(7). 00470006 05 GEO-WA2-1AL-CONDO-LOT-FLAG PIC X. 00480006 05 FILLER PIC X. 00490006 05 GEO-WA2-1AL-RPAD-COND-NUM PIC X(4). 00500006 05 FILLER PIC X(7). 00510006 05 GEO-WA2-1AL-CONDO-BILLING-BBL PIC X(10). 00520006 05 FILLER PIC X. 00530006 05 GEO-WA2-1AL-CONDO-BILL-BBL-SCC PIC X. 00540006 05 GEO-WA2-1AL-CONDO-LOW-BBL PIC X(10). 00550006 05 FILLER PIC X. 00560006 05 GEO-WA2-1AL-CONDO-HIGH-BBL PIC X(10). 00570006 05 FILLER PIC X. 00580006 05 FILLER PIC X(15). 00590006 05 GEO-WA2-1AL-CO-OP-NBR PIC X(4). 00600006 05 GEO-WA2-1AL-SANBORN-BVOLPAGE. 00610006 10 GEO-WA2-1AL-SANBORN-BORO PIC X(1). 00620006 10 GEO-WA2-1AL-SANBORN-VOL-PAGE. 00630006 15 GEO-WA2-1AL-SANBORN-VOL-NUM PIC X(3). 00640006 15 GEO-WA2-1AL-SANBORN-PAGE-NUM PIC X(4). 00650006 05 GEO-WA2-1AL-COMMERC-DIST PIC X(5). 00660006 05 PIWA2-1AL-DOF-MAP-BORO PIC X. 00670006 05 PIWA2-1AL-DOF-MAP-SECVOL PIC X(4). 00680006 ******* PIWA2-1AL-DOF-MAP-PAGE NOT IMPLEMENTED 00690006 05 PIWA2-1AL-DOF-MAP-PAGE PIC X(4). 00700006 05 FILLER PIC X(3). 00710019 05 PIWA2-1AL-LATITUDE PIC X(9). 00720019 05 PIWA2-1AL-LONGITUDE PIC X(11). 00730019 05 PIWA2-1AL-X-COORD PIC X(7). 00740019 05 PIWA2-1AL-Y-COORD PIC X(7). 00750019 05 PIWA2-1AL-BID PIC X(6). 00760019 05 PIWA2-1AL-TPAD-BIN-ST PIC X. 00770019 05 PIWA2-1AL-TPAD-NEW-BIN PIC X(7). 00780019 05 PIWA2-1AL-TPAD-NEW-BIN-ST PIC X. 00790019 05 PIWA2-1AL-TPAD-CONFLICT PIC X. 00800019 05 PIWA2-1AL-DCP-ZONE-MAP PIC X(3). 00810037 05 FILLER PIC X(6). 00820037 05 FILLER-GSS PIC X(8). 00830037 05 GEO-WA2-1AL-NUM-OF-BINS PIC X(4). 00840037 05 PIWA2-1AL-TPAD-BINLIST. 00850037 10 PIWA2-1AL-TPAD-BINS OCCURS 2187 TIMES. 00860037 15 PIWA2-1AL-TPAD-BINS-BIN PIC X(7). 00870037 15 PIWA2-1AL-TPAD-BINS-STAT PIC X. 00880037 10 PIWA2-1AL-TPAD-FILL PIC X(4). 00890037 05 GEO-WA2-1AL-BINS REDEFINES PIWA2-1AL-TPAD-BINLIST 00900037 PIC X(7) OCCURS 2500 TIMES. 00910037 00920037 *************************************************************** 00930037 *** FOR: FUNCTION 1/1E EXTENDED *****************3********** 00940037 00950037 03 PIWA2-FUNCTION1EX REDEFINES PIWA2. 00960037 00970037 05 PIWA2-FN1EX-ACCESS-KEY PIC X(21). 00980037 05 PIWA2-FN1EX-CONT-PARITY PIC X. 00990037 05 PIWA2-FN1EX-LOW-HOUSENUM-SORT PIC X(11). 01000037 05 PIWA2-FN1EX-HI-HOUSENUM-SORT PIC X(11). 01010037 05 PIWA2-FN1EX-PREFERRED-LGC PIC X(2). 01020037 05 PIWA2-FN1EX-NUM-X-ST-LOW-END PIC X. 01030037 05 PIWA2-FN1EX-LOW-B5SC PIC X(6) 01040037 OCCURS 5 TIMES. 01050037 05 PIWA2-FN1EX-NUM-X-ST-HI-END PIC X. 01060037 05 PIWA2-FN1EX-HI-B5SC PIC X(6) 01070037 OCCURS 5 TIMES. 01080037 05 PIWA2-FN1EX-LIONKEY. 01090037 10 PIWA2-FN1EX-LION-BORO PIC X. 01100037 10 PIWA2-FN1EX-LIONFACECODE PIC X(4). 01110037 10 PIWA2-FN1EX-LIONSEQ PIC X(5). 01120037 05 PIWA2-FN1EX-SPECIAL-ADDR-FLAG PIC X(1). 01130037 05 PIWA2-FN1EX-SIDE-OF-STR PIC X. 01140037 05 PIWA2-FN1EX-SEGMENTLENGTH PIC X(5). 01150037 05 PIWA2-FN1EX-XCOORD PIC X(7). 01160037 05 PIWA2-FN1EX-YCOORD PIC X(7). 01170037 05 FILLER-GSS PIC X(8). 01180037 05 PIWA2-FN1EX-MARBLE-RIKER-FLAG PIC X(1). 01190037 05 PIWA2-FN1EX-SLA PIC X. 01200037 05 PIWA2-FN1EX-COMDIST. 01210037 10 PIWA2-FN1EX-COMDIST-BORO PIC X(1). 01220037 10 PIWA2-FN1EX-COMDIST-NUMBER PIC X(2). 01230037 05 PIWA2-FN1EX-ZIP PIC X(5). 01240037 01250037 05 PIWA2-FN1EX-ELECTDIST PIC X(3). 01260037 05 PIWA2-FN1EX-ASSEMDIST PIC X(2). 01270037 05 PIWA2-FN1EX-SPLIT-ED-FLAG PIC X(1). 01280037 05 PIWA2-FN1EX-CONGDIST PIC X(2). 01290037 05 PIWA2-FN1EX-SENATEDIST PIC X(2). 01300037 05 PIWA2-FN1EX-COURTDIST PIC X(2). 01310037 05 PIWA2-FN1EX-COUNCILDIST PIC X(2). 01320037 01330037 05 PIWA2-FN1EX-HCD PIC X(2). 01340037 05 PIWA2-FN1EX-HEALTHAREA PIC X(4). 01350037 05 PIWA2-FN1EX-SANIDIST. 01360037 10 PIWA2-FN1EX-SANIDIST-BORO PIC X(1). 01370037 10 PIWA2-FN1EX-SANIDIST-NUMBER PIC X(2). 01380037 05 PIWA2-FN1EX-SANITATION-SUBSEC PIC X(2). 01390037 05 PIWA2-FN1EX-SANI-REG PIC X(5). 01400037 05 PIWA2-FN1EX-SANI-REC PIC X(3). 01410037 05 PIWA2-FN1EX-POLICEDIST. 01420037 15 PIWA2-FN1EX-POL-PATR-BORO-CMD PIC X(1). 01430037 15 PIWA2-FN1EX-POL-PRECINCT PIC X(3). 01440037 ** NOTE:10 PIWA2-FN1EX-FIRESEC ==> FIRE DIVISION ** 01450037 05 PIWA2-FN1EX-FIRESEC PIC X(2). 01460037 05 PIWA2-FN1EX-FIREBAT PIC X(2). 01470037 05 PIWA2-FN1EX-FIRECO. 01480037 10 PIWA2-FN1EX-FIRECO-TYPE PIC X(1). 01490037 10 PIWA2-FN1EX-FIRECO-NUM PIC X(3). 01500037 05 PIWA2-FN1EX-SPLIT-SCHOOL-FLAG PIC X. 01510037 05 PIWA2-FN1EX-SCHOOLDIST PIC X(2). 01520037 05 PIWA2-FN1EX-DYN-BLOCK PIC X(3). 01530037 05 PIWA2-FN1EX-POLICE-PAT-BORO PIC X(2). 01540037 05 PIWA2-FN1EX-FEATURE-TYPE PIC X. 01550037 05 PIWA2-FN1EX-SEGMENT-TYPE PIC X. 01560037 05 PIWA2-FN1EX-ALX PIC X. 01570037 05 PIWA2-FN1EX-COINCIDENT-CNT PIC X. 01580037 05 FILLER PIC X(3). 01590037 05 PIWA2-FN1EX-1990-CENSUSTRACT PIC X(6). 01600037 05 PIWA2-FN1EX-2010-CENS-TRCT PIC X(6). 01610037 05 PIWA2-FN1EX-2010-CENS-BLK PIC X(4). 01620037 05 PIWA2-FN1EX-2010-CENS-BLK-SFX PIC X. 01630037 05 PIWA2-FN1EX-2000-CENS-TRCT PIC X(6). 01640037 05 PIWA2-FN1EX-2000-CENS-BLK PIC X(4). 01650037 05 PIWA2-FN1EX-2000-CENS-BLK-SFX PIC X. 01660037 05 PIWA2-FN1EX-NTA PIC X(4). 01670037 05 PIWA2-FN1EX-SANIT-SNOW-PRRTY PIC X. 01680037 05 PIWA2-FN1EX-SANIT-ORGANICS PIC X(5). 01690037 05 PIWA2-FN1EX-SANIT-BULK-PICK-UP PIC X(5). 01700037 **** 05 PIWA2-FN1EX-SANIT-RESERVED V16.4 PIC X(5). 01710037 05 PIWA2-FN1EX-HURRICANE-ZONE PIC XX. 01720037 05 FILLER PIC X(11). 01730037 05 PIWA2-FN1EX-TRUE-HNS PIC X(11). 01740037 05 PIWA2-FN1EX-TRUE-B7SC PIC X(8). 01750037 05 PIWA2-FN1EX-SEG-ID PIC X(7). 01760037 05 PIWA2-FN1EX-CURVE-FLAG PIC X(1). 01770037 05 PIWA2-FN1EX-LGCS PIC X(8). 01780037 05 PIWA2-FN1EX-BOE-PTR PIC X(1). 01790037 05 PIWA2-FN1EX-AZIMUTH PIC X(3). 01800037 05 PIWA2-FN1EX-ORIENT PIC X(1). 01810037 05 PIWA2-FN1EX-X-LOW PIC X(7). 01820037 05 PIWA2-FN1EX-Y-LOW PIC X(7). 01830037 05 PIWA2-FN1EX-Z-LOW PIC X(7). 01840037 05 PIWA2-FN1EX-X-HI PIC X(7). 01850037 05 PIWA2-FN1EX-Y-HI PIC X(7). 01860037 05 PIWA2-FN1EX-Z-HI PIC X(7). 01870037 05 PIWA2-FN1EX-X-CC PIC X(7). 01880037 05 PIWA2-FN1EX-Y-CC PIC X(7). 01890037 05 PIWA2-FN1EX-Z-CC PIC X(7). 01900037 05 PIWA2-FN1EX-RADIUS PIC X(7). 01910037 05 PIWA2-FN1EX-SECANT PIC X(1). 01920037 05 PIWA2-FN1EX-ANGLE-FROM PIC X(5). 01930037 05 PIWA2-FN1EX-ANGLE-TO PIC X(5). 01940037 05 PIWA2-FN1EX-NODE-FROM PIC X(7). 01950037 05 PIWA2-FN1EX-NODE-TO PIC X(7). 01960037 05 PIWA2-FN1EX-VANITY-LION PIC X(10). 01970037 05 PIWA2-FN1EX-SOS PIC X(1). 01980037 05 PIWA2-FN1EX-SPLIT-LOHSN PIC X(11). 01990037 05 PIWA2-FN1EX-TD PIC X(1). 02000037 05 PIWA2-FN1EX-TR PIC X(10). 02010037 05 PIWA2-FN1EX-CURVE-FRACTION PIC X(3). 02020037 05 PIWA2-FN1EX-ROADWAY-TYPE PIC X(2). 02030037 05 PIWA2-FN1EX-PHYICAL-ID PIC X(7). 02040037 05 PIWA2-FN1EX-GENERIC-ID PIC X(7). 02050037 05 PIWA2-FN1EX-NYPD-ID-FILL PIC X(7). 02060037 05 PIWA2-FN1EX-FDNY-ID-FILL PIC X(7). 02070037 05 PIWA2-FN1EX-BIKE-LANE-2 PIC X(2). 02080037 05 PIWA2-FN1EX-BIKE-TRAFFIC-DIR PIC X(2). 02090037 05 FILLER PIC X(3). 02100037 **** 05 FILLER ******V17.1 ** PIC X(5). 02110033 **** 05 FILLER ******V16.4 ** PIC X(7). 02120033 **** 05 PIWA2-FN1EX-BLOCKFACE-ID *V16.1 ** PIC X(7) *** 02130033 05 PIWA2-FN1EX-STREET-STATUS PIC X(1). 02140033 05 PIWA2-FN1EX-STREET-WIDTH PIC X(3). 02150033 05 PIWA2-FN1EX-STREET-WIDTH-IRR PIC X(1). 02160033 05 PIWA2-FN1EX-BIKE-LANE PIC X(1). 02170033 05 PIWA2-FN1EX-FED-CLASS-CODE PIC X(2). 02180033 05 PIWA2-FN1EX-ROW-TYPE PIC X(1). 02190033 05 PIWA2-FN1EX-LGC-LIST-2 PIC X(10). 02200033 05 PIWA2-FN1EX-LEGACY-SEG-ID PIC X(7). 02210033 05 PIWA2-FN1EX-LGC-LIST-FROM-1 PIC X(10). 02220033 05 PIWA2-FN1EX-LGC-LIST-TO-1 PIC X(10). 02230033 05 PIWA2-FN1EX-LGC-LIST-FROM-2 PIC X(10). 02240033 05 PIWA2-FN1EX-LGC-LIST-TO-2 PIC X(10). 02250033 05 PIWA2-FN1EX-NOCROSS-FLG PIC X(1). 02260033 05 PIWA2-FN1EX-IND-SEG-LEN PIC X(5). 02270033 05 PIWA2-FN1EX-NTA-NAME PIC X(75). 02280033 05 PIWA2-FN1EX-USPS-CITY-NAME PIC X(25). 02290033 05 PIWA2-FN1EX-LATITUDE PIC X(9). 02300033 05 PIWA2-FN1EX-LONGITUDE PIC X(11). 02310033 05 PIWA2-FN1EX-SEG-FROM-NODE PIC X(7). 02320033 05 PIWA2-FN1EX-SEG-TO-NODE PIC X(7). 02330033 05 PIWA2-FN1EX-SEG-FROM-XYZ PIC X(21). 02340033 05 PIWA2-FN1EX-SEG-TO-XYZ PIC X(21). 02350033 05 PIWA2-FN1EX-BLOCKFACE-ID PIC X(10). 02360033 05 PIWA2-FN1EX-NBR-TRAVEL-LANES PIC X(2). 02370033 05 PIWA2-FN1EX-NBR-PARK-LANES PIC X(2). 02380033 05 PIWA2-FN1EX-NBR-TOTAL-LANES PIC X(2). 02390033 05 PIWA2-FN1EX-STREET-WIDTH-MAX PIC X(3). 02400033 05 PIWA2-FN1EX-SPEED-LIMIT PIC X(2). 02410036 05 PIWA2-FN1EX-PUMA-CODE PIC X(5). 02411039 05 PIWA2-FN1EX-POLICE-SECTOR PIC X(4). 02412040 05 PIWA2-FN1EX-POLICE-SRVC-AREA PIC X. 02413042 05 PIWA2-FN1EX-FILL500 PIC X(240). 02420040 **** 05 PIWA2-FN1EX-FILL500 ** V18.3 ** PIC X(245). 02421040 **** 05 PIWA2-FN1EX-FILL500 ** V18.1 ** PIC X(250). 02430039 **** 05 PIWA2-FN1EX-FILL500 ** V17.4 ** PIC X(252). 02431039 **** 05 PIWA2-FN1EX-FILL500 ** V16.4 ** PIC X(255). 02440036 **** 05 PIWA2-FN1EX-FILL500 ** V16.1 ** PIC X(271) *** 02450036 **** 05 PIWA2-FN1EX-FILL500 ** V15.3 ** PIC X(327) *** 02460036 ****************************************************************/ 02470036 * ***/ 02480036 *THE FOLLOWING FIELDS ARE AN ADDITION TO GRID1 ***/ 02490036 ****************************************************************/ 02500036 05 PIWA2-FN1EX-REASON-CODE PIC X(1). 02510036 05 PIWA2-FN1EX-REASON-CODE-QUAL PIC X(1). 02520036 05 PIWA2-FN1EX-WARN-CODE PIC X(2). 02530036 05 PIWA2-FN1EX-RETURN-CODE PIC X(2). 02540036 05 PIWA2-FN1EX-NUM-X-STS-LO-END PIC X(1). 02550036 05 PIWA2-FN1EX-LO-B7SC OCCURS 5 TIMES PIC X(8). 02560036 05 PIWA2-FN1EX-NUM-X-STS-HI-END PIC X(1). 02570036 05 PIWA2-FN1EX-HI-B7SC OCCURS 5 TIMES PIC X(8). 02580036 05 PIWA2-FN1EX-LO-ST-NAME OCCURS 5 TIMES PIC X(32). 02590036 05 PIWA2-FN1EX-HI-ST-NAME OCCURS 5 TIMES PIC X(32). 02600036 05 PIWA2-FN1EX-BOE-B7SC PIC X(8). 02610036 05 PIWA2-FN1EX-BOE-ST-NAME PIC X(32). 02620036 05 PIWA2-FN1EX-FILL600 PIC X(52). 02630036 02640036 *************************************************************** 02650036 *** FOR: FUNCTION 1A EXTENDED **************************** 02660036 02670036 03 PIWA2-FUNCTION1AX REDEFINES PIWA2. 02680036 05 PIWA2-1AX-ACCESS-KEY PIC X(21). 02690036 05 PIWA2-1AX-CONT-PARITY PIC X. 02700036 05 PIWA2-1AX-LOW-HOUSENUM PIC X(11). 02710036 05 PIWA2-1AX-ALTKEY-1. 02720036 10 PIWA2-1AX-ALTKEY-1-BORO PIC X. 02730036 10 PIWA2-1AX-ALTKEY-1-TAXBLOCK PIC X(5). 02740036 10 PIWA2-1AX-ALTKEY-1-TAXLOT PIC X(4). 02750036 05 FILLER PIC X. 02760036 05 PIWA2-1AX-SCC PIC X(1). 02770036 05 FILLER PIC X. 02780036 05 PIWA2-1AX-GENERAL-LOT-INFO. 02790036 10 PIWA2-1AX-RPAD-BLDG-CLASS PIC X(2). 02800036 10 PIWA2-1AX-CORNER-CODE PIC X(2). 02810036 10 PIWA2-1AX-TOT-NBR-BLDG PIC X(4). 02820036 10 PIWA2-1AX-NUM-OF-BLOCKFACES PIC X(2). 02830036 10 PIWA2-1AX-INTERIOR-FLAG PIC X. 02840036 10 PIWA2-1AX-VACANT-FLAG PIC X. 02850036 10 PIWA2-1AX-IRREG-FLAG PIC X. 02860036 05 PIWA2-1AX-ALT-BORO-FLAG PIC X. 02870036 05 PIWA2-1AX-OVERFLOW-FLAG PIC X(1). 02880036 05 PIWA2-1AX-STROLL-KEY PIC X(19). 02890036 05 FILLER-GSS PIC X. 02900036 05 PIWA2-1AX-BLDG-ID-NUM PIC X(7). 02910036 05 PIWA2-1AX-CONDO-LOT-FLAG PIC X. 02920036 05 FILLER PIC X. 02930036 05 PIWA2-1AX-RPAD-COND-NUM PIC X(4). 02940036 05 FILLER PIC X(7). 02950036 05 PIWA2-1AX-CONDO-BILLING-BBL PIC X(10). 02960036 05 FILLER PIC X. 02970036 05 PIWA2-1AX-CONDO-BILL-BBL-SCC PIC X(1). 02980036 05 PIWA2-1AX-CONDO-LOW-BBL PIC X(10). 02990036 05 FILLER PIC X. 03000036 05 PIWA2-1AX-CONDO-HIGH-BBL PIC X(10). 03010036 05 FILLER PIC X. 03020036 05 FILLER PIC X(15). 03030036 05 PIWA2-1AX-CO-OP-NBR PIC X(4). 03040036 05 PIWA2-1AX-SANBORN-BVOLPAGE. 03050036 10 PIWA2-1AX-SANBORN-BORO PIC X(1). 03060036 10 PIWA2-1AX-SANBORN-VOL-PAGE. 03070036 15 PIWA2-1AX-SANBORN-VOL-NUM PIC X(3). 03080036 15 PIWA2-1AX-SANBORN-PAGE-NUM PIC X(4). 03090036 05 PIWA2-1AX-COMMERC-DIST PIC X(5). 03100036 05 PIWA2-1AX-DOF-MAP-BOROUGH PIC X. 03110036 05 PIWA2-1AX-TAX-MAP-NBR PIC X(4). 03120036 05 FILLER-FOR-TAX-MAP-PAGE PIC X(4). 03130036 05 FILLER PIC X(3). 03140036 05 PIWA2-1AX-LATITUDE PIC X(9). 03150036 05 PIWA2-1AX-LONGITUDE PIC X(11). 03160036 05 PIWA2-1AX-X-COORD PIC X(7). 03170036 05 PIWA2-1AX-Y-COORD PIC X(7). 03180036 05 PIWA2-1AX-BID PIC X(6). 03190036 05 PIWA2-1AX-TPAD-BIN-ST PIC X. 03200036 05 PIWA2-1AX-TPAD-NEW-BIN PIC X(7). 03210036 05 PIWA2-1AX-TPAD-NEW-BIN-ST PIC X. 03220036 05 PIWA2-1AX-TPAD-CONFLICT PIC X. 03230036 05 PIWA2-1AX-DCP-ZONE-MAP PIC X(3). 03240038 05 FILLER PIC X(6). 03250038 05 FILLER-GSS PIC X(8). 03260036 05 PIWA2-1AX-REASON-CODE PIC X(1). 03270036 05 PIWA2-1AX-REASON-CODE-QUAL PIC X(1). 03280036 05 PIWA2-1AX-WARN-CODE PIC X(2). 03290036 05 PIWA2-1AX-RETURN-CODE PIC X(2). 03300036 05 PIWA2-1AX-FILLER PIC X(108). 03310036 05 PIWA2-1AX-NUM-OF-ADDR PIC X(4). 03320036 05 PIWA2-1AX-ADDR-LIST OCCURS 21 TIMES. 03330036 10 PIWA2-1AX-LIST-LOW-HOUSENUM PIC X(16). 03340036 10 PIWA2-1AX-LIST-HI-HOUSENUM PIC X(16). 03350036 10 PIWA2-1AX-LIST-BORO PIC X. 03360036 10 PIWA2-1AX-LIST-5SC PIC X(5). 03370036 10 PIWA2-1AX-LIST-LGC PIC X(2). 03380036 10 PIWA2-1AX-LIST-BIN PIC X(7). 03390036 10 PIWA2-1AX-LIST-SOS PIC X. 03400036 10 PIWA2-1AX-ADDR-TYPE PIC X. 03410036 10 PIWA2-1AX-TPAD-STATUS PIC X. 03420036 10 PIWA2-1AX-ST-NAME PIC X(32). 03430036 10 FILLER PIC X(34). 03440036 03450036 *************************************************************** 03460036 *** FOR: FUNCTION 1B **************************** 03470036 03480036 03 PIWA2-FUNCTION1B REDEFINES PIWA2. 03490036 03500036 05 PIWA2-1B-1-ACCESS-KEY PIC X(21). 03510036 05 PIWA2-1B-1-CONT-PARITY PIC X. 03520036 05 PIWA2-1B-1-LOW-HOUSENUM-SORT PIC X(11). 03530036 05 PIWA2-1B-1-HI-HOUSENUM-SORT PIC X(11). 03540036 05 PIWA2-1B-1-PREFERRED-LGC PIC X(2). 03550036 05 PIWA2-1B-1-NUM-X-ST-LOW-END PIC X. 03560036 05 PIWA2-1B-1-LOW-B5SC PIC X(6) 03570036 OCCURS 5 TIMES. 03580036 05 PIWA2-1B-1-NUM-X-ST-HI-END PIC X. 03590036 05 PIWA2-1B-1-HI-B5SC PIC X(6) 03600036 OCCURS 5 TIMES. 03610036 05 PIWA2-1B-1-LIONKEY. 03620036 10 PIWA2-1B-1-LION-BORO PIC X. 03630036 10 PIWA2-1B-1-LIONFACECODE PIC X(4). 03640036 10 PIWA2-1B-1-LIONSEQ PIC X(5). 03650036 05 PIWA2-1B-1-SPECIAL-ADDR-FLAG PIC X(1). 03660036 05 PIWA2-1B-1-SIDE-OF-STR PIC X. 03670036 05 PIWA2-1B-1-SEGMENTLENGTH PIC X(5). 03680036 05 PIWA2-1B-1-XCOORD PIC X(7). 03690036 05 PIWA2-1B-1-YCOORD PIC X(7). 03700036 05 FILLER-GSS PIC X(8). 03710036 05 PIWA2-1B-1-MARBLE-RIKER-FLAG PIC X(1). 03720036 05 PIWA2-1B-1-SLA PIC X. 03730036 05 PIWA2-1B-1-COMDIST. 03740036 10 PIWA2-1B-1-COMDIST-BORO PIC X(1). 03750036 10 PIWA2-1B-1-COMDIST-NUMBER PIC X(2). 03760036 05 PIWA2-1B-1-ZIP PIC X(5). 03770036 03780036 05 PIWA2-1B-1-ELECTDIST PIC X(3). 03790036 05 PIWA2-1B-1-ASSEMDIST PIC X(2). 03800036 05 PIWA2-1B-1-SPLIT-ED-FLAG PIC X(1). 03810036 05 PIWA2-1B-1-CONGDIST PIC X(2). 03820036 05 PIWA2-1B-1-SENATEDIST PIC X(2). 03830036 05 PIWA2-1B-1-COURTDIST PIC X(2). 03840036 05 PIWA2-1B-1-COUNCILDIST PIC X(2). 03850036 03860036 05 PIWA2-1B-1-HCD PIC X(2). 03870036 05 PIWA2-1B-1-HEALTHAREA PIC X(4). 03880036 05 PIWA2-1B-1-SANIDIST. 03890036 10 PIWA2-1B-1-SANIDIST-BORO PIC X(1). 03900036 10 PIWA2-1B-1-SANIDIST-NUMBER PIC X(2). 03910036 05 PIWA2-1B-1-SANITATION-SUBSEC PIC X(2). 03920036 05 PIWA2-1B-1-SANI-REG PIC X(5). 03930036 05 PIWA2-1B-1-SANI-REC PIC X(3). 03940036 05 PIWA2-1B-1-POLICEDIST. 03950036 15 PIWA2-1B-1-POL-PATR-BORO-CMD PIC X(1). 03960036 15 PIWA2-1B-1-POL-PRECINCT PIC X(3). 03970036 ** NOTE:10 PIWA2-1B-1-FIRESEC ==> FIRE DIVISION ** 03980036 05 PIWA2-1B-1-FIRESEC PIC X(2). 03990036 05 PIWA2-1B-1-FIREBAT PIC X(2). 04000036 05 PIWA2-1B-1-FIRECO. 04010036 10 PIWA2-1B-1-FIRECO-TYPE PIC X(1). 04020036 10 PIWA2-1B-1-FIRECO-NUM PIC X(3). 04030036 05 PIWA2-1B-1-SPLIT-SCHOOL-FLAG PIC X. 04040036 05 PIWA2-1B-1-SCHOOLDIST PIC X(2). 04050036 05 PIWA2-1B-1-DYN-BLOCK PIC X(3). 04060036 05 PIWA2-1B-1-POLICE-PAT-BORO PIC X(2). 04070036 05 PIWA2-1B-1-FEATURE-TYPE PIC X. 04080036 05 PIWA2-1B-1-SEGMENT-TYPE PIC X. 04090036 05 PIWA2-1B-1-ALX PIC X. 04100036 05 PIWA2-1B-1-COINCIDENT-CNT PIC X. 04110036 05 FILLER PIC X(3). 04120036 05 PIWA2-1B-1-1990-CENSUSTRACT PIC X(6). 04130036 05 PIWA2-1B-1-2010-CENS-TRCT PIC X(6). 04140036 05 PIWA2-1B-1-2010-CENS-BLK PIC X(4). 04150036 05 PIWA2-1B-1-2010-CENS-BLK-SFX PIC X. 04160036 05 PIWA2-1B-1-2000-CENS-TRCT PIC X(6). 04170036 05 PIWA2-1B-1-2000-CENS-BLK PIC X(4). 04180036 05 PIWA2-1B-1-2000-CENS-BLK-SFX PIC X. 04190036 05 PIWA2-1B-1-NTA PIC X(4). 04200036 05 PIWA2-1B-1-SANIT-SNOW-PRRTY PIC X. 04210036 05 PIWA2-1B-1-SANIT-ORGANICS PIC X(5). 04220036 05 PIWA2-1B-1-SANIT-BULK-PICK-UP PIC X(5). 04230036 **** 05 PIWA2-1B-1-SANIT-RESERVED V16.4 PIC X(5). 04240036 05 PIWA2-1B-1-HURRICANE-ZONE PIC XX. 04250036 05 FILLER PIC X(11). 04260036 05 PIWA2-1B-1-TRUE-HNS PIC X(11). 04270036 05 PIWA2-1B-1-TRUE-B7SC PIC X(8). 04280036 05 PIWA2-1B-1-SEG-ID PIC X(7). 04290036 05 PIWA2-1B-1-CURVE-FLAG PIC X(1). 04300036 05 PIWA2-1B-1-LGCS PIC X(8). 04310036 05 PIWA2-1B-1-BOE-PTR PIC X(1). 04320036 05 PIWA2-1B-1-AZIMUTH PIC X(3). 04330036 05 PIWA2-1B-1-ORIENT PIC X(1). 04340036 05 PIWA2-1B-1-X-LOW PIC X(7). 04350036 05 PIWA2-1B-1-Y-LOW PIC X(7). 04360036 05 PIWA2-1B-1-Z-LOW PIC X(7). 04370036 05 PIWA2-1B-1-X-HI PIC X(7). 04380036 05 PIWA2-1B-1-Y-HI PIC X(7). 04390036 05 PIWA2-1B-1-Z-HI PIC X(7). 04400036 05 PIWA2-1B-1-X-CC PIC X(7). 04410036 05 PIWA2-1B-1-Y-CC PIC X(7). 04420036 05 PIWA2-1B-1-Z-CC PIC X(7). 04430036 05 PIWA2-1B-1-RADIUS PIC X(7). 04440036 05 PIWA2-1B-1-SECANT PIC X(1). 04450036 05 PIWA2-1B-1-ANGLE-FROM PIC X(5). 04460036 05 PIWA2-1B-1-ANGLE-TO PIC X(5). 04470036 05 PIWA2-1B-1-NODE-FROM PIC X(7). 04480036 05 PIWA2-1B-1-NODE-TO PIC X(7). 04490036 05 PIWA2-1B-1-VANITY-LION PIC X(10). 04500036 05 PIWA2-1B-1-SOS PIC X(1). 04510036 05 PIWA2-1B-1-SPLIT-LOHSN PIC X(11). 04520036 05 PIWA2-1B-1-TD PIC X(1). 04530036 05 PIWA2-1B-1-TR PIC X(10). 04540036 05 PIWA2-1B-1-CURVE-FRACTION PIC X(3). 04550036 05 PIWA2-1B-1-ROADWAY-TYPE PIC X(2). 04560036 05 PIWA2-1B-1-PHYICAL-ID PIC X(7). 04570036 05 PIWA2-1B-1-GENERIC-ID PIC X(7). 04580036 05 PIWA2-1B-1-NYPD-ID-FILL PIC X(7). 04590036 05 PIWA2-1B-1-FDNY-ID-FILL PIC X(7). 04600036 05 PIWA2-1B-1-BIKE-LANE-2 PIC X(2). 04610036 05 PIWA2-1B-1-BIKE-TRAFFIC-DIR PIC X(2). 04620036 05 FILLER PIC X(3). 04630036 **** 05 FILLER ** V17.1 ** PIC X(5) *** 04640036 **** 05 FILLER ** V16.4 ** PIC X(7) *** 04650036 **** 05 PIWA2-FN-1-BLOCKFACE-ID ** V16.1 ** PIC X(7) *** 04660036 05 PIWA2-1B-1-STREET-STATUS PIC X(1). 04670036 05 PIWA2-1B-1-STREET-WIDTH PIC X(3). 04680036 05 PIWA2-1B-1-STREET-WIDTH-IRR PIC X(1). 04690036 05 PIWA2-1B-1-BIKE-LANE PIC X(1). 04700036 05 PIWA2-1B-1-FED-CLASS-CODE PIC X(2). 04710036 05 PIWA2-1B-1-ROW-TYPE PIC X(1). 04720036 05 PIWA2-1B-1-LGC-LIST-2 PIC X(10). 04730036 05 PIWA2-1B-1-LEGACY-SEG-ID PIC X(7). 04740036 05 PIWA2-1B-1-LGC-LIST-FROM-1 PIC X(10). 04750036 05 PIWA2-1B-1-LGC-LIST-TO-1 PIC X(10). 04760036 05 PIWA2-1B-1-LGC-LIST-FROM-2 PIC X(10). 04770036 05 PIWA2-1B-1-LGC-LIST-TO-2 PIC X(10). 04780036 05 PIWA2-1B-1-NOCROSS-FLG PIC X(1). 04790036 05 PIWA2-1B-1-IND-SEG-LEN PIC X(5). 04800036 05 PIWA2-1B-1-NTA-NAME PIC X(75). 04810036 05 PIWA2-1B-1-USPS-CITY-NAME PIC X(25). 04820036 05 PIWA2-1B-1-LATITUDE PIC X(9). 04830036 05 PIWA2-1B-1-LONGITUDE PIC X(11). 04840036 05 PIWA2-1B-1-SEG-FROM-NODE PIC X(7). 04850036 05 PIWA2-1B-1-SEG-TO-NODE PIC X(7). 04860036 05 PIWA2-1B-1-SEG-FROM-XYZ PIC X(21). 04870036 05 PIWA2-1B-1-SEG-TO-XYZ PIC X(21). 04880036 05 PIWA2-1B-1-BLOCKFACE-ID PIC X(10). 04890036 05 PIWA2-1B-1-NBR-TRAVEL-LANES PIC X(2). 04900036 05 PIWA2-1B-1-NBR-PARK-LANES PIC X(2). 04910036 05 PIWA2-1B-1-NBR-TOTAL-LANES PIC X(2). 04920036 05 PIWA2-1B-1-STREET-WIDTH-MAX PIC X(3). 04930036 05 PIWA2-1B-1-SPEED-LIMIT PIC X(2). 04940036 05 PIWA2-1B-1-PUMA-CODE PIC X(5). 04941039 05 PIWA2-1B-1-POLICE-SECTOR PIC X(4). 04942040 05 PIWA2-1B-1-POLICE-SRVC-AREA PIC X. 04943042 05 PIWA2-1B-1-FILL500 PIC X(240). 04944040 **** 05 PIWA2-1B-1-FILL500 ** V18.3 ** PIC X(245). 04945040 **** 05 PIWA2-1B-1-FILL500 ** V18.1 ** PIC X(250). 04960039 **** 05 PIWA2-1B-1-FILL500 ** V17.4 ** PIC X(252). 04961039 **** 05 PIWA2-1B-1-FILL500 ** V16.4 ** PIC X(255). 04970036 **** 05 PIWA2-1B-1-FILL500 ** V16.1 ** PIC X(271) ** 04980036 **** 05 PIWA2-1B-1-FILL500 ** V15,3 ** PIC X(327) ** 04990036 ****************************************************************/ 05000036 * ***/ 05010036 *THE FOLLOWING FIELDS ARE AN ADDITION TO 1/1E ***/ 05020036 ****************************************************************/ 05030036 05 PIWA2-1B-1-REASON-CODE PIC X(1). 05040036 05 PIWA2-1B-1-REASON-CODE-QUAL PIC X(1). 05050036 05 PIWA2-1B-1-WARN-CODE PIC X(2). 05060036 05 PIWA2-1B-1-RETURN-CODE PIC X(2). 05070036 05 PIWA2-1B-1-NUM-X-STS-LO-END PIC X(1). 05080036 05 PIWA2-1B-1-LO-B7SC OCCURS 5 TIMES PIC X(8). 05090036 05 PIWA2-1B-1-NUM-X-STS-HI-END PIC X(1). 05100036 05 PIWA2-1B-1-HI-B7SC OCCURS 5 TIMES PIC X(8). 05110036 05 PIWA2-1B-1-LO-ST-NAME OCCURS 5 TIMES PIC X(32). 05120036 05 PIWA2-1B-1-HI-ST-NAME OCCURS 5 TIMES PIC X(32). 05130036 05 PIWA2-1B-1-BOE-B7SC PIC X(8). 05140036 05 PIWA2-1B-1-BOE-ST-NAME PIC X(32). 05150036 05 PIWA2-1B-1-FILL600 PIC X(52). 05160036 05170036 05 PIWA2-1B-1A-ACCESS-KEY PIC X(21). 05180036 05 PIWA2-1B-1A-CONT-PARITY PIC X. 05190036 05 PIWA2-1B-1A-LOW-HOUSENUM PIC X(11). 05200036 05 PIWA2-1B-1A-ALTKEY-1. 05210036 10 PIWA2-1B-1A-ALTKEY-1-BORO PIC X. 05220036 10 PIWA2-1B-1A-ALTKEY-1-TAXBLOCK PIC X(5). 05230036 10 PIWA2-1B-1A-ALTKEY-1-TAXLOT PIC X(4). 05240036 05 FILLER PIC X. 05250036 05 PIWA2-1B-1A-SCC PIC X(1). 05260036 05 FILLER PIC X. 05270036 05 PIWA2-1B-1A-GENERAL-LOT-INFO. 05280036 10 PIWA2-1B-1A-RPAD-BLDG-CLASS PIC X(2). 05290036 10 PIWA2-1B-1A-CORNER-CODE PIC X(2). 05300036 10 PIWA2-1B-1A-TOT-NBR-BLDG PIC X(4). 05310036 10 PIWA2-1B-1A-NUM-OF-BLOCKFACES PIC X(2). 05320036 10 PIWA2-1B-1A-INTERIOR-FLAG PIC X. 05330036 10 PIWA2-1B-1A-VACANT-FLAG PIC X. 05340036 10 PIWA2-1B-1A-IRREG-FLAG PIC X. 05350036 05 PIWA2-1B-1A-ALT-BORO-FLAG PIC X. 05360036 05 PIWA2-1B-1A-OVERFLOW-FLAG PIC X(1). 05370036 05 PIWA2-1B-1A-STROLL-KEY PIC X(19). 05380036 05 FILLER-GSS PIC X. 05390036 05 PIWA2-1B-1A-BLDG-ID-NUM PIC X(7). 05400036 05 PIWA2-1B-1A-CONDO-LOT-FLAG PIC X. 05410036 05 FILLER PIC X. 05420036 05 PIWA2-1B-1A-RPAD-COND-NUM PIC X(4). 05430036 05 FILLER PIC X(7). 05440036 05 PIWA2-1B-1A-CONDO-BILLING-BBL PIC X(10). 05450036 05 FILLER PIC X. 05460036 05 PIWA2-1B-1A-CONDO-BILL-BBL-SCC PIC X(1). 05470036 05 PIWA2-1B-1A-CONDO-LOW-BBL PIC X(10). 05480036 05 FILLER PIC X. 05490036 05 PIWA2-1B-1A-CONDO-HIGH-BBL PIC X(10). 05500036 05 FILLER PIC X. 05510036 05 FILLER PIC X(15). 05520036 05 PIWA2-1B-1A-CO-OP-NBR PIC X(4). 05530036 05 PIWA2-1B-1A-SANBORN-BVOLPAGE. 05540036 10 PIWA2-1B-1A-SANBORN-BORO PIC X(1). 05550036 10 PIWA2-1B-1A-SANBORN-VOL-PAGE. 05560036 15 PIWA2-1B-1A-SANBORN-VOL-NUM PIC X(3). 05570036 15 PIWA2-1B-1A-SANBORN-PAGE-NUM PIC X(4). 05580036 05 PIWA2-1B-1A-COMMERC-DIST PIC X(5). 05590036 05 PIWA2-1B-1A-DOF-MAP-BOROUGH PIC X. 05600036 05 PIWA2-1B-1A-TAX-MAP-NBR PIC X(4). 05610036 05 FILLER-FOR-TAX-MAP-PAGE PIC X(4). 05620036 05 FILLER PIC X(3). 05630036 05 PIWA2-1B-1A-LATITUDE PIC X(9). 05640036 05 PIWA2-1B-1A-LONGITUDE PIC X(11). 05650036 05 PIWA2-1B-1A-X-COORD PIC X(7). 05660036 05 PIWA2-1B-1A-Y-COORD PIC X(7). 05670036 05 PIWA2-1B-1A-BID PIC X(6). 05680036 05 PIWA2-1B-1A-TPAD-BIN-ST PIC X. 05690036 05 PIWA2-1B-1A-TPAD-NEW-BIN PIC X(7). 05700036 05 PIWA2-1B-1A-TPAD-NEW-BIN-ST PIC X. 05710036 05 PIWA2-1B-1A-TPAD-CONFLICT PIC X. 05720036 05 PIWA2-1B-1A-DCP-ZONE-MAP PIC X(3). 05721038 05 FILLER PIC X(6). 05722038 05 FILLER-GSS PIC X(8). 05740036 05 PIWA2-1B-1A-REASON-CODE PIC X(1). 05750036 05 PIWA2-1B-1A-REASON-CODE-QUAL PIC X(1). 05760036 05 PIWA2-1B-1A-WARN-CODE PIC X(2). 05770036 05 PIWA2-1B-1A-RETURN-CODE PIC X(2). 05780036 05 FILLER PIC X(108). 05790036 05 PIWA2-1B-1A-NUM-OF-ADDR PIC X(4). 05800036 05 PIWA2-1B-1A-ADDR-LIST OCCURS 21 TIMES. 05810036 10 PIWA2-1B-1A-LIST-LOW-HOUSENUM PIC X(16). 05820036 10 PIWA2-1B-1A-LIST-HI-HOUSENUM PIC X(16). 05830036 10 PIWA2-1B-1A-LIST-BORO PIC X. 05840036 10 PIWA2-1B-1A-LIST-5SC PIC X(5). 05850036 10 PIWA2-1B-1A-LIST-LGC PIC X(2). 05860036 10 PIWA2-1B-1A-LIST-BIN PIC X(7). 05870036 10 PIWA2-1B-1A-LIST-SOS PIC X. 05880036 10 PIWA2-1B-1A-ADDR-TYPE PIC X. 05890036 10 PIWA2-1B-1A-TPAD-STATUS PIC X. 05900036 10 PIWA2-1B-1A-ST-NAME PIC X(32). 05910036 10 FILLER PIC X(34). 05920028 05930010","title":"P2COB1AL COPY File"},{"location":"appendices/appendix14/#p2cob3s-copy-file","text":"****************************************************************** 00000100 *** THIS IS THE COBOL STRUCTURE FOR GEOSUPPORT SYSTEM PLATFORM ** 00000200 *** INDEPENDENT WORK AREA 2 FOR FUNCTION 3S. ** 00000300 *** COPY FILE - P2COB3S. 09/17/97 ** 00000400 ****************************************************************** 00000500 05 PIWA2-3S-ACCESS-KEY. 00000600 10 FILLER-GSS PIC X(2). 00000700 10 PIWA2-3S-PORS-STNAME-IND PIC X. 00000800 10 PIWA2-3S-BORO PIC X. 00000900 10 PIWA2-3S-5SC PIC X(5). 00001000 10 PIWA2-3S-LGC PIC X(2). 00001100 10 FILLER PIC X(10). 00001200 05 PIWA2-3S-NUM-OF-INTERSECTS PIC X(3). 00001300 05 PIWA2-3S-LIST-OFINTERSECTS OCCURS 350 TIMES. 00001400 10 PIWA2-3S-MARBLE-RIKERS-FLAG PIC X. 00001500 10 PIWA2-3S-DISTANCE PIC X(5). 00001600 10 PIWA2-3S-GAP-FLAG PIC X. 00001700 10 FILLER PIC X(7). 00001800 10 PIWA2-3S-NUM-OF-STR PIC X. 00001900 10 PIWA2-3S-B7SC PIC X(8) 00002000 OCCURS 5 TIMES. 00002100","title":"P2COB3S COPY File"},{"location":"appendices/appendix14/#p2cobap-copy-file","text":"***************************************************************** 00010006 ** MARCH 2015 YNL - COPYLIB AP / APX V15.2** 00020028 ** THIS IS THE COBOL STRUCTURE FOR GEOSUPPORT SYSTEM PLATFORM ** 00030006 ** INDEPENDENT WORK AREA 2 FOR FUNCTION: AP. ** 00040028 ***************************************************************** 00050006 ***************************************************************** 00060006 00070006 03 PIWA2 PIC X(2800). 00080024 00090006 *************************************************************** 00100023 *** FOR: FUNCTION AP ******** ADDAP V15.2 ****** 00110024 00120023 03 PIWA2-FUNCTIONAP REDEFINES PIWA2. 00130024 05 PIWA2-AP-ACCESS-KEY PIC X(21). 00140024 05 PIWA2-AP-CONT-PARITY PIC X. 00150024 05 PIWA2-AP-LOW-HOUSENUM PIC X(11). 00160024 05 PIWA2-AP-ALTKEY-1. 00170024 10 PIWA2-AP-ALTKEY-1-BORO PIC X. 00180024 10 PIWA2-AP-ALTKEY-1-TAXBLOCK PIC X(5). 00190024 10 PIWA2-AP-ALTKEY-1-TAXLOT PIC X(4). 00200024 05 FILLER PIC X(7). 00210025 05 PIWA2-AP-TOT-NBR-BLDG PIC X(4). 00220024 05 FILLER PIC X(26). 00230023 05 FILLER-GSS PIC X. 00240023 05 PIWA2-AP-BLDG-ID-NUM PIC X(7). 00250024 05 PIWA2-AP-CONDO-LOT-FLAG PIC X. 00260024 05 FILLER PIC X. 00270023 05 PIWA2-AP-RPAD-COND-NUM PIC X(4). 00280024 05 FILLER PIC X(7). 00290023 05 PIWA2-AP-CONDO-BILLING-BBL PIC X(10). 00300024 05 FILLER PIC X(2). 00310025 05 PIWA2-AP-CONDO-LOW-BBL PIC X(10). 00320024 05 FILLER PIC X. 00330023 05 PIWA2-AP-CONDO-HIGH-BBL PIC X(10). 00340024 05 FILLER PIC X(16). 00350025 05 PIWA2-AP-CO-OP-NBR PIC X(4). 00360024 05 FILLER PIC X(22). 00370031 05 PIWA2-AP-RESERVED PIC X(3). 00380031 05 PIWA2-AP-LATITUDE PIC X(9). 00400024 05 PIWA2-AP-LONGITUDE PIC X(11). 00410024 05 PIWA2-AP-X-COORD PIC X(7). 00420024 05 PIWA2-AP-Y-COORD PIC X(7). 00430024 05 FILLER PIC X(16). 00440029 05 PIWA2-AP-AP-ID PIC X(9). 00450029 05 FILLER-GSS PIC X(8). 00460023 05 PIWA2-AP-NUM-OF-ADDR PIC X(4). 00470024 05 PIWA2-AP-ADDR-LIST OCCURS 21 TIMES. 00480024 10 PIWA2-AP-LIST-LOW-HOUSENUM PIC X(16). 00490024 10 PIWA2-AP-LIST-HI-HOUSENUM PIC X(16). 00500024 10 PIWA2-AP-LIST-BORO PIC X. 00510024 10 PIWA2-AP-LIST-5SC PIC X(5). 00520024 10 PIWA2-AP-LIST-LGC PIC X(2). 00530024 10 PIWA2-AP-LIST-BIN PIC X(7). 00540024 10 PIWA2-AP-LIST-SOS PIC X. 00550024 10 PIWA2-AP-ADDR-TYPE PIC X. 00560024 10 FILLER PIC X(4). 00570024 00580024 *************************************************************** 00590024 *** FOR: FUNCTION AP EXTENDED ******** ADDAP V15.2 ******** 00600026 00610024 03 PIWA2-FUNCTIONAPX REDEFINES PIWA2. 00620024 05 PIWA2-APX-ACCESS-KEY PIC X(21). 00630024 05 PIWA2-APX-CONT-PARITY PIC X. 00640024 05 PIWA2-APX-LOW-HOUSENUM PIC X(11). 00650024 05 PIWA2-APX-ALTKEY-1. 00660024 10 PIWA2-APX-ALTKEY-1-BORO PIC X. 00670024 10 PIWA2-APX-ALTKEY-1-TAXBLOCK PIC X(5). 00680024 10 PIWA2-APX-ALTKEY-1-TAXLOT PIC X(4). 00690024 05 FILLER PIC X(7). 00700025 05 PIWA2-APX-TOT-NBR-BLDG PIC X(4). 00710024 05 FILLER PIC X(26). 00720024 05 FILLER-GSS PIC X. 00730024 05 PIWA2-APX-BLDG-ID-NUM PIC X(7). 00740024 05 PIWA2-APX-CONDO-LOT-FLAG PIC X. 00750024 05 FILLER PIC X. 00760024 05 PIWA2-APX-RPAD-COND-NUM PIC X(4). 00770024 05 FILLER PIC X(7). 00780024 05 PIWA2-APX-CONDO-BILLING-BBL PIC X(10). 00790024 05 FILLER PIC X(2). 00800025 05 PIWA2-APX-CONDO-LOW-BBL PIC X(10). 00810024 05 FILLER PIC X. 00820024 05 PIWA2-APX-CONDO-HIGH-BBL PIC X(10). 00830024 05 FILLER PIC X(16). 00840025 05 PIWA2-APX-CO-OP-NBR PIC X(4). 00850024 05 FILLER PIC X(18). 00860024 05 FILLER-FOR-TAX-MAP-PAGE PIC X(4). 00870024 05 FILLER PIC X(3). 00880024 05 PIWA2-APX-LATITUDE PIC X(9). 00890024 05 PIWA2-APX-LONGITUDE PIC X(11). 00900024 05 PIWA2-APX-X-COORD PIC X(7). 00910024 05 PIWA2-APX-Y-COORD PIC X(7). 00920024 05 FILLER PIC X(16). 00930029 05 PIWA2-APX-AP-ID PIC X(9). 00940029 05 FILLER-GSS PIC X(8). 00950024 05 PIWA2-APX-REASON-CODE PIC X(1). 00960024 05 PIWA2-APX-REASON-CODE-QUAL PIC X(1). 00970024 05 PIWA2-APX-WARN-CODE PIC X(2). 00980024 05 PIWA2-APX-RETURN-CODE PIC X(2). 00990024 05 PIWA2-APX-FILLER PIC X(108). 01000024 05 PIWA2-APX-NUM-OF-ADDR PIC X(4). 01010024 05 PIWA2-APX-ADDR-LIST OCCURS 21 TIMES. 01020024 10 PIWA2-APX-LIST-LOW-HOUSENUM PIC X(16). 01030024 10 PIWA2-APX-LIST-HI-HOUSENUM PIC X(16). 01040024 10 PIWA2-APX-LIST-BORO PIC X. 01050024 10 PIWA2-APX-LIST-5SC PIC X(5). 01060024 10 PIWA2-APX-LIST-LGC PIC X(2). 01070024 10 PIWA2-APX-LIST-BIN PIC X(7). 01080024 10 PIWA2-APX-LIST-SOS PIC X. 01090024 10 PIWA2-APX-ADDR-TYPE PIC X. 01100024 10 FILLER PIC X. 01110024 10 PIWA2-APX-ST-NAME PIC X(32). 01120024 10 FILLER PIC X(34). 01130024 01140024","title":"P2COBAP COPY File"},{"location":"appendices/appendix14/#assembler-copy-files-cow","text":"*/********************************************************************/ 00010000 */***** THIS IS GEOSUPPORT INFORMATION SYSTEM COPY FILE P1BAL, ***/ 00020000 */***** CONTAINING THE Platform Independent LAYOUT OF WORK AREA 1 ***/ 00030000 */********************************************************************/ 00040000 */***** Last Updated: August 2016 - Unit added by meb ***/ 00040136 */***** Last Updated: December 2013 ***/ 00040336 */********************************************************************/ 00041014 P1BAL DS 0H 00050000 */**************************** 00060000 */***** INPUT FIELDS ******* 00070000 */**************************** 00080000 P1IFUNC DS 0CL2 FUNCTION CODE 00090000 P1IFUNC1 DS CL1 FUNCTION CODE, BYTE 1 00100000 P1IFUNC2 DS CL1 FUNCTION CODE, BYTE 2 00110000 SPACE 00120000 P1IHSE# DS CL16 UNFORMATED HSNUM FOR FUNCTION: 1; 1A; 1E. 00130001 P1IHSE#S DS CL11 HOUSE NUMBER (SORT FORMAT) 00140005 * The Following two fields are for Fn 5 00150001 P1ILHS# DS CL16 UNFORMATED HSNUM 00160001 P1ILHS#S DS CL11 HOUSE NUMBER (SORT FORMAT) 00170005 SPACE 00180001 P1IBCD1 DS 0CL11 11 Digit Street Code for Street one 00190000 P1IBORO1 DS CL1 BORO CODE (1=MN;2=BX;3=BK;4=QN;5=SI) 00200000 P1ICDE1 DS CL10 STREET CODE FOR STREET ONE 00210000 P1ISTRT1 DS CL32 STREET NAME 1 00220000 SPACE 00230000 P1IBCD2 DS 0CL11 11 Digit Street Code for Street two 00240000 P1IBORO2 DS CL1 BORO CODE OF CROSS ST. 1 00250000 P1ICDE2 DS CL10 STREET CODE FOR STREET TWO 00260000 P1ISTRT2 DS CL32 STREET NAME 2 00270000 SPACE 00280000 P1IBCD3 DS 0CL11 11 Digit Street Code for Street Three 00290001 P1IBORO3 DS CL1 BORO CODE OF CROSS ST. 2 00300000 P1ICDE3 DS CL10 STREET CODE FOR STREET THREE 00310000 P1ISTRT3 DS CL32 STREET NAME 3 00320000 SPACE 00330000 P1IBBL DS 0CL10 BORO,BLOCK,LOT FOR \"BL\" FUNCTION 00340002 P1IBLBOR DS CL1 BORO FOR FUNCTION \"BL\" 00350000 P1IBLOCK DS CL5 TAX BLOCK - FOR FUNCTION \"BL\" 00360000 P1ILOT DS CL4 TAX LOT - FOR FUNCTION \"BL\" 00370000 P1ITLV# DS CL1 Tax Lot Version Number (Not Implemented) 00380000 P1IBIN DS CL7 BUILDING ID NUMBER 00390000 P1ICOMP DS CL1 COMPASS DIRECTION (TYPES 2, 3C & 3S) 00400010 P1ICOMP2 DS CL1 COMPASS DIRECTION (TYPE 3S) 00401010 P1INODE DS CL7 Node as inpur for Fn 2 00410032 P1IPLIND DS CL1 Platform Indicator 00420003 * Blank = St'd Mainframe 00430000 * P = Platform Independent 00440000 P1IZIPIN DS CL5 Input Zip Code 00450036 P1IUNIT DS CL14 Input Unit V16.4 00451036 DS CL82 Filler 00460036 SPACE 00470000 */**************************** 00480000 */***** FLAGS ******* 00490000 */**************************** 00500000 SPACE 00510000 P1ILONG DS CL1 'L' IF LONG WORKAREA 2 FOR FUNC 1A/BL 00520000 P1IJUST DS CL1 HOUSE NUMBER JUSTIFICATION FLAG 00520109 P1IHNL DS CL2 House Number Length 00521009 P1IHNBRF DS CL1 House Number Override Flag - *, $ or blank 00522009 P1ISNL DS CL2 LENGTH STREET NAME IS TO BE NORMALIZED TO 00523009 P1ICMPCT DS CL1 'C' IF STREET NAMES ARE TO BE COMPACTED 00524009 P1IEXPND DS CL1 EXPANDED FORMAT FLAG 00530009 P1IRBRQS DS CL1 ROADBED REQUEST SWITCH 00550013 P1IRES01 DS CL1 RESERVED FOR INTERNAL USE 00581015 P1ISEGAX DS CL1 Segment Auxiliary Switch 00582018 P1IBRFLG DS CL1 BROWSE FLAG P=PRIMARY ONLY F=PRINCIPAL ONLY 00583020 P1IRSTON DS CL1 Real Street Only Flag used with Function 3S 00584021 P1ITPADS DS CL1 Read TPAD for PAD Processing 00585023 P1IMODES DS CL1 Mode Switch 00586027 * X = Extended 00586131 P1IWTOS DS CL1 WTO Switch N=No WTO 00586231 DS CL29 FILLER 00590031 SPACE 00600000 */***************************** 00610000 */***** OUTPUT FIELDS ******* 00620000 */***************************** 00630000 SPACE 00640000 P1OBORO DS CL9 BORO NAME 00650000 P1OHSE# DS CL16 HOUSE NUMBER, NORMALIZED, DISPLAY FORMAT 00660000 P1OHSE#S DS CL11 HOUSE NUMBER (SORT FORMAT) 00670005 P1OBCD1 DS 0CL11 11 Digit Street Code for Street one 00680000 P1OBORO1 DS CL1 BORO CODE (1=MN;2=BX;3=BK;4=QN;5=SI) 00690000 P1OCDE1 DS CL10 STREET CODE FOR STREET ONE 00700000 P1OSTRT1 DS CL32 STREET 1 NAME, NORMALIZED 00710004 SPACE 00720000 P1OBCD2 DS 0CL11 11 Digit Street Code for Street two 00730000 P1OBORO2 DS CL1 BORO CODE OF CROSS ST. 1 00740000 P1OCDE2 DS CL10 STREET CODE FOR STREET TWO 00750000 P1OSTRT2 DS CL32 STREET 2 NAME, NORMALIZED 00760004 SPACE 00770000 P1OBCD3 DS 0CL11 11 Digit Street Code for Street three 00780000 P1OBORO3 DS CL1 BORO CODE OF street 3 00790000 P1OCDE3 DS CL10 STREET CODE FOR STREET THREE 00800000 P1OSTRT3 DS CL32 STREET 3 NAME, NORMALIZED 00810004 SPACE 00820000 P1OBBL DS 0CL11 BORO,BLOCK,LOT FOR \"BL\" FUNCTION 00830000 P1OBLBOR DS CL1 BORO FOR FUNCTION \"BL\" 00840000 P1OBLOCK DS CL5 TAX BLOCK - FOR FUNCTION \"BL\" 00850000 P1OLOT DS CL4 TAX LOT - FOR FUNCTION \"BL\" 00860000 P1OTLV# DS CL1 Tax Lot Version Number (Not Implemented) 00870000 P1OLHSE DS CL16 LOW HOUSE NUMBER DISPLAY FORM 00880006 P1OLHSES DS CL11 LOW HOUSE NUMBER SORT FORM 00881006 P1OBIN DS CL7 Output Building Identification Number 00882011 P1OATTR3 DS CL3 Attribute Bytes - Internal Use 00883011 SPACE 00890000 P1OREAS2 DS CL1 2ND REASON CODE 00891024 P10RCQ2 DS CL1 2ND REASON CODE TPAD QUALIFIER 00892130 P1OWARN2 DS CL2 2ND WARNING RETURN CODE-NOT IMPL 00892226 P1ORC2 DS CL2 2ND GEOSUPPORT RETURN CODE 00893025 P1OERR2 DS CL80 2ND ERROR MESSAGE 00894024 P1ONODE DS CL7 NODE NORMALIZED FOR FN 2 00895032 P1OUNITS DS 0CL14 UNIT IN SORT FORMAT 00896037 P1OUNITT DS CL4 UNIT TYPE 00897036 P1OUNITI DS CL10 UNIT IDENTIFIER 00898036 P1OUNITD DS CL14 UNIT IN DISPLAY FORMAT 00899036 DS CL11 FILLER 00900036 P1ONIN DS CL6 NAP IDENTIFICATION NUMBER 00900107 P1OATTRB DS CL1 ATTRIBUTE BYTE FROM SND 00901006 P1OREASN DS CL1 REASON CODE 00910000 P10RCQ DS CL1 REASON CODE TPAD QUALIFIER 00920030 P1OWARNC DS CL2 WARNING RETURN CODE 00930025 P1ORC DS CL2 GEOSUPPORT RETURN CODE 00940025 P1OERROR DS CL80 ERROR MESSAGE 00950000 P1O#NAME DS CL2 NUMBER OF STREET NAMES 00960002 P1OBRWSE DS CL80 10 B7SC'S 00970002 P1ONAMES DS 10CL32 UP TO 10 STREET NAMES 00980002 P1END EQU * 00990000 P1LENGTH EQU P1END-P1BAL LENGTH OF P1BAL 01000000","title":"ASSEMBLER COPY Files (COW) "},{"location":"appendices/appendix14/#p2bal-copy-file","text":"*/********************************************************************/ 00010092 */***** THIS IS GEOSUPPORT INFORMATION SYSTEM COPY FILE P2BAL, ***/ 00020092 */***** CONTAINING THE LAYOUT OF WORK AREA 2 FOR FUNCTIONS ***/ 00030092 */***** 1, 1E, 2, 2C, 3, 3C. PLEASE NOTE THAT FUNCTIONS 2 AND 2C ***/ 00040092 */***** SHARE A SINGLE WORK AREA 2 LAYOUT. ***/ 00050092 */***** ADDED 3 EXTENDED (MODE OF X) 6/2011 ***/ 00060092 */***** ADDED 2 WIDE (2W ) 2/2014 ***/ 00070092 */***** ADDED 2 byte field \"Police Patrol Borough\" for functions: ***/ 00080092 */***** 1/1E; 2/2W; 3/3X-left side;3/3X-right side; 3C/3CX. ***/ 00090092 */***** 8/2014 ***/ 00100092 */***** ADDED 2 fields: \"Bike Lane 2\" and \"Street Width Maximum\" ***/ 00110092 */***** for functions 3X/3CX 9/2016 ***/ 00120092 */***** Replaced \"Sanitation Reserved\" with \"Sanitation Bulk ***/ 00130098 */***** Pick Up\" for function 1 10/2016 ***/ 00140092 */***** ADDED 2 bytes field \"Bike Traffic Direction\" for ***/ 00150092 */***** for functions 1/1E (extended),1B,3X,3CX 12/2016 ***/ 00160093 */***** ADDED 2 bytes field \"Speed Limit\" 09/2017 ***/ 00161093 */***** for functions 3,3C (extended). ***/ 00162094 */***** ADDED 5 bytes field \"PUMA Code\" for functions: ***/ 00163097 */***** 3/3C (extended). 12/2017 ***/ 00164097 */***** ADDED 4 bytes field \"Police Sector\" for functions: ***/ 00165099 */***** 2,2W, 3/3C (extended). 06/2018 ***/ 00166099 */********************************************************************/ 00170092 */***** Last Date Modified - FEBRUARY 2016 ***/ 00180092 */********************************************************************/ 00190092 P2BAL DS 0H 00200092 P2ACCKEY DS CL21 ACCESS KEY 00210092 P2LAYOUT DS 0CL279 00220092 P2F1CPAR DS CL1 CONTINUOUS PARITY INDICATOR 00230092 P2F1LHNS DS CL11 LOW HOUSE NUMBER 00240092 P2F1HHNS DS CL11 HIGH HOUSE NUMBER 00250092 P2F1LGC DS CL2 DCP Prefered LGC (Fn 1) - BOE (Fn 1E) 00260092 P2F1#STL DS CL1 NUMBER OF CROSS STREETS AT LOW END 00270092 P2F1CDEL DS CL30 UP TO FIVEPB5SC'S FOR LOW END 00280092 P2F1#STH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 00290092 P2F1CDEH DS CL30 UP TO FIVE B5SC'S FOR HIGH END 00300092 P2F1LBOR DS CL1 LION BOROUGH CODE 00310092 P2F1FACE DS CL4 LION FACE CODE 00320092 P2F1SEQ DS CL5 LION SEQUENCE NUMBER 00330092 P2F1SPAD DS CL1 SPECIAL ADDRESS FLAG 00340092 P2F1SOS DS CL1 SIDE OF STREET INDICATOR 00350092 P2F1SEGL DS CL5 SEGMENT LEGNTH 00360092 P2F1XCOR DS CL7 X COORDINATE 00370092 P2F1YCOR DS CL7 Y COORDINATE 00380092 P2F1ZCOR DS CL7 Z Coordinate - Not Impl. 00390092 P2F1RES1 DS CL1 RESERVED FOR DCP/GSS USE 00400092 P2F1MHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 00410092 P2F1SLA DS CL1 STREET LIGHT AREA 00420092 P2F1CD DS 0CL3 COMMUNITY DISTRICT 00430092 P2F1CDB DS CL1 COMMUNITY DISTRICT BORO 00440092 P2F1CDN DS CL2 COMMUNITY DISTRICT NUMBER 00450092 P2F1ZIP DS CL5 ZIP CODE 00460092 P2F1EED DS CL3 ELECTION DISTRICT 00470092 P2F1EAD DS CL2 ASSEMBLY DISTRICT 00480092 P2F1ESED DS CL1 SPLIT E.D. FLAG 00490092 * Next four fields are valid only for Fn 1E 00500092 P2F1ECON DS CL2 CONGRESSIONAL DISTRICT 00510092 P2F1ESEN DS CL2 SENATORIAL DISTRICT 00520092 P2F1ECIV DS CL2 CIVIL COURT DISTRICT 00530092 P2F1ECOU DS CL2 CITY COUNCIL DISTRICT 00540092 * 00550092 P2F1HCD DS CL2 HEALTH CODE DISTRICT 00560092 P2F1HA DS CL4 HEALTH AREA 00570092 P2F1SAND DS CL3 SANITATION DISTRICT 00580092 P2F1SANT DS CL2 SANITATION DEPT SUBSECTION 00590092 P2F1SREG DS CL5 SANITATION REGULAR PICK-UP 00600092 P2F1SREC DS CL3 SANITATION RECYCLE PICK-UP 00610092 P2F1POL DS 0CL4 POLICE DISTRICT 00620092 P2F1PBC DS CL1 POLICE PATROL BORO COMMAND 00630092 P2F1POP DS CL3 POLICE PRECINCT 00640092 P2F1FS DS CL2 FIRE DIVISION 00650092 P2F1FB DS CL2 FIRE BATTALION 00660092 P2F1FC DS 0CL4 FIRE COMPANY 00670092 P2F1FCT DS CL1 FIRE COMPANY TYPE 00680092 P2F1FCN DS CL3 FIRE COMPANY NUMBER 00690092 P2F1FILS DS CL1 FILLER_WAS SPLIT SCHOOL DISTRICT FLAG 00700092 P2F1SCH DS CL2 SCHOOL DISTRICT 00710092 P2F1CPB DS CL3 DYNAMIC BLOCK/ATOMIC POLYGON 00720092 P2F1PPB DS CL2 Police Patrol Borough 00730092 P2F1FEAT DS CL1 Feature Type Code 00740092 P2F1STC DS CL1 SEGMENT TYPE CODE 00750092 P2F1ALX DS CL1 A=Segment split by Alley 00760092 * X=Cross Streets modified 00770092 P2F1CSC DS CL1 Coincident Segment Count 00780092 DS CL2 Filler 00790092 P2F1CTB DS CL1 CENSUS TRACT BOROUGH 00800092 P2F1CT90 DS CL6 1990 CENSUS TRACT 00810092 P2F1CT10 DS CL6 2010 CENSUS TRACT 00820092 P2F1BL10 DS CL4 2010 CENSUS BLOCK 00830092 P2F1BLS1 DS CL1 2010 CENSUS BLOCK SUFFIX NOT IMPLEMENTED 00840092 P2F1T00 DS CL6 2000 CENSUS TRACT 00850092 P2F1B00 DS CL4 2000 CENSUS BLOCK 00860092 P2F1S00 DS CL1 2000 CENSUS BLOCK SUFFIX 00870092 P2F1NTA DS CL4 Neighborhood Tabulation Area 00880092 P2F1SP DS CL1 Sanitation Street Snow Priority 00890092 P2F1SORG DS CL5 Sanitation Organics Pick Up 00900092 P2F1SBLK DS CL5 Sanitation Bulk Pick Up 00910092 * DS CL5 Sanitation Reserved 00920092 P2F1HZ DS CL2 Hurricane Evacuation Zone 00930092 DS CL11 Filler 00940092 P2F1UHNS DS CL11 Underlying HNS 00950092 P2F1B7SC DS CL8 \"True\" Borough 7 Digit Street Code 00960092 P2F1SEGT DS CL7 Segment Identifier 00970092 P2F1CURV DS CL1 Curve Flag 00980092 P2F1END EQU * 00990092 P2F1LEN EQU P2F1END-P2BAL Length of WA 2 for Fn 1 01000092 * 01010092 ******************************************************************** 01020092 ORG P2LAYOUT RESET LOCATION COUNTER FOR FUNCTION 2 01030092 ******************************************************************** 01040092 * 01050092 P2F2DUPI DS CL1 DUPLICATE INTERSECT FLAG 01060092 P2F2LGC1 DS CL2 STREET 1 PREFERRED LGC 01070092 P2F2LGC2 DS CL2 STREET 2 PREFERRED LGC 01080092 P2F2#INT DS CL1 NUMBER OF INTERSECTING STREETS 01090092 P2F2CODE DS CL30 INTERSECTING B5SC'S 01100092 P2F2CDUP DS CL1 COMPASS DIRECTION FOR TWO LOWEST 01110092 P2F2AP DS CL3 ATOMIC POLYGON 01120092 DS CL2 FILLER 01130092 P2F2NDNB DS CL7 LION NODE NUMBER 01140092 P2F2XCOR DS CL7 X COORDINATE 01150092 P2F2YCOR DS CL7 Y COORDINATE 01160092 P2F2ZCOR DS CL7 Z Coordinate - Not Impl. 01170092 P2F2SVP1 DS 0CL8 FIRST SANBORN BOROUGH, PAGE, VOLUME 01180092 P2F2SB1 DS CL1 FIRST SANBORN BOROUGH CODE 01190092 P2F2SP1 DS CL3 FIRST SANBORN PAGE 01200092 P2F2SV1 DS CL4 FIRST SANBORN VOLUME 01210092 P2F2SVP2 DS 0CL8 SECOND SANBORN BOROUGH, PAGE, VOLUME 01220092 P2F2SB2 DS CL1 SECOND SANBORN BOROUGH CODE 01230092 P2F2SP2 DS CL3 SECOND SANBORN PAGE 01240092 P2F2SV2 DS CL4 SECOND SANBORN VOLUME 01250092 P2F2MHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 01260092 P2F2SLA DS CL1 STREET LIGHT AREA 01270092 P2F2CD DS 0CL3 COMMUNITY DISTRICT 01280092 P2F2CDB DS CL1 COMMUNITY DISTRICT BORO 01290092 P2F2CDN DS CL2 COMMUNITY DISTRICT NUMBER 01300092 P2F2ZIP DS CL5 ZIP CODE 01310092 P2F2HA DS CL4 HEALTH AREA 01320092 P2F2POL DS 0CL4 POLICE DISTRICT 01330092 P2F2PBC DS CL1 POLICE PATROL BORO COMMAND 01340092 P2F2POP DS CL3 POLICE PRECINCT 01350092 P2F2FS DS CL2 FIRE DIVISION 01360092 P2F2FB DS CL2 FIRE BATTALION 01370092 P2F2FC DS 0CL4 FIRE COMPANY 01380092 P2F2FCT DS CL1 FIRE COMPANY TYPE 01390092 P2F2FCN DS CL3 FIRE COMPANY NUMBER 01400092 P2F2SCH DS CL2 SCHOOL DISTRICT 01410092 P2F2CT10 DS CL6 2010 CENSUS TRACT 01420092 P2F2CT90 DS CL6 1990 CENSUS TRACT 01430092 P2F2LEVC DS CL10 Level Codes 01440092 P2F2PPB DS CL2 Police Patrol Borough 01450092 P2F2AD DS CL2 ASSEMBLY DISTRICT 01460092 P2F2CON DS CL2 CONGRESSIONAL DISTRICT 01470092 P2F2SEN DS CL2 SENATORIAL DISTRICT 01480092 P2F2CIV DS CL2 CIVIL COURT DISTRICT 01490092 P2F2COU DS CL2 CITY COUNCIL DISTRICT 01500092 P2F2RES1 DS CL1 CD ELIGIBILITY 01510092 P2F2DDST DS CL5 DUPLICATE INTERSECTION DISTANCE 01520092 P2F2T00 DS CL6 2000 CENSUS TRACT 01530092 P2F2HCD DS CL2 HEALTH CENTER DISTRICT 01540092 P2F2SD DS CL3 SANITATION DISTRICT 01550092 P2F2SANT DS CL2 SANITATION DEPT SECTION/SUBSECTION 01560092 P2F2PSCR DS CL4 Police Sector V19.2 01561099 DS CL8 FILLER V19.2 01570099 * DS CL12 FILLER 01571099 P2F2END EQU * 01580092 P2F2LEN EQU P2F2END-P2BAL Length of WA 2 for Fn 2/2C 01590092 * 01600092 ******************************************************************** 01610092 ORG P2LAYOUT RESET LOCATION COUNTER FOR FUNCTION 2W 01620092 ******************************************************************** 01630092 * 01640092 P22WDUPI DS CL1 DUPLICATE INTERSECT FLAG 01650092 P22WLGC1 DS CL2 STREET 1 PREFERRED LGC 01660092 P22WLGC2 DS CL2 STREET 2 PREFERRED LGC 01670092 P22W#INT DS CL1 NUMBER OF INTERSECTING STREETS 01680092 P22WCODE DS CL30 INTERSECTING B5SC'S 01690092 P22WCDUP DS CL1 COMPASS DIRECTION FOR TWO LOWEST 01700092 P22WAP DS CL3 ATOMIC POLYGON 01710092 DS CL2 FILLER 01720092 P22WNDNB DS CL7 LION NODE NUMBER 01730092 P22WXCOR DS CL7 X COORDINATE 01740092 P22WYCOR DS CL7 Y COORDINATE 01750092 P22WZCOR DS CL7 Z Coordinate - Not Impl. 01760092 P22WSVP1 DS 0CL8 FIRST SANBORN BOROUGH, PAGE, VOLUME 01770092 P22WSB1 DS CL1 FIRST SANBORN BOROUGH CODE 01780092 P22WSP1 DS CL3 FIRST SANBORN PAGE 01790092 P22WSV1 DS CL4 FIRST SANBORN VOLUME 01800092 P22WSVP2 DS 0CL8 SECOND SANBORN BOROUGH, PAGE, VOLUME 01810092 P22WSB2 DS CL1 SECOND SANBORN BOROUGH CODE 01820092 P22WSP2 DS CL3 SECOND SANBORN PAGE 01830092 P22WSV2 DS CL4 SECOND SANBORN VOLUME 01840092 P22WMHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 01850092 P22WSLA DS CL1 STREET LIGHT AREA 01860092 P22WCD DS 0CL3 COMMUNITY DISTRICT 01870092 P22WCDB DS CL1 COMMUNITY DISTRICT BORO 01880092 P22WCDN DS CL2 COMMUNITY DISTRICT NUMBER 01890092 P22WZIP DS CL5 ZIP CODE 01900092 P22WHA DS CL4 HEALTH AREA 01910092 P22WPOL DS 0CL4 POLICE DISTRICT 01920092 P22WPBC DS CL1 POLICE PATROL BORO COMMAND 01930092 P22WPOP DS CL3 POLICE PRECINCT 01940092 P22WFS DS CL2 FIRE DIVISION 01950092 P22WFB DS CL2 FIRE BATTALION 01960092 P22WFC DS 0CL4 FIRE COMPANY 01970092 P22WFCT DS CL1 FIRE COMPANY TYPE 01980092 P22WFCN DS CL3 FIRE COMPANY NUMBER 01990092 P22WSCH DS CL2 SCHOOL DISTRICT 02000092 P22WCT10 DS CL6 2010 CENSUS TRACT 02010092 P22WCT90 DS CL6 1990 CENSUS TRACT 02020092 P22WLEVC DS CL10 Level Codes 02030092 P22WPPB DS CL2 Police Patrol Borough 02040092 * DS CL2 FILLER 02050092 P22WAD DS CL2 ASSEMBLY DISTRICT 02060092 P22WCON DS CL2 CONGRESSIONAL DISTRICT 02070092 P22WSEN DS CL2 SENATORIAL DISTRICT 02080092 P22WCIV DS CL2 CIVIL COURT DISTRICT 02090092 P22WCOU DS CL2 CITY COUNCIL DISTRICT 02100092 P22WRES1 DS CL1 CD ELIGIBILITY 02110092 P22WDDST DS CL5 DUPLICATE INTERSECTION DISTANCE 02120092 P22WT00 DS CL6 2000 CENSUS TRACT 02130092 P22WHCD DS CL2 HEALTH CENTER DISTRICT 02140092 P22WSD DS CL3 SANITATION DISTRICT 02150092 P22WSANT DS CL2 SANITATION DEPT SECTION/SUBSECTION 02160092 P22WPSCR DS CL4 Police Sector V19.2 02161099 DS CL8 FILLER V19.2 02170099 * DS CL12 FILLER 02171099 P22WGFIL DS CL22 FILLER FOR GRID GENERATION 02180092 P22WLGCF DS CL8 UP TO 4 LGCS FOR FIRST INTERSECTING STR 02190092 P22WLGCS DS CL8 UP TO 4 LGCS FOR SECOND INTERSECTING STR 02200092 P22WTR DS CL10 TURN RESTRICTIONS 02210092 P22WPLGC DS CL10 PREFERRED LGCS FOR 5 STS IN ST LIST 02220092 P22WTRC DS CL2 TRUE REPLICATION COUNTER 02230092 P22WDNOD DS 20CL7 LIST OF 20 7-BYTE DUPLICATE NODES 02240092 P22WS7SC DS CL3200 B7SCS FOR NODE LIST(20*5*4*8) 02250092 P22WRC DS CL1 REASON CODE 02260092 P22WRCQ DS CL1 REASON CODE QUALIFIER 02270092 P22WWC DS CL2 WARNING CODE 02280092 P22WGRC DS CL2 RETURN CODE 02290092 P22WLAT DS CL9 LATITUDE CALC FROM X-Y 02300092 P22WLON DS CL11 LONGITUDE CALC FROM X-Y 02310092 DS CL374 FILLER 02320092 P22WEND EQU * 02330092 P22WLEN EQU P22WEND-P2BAL Length of WA 2 for Fn 2W 02340092 ******************************************************************** 02350092 ORG P2LAYOUT RESET LOCATION COUNTER FOR FUNCTION 3 02360092 ******************************************************************** 02370092 * 02380092 P2F3DUPF DS 0CL1 DUPLICATE KEY FLAG 02390092 P2F3PAR DS CL1 CONTINUOUS PARITY INDICATOR 02400092 P2F3LST DS CL1 Locational Status of Segment 02410092 P2F3CBI DS CL1 County Boundary Indicator 02420092 P2F3LGC1 DS CL2 STREET 1 PREFERRED LGC 02430092 P2F3LGC2 DS CL2 STREET 2 PREFERRED LGC 02440092 P2F3LGC3 DS CL2 STREET 3 PREFERRED LGC 02450092 P2F3#STL DS CL1 NUMBER OF CROSS STREETS AT LOW END 02460092 P2F3CDEL DS CL30 CROSS STREET B5SC'S AT LOW END 02470092 P2F3#STH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 02480092 P2F3CDEH DS CL30 CROSS STREET B5SC'S AT HIGH END 02490092 P2F3REVF DS CL1 REVERSAL FLAG 02500092 P2F3KEY DS 0CL10 LION KEY 02510092 P2F3BOR DS CL1 LION BOROUGH CODE 02520092 P2F3FACE DS CL4 LION FACE CODE 02530092 P2F3SEQ DS CL5 LION SEQUENCE NUMBER 02540092 P2F3GEN DS CL1 GENERATED RECORD FLAG 02550092 P2F3SEGL DS CL5 SEGMENT LENGTH IN FEET 02560092 P2F3SLOP DS CL3 SEGMENT SLOPE IN DEGREES 02570092 P2F3ORNT DS CL1 SEGMENT ORIENTATION 02580092 P2F3MHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 02590092 P2F3FROM DS CL7 FROM NODE 02600092 P2F3TO DS CL7 TO NODE 02610092 P2F3SP DS CL1 SANITATION STREET SNOW PRIORITY 02620092 DS CL4 Future Use 02630092 * 02640092 * Apply to both sides of street 02650092 * 02660092 P2F3SEGT DS CL7 Segment Identifier 02670092 P2F3SLA DS CL1 STREET LIGHT AREA 02680092 P2F3CURV DS CL1 Curve Flag 02690092 P2F3DGLG DS CL1 Dog Leg Flag 02700092 P2F3FEAT DS CL1 Feature Type Code 02710092 P2F3STC DS CL1 Segment Type Code 02720092 P2F3CSC DS CL1 Coincident Segment Count 02730092 DS CL4 Future Use 02740092 * 02750092 * Left Side of Street 02760092 * 02770092 P2F3CDL DS 0CL3 LEFT COMMUNITY DISTRICT 02780092 P2F3CDBL DS CL1 LEFT COMMUNITY DISTRICT BORO 02790092 P2F3CDNL DS CL2 LEFT COMMUNITY DISTRICT NUMBER 02800092 P2F3LO#L DS CL16 LEFT LOW HOUSE NUMBER 02810092 P2F3HI#L DS CL16 LEFT HIGH HOUSE NUMBER 02820092 DS CL32 Future Use 02830092 P2F3RS2L DS CL1 RESERVED FOR DCP/GSS USE 02840092 P2F3ZIPL DS CL5 LEFT ZIP CODE 02850092 P2F3HAL DS CL4 LEFT HEALTH AREA 02860092 P2F3POLL DS 0CL4 LEFT POLICE DISTRICT 02870092 P2F3PBCL DS CL1 LEFT POLICE PATROL BORO COMMAND 02880092 P2F3POPL DS CL3 LEFT POLICE PRECINCT 02890092 P2F3FSL DS CL2 LEFT FIRE DIVISION 02900092 P2F3FBL DS CL2 LEFT FIRE BATTALION 02910092 P2F3FCL DS 0CL4 LEFT FIRE COMPANY 02920092 P2F3FCTL DS CL1 LEFT FIRE COMPANY TYPE 02930092 P2F3FCNL DS CL3 LEFT FIRE COMPANY NUMBER 02940092 P2F3SCHL DS CL2 LEFT SCHOOL DISTRICT 02950092 P2F3CPBL DS CL3 LEFT DYNAMIC BLOCK/ATOMIC POLYGON 02960092 P2F3EDL DS CL3 LEFT ED 02970092 P2F3ADL DS CL2 LEFT AD 02980092 P2F3PPBL DS CL2 Left Police Patrol Borough 02990092 DS CL1 Filler 03000092 P2F3BROL DS CL1 Left BOROUGH CODE 03010092 P2F3TR9L DS CL6 Left 1990 CENSUS TRACT 03020092 P2F3C10L DS CL6 Left 2010 CENSUS TRACT 03030092 P2F3B10L DS CL4 Left 2010 CENSUS BLOCK NUMBER 03040092 P2F3BS1L DS CL1 Left 2010 CENSUS BLOCK SUFFIX-NOT IMPLEMNT 03050092 P2F3T00L DS CL6 Left 2000 CENSUS TRACT 03060092 P2F3B00L DS CL4 Left 2000 CENSUS BLOCK NUMBER 03070092 P2F3S00L DS CL1 Left 2000 CENSUS BLOCK SUFFIX 03080092 DS CL7 Filler 03090092 *P2F3BIDL DS CL7 Left BLOCKFACE ID 03100092 P2F3NTAL DS CL4 Left NEIGHBORHOOD TABULATION AREA 03110092 DS CL8 Future Use 03120092 * 03130092 * Right Side of Street 03140092 * 03150092 P2F3CDR DS 0CL3 RIGHT COMMUNITY DISTRICT 03160092 P2F3CDBR DS CL1 RIGHT COMMUNITY DISTRICT BORO 03170092 P2F3CDNR DS CL2 RIGHT COMMUNITY DISTRICT NUMBER 03180092 P2F3LO#R DS CL16 RIGHT LOW HOUSE NUMBER 03190092 P2F3HI#R DS CL16 RIGHT HIGH HOUSE NUMBER 03200092 DS CL32 Future Use 03210092 P2F3RS2R DS CL1 RESERVED FOR DCP/GSS USE 03220092 P2F3ZIPR DS CL5 RIGHT ZIP CODE 03230092 P2F3HAR DS CL4 RIGHT HEALTH AREA 03240092 P2F3POLR DS 0CL4 RIGHT POLICE DISTRICT 03250092 P2F3PBCR DS CL1 RIGHT POLICE PATROL BORO COMMAND 03260092 P2F3POPR DS CL3 RIGHT POLICE PRECINCT 03270092 P2F3FSR DS CL2 RIGHT FIRE DIVISION 03280092 P2F3FBR DS CL2 RIGHT FIRE BATTALION 03290092 P2F3FCR DS 0CL4 RIGHT FIRE COMPANY 03300092 P2F3FCTR DS CL1 RIGHT FIRE COMPANY TYPE 03310092 P2F3FCNR DS CL3 RIGHT FIRE COMPANY NUMBER 03320092 P2F3SCHR DS CL2 RIGHT SCHOOL DISTRICT 03330092 P2F3CPBR DS CL3 RIGHT DYNAMIC BLOCK/ATOMIC POLYGON 03340092 P2F3EDR DS CL3 RIGHT ED 03350092 P2F3ADR DS CL2 RIGHT AD 03360092 P2F3PPBR DS CL2 Right Police Patrol Borough 03370092 DS CL1 Filler 03380092 P2F3BROR DS CL1 Right BOROUGH CODE 03390092 P2F3TR9R DS CL6 Right 1990 CENSUS TRACT 03400092 P2F3C10R DS CL6 Right 2010 CENSUS TRACT 03410092 P2F3B10R DS CL4 Right 2010 CENSUS BLOCK 03420092 P2F3BS1R DS CL1 Right 2010 CENSUS BLOCK SUFFIX NOT IMPLM 03430092 P2F3T00R DS CL6 Right 2000 CENSUS TRACT 03440092 P2F3B00R DS CL4 Right 2000 CENSUS BLOCK 03450092 P2F3S00R DS CL1 Right 2000 CENSUS BLOCK SUFFIX 03460092 *P2F3BIDR DS CL7 RIGHT BLOCKFACE ID 03470092 DS CL7 Filler V16.1 03480092 P2F3NTAR DS CL4 RIGHT NEIGHBORHOOD TABULATION AREA 03490092 DS CL8 Future Use 03500092 P2F3END EQU * 03510092 P2F3LEN EQU P2F3END-P2BAL Length of WA 2 for Fn 3 03520092 * 03530092 ******************************************************************** 03540092 ORG P2F3END Auxiliary Segment Overlay - FUNCTION 3 03550092 ******************************************************************** 03560092 * 03570092 P2F3FILR DS CL6 Future Use 03580092 P2F3SCNT DS CL4 Number of segment ids 03590092 P2F3SGID DS CL490 up to 70 Seven Byte Segment IDS 03600092 P2F3SEND EQU * 03610092 P2F3SLEN EQU P2F3SEND-P2BAL Length of WA 2 for Fn 3 w/segments 03620092 * 03630092 ******************************************************************** 03640092 ORG P2LAYOUT RESET LOCATION COUNTER-FUNCTION 3 EXTENDED 03650092 ******************************************************************** 03660092 * 03670092 P23XDUPF DS 0CL1 DUPLICATE KEY FLAG 03680092 P23XPAR DS CL1 CONTINUOUS PARITY INDICATOR 03690092 P23XLST DS CL1 Locational Status of Segment 03700092 P23XCBI DS CL1 County Boundary Indicator 03710092 P23XLGC1 DS CL2 STREET 1 PREFERRED LGC 03720092 P23XLGC2 DS CL2 STREET 2 PREFERRED LGC 03730092 P23XLGC3 DS CL2 STREET 3 PREFERRED LGC 03740092 P23X#STL DS CL1 NUMBER OF CROSS STREETS AT LOW END 03750092 P23XCDEL DS CL30 CROSS STREET B5SC'S AT LOW END 03760092 P23X#STH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 03770092 P23XCDEH DS CL30 CROSS STREET B5SC'S AT HIGH END 03780092 P23XREVF DS CL1 REVERSAL FLAG 03790092 P23XKEY DS 0CL10 LION KEY 03800092 P23XBOR DS CL1 LION BOROUGH CODE 03810092 P23XFACE DS CL4 LION FACE CODE 03820092 P23XSEQ DS CL5 LION SEQUENCE NUMBER 03830092 P23XGEN DS CL1 GENERATED RECORD FLAG 03840092 P23XSEGL DS CL5 SEGMENT LENGTH IN FEET 03850092 P23XSLOP DS CL3 SEGMENT SLOPE IN DEGREES 03860092 P23XORNT DS CL1 SEGMENT ORIENTATION 03870092 P23XMHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 03880092 P23XFROM DS CL7 FROM NODE 03890092 P23XTO DS CL7 TO NODE 03900092 P23XSP DS CL1 SANITATION STREET SNOW PRIORITY 03910092 DS CL4 Future Use 03920092 * 03930092 * Apply to both sides of street 03940092 * 03950092 P23XSEGT DS CL7 Segment Identifier 03960092 P23XSLA DS CL1 STREET LIGHT AREA 03970092 P23XCURV DS CL1 Curve Flag 03980092 P23XDGLG DS CL1 Dog Leg Flag 03990092 P23XFEAT DS CL1 Feature Type Code 04000092 P23XSTC DS CL1 Segment Type Code 04010092 P23XCSC DS CL1 Coincident Segment Count 04020092 DS CL4 Future Use 04030092 * 04040092 * Left Side of Street 04050092 * 04060092 P23XCDL DS 0CL3 LEFT COMMUNITY DISTRICT 04070092 P23XCDBL DS CL1 LEFT COMMUNITY DISTRICT BORO 04080092 P23XCDNL DS CL2 LEFT COMMUNITY DISTRICT NUMBER 04090092 P23XLO#L DS CL16 LEFT LOW HOUSE NUMBER 04100092 P23XHI#L DS CL16 LEFT HIGH HOUSE NUMBER 04110092 DS CL32 Future Use 04120092 P23XRS2L DS CL1 RESERVED FOR DCP/GSS USE 04130092 P23XZIPL DS CL5 LEFT ZIP CODE 04140092 P23XHAL DS CL4 LEFT HEALTH AREA 04150092 P23XPOLL DS 0CL4 LEFT POLICE DISTRICT 04160092 P23XPBCL DS CL1 LEFT POLICE PATROL BORO COMMAND 04170092 P23XPOPL DS CL3 LEFT POLICE PRECINCT 04180092 P23XFSL DS CL2 LEFT FIRE DIVISION 04190092 P23XFBL DS CL2 LEFT FIRE BATTALION 04200092 P23XFCL DS 0CL4 LEFT FIRE COMPANY 04210092 P23XFCTL DS CL1 LEFT FIRE COMPANY TYPE 04220092 P23XFCNL DS CL3 LEFT FIRE COMPANY NUMBER 04230092 P23XSCHL DS CL2 LEFT SCHOOL DISTRICT 04240092 P23XCPBL DS CL3 LEFT DYNAMIC BLOCK/ATOMIC POLYGON 04250092 P23XEDL DS CL3 LEFT ED 04260092 P23XADL DS CL2 LEFT AD 04270092 P23XPPBL DS CL2 Left Police Patrol Borough 04280092 DS CL1 Filler 04290092 P23XBROL DS CL1 Left BOROUGH CODE 04300092 P23XTR9L DS CL6 Left 1990 CENSUS TRACT 04310092 P23XC10L DS CL6 Left 2010 CENSUS TRACT 04320092 P23XB10L DS CL4 Left 2010 CENSUS BLOCK NUMBER 04330092 P23XBS1L DS CL1 Left 2010 CENSUS BLOCK SUFFIX-NOT IMPLEMNT 04340092 P23XT00L DS CL6 Left 2000 CENSUS TRACT 04350092 P23XB00L DS CL4 Left 2000 CENSUS BLOCK NUMBER 04360092 P23XS00L DS CL1 Left 2000 CENSUS BLOCK SUFFIX 04370092 *P23XBIDL DS CL7 Left BLOCKFACE ID 04380092 DS CL7 Filler 04390092 P23XNTAL DS CL4 Left NEIGHBORHOOD TABULATION AREA 04400092 DS CL8 Future Use 04410092 * 04420092 * Right Side of Street 04430092 * 04440092 P23XCDR DS 0CL3 RIGHT COMMUNITY DISTRICT 04450092 P23XCDBR DS CL1 RIGHT COMMUNITY DISTRICT BORO 04460092 P23XCDNR DS CL2 RIGHT COMMUNITY DISTRICT NUMBER 04470092 P23XLO#R DS CL16 RIGHT LOW HOUSE NUMBER 04480092 P23XHI#R DS CL16 RIGHT HIGH HOUSE NUMBER 04490092 DS CL32 Future Use 04500092 P23XRS2R DS CL1 RESERVED FOR DCP/GSS USE 04510092 P23XZIPR DS CL5 RIGHT ZIP CODE 04520092 P23XHAR DS CL4 RIGHT HEALTH AREA 04530092 P23XPOLR DS 0CL4 RIGHT POLICE DISTRICT 04540092 P23XPBCR DS CL1 RIGHT POLICE PATROL BORO COMMAND 04550092 P23XPOPR DS CL3 RIGHT POLICE PRECINCT 04560092 P23XFSR DS CL2 RIGHT FIRE DIVISION 04570092 P23XFBR DS CL2 RIGHT FIRE BATTALION 04580092 P23XFCR DS 0CL4 RIGHT FIRE COMPANY 04590092 P23XFCTR DS CL1 RIGHT FIRE COMPANY TYPE 04600092 P23XFCNR DS CL3 RIGHT FIRE COMPANY NUMBER 04610092 P23XSCHR DS CL2 RIGHT SCHOOL DISTRICT 04620092 P23XCPBR DS CL3 RIGHT DYNAMIC BLOCK/ATOMIC POLYGON 04630092 P23XEDR DS CL3 RIGHT ED 04640092 P23XADR DS CL2 RIGHT AD 04650092 P23XPPBR DS CL2 Right Police Patrol Borough 04660092 DS CL1 Filler 04670092 P23XBROR DS CL1 Right BOROUGH CODE 04680092 P23XTR9R DS CL6 Right 1990 CENSUS TRACT 04690092 P23XC10R DS CL6 Right 2010 CENSUS TRACT 04700092 P23XB10R DS CL4 Right 2010 CENSUS BLOCK 04710092 P23XBS1R DS CL1 Right 2010 CENSUS BLOCK SUFFIX NOT IMPLM 04720092 P23XT00R DS CL6 Right 2000 CENSUS TRACT 04730092 P23XB00R DS CL4 Right 2000 CENSUS BLOCK 04740092 P23XS00R DS CL1 Right 2000 CENSUS BLOCK SUFFIX 04750092 *P23XBIDR DS CL7 RIGHT BLOCKFACE ID 04760092 DS CL7 Filler 04770092 P23XNTAR DS CL4 RIGHT NEIGHBORHOOD TABULATION AREA 04780092 DS CL8 Future Use 04790092 P23XLGCS DS CL8 List of 4 LGCs 04800092 P23XLGCF DS CL8 List of 4 From LGCs 04810092 P23XLGCT DS CL8 List of 4 To LGCs 04820092 P23XLHCD DS CL2 Left Health Center District 04830092 P23XRHCD DS CL2 Right Health Center District 04840092 P23XFILS DS CL1 Filler 04850092 P23XTD DS CL1 Traffic Direction 04860092 P23XRTP DS CL2 Roadyway Type 04870092 P23XPID DS CL7 Physical Id 04880092 P23XGID DS CL7 Generic Id 04890092 P23XPDID DS CL7 For DCP Use Only 04900092 P23XFDID DS CL7 For DCP Use Only 04910092 P23XSTST DS CL1 Street Status 04920092 P23XSTW DS CL3 Street Width 04930092 P23XSTWI DS CL1 Street Width Irregular 04940092 P23XBL DS CL1 Bike Lane 04950092 P23XFCC DS CL2 Federal Classification Code 04960092 P23XROW DS CL1 Row Type 04970092 P23XLGC5 DS CL10 List of 5 LGCs 04980092 P23XLGID DS CL7 Legacy Id 04990092 P23XLNTA DS CL75 Left NTA Name 05000092 P23XRNTA DS CL75 Right NTA Name 05010092 P23XFXC DS CL7 From X Coordinate 05020092 P23XFYC DS CL7 From Y Coordinate 05030092 P23XTXC DS CL7 To X Coordinate 05040092 P23XTYC DS CL7 To Y Coordinate 05050092 P23XFLAT DS CL9 LATITUDE OF FROM INTERSCT. 05060092 P23XFLON DS CL11 LONGITUDE OF FROM INTERSCT. 05070092 P23XTLAT DS CL9 LATITUDE OF TO INTERSCT. 05080092 P23XTLON DS CL11 LONGITUDE OF TO INTERSCT. 05090092 P23XBIDL DS CL10 NEW location Left Blockface Id V16.1 05100092 P23XBIDR DS CL10 NEW location Right Blockface Id V16.1 05110092 P23X#TRL DS CL2 nbr of traveling lanes 05120092 P23X#PKL DS CL2 nbr of parking lanes 05130092 P23X#TLL DS CL2 nbr of total lanes 05140092 P23XBL2 DS CL2 Bike Lane 2 (has 2 bytes numeric value) 05150092 P23XSTWX DS CL3 Street Width Maximum 05160092 P23XBTD DS CL2 Bike Traffic Direction 05170092 P23XSPDL DS CL2 Speed Limit 05171094 P23XPUML DS CL5 PUMA CODE (left) 05172097 P23XPUMR DS CL5 PUMA CODE (right) 05173097 P23XPSRL DS CL4 Police Sector (left) 05174099 P23XPSRR DS CL4 Police Sector(right) 05175099 P23XFILL DS CL193 FILLER V19.2 05180099 *P23XFILL DS CL201 FILLER 05181099 P23XEND EQU * 05190092 P23XLEN EQU P23XEND-P2BAL Length of WA 2 for Fn 3 Extended 05200092 * 05210092 ******************************************************************** 05220092 ORG P23XEND Auxiliary Seg Overlay - FUNCTION 3 EXTENDED 05230092 ******************************************************************** 05240092 * 05250092 P23XFILR DS CL6 Future Use 05260092 P23XSCNT DS CL4 Number of segment ids 05270092 P23XSGID DS CL490 up to 70 Seven Byte Segment IDS 05280092 P23XSEND EQU * 05290092 P23XSLEN EQU P23XSEND-P2BAL Len of WA2 for Fn3 MODE=X w/segments 05300092 * 05310092 ******************************************************************** 05320092 ORG P2LAYOUT RESET LOCATION COUNTER FOR FUNCTION 3C 05330092 ******************************************************************** 05340092 * 05350092 P23CDUPF DS 0CL1 DUPLICATE KEY FLAG 05360092 P23CPAR DS CL1 CONTINUOUS PARITY INDICATOR 05370092 P23CLST DS CL1 Locational Status of Segment 05380092 P23CCBI DS CL1 County Boundary Indicator 05390092 P23CLGC1 DS CL2 STREET 1 PREFERRED LGC 05400092 P23CLGC2 DS CL2 STREET 2 PREFERRED LGC 05410092 P23CLGC3 DS CL2 STREET 3 PREFERRED LGC 05420092 P23C#STL DS CL1 NUMBER OF CROSS STREETS AT LOW END 05430092 P23CCDEL DS CL30 CROSS STREET B5SC'S AT LOW END 05440092 P23C#STH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 05450092 P23CCDEH DS CL30 CROSS STREET B5SC'S AT HIGH END 05460092 P23CREVF DS CL1 REVERSAL FLAG 05470092 P23CKEY DS 0CL10 LION KEY 05480092 P23CBOR DS CL1 LION BOROUGH CODE 05490092 P23CFACE DS CL4 LION FACE CODE 05500092 P23CSEQ DS CL5 LION SEQUENCE NUMBER 05510092 P23CGEN DS CL1 GENERATED RECORD FLAG 05520092 P23CSEGL DS CL5 SEGMENT LENGTH IN FEET 05530092 P23CSLOP DS CL3 SEGMENT SLOPE IN DEGREES 05540092 P23CORNT DS CL1 SEGMENT ORIENTATION 05550092 P23CMHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 05560092 P23CFROM DS CL7 FROM NODE 05570092 P23CTO DS CL7 TO NODE 05580092 P23CSP DS CL1 SANITATION STREET SNOW PRIORITY 05590092 DS CL4 Future Use 05600092 * 05610092 * Side of Street Information 05620092 * 05630092 P23CSEGT DS CL7 Segment Identifier 05640092 P23CSLA DS CL1 STREET LIGHT AREA 05650092 P23CSOS DS CL1 Side of Street Indicator 05660092 P23CCURV DS CL1 Curve Flag 05670092 P23CFEAT DS CL1 Feature Type Code 05680092 P23CSTC DS CL1 Segment Type Code 05690092 P23CCSC DS CL1 COINCIDENT SEGMENT COUNT 05700092 DS CL4 Future Use 05710092 P23CCD DS 0CL3 COMMUNITY DISTRICT 05720092 P23CCDB DS CL1 COMMUNITY DISTRICT BORO 05730092 P23CCDN DS CL2 COMMUNITY DISTRICT NUMBER 05740092 P23CLO# DS CL16 LOW HOUSE NUMBER 05750092 P23CHI# DS CL16 HIGH HOUSE NUMBER 05760092 P23CHS2L DS CL16 2ND LOW HSE # - USED IF ODD & EVEN RANGES 05770092 P23CHS2H DS CL16 2ND HI HSE # ARE ON SAME SIDE OF STREET 05780092 P23CRES2 DS CL1 RESERVED FOR DCP/GSS USE 05790092 P23CZIP DS CL5 ZIP CODE 05800092 P23CHAL DS CL4 HEALTH AREA 05810092 P23CPOL DS 0CL4 POLICE DISTRICT 05820092 P23CPBC DS CL1 POLICE PATROL BORO COMMAND 05830092 P23CPOP DS CL3 POLICE PRECINCT 05840092 P23CFS DS CL2 FIRE DIVISION 05850092 P23CFB DS CL2 FIRE BATTALION 05860092 P23CFC DS 0CL4 FIRE COMPANY 05870092 P23CFCT DS CL1 FIRE COMPANY TYPE 05880092 P23CFCN DS CL3 FIRE COMPANY NUMBER 05890092 P23CSCH DS CL2 SCHOOL DISTRICT 05900092 P23CCPB DS CL3 DYNAMIC BLOCK / ATOMIC POLYGON 05910092 P23CED DS CL3 ED 05920092 P23CAD DS CL2 AD 05930092 P23CPPB DS CL2 Police Patrol Borough 05940092 DS CL1 Filler 05950092 P23CBRO DS CL1 BOROUGH CODE 05960092 P23CTR9 DS CL6 1990 CENSUS TRACT 05970092 P23CCT10 DS CL6 2010 CENSUS TRACT 05980092 P23CBL10 DS CL4 2010 CENSUS BLOCK 05990092 P23CBL1S DS CL1 2010 CENSUS BLOCK SUFFIX NOT IMPLEMENTED 06000092 P23CT00 DS CL6 2000 CENSUS TRACT 06010092 P23CB00 DS CL4 2000 CENSUS BLOCK 06020092 P23CS00 DS CL1 2000 CENSUS BLOCK SUFFIX 06030092 *P23CBID DS CL7 BLOCKFACE ID 06040092 DS CL7 Filler V16.1 06050092 P23CNTA DS CL4 NEIGHBORHOOD TABULATION AREA 06060092 DS CL8 Future Use 06070092 P23CEND EQU * 06080092 P23CLEN EQU P23CEND-P2BAL Length of WA 2 for Fn 3C 06090092 ******************************************************************** 06100092 ORG P23CEND Auxiliary Segment Overlay - FUNCTION 3C 06110092 ******************************************************************** 06120092 * 06130092 P23CFILR DS CL6 FUTURE USE 06140092 P23CSCNT DS CL4 Number of segment ids 06150092 P23CSGID DS CL490 up to 70 Seven Byte Segment IDS 06160092 P23CSEND EQU * 06170092 P23CSLEN EQU P23CSEND-P2BAL Length of WA 2 for Fn 3C w/Segments 06180092 * 06190092 ******************************************************************** 06200092 ORG P2LAYOUT RESET LOC COUNTER FOR FUNCTION 3C EXTENDED 06210092 ******************************************************************** 06220092 * 06230092 P2CXDUPF DS 0CL1 DUPLICATE KEY FLAG 06240092 P2CXPAR DS CL1 CONTINUOUS PARITY INDICATOR 06250092 P2CXLST DS CL1 Locational Status of Segment 06260092 P2CXCBI DS CL1 County Boundary Indicator 06270092 P2CXLGC1 DS CL2 STREET 1 PREFERRED LGC 06280092 P2CXLGC2 DS CL2 STREET 2 PREFERRED LGC 06290092 P2CCLGC3 DS CL2 STREET 3 PREFERRED LGC 06300092 P2CX#STL DS CL1 NUMBER OF CROSS STREETS AT LOW END 06310092 P2CXCDEL DS CL30 CROSS STREET B5SC'S AT LOW END 06320092 P2CX#STH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 06330092 P2CXCDEH DS CL30 CROSS STREET B5SC'S AT HIGH END 06340092 P2CXREVF DS CL1 REVERSAL FLAG 06350092 P2CXKEY DS 0CL10 LION KEY 06360092 P2CXBOR DS CL1 LION BOROUGH CODE 06370092 P2CXFACE DS CL4 LION FACE CODE 06380092 P2CXSEQ DS CL5 LION SEQUENCE NUMBER 06390092 P2CXGEN DS CL1 GENERATED RECORD FLAG 06400092 P2CXSEGL DS CL5 SEGMENT LENGTH IN FEET 06410092 P2CXSLOP DS CL3 SEGMENT SLOPE IN DEGREES 06420092 P2CXORNT DS CL1 SEGMENT ORIENTATION 06430092 P2CXMHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 06440092 P2CXFROM DS CL7 FROM NODE 06450092 P2CXTO DS CL7 TO NODE 06460092 P2CXSP DS CL1 SANITATION STREET SNOW PRIORITY 06470092 DS CL4 Future Use 06480092 * 06490092 * Side of Street Information 06500092 * 06510092 P2CXSEGT DS CL7 Segment Identifier 06520092 P2CXSLA DS CL1 STREET LIGHT AREA 06530092 P2CXSOS DS CL1 Side of Street Indicator 06540092 P2CXCURV DS CL1 Curve Flag 06550092 P2CXFEAT DS CL1 Feature Type Code 06560092 P2CXSTC DS CL1 Segment Type Code 06570092 P2CXCSC DS CL1 COINCIDENT SEGMENT COUNT 06580092 DS CL4 Future Use 06590092 P2CXCD DS 0CL3 COMMUNITY DISTRICT 06600092 P2CXCDB DS CL1 COMMUNITY DISTRICT BORO 06610092 P2CXCDN DS CL2 COMMUNITY DISTRICT NUMBER 06620092 P2CXLO# DS CL16 LOW HOUSE NUMBER 06630092 P2CXHI# DS CL16 HIGH HOUSE NUMBER 06640092 P2CXHS2L DS CL16 2ND LOW HSE # - USED IF ODD & EVEN RANGES 06650092 P2CXHS2H DS CL16 2ND HI HSE # ARE ON SAME SIDE OF STREET 06660092 P2CXRES2 DS CL1 RESERVED FOR DCP/GSS USE 06670092 P2CXZIP DS CL5 ZIP CODE 06680092 P2CXHAL DS CL4 HEALTH AREA 06690092 P2CXPOL DS 0CL4 POLICE DISTRICT 06700092 P2CXPBC DS CL1 POLICE PATROL BORO COMMAND 06710092 P2CXPOP DS CL3 POLICE PRECINCT 06720092 P2CXFS DS CL2 FIRE DIVISION 06730092 P2CXFB DS CL2 FIRE BATTALION 06740092 P2CXFC DS 0CL4 FIRE COMPANY 06750092 P2CXFCT DS CL1 FIRE COMPANY TYPE 06760092 P2CXFCN DS CL3 FIRE COMPANY NUMBER 06770092 P2CXSCH DS CL2 SCHOOL DISTRICT 06780092 P2CXCPB DS CL3 DYNAMIC BLOCK / ATOMIC POLYGON 06790092 P2CXED DS CL3 ED 06800092 P2CXAD DS CL2 AD 06810092 P2CXPPB DS CL2 Police Patrol Borough 06820092 DS CL1 Filler 06830092 P2CXBRO DS CL1 BOROUGH CODE 06840092 P2CXTR9 DS CL6 1990 CENSUS TRACT 06850092 P2CXCT10 DS CL6 2010 CENSUS TRACT 06860092 P2CXBL10 DS CL4 2010 CENSUS BLOCK 06870092 P2CXBL1S DS CL1 2010 CENSUS BLOCK SUFFIX NOT IMPLEMENTED 06880092 P2CXT00 DS CL6 2000 CENSUS TRACT 06890092 P2CXB00 DS CL4 2000 CENSUS BLOCK 06900092 P2CXS00 DS CL1 2000 CENSUS BLOCK SUFFIX 06910092 *P2CXBID DS CL7 BLOCKFACE ID 06920092 DS CL7 Filler V16.1 06930092 P2CXNTA DS CL4 NEIGHBORHOOD TABULATION AREA 06940092 DS CL8 Future Use 06950092 P2CXLGCS DS CL8 List of 4 LGCs 06960092 P2CXLGCF DS CL8 List of 4 From LGCs 06970092 P2CXLGCT DS CL8 List of 4 To LGCs 06980092 P2CXLHCD DS CL2 Left Health Center District 06990092 P2CXRHCD DS CL2 Right Health Center District 07000092 P2CXFILS DS CL1 Filler 07010092 P2CXTD DS CL1 Traffic Direction 07020092 P2CXRTP DS CL2 Roadyway Type 07030092 P2CXPID DS CL7 Physical Id 07040092 P2CXGID DS CL7 Generic Id 07050092 P2CXPDID DS CL7 For DCP Use Only 07060092 P2CXFDID DS CL7 For DCP Use Only 07070092 P2CXSTST DS CL1 Street Status 07080092 P2CXSTW DS CL3 Street Width 07090092 P2CXSTWI DS CL1 Street Width Irregular 07100092 P2CXBL DS CL1 Bike Lane 07110092 P2CXFCC DS CL2 Federal Classification Code 07120092 P2CXROW DS CL1 Row Type 07130092 P2CXLGC5 DS CL10 List of 5 LGCs 07140092 P2CXLGID DS CL7 Legacy Id 07150092 P2CXNTAN DS CL75 NTA Name 07160092 P2CXFXC DS CL7 From X Coordinate 07170092 P2CXFYC DS CL7 From Y Coordinate 07180092 P2CXTXC DS CL7 To X Coordinate 07190092 P2CXTYC DS CL7 To Y Coordinate 07200092 P2CXFLAT DS CL9 LATITUDE OF FROM INTERSCT. 07210092 P2CXFLON DS CL11 LONGITUDE OF FROM INTERSCT. 07220092 P2CXTLAT DS CL9 LATITUDE OF TO INTERSCT. 07230092 P2CXTLON DS CL11 LONGITUDE OF TO INTERSCT. 07240092 P2CXBFID DS CL10 NEW location Blockface Id V16.1 07250092 P2CX#TRL DS CL2 nbr of traveling lanes 07260092 P2CX#PKL DS CL2 nbr of parking lanes 07270092 P2CX#TLL DS CL2 nbr of total lanes 07280092 P2CXBL2 DS CL2 Bike Lane2 (has 2bytes numeric value) 07290092 P2CXSTWX DS CL3 Street Width Maximum 07300092 P2CXBTD DS CL2 Bike Traffic Direction 07310092 P2CXSPDL DS CL2 Speed Limit 07311094 P2CXPUMA DS CL5 PUMA Code V18.1 07312098 P2CXPSCR DS CL4 Police Sector V19.2 07313099 P2CXFILL DS CL287 FILLER V19.2 07315099 *P2CXFILL DS CL291 FILLER 07320099 P2CXEND EQU * 07330092 P2CXLEN EQU P2CXEND-P2BAL Length of WA 2 for Fn 3C 07340092 ******************************************************************** 07350092 ORG P2CXEND Auxiliary Segment Overlay - FUNCTION 3C-X 07360092 ******************************************************************** 07370092 * 07380092 P2CXFILR DS CL6 FUTURE USE 07390092 P2CXSCNT DS CL4 Number of segment ids 07400092 P2CXSGID DS CL490 up to 70 Seven Byte Segment IDS 07410092 P2CXSEND EQU * 07420092 P2CXSLEN EQU P2CXSEND-P2BAL Length of WA 2 for Fn 3C-X w/Segments 07430092 * 07440092 * 07450092 ******************************************************************** 07460092 ORG P2BAL RESET LOCATION COUNTER FOR FUNCTION 5 07470092 ******************************************************************** 07480092 * 07490092 P2F5AMK DS CL28 ACCESS MATCHING KEY 07500092 DS CL172 07510092 P2F5END EQU * 07520092 P2F5LEN EQU P2F5END-P2BAL Length of WA 2 for Fn 5 07530092 ORG 07540092","title":"P2BAL COPY File"},{"location":"appendices/appendix14/#p2bal1a-copy-file","text":"*/********************************************************************/ 00010064 */***** THIS IS GEOSUPPORT INFORMATION SYSTEM COPY FILE P2BAL1A, ***/ 00020064 */***** CONTAINING THE LAYOUT OF WORK AREA 2 FOR FUNCTION ***/ 00030064 */***** 1A, BL And BN WHICH SHARE A SINGLE WORK AREA 2 LAYOUT. ***/ 00040064 */***** The Long Work Area only applies to Functions 1A and BL. ***/ 00050064 */***** The long work area only exists if the Address Overflow ***/ 00060064 */***** Flag has been set on. ***/ 00070064 */***** As of 2011, Function 1/1E Extended, Function 1A Extended ***/ 00080064 */***** and Function 1B have been added to this Copy File ***/ 00090064 */***** ADDED 2 byte field \"Police Patrol Borough\" for functions: ***/ 00100064 */***** 1X/1EX/1B. August 2014 ***/ 00110064 */***** ADDED 4 fields: \"segment from node\", \"segment to node\", ***/ 00120064 */***** \"segment from XYZ\", \"segment to XYZ\" for func 1X/1EX/1B ***/ 00130064 */***** May 2015 ***/ 00140064 */***** ADDED 2 fields: \"Bike Lane 2\" and \"Street Width Maximum\" ***/ 00141068 */***** for functions 1EX/1B September 2016 ***/ 00142068 */***** Replaced \"Saniitation Reserved\" with \"Sanitation Bulk ***/ 00143070 */***** Pick Up\" for functions 1E,1B October 2016 ***/ 00144070 */***** ADDED 2 bytes field \"Bike Traffic Direction\" for ***/ 00145072 */***** for functions 1/1E (extended),1B,3X,3CX 12/2016 ***/ 00146071 */***** ADDED 2 bytes field \"Speed Limit\" 09/2017 ***/ 00147073 */***** for functions 1/1E (extended),1B ***/ 00148074 */***** ADDED 3 bytes field \"DCP Zoning Map\" 09/2017 ***/ 00149075 */***** for functions 1A,BL,BN, 1A,BL,BN(extended) and 1B ***/ 00149175 */***** ADDED 5 bytes field \"PUMA Code\" for functions: ***/ 00149276 */***** 1/1E (extended),1B. 12/2017 ***/ 00149376 */***** ADDED 4 bytes field \"Police Sector\" for functions: ***/ 00149477 */***** 1/1E (extended),1B. 06/2018 ***/ 00149579 */***** ADDED 1 byte field \"Police Service area\" for functions: ***/ 00149677 */***** 1/1E (extended) and 1B. 06/2018 ***/ 00149777 */********************************************************************/ 00150064 */***** LAST UPDATE - February 2016 ***/ 00160066 */********************************************************************/ 00170064 P2BAL1A DS 0H 00180064 DS CL21 00190064 P21ACPAR DS CL1 CONTINUOUS PARITY INDICATOR 00200064 P21AHSEL DS CL11 LOW HOUSE NUMBER ON BLOCK - HNS Form 00210064 P21AALT1 DS 0CL11 ALTERNATE KEY 00220064 P21ABOR1 DS CL1 ALTERNATE KEY - BORO 00230064 P21ATXB1 DS CL5 ALTERNATE KEY - TAX BLOCK 00240064 P21ATXL1 DS CL4 ALTERNATE KEY - TAX LOT 00250064 DS CL1 Future Use 00260064 P21ARSCC DS CL1 RPAD SCC 00270064 DS CL1 FILLER 00280064 P21AGLI DS 0CL13 GENERAL LOT INFO 00290064 P21ARBLC DS CL2 RPAD BUILDING CLASSIFICATION 00300064 P21ACORC DS CL2 CORNER CODE 00310064 P21A#STC DS CL4 TOTAL NUMBER STRUCTURES 00320064 P21A#BFA DS CL2 TOTAL NUMBER BLOCKFACES 00330064 P21AINTF DS CL1 INTERIOR LOT FLAG 00340064 P21AVACF DS CL1 VACANT LOT FLAG 00350064 P21AIRLF DS CL1 IRREGULARLY-SHAPED LOT FLAG 00360064 * 00370064 P21AABFL DS CL1 Marble Hill/ Rikers ALTERNATE BORO FLAG 00380064 P21AOVFL DS CL1 Address Overflow Flag 00390064 * 00400064 P21ASTRK DS CL19 STROLLING KEY 00410064 * 00420064 P21ARFIU DS CL1 RESERVED FOR INTERNAL USE 00430064 P21ABIN DS CL7 BUILDING IDENTIFICATION NUMBER (BIN) 00440064 * Condo Information 00450064 P21ACONF DS CL1 CONDO LOT FLAG 00460064 DS CL1 Filler for Future Use 00470064 P21ARCO# DS CL4 RPAD CONDO NUMBER 00480064 DS CL7 Future Use - Condo Unit Number 00490064 P21ACBBL DS CL11 CONDO BILLING BBL 00500064 P21ACBBS DS CL1 CONDO BILLING BBL SCC 00510064 P21ACLBL DS CL11 CONDO LOW BBL 00520064 P21ACHBL DS CL11 CONDO HIGH BBL 00530064 DS CL15 Filler 00540064 P21ACOOP DS CL4 Co-op Number 00550064 * 00560064 P21ASBVP DS CL8 SANDBORN BOROUGH/VOLUME/PAGE 00570064 * 00580064 P21ABUSA DS CL5 BUSINESS AREA 00590064 P21ATAXM DS CL5 Tax Map Number - Section and Volume 00600064 DS CL4 Reserved for Tax Map Page 00610064 DS CL3 FILLER 00620064 P21ALAT DS CL9 LATITUDE 00630064 P21ALONG DS CL11 LONGITUDE 00640064 P21AXCO DS CL7 X Coordinate of Annotation Point 00650064 P21AYCO DS CL7 Y Coordinate of Annotation Point 00660064 P21ABID DS CL6 Business Improvement District 00670064 P21ATPBS DS CL1 TPAD BIN Status 00680064 P21ATPNB DS CL7 TPAD New BIN 00690064 P21ATPNS DS CL1 TPAD New BIN Status 00700064 P21ATPCF DS CL1 TPAD Conflict Flag 00710064 P21AZMAP DS CL3 DCP Zoning Map 00711075 DS CL6 FILLER 00720075 DS CL8 Internal Use 00730064 P21A#ADR DS CL4 TOTAL ADDRESSES FOR LOT 00740064 P21ALIST DS 0CL1113 LIST OF ADDRESSES, MAXIMUM OF 21 00750064 P21ALOW# DS CL16 LOW HOUSE NUMBER-Display Form 00760064 P21AHI# DS CL16 HIGH HOUSE NUMBER-Display Form 00770064 P21ABCDE DS CL1 Borough Code 00780064 P21ACODE DS CL5 STREET CODE 00790064 P21APLGC DS CL2 Preferred LGC 00800064 P21ALBIN DS CL7 BIN 00810064 P21ALSOS DS CL1 Side of Street Indicator 00820064 P21AATP DS CL1 Address Type Flag 00830064 P21AATPS DS CL1 TPAD BIN Status 00840064 DS CL3 FILLER 00850064 * STORAGE IS RESERVED FOR THE REMAINING 20 ADDRESS STRUCTURES. 00860064 * EACH STRUCTURE IS IDENTICAL TO THE ONE DEFINED ABOVE. 00870064 DS CL1060 REMAINING ADDRESSES 00880064 P21ASEND EQU * 00890064 P21ASLEN EQU P21ASEND-P2BAL1A LENGTH OF Short P2BAL1A 00900064 * 00910064 * Long Work Area Overlay 00920064 * 00930064 ORG P21A#ADR 00940064 P21A#BIN DS CL4 Total Nbr of BINs for Lot 00950064 P21ABINS DS 2500CL7 00960064 P21ALEND EQU * 00970064 ORG P21ABINS Redefine the list for TPAD 00980064 P21ATPL@ EQU * Start of TPAD List for Longwa2 00990064 P21ATPB DS (2187)CL8 2187 8-Byte Elements 01000064 DS CL4 Filler 01010064 P21ATPL EQU P21ATPL@,*-P21ATPL@ Define Start and Length 01020064 ORG P21ATPB Element Breakdown 01030064 P21ATPBN DS CL7 BIN 01040064 P21ATPST DS CL1 BIN STATUS 01050064 ORG P21ATPL+L'P21ATPL Point To End of List 01060064 P21ALLEN EQU P21ALEND-P2BAL1A Length of Long P2BAL1A 01070064 P21ATPLN EQU P21ALEND-P2BAL1A Length of TPAD Long P2BAL1A 01080064 01090064 ********************************************************************** 01100064 ****** 01110064 ORG P2BAL1A RESET LOCATION FOR FN 1/1E EXTENDED 01120064 ****** 01130064 ********************************************************************** 01140064 01150064 P2EXKEY DS CL21 ACCESS KEY 01160064 P2EXCPAR DS CL1 CONTINUOUS PARITY INDICATOR 01170064 P2EXLHNS DS CL11 LOW HOUSE NUMBER 01180064 P2EXHHNS DS CL11 HIGH HOUSE NUMBER 01190064 P2EXLGC DS CL2 DCP Prefered LGC 01200064 P2EX#STL DS CL1 NUMBER OF CROSS STREETS AT LOW END 01210064 P2EXCDEL DS CL30 UP TO FIVEPB5SC'S FOR LOW END 01220064 P2EX#STH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 01230064 P2EXCDEH DS CL30 UP TO FIVE B5SC'S FOR HIGH END 01240064 P2EXLBOR DS CL1 LION BOROUGH CODE 01250064 P2EXFACE DS CL4 LION FACE CODE 01260064 P2EXSEQ DS CL5 LION SEQUENCE NUMBER 01270064 P2EXSPAD DS CL1 SPECIAL ADDRESS FLAG 01280064 P2EXSOS DS CL1 SIDE OF STREET INDICATOR 01290064 P2EXSEGL DS CL5 SEGMENT LEGNTH 01300064 P2EXXCOR DS CL7 X COORDINATE 01310064 P2EXYCOR DS CL7 Y COORDINATE 01320064 P2EXZCOR DS CL7 Z Coordinate - Not Impl. 01330064 P2EXRES1 DS CL1 RESERVED FOR DCP/GSS USE 01340064 P2EXMHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 01350064 P2EXSLA DS CL1 STREET LIGHT AREA 01360064 P2EXCD DS 0CL3 COMMUNITY DISTRICT 01370064 P2EXCDB DS CL1 COMMUNITY DISTRICT BORO 01380064 P2EXCDN DS CL2 COMMUNITY DISTRICT NUMBER 01390064 P2EXZIP DS CL5 ZIP CODE 01400064 P2EXEED DS CL3 ELECTION DISTRICT 01410064 P2EXEAD DS CL2 ASSEMBLY DISTRICT 01420064 P2EXESED DS CL1 SPLIT E.D. FLAG 01430064 P2EXECON DS CL2 CONGRESSIONAL DISTRICT 01440064 P2EXESEN DS CL2 SENATORIAL DISTRICT 01450064 P2EXECIV DS CL2 CIVIL COURT DISTRICT 01460064 P2EXECOU DS CL2 CITY COUNCIL DISTRICT 01470064 * 01480064 P2EXHCD DS CL2 HEALTH CODE DISTRICT 01490064 P2EXHA DS CL4 HEALTH AREA 01500064 P2EXSAND DS CL3 SANITATION DISTRICT 01510064 P2EXSANT DS CL2 SANITATION DEPT SUBSECTION 01520064 P2EXSREG DS CL5 SANITATION REGULAR PICK-UP 01530064 P2EXSREC DS CL3 SANITATION RECYCLE PICK-UP 01540064 P2EXPOL DS 0CL4 POLICE DISTRICT 01550064 P2EXPBC DS CL1 POLICE PATROL BORO COMMAND 01560064 P2EXPOP DS CL3 POLICE PRECINCT 01570064 P2EXFS DS CL2 FIRE DIVISION 01580064 P2EXFB DS CL2 FIRE BATTALION 01590064 P2EXFC DS 0CL4 FIRE COMPANY 01600064 P2EXFCT DS CL1 FIRE COMPANY TYPE 01610064 P2EXFCN DS CL3 FIRE COMPANY NUMBER 01620064 DS CL1 FILLER-WAS SPLIT SCHOOL DIST 01630064 P2EXSCH DS CL2 SCHOOL DISTRICT 01640064 P2EXCPB DS CL3 DYNAMIC BLOCK/ATOMIC POLYGON 01650064 P2EXPPB DS CL2 Police Patrol Borough 01660064 P2EXFEAT DS CL1 Feature Type Code 01670064 P2EXSTC DS CL1 SEGMENT TYPE CODE 01680064 P2EXALX DS CL1 A=Segment split by Alley 01690064 * X=Cross Streets modified 01700064 P2EXCSC DS CL1 Coincident Segment Count 01710064 DS CL2 Filler 01720064 P2EXCTB DS CL1 CENSUS TRACT BORO USED FOR GRIDGEN 01730064 P2EXCT90 DS CL6 1990 CENSUS TRACT 01740064 P2EXCT10 DS CL6 2010 CENSUS TRACT 01750064 P2EXBL10 DS CL4 2010 CENSUS BLOCK 01760064 P2EXBLS1 DS CL1 2010 CENSUS BLOCK SUFFIX NOT IMPLEMENTED 01770064 P2EXT00 DS CL6 2000 CENSUS TRACT 01780064 P2EXB00 DS CL4 2000 CENSUS BLOCK 01790064 P2EXS00 DS CL1 2000 CENSUS BLOCK SUFFIX 01800064 P2EXNTA DS CL4 NEIGHBORHOOD TABULATION AREA 01810064 P2EXSP DS CL1 SANITATION STREET SNOW PRIORITY 01820064 P2EXSORG DS CL5 SANITATION ORGANIC PICK UP 01830064 P2EXSBLK DS CL5 SANITATION BULK PICK UP 01831069 * DS CL5 SANITATION RESERVED 01840070 P2EXHZ DS CL2 HURRICANE EVACUATION ZONE-OEM 01850064 DS CL11 FILLER 01860064 P2EXUHNS DS CL11 Underlying HNS 01870064 P2EXB7SC DS CL8 \"True\" Borough 7 Digit Street Code 01880064 P2EXSEGT DS CL7 Segment Identifier 01890064 P2EXCURV DS CL1 Curve Flag 01900064 P2EXLGCS DS CL8 List of 4 LGCs 01910064 P2EXBOEP DS CL1 BOE LGC Pointer 01920064 P2EXAZM DS CL3 Segment Azimuth 01930064 P2EXORN DS CL1 Segment Orientation 01940064 P2EXXCL DS CL7 X Coordinate, Low Address end 01950064 P2EXYCL DS CL7 Y Coordinate, Low Address end 01960064 P2EXZCL DS CL7 Z Coordinate, Low Address Not Impl 01970064 P2EXXCH DS CL7 X Coordinate, Hi Address end 01980064 P2EXYCH DS CL7 Y Coordinate, Hi Address end 01990064 P2EXZCH DS CL7 Z Coordinate, Hi Address Not Impl 02000064 P2EXXCC DS CL7 X Coordinate, Center Curve 02010064 P2EXYCC DS CL7 Y Coordinate, Center Curve 02020064 P2EXZCC DS CL7 Z Coordinate, Center Curve Not Impl 02030064 P2EXRAD DS CL7 Radius of Circle 02040064 P2EXSEC DS CL1 Secant Location Related to Curve 02050064 P2EXBETA DS CL5 Angle to From Node 02060064 P2EXALFA DS CL5 Angle to To Node 02070064 P2EXFNOD DS CL7 From LION Node Id 02080064 P2EXTNOD DS CL7 To LION Node Id 02090064 P2EXLVA DS CL10 LION Key for Vanity Address 02100064 P2EXSVA DS CL1 Side of Street for Vanity Address 02110064 P2EXSLH DS CL11 Split Low House Number 02120064 P2EXTD DS CL1 Traffic Direction 02130064 P2EXTR DS CL10 Turn Restrictions 02140064 P2EXFRC DS CL3 Fraction for Curve Calculation 02150064 P2EXRT DS CL2 Roadway Type 02160064 P2EXPID DS CL7 Physical Id 02170064 P2EXGID DS CL7 Generic Id 02180064 P2EXPDID DS CL7 For DCP Use Only 02190064 P2EXFDID DS CL7 For DCP Use Only 02200064 P2EXBLN2 DS CL2 Bike Lane 2 (has 2 byte numeric value) 02201068 P2EXBTD DS CL2 Bike Traffic Direction 02202072 DS CL3 filler 02210071 P2EXSTS DS CL1 Street Status 02220064 P2EXSTW DS CL3 Street Width 02230064 P2EXSTWI DS CL1 Street Width Irregular (Y/N) 02240064 P2EXBLN DS CL1 Bike Lane 02250064 P2EXFCC DS CL2 Federal Classification Code 02260064 P2EXROW DS CL1 Right of Way Type 02270064 P2EXSLGC DS CL10 Set of Second LGCs 02280064 P2EXLSID DS CL7 Legacy Segment ID 02290064 P2EXFPL1 DS CL10 From Preferred LGCs First Set of 5 02300064 P2EXTPL1 DS CL10 To Preferred LGCs First Set of 5 02310064 P2EXFPL2 DS CL10 From Preferred LGCs Second Set of 5 02320064 P2EXTPL2 DS CL10 To Preferred LGCs Second Set of 5 02330064 P2EXNCR DS CL1 No Cross Street Calc Flag 02340064 P2EXISL DS CL5 Individual Segment Length 02350064 P2EXNTAN DS CL75 NTA Name 02360064 P2EXUSPS DS CL25 USPS PREFERRED CITY NAME 02370064 P2EXLAT DS CL9 LATITUDE 02380064 P2EXLONG DS CL11 LONGITUDE 02390064 P2EXSFRN DS CL7 SEGMENT FROM NODE 02400064 P2EXSTON DS CL7 SEGMENT TO NODE 02410064 P2EXFXYZ DS CL21 XYZ COORD (SEGMENT FROM XYZ) 02420064 P2EXTXYZ DS CL21 XYZ COORD (SEGMENT TO XYZ) 02430064 P2EXBFID DS CL10 NEW location blockface_id because of 02460064 * length changed V16.1 02470064 P2EX#TRL DS CL2 nbr of traveling lanes 02480064 P2EX#PKL DS CL2 nbr of parking lanes 02490064 P2EX#TLL DS CL2 nbr of total lanes on street 02500067 P2EXSTWX DS CL3 Street Width-Maximum 02501068 P2EXSPDL DS CL2 Speed Limit 02502073 P2EXPUMA DS CL5 PUMA Code V18.1 02503076 P2EXPSCR DS CL4 Police Sector V19.2 02504080 P2EXPSAR DS CL1 Police Service Area V19.2 02505080 DS CL240 Filler V18.3 02510078 * DS CL245 Filler 02511078 P2EXRC DS CL1 REASON CODE 02520064 P2EXRCQ DS CL1 REASON CODE QUALIFIER 02530064 P2EXWC DS CL2 WARNING CODE FILLER 02540064 P2EXGRC DS CL2 GEOSUPPORT RETURN CODE 02550064 P2EX#SL DS CL1 NUMBER OF CROSS STREETS AT LOW END 02560064 P2EX7SL DS CL40 UP TO 5 B7SC'S FOR LOW END 02570064 P2EX#SH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 02580064 P2EX7SH DS CL40 UP TO 5 B7SC'S FOR HIGH END 02590064 P2EXSNL DS CL160 UP TO 5 STREET NAMES FOR LOW END 02600064 P2EXSNH DS CL160 UP TO 5 STREET NAMES FOR HIGH END 02610064 P2EXBPC DS CL8 BOE PREFERRED B7SC STREET CODE 02620064 P2EXBPN DS CL32 BOE PREFERRED STREET NAME 02630064 P2EXFIL DS CL52 Filler 02640064 * 02650064 P2EXEND EQU * 02660064 P2EXLEN EQU P2EXEND-P2BAL1A LENGTH OF P21EX WORKAREA 2 02670064 * 02680064 02690064 ********************************************************************** 02700064 ****** 02710064 ORG P2BAL1A RESET LOCATION FOR FN 1A EXTENDED 02720064 ****** 02730064 ********************************************************************** 02740064 02750064 P2AXKEY DS CL21 Internal Use Only 02760064 P2AXCPIN DS CL1 CONTINUOUS PARITY INDICATOR 02770064 P2AXHSEL DS CL11 LOW HOUSE NUMBER ON BLOCK - HNS Form 02780064 P2AXALT1 DS 0CL11 Alternate Key 02790064 P2AXBOR1 DS CL1 ALTERNATE KEY - BORO 02800064 P2AXTXB1 DS CL5 ALTERNATE KEY - TAX BLOCK 02810064 P2AXTXL1 DS CL4 ALTERNATE KEY - TAX LOT 02820064 DS CL1 Future Use 02830064 P2AXRSCC DS CL1 RPAD SCC 02840064 DS CL1 FILLER 02850064 P2AXGLI DS 0CL13 GENERAL LOT INFO 02860064 P2AXRBLC DS CL2 RPAD BUILDING CLASSIFICATION 02870064 P2AXCORC DS CL2 CORNER CODE 02880064 P2AX#STC DS CL4 TOTAL NUMBER STRUCTURES 02890064 P2AX#BFA DS CL2 TOTAL NUMBER BLOCKFACES 02900064 P2AXINTF DS CL1 INTERIOR LOT FLAG 02910064 P2AXVACF DS CL1 VACANT LOT FLAG 02920064 P2AXIRLF DS CL1 IRREGULARLY-SHAPED LOT FLAG 02930064 * 02940064 P2AXABFL DS CL1 Marble Hill/ Rikers ALTERNATE BORO FLAG 02950064 P2AXOVFL DS CL1 Address Overflow Flag 02960064 * 02970064 P2AXSTRK DS CL19 STROLLING KEY - FILLER 02980064 * 02990064 P2AXRFIU DS CL1 RESERVED FOR INTERNAL USE 03000064 P2AXBIN DS CL7 BUILDING IDENTIFICATION NUMBER (BIN) 03010064 * Condo Information 03020064 P2AXCONF DS CL1 CONDO LOT FLAG 03030064 DS CL1 Filler for Future Use 03040064 P2AXRCO# DS CL4 RPAD CONDO NUMBER 03050064 DS CL7 Future Use - Condo Unit Number 03060064 P2AXCBBL DS CL11 CONDO BILLING BBL 03070064 P2AXCBBS DS CL1 CONDO BILLING BBL SCC 03080064 P2AXCLBL DS CL11 CONDO LOW BBL 03090064 P2AXCHBL DS CL11 CONDO HIGH BBL 03100064 DS CL15 Filler 03110064 P2AXCOOP DS CL4 Co-op Number 03120064 * 03130064 P2AXSBVP DS CL8 SANDBORN BOROUGH/VOLUME/PAGE 03140064 * 03150064 P2AXBUSA DS CL5 BUSINESS AREA 03160064 P2AXTAXM DS CL5 Tax Map Number - Section and Volume 03170064 DS CL4 Reserved for Tax Map Page 03180064 DS CL3 FILLER 03190064 P2AXLAT DS CL9 LATITUDE 03200064 P2AXLONG DS CL11 LONGITUDE 03210064 P2AXXCO DS CL7 X Coordinate of Annotation Point 03220064 P2AXYCO DS CL7 Y Coordinate of Annotation Point 03230064 P2AXBID DS CL6 Business Improvement District 03240064 P2AXTPBS DS CL1 TPAD BIN Status 03250064 P2AXTPNB DS CL7 TPAD New BIN 03260064 P2AXTPNS DS CL1 TPAD New BIN Status 03270064 P2AXTPCF DS CL1 TPAD Conflict Flag 03280064 P2AXZMAP DS CL3 DCP Zoning Map 03281075 DS CL6 FILLER 03290075 DS CL8 Internal Use - LGCS 03300064 P2AXRC DS CL1 REASON CODE 03310064 P2AXRCQ DS CL1 REASON CODE QUALIFIER 03320064 P2AXWC DS CL2 WARNING CODE FILLER 03330064 P2AXGRC DS CL2 GEOSUPPORT RETURN CODE 03340064 DS CL108 FILLER 03350064 P2AX#ADR DS CL4 TOTAL ADDRESSES FOR LOT 03360064 P2AXLIST DS 0CL116 LIST OF ADDRESSES, MAXIMUM OF 21 03370064 P2AXLOW# DS CL16 LOW HOUSE NUMBER-Display Form 03380064 P2AXHI# DS CL16 HIGH HOUSE NUMBER-Display Form 03390064 P2AXBCDE DS CL1 Borough Code 03400064 P2AXCODE DS CL5 STREET CODE 03410064 P2AXPLGC DS CL2 Preferred LGC 03420064 P2AXLBIN DS CL7 BIN 03430064 P2AXLSOS DS CL1 Side of Street Indicator 03440064 P2AXATP DS CL1 Address Type Flag 03450064 P2AXATPS DS CL1 TPAD BIN Status 03460064 P2AXSTN DS CL32 STREET NAME 03470064 DS CL34 FILLER 03480064 * STORAGE IS RESERVED FOR THE REMAINING 20 ADDRESS STRUCTURES. 03490064 * EACH STRUCTURE IS IDENTICAL TO THE ONE DEFINED ABOVE. 03500064 DS CL2320 REMAINING ADDRESSES 03510064 P2AXEND EQU * 03520064 P2AXLEN EQU P2AXEND-P2BAL1A LENGTH OF P21A EXTEND WORKAREA 2 03530064 * 03540064 03550064 ********************************************************************** 03560064 ****** 03570064 ORG P2BAL1A RESET LOCATION FOR FN 1B 03580064 ****** 03590064 ********************************************************************** 03600064 P21BKEY DS CL21 ACCESS KEY 03610064 P21BCPAR DS CL1 CONTINUOUS PARITY INDICATOR 03620064 P21BLHNS DS CL11 LOW HOUSE NUMBER 03630064 P21BHHNS DS CL11 HIGH HOUSE NUMBER 03640064 P21BLGC DS CL2 DCP PREFERRED LGC(FN 1) - BOE (FN 1E) 03650076 P21B#STL DS CL1 NUMBER OF CROSS STREETS AT LOW END 03660064 P21BCDEL DS CL30 UP TO FIVEPB5SC'S FOR LOW END 03670064 P21B#STH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 03680064 P21BCDEH DS CL30 UP TO FIVE B5SC'S FOR HIGH END 03690064 P21BLBOR DS CL1 LION BOROUGH CODE 03700064 P21BFACE DS CL4 LION FACE CODE 03710064 P21BSEQ DS CL5 LION SEQUENCE NUMBER 03720064 P21BSPAD DS CL1 SPECIAL ADDRESS FLAG 03730064 P21BSOS DS CL1 SIDE OF STREET INDICATOR 03740064 P21BSEGL DS CL5 SEGMENT LEGNTH 03750064 P21BXCOR DS CL7 X COORDINATE 03760064 P21BYCOR DS CL7 Y COORDINATE 03770064 P21BZCOR DS CL7 Z Coordinate - Not Impl. 03780064 P21BRES1 DS CL1 RESERVED FOR DCP/GSS USE 03790064 P21BMHRI DS CL1 MARBLE HILL/RIKERS ISLAND FLAG 03800064 P21BSLA DS CL1 STREET LIGHT AREA 03810064 P21BCD DS 0CL3 COMMUNITY DISTRICT 03820064 P21BCDB DS CL1 COMMUNITY DISTRICT BORO 03830064 P21BCDN DS CL2 COMMUNITY DISTRICT NUMBER 03840064 P21BZIP DS CL5 ZIP CODE 03850064 P21BEED DS CL3 ELECTION DISTRICT 03860064 P21BEAD DS CL2 ASSEMBLY DISTRICT 03870064 P21BESED DS CL1 SPLIT E.D. FLAG 03880064 * Next four fields are valid only for Fn 1E 03890064 P21BECON DS CL2 CONGRESSIONAL DISTRICT 03900064 P21BESEN DS CL2 SENATORIAL DISTRICT 03910064 P21BECIV DS CL2 CIVIL COURT DISTRICT 03920064 P21BECOU DS CL2 CITY COUNCIL DISTRICT 03930064 * 03940064 P21BHCD DS CL2 HEALTH CODE DISTRICT 03950064 P21BHA DS CL4 HEALTH AREA 03960064 P21BSAND DS CL3 SANITATION DISTRICT 03970064 P21BSANT DS CL2 SANITATION DEPT SUBSECTION 03980064 P21BSREG DS CL5 SANITATION REGULAR PICK-UP 03990064 P21BSREC DS CL3 SANITATION RECYCLE PICK-UP 04000064 P21BPOL DS 0CL4 POLICE DISTRICT 04010064 P21BPBC DS CL1 POLICE PATROL BORO COMMAND 04020064 P21BPOP DS CL3 POLICE PRECINCT 04030064 P21BFS DS CL2 FIRE DIVISION 04040064 P21BFB DS CL2 FIRE BATTALION 04050064 P21BFC DS 0CL4 FIRE COMPANY 04060064 P21BFCT DS CL1 FIRE COMPANY TYPE 04070064 P21BFCN DS CL3 FIRE COMPANY NUMBER 04080064 P21BFILS DS CL1 FILLER_WAS SPLIT SCHOOL DISTRICT FLAG 04090064 P21BSCH DS CL2 SCHOOL DISTRICT 04100064 P21BCPB DS CL3 DYNAMIC BLOCK/ATOMIC POLYGON 04110064 P21BPPB DS CL2 Police Patrol Borough 04120064 P21BFEAT DS CL1 FEATURE TYPE CODE 04130064 P21BSTC DS CL1 SEGMENT TYPE CODE 04140064 P21BALX DS CL1 A=Segment split by Alley 04150064 * X=Cross Streets modified 04160064 P21BCSC DS CL1 COINCIDENT SEGMENT COUNT 04170064 DS CL2 Filler 04180064 P21BCTB DS CL1 CENSUS TRACT BORO USED FOR GRIDGEN 04190064 P21BCT90 DS CL6 1990 CENSUS TRACT 04200064 P21BCT10 DS CL6 2010 CENSUS TRACT 04210064 P21BBL10 DS CL4 2010 CENSUS BLOCK 04220064 P21BBLS1 DS CL1 2010 CENSUS BLOCK SUFFIX NOT IMPLEMENTED 04230064 P21BT00 DS CL6 2000 CENSUS TRACT 04240064 P21BB00 DS CL4 2000 CENSUS BLOCK 04250064 P21BS00 DS CL1 2000 CENSUS BLOCK SUFFIX 04260064 P21BNTA DS CL4 NEIGHBORHOOD TABULATION AREA 04270064 P21BSP DS CL1 SANITATION STREET SNOW PRIORITY 04280064 P21BSORG DS CL5 SANITATION ORGANIC PICK UP 04290064 P21BSBLK DS CL5 SANITATION BULK PICK UP 04291069 * DS CL5 SANITATION RESERVED 04300070 P21BHZ DS CL2 HURRICANE EVACUATION ZONE-OEM 04310064 DS CL11 FILLER 04320064 P21BUHNS DS CL11 Underlying HNS 04330064 P21BB7SC DS CL8 \"True\" Borough 7 Digit Street Code 04340064 P21BSEGT DS CL7 Segment Identifier 04350064 P21BCURV DS CL1 Curve Flag 04360064 P21BLGCS DS CL8 List of 4 LGCs 04370064 P21BBOEP DS CL1 BOE LGC Pointer 04380064 P21BAZM DS CL3 Segment Azimuth 04390064 P21BORN DS CL1 Segment Orientation 04400064 P21BXCL DS CL7 X Coordinate, Low Address end 04410064 P21BYCL DS CL7 Y Coordinate, Low Address end 04420064 P21BZCL DS CL7 Z Coordinate, Low Address Not Impl 04430064 P21BXCH DS CL7 X Coordinate, Hi Address end 04440064 P21BYCH DS CL7 Y Coordinate, Hi Address end 04450064 P21BZCH DS CL7 Z Coordinate, Hi Address Not Impl 04460064 P21BXCC DS CL7 X Coordinate, Center Curve 04470064 P21BYCC DS CL7 Y Coordinate, Center Curve 04480064 P21BZCC DS CL7 Z Coordinate, Center Curve Not Impl 04490064 P21BRAD DS CL7 Radius of Circle 04500064 P21BSEC DS CL1 Secant Location Related to Curve 04510064 P21BBETA DS CL5 Angle to From Node 04520064 P21BALFA DS CL5 Angle to To Node 04530064 P21BFNOD DS CL7 From LION Node Id 04540064 P21BTNOD DS CL7 To LION Node Id 04550064 P21BLVA DS CL10 LION Key for Vanity Address 04560064 P21BSVA DS CL1 Side of Street for Vanity Address 04570064 P21BSLH DS CL11 Split Low House Number 04580064 P21BTD DS CL1 Traffic Direction 04590064 P21BTR DS CL10 Turn Restrictions 04600064 P21BFRC DS CL3 Fraction for Curve Calculation 04610064 P21BRT DS CL2 Roadway Type 04620064 P21BPID DS CL7 Physical Id 04630064 P21BGID DS CL7 Generic Id 04640064 P21BPDID DS CL7 For DCP Use Only 04650064 P21BFDID DS CL7 For DCP Use Only 04660064 P21BBLN2 DS CL2 Bike Lane 2 (has 2 bytes numeric value) 04661068 P21BBTD DS CL2 Bike Traffic Direction 04662072 DS CL3 Filler 04670071 P21BSTS DS CL1 Street Status 04680064 P21BSTW DS CL3 Street Width 04690064 P21BSTWI DS CL1 Street Width Irregular (Y/N) 04700064 P21BBLN DS CL1 Bike Lane 04710064 P21BFCC DS CL2 Federal Classification Code 04720064 P21BRTP DS CL1 Row Type 04730064 P21BSLGC DS CL10 Set of Second LGCs 04740064 P21BLSID DS CL7 Legacy Segment ID 04750064 P21BFPL1 DS CL10 From Preferred LGCs First Set of 5 04760064 P21BTPL1 DS CL10 To Preferred LGCs First Set of 5 04770064 P21BFPL2 DS CL10 From Preferred LGCs Second Set of 5 04780064 P21BTPL2 DS CL10 To Preferred LGCs Second Set of 5 04790064 P21BNCR DS CL1 No Cross Street Calc Flag 04800064 P21BISL DS CL5 Individual Segment Length 04810064 P21BNTAN DS CL75 NTA Name 04820064 P21BUSPS DS CL25 USPS PREFERRED CITY NAME 04830064 P21B1LAT DS CL9 LATITUDE 04840064 P21B1LON DS CL11 LONGITUDE 04850064 P21BSFRN DS CL7 SEGMENT FROM NODE 04860064 P21BSTON DS CL7 SEGMENT TO NODE 04870064 P21BFXYZ DS CL21 XYZ COORD (SEGMENT FROM XYZ) 04880064 P21BTXYZ DS CL21 XYZ COORD (SEGMENT TO XYZ) 04890064 P21BBFID DS CL10 NEW location blockface_id because of 04891065 * length changed V16.1 04892065 P21B#TRL DS CL2 nbr of traveling lanes 04893065 P21B#PKL DS CL2 nbr of parking lanes 04894065 P21B#TLL DS CL2 nbr of total lanes 04895065 P21BSTWX DS CL3 Street Width Maximum 04895168 P21BSPDL DS CL2 Speed Limit 04895274 P21BPUMA DS CL5 PUMA Code V18.1 04895376 P21BPSCR DS CL4 Police Sector V19.2 04895480 P21BPSAR DS CL1 Police Service Area V19.2 04895580 DS CL240 Filler V18.3 04895678 * DS CL245 Filler 04895778 P21BRC DS CL1 REASON CODE 04910064 P21BRC1 DS CL1 REASON CODE QUALIFIER 04920064 P21BWC DS CL2 WARNING CODE FILLER 04930064 P21BGRC DS CL2 GEOSUPPORT RETURN CODE 04940064 P21B#SL DS CL1 NUMBER OF CROSS STREETS AT LOW END 04950064 P21B7SL DS CL40 UP TO 5 B7SC'S FOR LOW END 04960064 P21B#SH DS CL1 NUMBER OF CROSS STREETS AT HIGH END 04970064 P21B7SH DS CL40 UP TO 5 B7SC'S FOR HIGH END 04980064 P21BSNL DS CL160 UP TO 5 STREET NAMES FOR LOW END 04990064 P21BSNH DS CL160 UP TO 5 STREET NAMES FOR HIGH END 05000064 P21BBP7 DS CL8 BOE PREFERRED B7SC 05010064 P21BBSN DS CL32 BOE PREFERRED STREET NAME 05020064 DS CL52 Filler 05030064 * 05040064 DS CL21 Internal Use Only 05050064 P21BCPIN DS CL1 CONTINUOUS PARITY INDICATOR 05060064 P21BHSEL DS CL11 LOW HOUSE NUMBER ON BLOCK - HNS Form 05070064 P21BALT1 DS 0CL11 Alternate Key Y 05080064 P21BBOR1 DS CL1 ALTERNATE KEY - BORO 05090064 P21BTXB1 DS CL5 ALTERNATE KEY - TAX BLOCK 05100064 P21BTXL1 DS CL4 ALTERNATE KEY - TAX LOT 05110064 DS CL1 Future Use 05120064 P21BRSCC DS CL1 RPAD SCC 05130064 DS CL1 FILLER 05140064 P21BGLI DS 0CL13 GENERAL LOT INFO 05150064 P21BRBLC DS CL2 RPAD BUILDING CLASSIFICATION 05160064 P21BCORC DS CL2 CORNER CODE 05170064 P21B#STC DS CL4 TOTAL NUMBER STRUCTURES 05180064 P21B#BFA DS CL2 TOTAL NUMBER BLOCKFACES 05190064 P21BINTF DS CL1 INTERIOR LOT FLAG 05200064 P21BVACF DS CL1 VACANT LOT FLAG 05210064 P21BIRLF DS CL1 IRREGULARLY-SHAPED LOT FLAG 05220064 * 05230064 P21BABFL DS CL1 Marble Hill/ Rikers ALTERNATE BORO FLAG 05240064 P21BOVFL DS CL1 Address Overflow Flag 05250064 * 05260064 P21BSTRK DS CL19 STROLLING KEY - FILLER 05270064 * 05280064 P21BRFIU DS CL1 RESERVED FOR INTERNAL USE 05290064 P21BBIN DS CL7 BUILDING IDENTIFICATION NUMBER (BIN) 05300064 * Condo Information 05310064 P21BCONF DS CL1 CONDO LOT FLAG 05320064 DS CL1 Filler for Future Use 05330064 P21BRCO# DS CL4 RPAD CONDO NUMBER 05340064 DS CL7 Future Use - Condo Unit Number 05350064 P21BCBBL DS CL11 CONDO BILLING BBL 05360064 P21BCBBS DS CL1 CONDO BILLING BBL SCC 05370064 P21BCLBL DS CL11 CONDO LOW BBL 05380064 P21BCHBL DS CL11 CONDO HIGH BBL 05390064 DS CL15 Filler 05400064 P21BCOOP DS CL4 Co-op Number 05410064 * 05420064 P21BSBVP DS CL8 SANDBORN BOROUGH/VOLUME/PAGE 05430064 * 05440064 P21BBUSA DS CL5 BUSINESS AREA 05450064 P21BTAXM DS CL5 Tax Map Number - Section and Volume 05460064 DS CL4 Reserved for Tax Map Page 05470064 DS CL3 FILLER 05480064 P21BALAT DS CL9 LATITUDE 05490064 P21BALON DS CL11 LONGITUDE 05500064 P21BXCO DS CL7 X Coordinate of Annotation Point 05510064 P21BYCO DS CL7 Y Coordinate of Annotation Point 05520064 P21BBID DS CL6 Business Improvement District 05530064 P21BTPBS DS CL1 TPAD BIN Status 05540064 P21BTPNB DS CL7 TPAD New BIN 05550064 P21BTPNS DS CL1 TPAD New BIN Status 05560064 P21BTPCF DS CL1 TPAD Conflict Flag 05570064 P21BZMAP DS CL3 DCP Zoning Map 05571075 DS CL6 FILLER 05580075 DS CL8 Internal Use - LGCS 05590064 P21BRCS2 DS CL1 REASON CODE 05600064 P21BRCQ2 DS CL1 REASON CODE QUALIFIER 05610064 P21BWC2 DS CL2 WARNING CODE FILLER 05620064 P21BGRC2 DS CL2 GEOSUPPORT RETURN CODE 05630064 DS CL108 FILLER 05640064 P21B#ADR DS CL4 TOTAL ADDRESSES FOR LOT 05650064 P21BLIST DS 0CL116 LIST OF ADDRESSES, MAXIMUM OF 21 05660064 P21BLOW# DS CL16 LOW HOUSE NUMBER-Display Form 05670064 P21BHI# DS CL16 HIGH HOUSE NUMBER-Display Form 05680064 P21BBCDE DS CL1 Borough Code 05690064 P21BCODE DS CL5 STREET CODE 05700064 P21BPLGC DS CL2 Preferred LGC 05710064 P21BLBIN DS CL7 BIN 05720064 P21BLSOS DS CL1 Side of Street Indicator 05730064 P21BATP DS CL1 Address Type Flag 05740064 P21BATPS DS CL1 TPAD BIN Status 05750064 P21BSTN DS CL32 STREET NAME 05760064 DS CL34 FILLER 05770064 * STORAGE IS RESERVED FOR THE REMAINING 20 ADDRESS STRUCTURES. 05780064 * EACH STRUCTURE IS IDENTICAL TO THE ONE DEFINED ABOVE. 05790064 DS CL2320 REMAINING ADDRESSES 05800064 P21BEND EQU * 05810064 P21BLEN EQU P21BEND-P2BAL1A LENGTH OF P21B WORKAREA 2 05820064 * 05830064 ORG , 05840064 ********************************************************************** 05850064","title":"P2BAL1A COPY File"},{"location":"appendices/appendix14/#p2bal3s-copy-file","text":"*/********************************************************************/ 00000100 */***** THIS IS GEOSUPPORT INFORMATION SYSTEM COPY FILE P2BAL3S, ***/ 00000200 */***** CONTAINING THE LAYOUT OF WORK AREA 2 FOR FUNCTION 3S. ***/ 00000300 */********************************************************************/ 00000400 */****** Last Modified - 3 April 2002 ***/ 00000502 */********************************************************************/ 00000602 P2BAL3S DS 0H 00000700 P23SAKEY DS 0CL21 ACCESS KEY 00000800 DS CL2 Internal Use Only 00000900 P23SPORS DS CL1 P=Primary, S=Secondary 00001000 P23SBORO DS CL1 Borough Code 00001100 P23S5SC DS CL5 Street Code 00001200 P23SLGC DS CL2 Blank if P in P23SPORS 00001300 DS CL10 Internal use Only 00001400 P23S#INT DS CL3 NUMBER OF INTERSECTIONS ON STRETCH 00001500 * Up to 350 Intersections 00001600 *P23SINT DS 0CL87 INTERSECTION LAYOUT 00001700 P23SINT DS 0CL55 INTERSECTION LAYOUT 00001800 P23SMHRI DS CL1 Marble Hill / Rikers Island Flag 00001900 P23SDIST DS CL5 DISTANCE IN FEET FROM PREVIOUS INTERSECT. 00002000 P23SGAPF DS CL1 GAP FLAG (\"G\" IF NO SEGMENT CONNECTS THIS 00002100 * INTERSECTION TO THE PREVIOUS ONE) 00002200 P23SNODE DS CL7 Node Number 00002301 P23S#ST DS CL1 Number of Streets intersecting (max 5) 00002400 P23SCDE1 DS CL8 NUMERICALLY SMALLEST B7SC 00002503 P23SCDE2 DS CL8 NUMERICALLY 2ND SMALLEST B7SC 00002603 P23SCDE3 DS CL8 Remaining Street Codes in any order 00002700 P23SCDE4 DS CL8 00002800 P23SCDE5 DS CL8 00002900 P23SREST DS CL19195 REMAINING INTERSECTIONS Assuming Max size 00003402 P23SEND EQU * 00003500 P23SLEN EQU P23SEND-P2BAL3S LENGTH OF P2BAL3S 00003600","title":"P2BAL3S COPY File"},{"location":"appendices/appendix14/#p2balap-copy-file","text":"*/********************************************************************/ 00000100 */***** THIS IS GEOSUPPORT INFORMATION SYSTEM COPY FILE P2BALAP, ***/ 00000260 */***** CONTAINING THE LAYOUT OF WORK AREA 2 FOR FUNCTION AP AND ***/ 00000360 */***** APX (ADDRESS POINT AND AP EXTENDED). TLV 3/2015 V15.2 ***/ 00001260 */********************************************************************/ 00001315 P2BALAP DS 0H 00001760 DS CL21 00001815 P2APCPAR DS CL1 CONTINUOUS PARITY INDICATOR 00001960 P2APHSEL DS CL11 LOW HOUSE NUMBER ON BLOCK - HNS FORM 00002060 P2APALT1 DS 0CL11 ALTERNATE KEY 00002160 P2APBOR1 DS CL1 ALTERNATE KEY - BORO 00002260 P2APTXB1 DS CL5 ALTERNATE KEY - TAX BLOCK 00002360 P2APTXL1 DS CL4 ALTERNATE KEY - TAX LOT 00002460 DS CL1 Future Use 00002515 DS CL1 FILLER FOR FUNC AP 00002661 DS CL1 FILLER 00002715 P2APGLI DS 0CL13 GENERAL LOT INFO 00002860 P2APFL01 DS CL2 FILLER FOR AP ?fields name for fillers ?? 00002961 P2APFL02 DS CL2 FILLER FOR FUNC AP 00003061 P2AP#STC DS CL4 TOTAL NUMBER STRUCTURES 00003160 P2APFL03 DS CL2 FILLER FOR FUNC AP ? 00003261 P2APFL04 DS CL1 FILLER FOR FUNC AP ? 00003361 P2APFL05 DS CL1 FILLER FOR FUNC AP ? 00003461 P2APFL06 DS CL1 FILLER FOR FUNC AP 00003561 * 00003615 DS CL1 FILLER FOR FUNC AP 00003761 DS CL1 FILLER FOR FUNC AP 00003861 * 00003915 DS CL19 FILLER FOR FUNC AP 00004061 * 00004115 P2APRFIU DS CL1 RESERVED FOR INTERNAL USE 00004260 P2APBIN DS CL7 BUILDING IDENTIFICATION NUMBER (BIN) 00004360 * Condo Information 00004463 P2APCONF DS CL1 CONDO LOT FLAG 00004560 DS CL1 Filler for Future Use 00004615 P2APRCO# DS CL4 RPAD CONDO NUMBER 00004760 DS CL7 Future Use - Condo Unit Number 00004815 P2APCBBL DS CL11 CONDO BILLING BBL 00005063 DS CL1 FILLER FOR FUNC AP 00005161 P2APCLBL DS CL11 CONDO LOW BBL 00005260 P2APCHBL DS CL11 CONDO HIGH BBL 00005360 DS CL15 Filler 00005415 P2APCOOP DS CL4 CO-OP NUMBER 00005560 * 00005615 DS CL8 FILLER FOR FUNC AP 00005761 * 00005815 DS CL5 FILLER FOR FUNCTION AP 00005961 DS CL5 FILLER FOR FUNCTION AP 00006061 DS CL4 FILLER 00006161 DS CL3 FILLER 00006261 P2APLAT DS CL9 LATITUDE 00006360 P2APLONG DS CL11 LONGITUDE 00006460 P2APXCO DS CL7 X COORDINATE OF ANNOTATION POINT 00006560 P2APYCO DS CL7 Y COORDINATE OF ANNOTATION POINT 00006660 DS CL6 FILLER FOR FUNC AP 00006761 DS CL1 FILLER FOR FUNC AP 00006861 DS CL7 FILLER FOR FUNC AP 00006961 DS CL1 FILLER FOR FUNC AP 00007061 DS CL1 FILLER FOR FUNC AP 00007162 P2APAPID DS CL9 ADDRESS POINT ID 00007367 DS CL8 Internal Use 00007461 P2AP#ADR DS CL4 TOTAL ADDRESSES FOR LOT 00007561 P2APLIST DS 0CL1113 LIST OF ADDRESSES, MAXIMUM OF 21 00007661 P2APLOW# DS CL16 LOW HOUSE NUMBER-Display Form 00007761 P2APHI# DS CL16 HIGH HOUSE NUMBER-DISPLAY FORM 00007863 P2APBCDE DS CL1 Borough Code 00007961 P2APCODE DS CL5 STREET CODE 00008061 P2APPLGC DS CL2 Preferred LGC 00008161 P2APLBIN DS CL7 BIN 00008261 P2APLSOS DS CL1 Side of Street Indicator 00008361 P2APATP DS CL1 Address Type Flag 00008461 DS CL1 FILLER FOR FUNC AP 00008562 DS CL3 FILLER 00008661 * STORAGE IS RESERVED FOR THE REMAINING 20 ADDRESS STRUCTURES. 00008761 * EACH STRUCTURE IS IDENTICAL TO THE ONE DEFINED ABOVE. 00008861 DS CL1060 REMAINING ADDRESSES 00008961 P2APSEND EQU * 00009061 P2APSLEN EQU P2APSEND-P2BALAP LENGTH OF P2BALAP 00009162 00021016 ********************************************************************** 01222016 ****** 01223016 ORG P2BALAP RESET LOCATION FOR FN AP EXTENDED 01224062 ****** 01225016 ********************************************************************** 01226016 P2PXKEY DS CL21 INTERNAL USE ONLY 01226166 P2PXCPAR DS CL1 CONTINUOUS PARITY INDICATOR 01226366 P2PXHSEL DS CL11 LOW HOUSE NUMBER ON BLOCK - HNS FORM 01226466 P2PXALT1 DS 0CL11 BBL 01226566 P2PXBOR1 DS CL1 BORO 01226666 P2PXTXB1 DS CL5 TAX BLOCK 01226766 P2PXTXL1 DS CL4 TAX LOT 01226866 DS CL1 Future Use 01226963 DS CL1 FILLER FOR FUNC AP 01227063 DS CL1 FILLER 01227163 P2PXGLI DS 0CL13 GENERAL LOT INFO 01227266 P2PXFL01 DS CL2 FILLER FOR AP ?FIELDS NAME FOR FILLERS ?? 01227366 P2PXFL02 DS CL2 FILLER FOR FUNC AP 01227466 P2PX#STC DS CL4 TOTAL NUMBER STRUCTURES 01227566 P2PXFL03 DS CL2 FILLER FOR FUNC AP ? 01227666 P2PXFL04 DS CL1 FILLER FOR FUNC AP ? 01227766 P2PXFL05 DS CL1 FILLER FOR FUNC AP ? 01227866 P2PXFL06 DS CL1 FILLER FOR FUNC AP 01227966 * 01228063 DS CL1 FILLER FOR FUNC AP 01228163 DS CL1 FILLER FOR FUNC AP 01228263 * 01228363 DS CL19 FILLER FOR FUNC AP 01228463 * 01228563 P2PXRFIU DS CL1 RESERVED FOR INTERNAL USE 01228666 P2PXBIN DS CL7 BUILDING IDENTIFICATION NUMBER (BIN) 01228766 * Condo Information 01228863 P2PXCONF DS CL1 CONDO LOT FLAG 01228966 DS CL1 Filler for Future Use 01229063 P2PXRCO# DS CL4 RPAD CONDO NUMBER 01229166 DS CL7 Future Use - Condo Unit Number 01229263 P2PXCBBL DS CL11 CONDO BILLING BBL 01229366 DS CL1 FILLER FOR FUNC AP 01229463 P2PXCLBL DS CL11 CONDO LOW BBL 01229566 P2PXCHBL DS CL11 CONDO HIGH BBL 01229666 DS CL15 Filler 01229763 P2PXCOOP DS CL4 CO-OP NUMBER 01229866 * 01229963 DS CL8 FILLER FOR FUNC AP 01230063 * 01230163 DS CL5 FILLER FOR FUNCTION AP 01230263 DS CL5 FILLER FOR FUNCTION AP 01230363 DS CL4 FILLER 01230463 DS CL3 FILLER 01230563 P2PXLAT DS CL9 LATITUDE 01230666 P2PXLONG DS CL11 LONGITUDE 01230766 P2PXXCO DS CL7 X COORDINATE OF ANNOTATION POINT 01230866 P2PXYCO DS CL7 Y COORDINATE OF ANNOTATION POINT 01230966 DS CL6 FILLER FOR FUNC AP 01231063 DS CL1 FILLER FOR FUNC AP 01231163 DS CL7 FILLER FOR FUNC AP 01231263 DS CL1 FILLER FOR FUNC AP 01231363 DS CL1 FILLER FOR FUNC AP 01231463 P2PXAPID DS CL9 ADDRESS POINT ID 01231667 DS CL8 Internal Use - LGCs 01231764 P2PXRC DS CL1 REASON CODE 01231866 P2PXRCQ DS CL1 REASON CODE QUALIFIER 01231966 P2PXWC DS CL2 WARNING CODE FILLER 01232066 P2PXGRC DS CL2 GEOSUPPORT RETURN CODE 01232166 DS CL108 FILLER 01232264 P2PX#ADR DS CL4 TOTAL ADDRESSES FOR LOT 01232966 P2PXLIST DS 0CL116 LIST OF ADDRESSES, MAXIMUM OF 21 01233066 P2PXLOW# DS CL16 LOW HOUSE NUMBER-DISPLAY FORM 01233166 P2PXHI# DS CL16 HIGH HOUSE NUMBER-DISPLAY FORM 01233266 P2PXBCDE DS CL1 BOROUGH CODE 01233366 P2PXCODE DS CL5 STREET CODE 01233466 P2PXPLGC DS CL2 PREFERRED LGC 01233566 P2PXLBIN DS CL7 BIN 01233666 P2PXLSOS DS CL1 SIDE OF STREET INDICATOR 01233766 P2PXATP DS CL1 ADDRESS TYPE FLAG 01233866 DS CL1 FILLER FOR FUNC AP 01233963 P2PXSTN DS CL32 STREET NAME 01234066 DS CL34 FILLER 01234164 * STORAGE IS RESERVED FOR THE REMAINING 20 ADDRESS STRUCTURES. 01234263 * EACH STRUCTURE IS IDENTICAL TO THE ONE DEFINED ABOVE. 01234363 DS CL1060 REMAINING ADDRESSES 01234463 P2PXSEND EQU * 01234566 P2PXSLEN EQU P2APSEND-P2BALAP LENGTH OF P2AP EXTEND WORKAREA 2 01234666 * 01234764 ORG , 01269362 ********************************************************************** 01269516","title":"P2BALAP COPY File"},{"location":"appendices/appendix14/#pl1-copy-files-cow","text":"","title":"PL/1 COPY Files (COW)"},{"location":"appendices/appendix14/#p1pl1-copy-file","text":"/*******************************************************************/ 00000100 /** ADDED 'UNIT' FIELDS TO WA1 YNL 10/16 V16.4 ***/ 00000227 /*** THIS IS THE PL/1 STRUCTURE FOR GEOSUPPORT SYSTEM PLATFORM ***/ 00000300 /*** INDEPENDENT WORK AREA 1. ***/ 00000400 /*** COPY FILE - P1PL1. ***/ 00000500 /*** 04/07/98 ***/ 00000600 /** LAST UPDATED OCTOBER 2016 **/ 00000729 /*******************************************************************/ 00000825 DCL PP1 POINTER; 00000925 DCL 00001025 1 P1PL1, 00001125 /***********************************************/ 00001225 /***** INPUT FIELDS *****/ 00001325 /***********************************************/ 00001425 2 PIWA1_IN_FUNCTION_CODE, 00001525 3 PIWA1_IN_FUNCTION_1 CHAR(1), 00001625 3 PIWA1_IN_FUNCTION_2 CHAR(1), 00001725 2 PIWA1_IN_HOUSENUM_DISPLAY CHAR(16), 00001825 2 PIWA1_IN_HOUSENUM_SORT CHAR(11), 00001925 2 PIWA1_IN_LOW_HOUSENUM_DISPLAY CHAR(16), 00002025 2 PIWA1_IN_LOW_HOUSENUM_SORT CHAR(11), 00002125 2 PIWA1_IN_BORO_1 CHAR(1), 00002225 2 PIWA1_IN_10SC_1 CHAR(10), 00002325 2 PIWA1_IN_STREET_1 CHAR(32), 00002425 2 PIWA1_IN_BORO_2 CHAR(1), 00002525 2 PIWA1_IN_10SC_2 CHAR(10), 00002625 2 PIWA1_IN_STREET_2 CHAR(32), 00002725 2 PIWA1_IN_BORO_3 CHAR(1), 00002825 2 PIWA1_IN_10SC_3 CHAR(10), 00002925 2 PIWA1_IN_STREET_3 CHAR(32), 00003025 2 PIWA1_IN_BBL, 00003125 3 PIWA1_IN_BBL_BORO CHAR(1), 00003225 3 PIWA1_IN_BLOCK CHAR(5), 00003325 3 PIWA1_IN_LOT CHAR(4), 00003425 3 PIWA1_IN_LOT_VER CHAR(1), 00003525 2 PIWA1_IN_BIN CHAR(7), 00003625 2 PIWA1_IN_COMPASS CHAR(1), 00003725 2 PIWA1_IN_COMPASS2 CHAR(1), 00003825 2 PIWA1_IN_NODE CHAR(7), /*NODE INPUT FN 2*/00003923 2 PIWA1_IN_PLATFORM_INDICATOR CHAR(1), 00004009 2 PIWA1_IN_ZIPIN CHAR(5), 00004112 2 PIWA1_IN_UNIT CHAR(14), 00004227 2 FILLER_200 CHAR(82), 00004327 /** 2 FILLER_200 *** V16.4 *** CHAR(96) ****/ 00004427 2 PIWA1_IN_LONG_WORKAREA2_FLAG CHAR(1), /*L=LONG */ 00004527 2 PIWA1_IN_HSE_NBR_JUSTIFY CHAR(1), 00004627 2 PIWA1_IN_HNL CHAR(2), /* NI */ 00004727 2 PIWA1_IN_HSE_OVER_FLAG CHAR(1), 00004827 2 PIWA1_IN_SNL CHAR(2), 00004927 2 PIWA1_IN_SN_NORM_FORMAT CHAR(1), /*C=COMPACT */ 00005027 /*S OR ' '=SORT*/ 00005127 2 PIWA1_IN_EXPANDED_FORMAT CHAR(1), 00005227 2 PIWA1_IN_ROADBED_REQ_SWITCH CHAR(1), 00005327 2 PIWA1_IN_INTERNAL_USE_LEGACY CHAR(1), 00005427 2 PIWA1_IN_SEGAUX_SWITCH CHAR(1), 00005527 2 PIWA1_IN_BROWSE_FLAG CHAR(1), 00005627 2 PIWA1_IN_REAL_STREET_ONLY CHAR(1), /* FN 3S */ 00005727 2 PIWA1_IN_TPAD_SWITCH CHAR(1), /*FN 1A-BL-BN*/ 00005827 2 PIWA1_IN_MODE_SWITCH CHAR(1), /*FN 1-1E-1A-*/ 00005927 /*FN BL-BN-3-3C*/ 00006027 /*X=EXTENDED */ 00006127 2 PIWA1_IN_WTO_SWITCH CHAR(1), /*N=NO WTO*/ 00006227 2 FILLER_400 CHAR(29), 00006327 /***********************************************/ 00006427 /***** OUTPUT FIELDS *****/ 00006527 /***********************************************/ 00006627 2 PIWA1_OUT_BORONAME CHAR(9), 00006727 2 PIWA1_OUT_HOUSENUM_DISPLAY CHAR(16), 00006827 2 PIWA1_OUT_HOUSENUM_SORT CHAR(11), 00006927 2 PIWA1_OUT_B10SC_1 CHAR(11), 00007027 2 PIWA1_OUT_STREET_1 CHAR(32), 00007127 2 PIWA1_OUT_B10SC_2 CHAR(11), 00007227 2 PIWA1_OUT_STREET_2 CHAR(32), 00007327 2 PIWA1_OUT_B10SC_3 CHAR(11), 00007427 2 PIWA1_OUT_STREET_3 CHAR(32), 00007527 2 PIWA1_OUT_BBL, 00007627 3 PIWA1_OUT_BBL_BORO CHAR(1), 00007727 3 PIWA1_OUT_BLOCK CHAR(5), 00007827 3 PIWA1_OUT_LOT CHAR(4), 00007927 2 PIWA1_OUT_LOT_VER CHAR(1), 00008027 2 PIWA1_OUT_LO_HOUSENUM_DISPLAY CHAR(16), 00008127 2 PIWA1_OUT_LO_HOUSENUM_SORT CHAR(11), 00008227 2 PIWA1_OUT_BIN CHAR(7), 00008327 2 PIWA1_OUT_STREET_ATTR(3) CHAR(1), 00008427 2 PIWA1_OUT_REASON_CODE_2 CHAR(1), 00008527 2 PIWA1_OUT_REASON_CODE_QUAL_2 CHAR(1), /*TPAD 2ND REASON*/ 00008627 /*CODE QUALIFIER */ 00008727 2 PIWA1_OUT_WARNING_CODE_2 CHAR(2), 00008827 2 PIWA1_OUT_RETURN_CODE_2 CHAR(2), 00008927 2 PIWA1_OUT_ERROR_MESSAGE_2 CHAR(80), 00009027 2 PIWA1_OUT_NODE CHAR(7), /*NODE NORMALIZED*/00009127 2 PIWA1_OUT_UNIT_SORT, 00009227 3 PIWA1_OUT_UNIT_TYPE CHAR(4), 00009327 3 PIWA1_OUT_UNIT_ID CHAR(10), 00009427 2 PIWA1_OUT_UNIT_DISP CHAR(14), 00009527 2 FILLER_550 CHAR(17), 00009728 /** 2 FILLER_550 *** V16.4 *** CHAR(39) ***/ 00009827 /** 2 FILLER_555 CHAR(6), ***/ 00009928 2 PIWA1_OUT_SND_ATTR CHAR(1), 00010027 2 PIWA1_OUT_REASON_CODE CHAR(1), 00010127 2 PIWA1_OUT_REASON_CODE_QUAL CHAR(1), /*TPAD REASON */ 00010227 /*CODE QUALIFIER*/ 00010327 2 PIWA1_OUT_WARNING_CODE CHAR(2), 00010427 2 PIWA1_OUT_RETURN_CODE CHAR(2), 00010527 2 PIWA1_OUT_ERROR_MESSAGE CHAR(80), 00010627 2 PIWA1_OUT_NUM_SIMILAR_STRS CHAR(2), 00010727 2 PIWA1_OUT_SIMILAR_B7SC(10) CHAR(8), 00010827 2 PIWA1_OUT_SIMILAR_NAMES(10) CHAR(32); 00010927 00011027 DCL PIWA1_IN_FUNC_CODE CHAR(2) 00011127 BASED(ADDR(PIWA1_IN_FUNCTION_CODE)); 00011227 00011327 DCL WORK1PL1 BASED(PP1) CHAR(1200); 00012027 PP1=ADDR(P1PL1); 00020018","title":"P1PL1 COPY File"},{"location":"appendices/appendix14/#p2pl1-copy-file","text":"/*******************************************************************/ 00010099 /*** P2PL1 ***/ 00011099 /*** LAST MODIFIED DECEMBER 2017 ***/ 00012099 /* ADD NEW 4 BYTE POLICE SECTOR TLV 06/18 V19.2*/ 00013099 /* ADD NEW 5 BYTE PUMA CODE YNL 12/17 V18.1*/ 00014199 /* ADD NEW 2 BYTE SPEED LIMIT TLV 09/17 V17.4*/ 00015099 /* ADD NEW 2 BYTE BIKE TRAFFIC DIRECTION YNL 12/16 V17,1*/ 00015199 /* ADD NEW 2 BYTE BIKE LANE AND MAX STR WIDTH YNL 10/16 V16.4*/ 00015299 /* */ 00016099 /*** THIS IS THE PL/1 STRUCTURE FOR GEOSUPPORT SYSTEM PLATFORM ***/ 00030099 /*** INDEPENDENT WORK AREA 2 FOR FUNCTIONS: 1, 1E, 2, 2C, 3, ***/ 00040099 /*** AND 5. ***/ 00050099 /*** ADDED 3 EXTENDED AND 3C EXTENDED MEB 6/11 ***/ 00060099 /*** ADDED 2 WIDE MEB 3/14 ***/ 00070099 /*** ***/ 00080099 /*** COPY FILE - P2PL1. ***/ 00090099 /*** PLEASE NOTE THAT FUNCTIONS 1 AND 1E SHARE A SINGLE ***/ 00100099 /*** WORK AREA 2 LAYOUT, AND FUNCTIONS 2 AND 2C ALSO ***/ 00110099 /*** SHARE A SINGLE WORK AREA 2 LAYOUT. 12/30/97 ***/ 00120099 /*******************************************************************/ 00130099 DCL PP2 POINTER; 00140099 DCL P2PL1 CHAR(10000) INIT(' '); 00150099 00160099 00170099 /*******************************************************************/ 00180099 /******* FOR: FUNCTIONS 1 & 1E *****************************/ 00190099 DCL 00200099 1 PIWA2_FUNCTION1 BASED(PP2), 00210099 2 PIWA2_FN1_ACCESS_KEY CHAR(21), 00220099 2 PIWA2_FN1_CONT_PARITY CHAR(1),/*(OR DUP ADDR IND)*/ 00230099 2 PIWA2_FN1_LOW_HOUSENUM CHAR(11),/* SORT FORMAT */ 00240099 2 PIWA2_FN1_HI_HOUSENUM CHAR(11),/* SORT FORMAT */ 00250099 2 PIWA2_FN1_PREF_LGC CHAR(2), 00260099 2 PIWA2_FN1_NUM_X_ST_LOW_END CHAR(1), 00270099 2 PIWA2_FN1_LOW_B5SC(5) CHAR(6), 00280099 2 PIWA2_FN1_NUM_X_ST_HI_END CHAR(1), 00290099 2 PIWA2_FN1_HI_B5SC(5) CHAR(6), 00300099 2 PIWA2_FN1_LIONKEY, 00310099 3 PIWA2_FN1_LION_BORO CHAR(1), 00320099 3 PIWA2_FN1_LION_FACECODE CHAR(4), 00330099 3 PIWA2_FN1_LION_SEQ CHAR(5), 00340099 2 PIWA2_FN1_SPECIAL_ADDR_FLAG CHAR(1), 00350099 2 PIWA2_FN1_SIDE_OF_STR CHAR(1), 00360099 2 PIWA2_FN1_SEG_LEN CHAR(5), 00370099 2 PIWA2_FN1_XCOORD CHAR(7), 00380099 2 PIWA2_FN1_YCOORD CHAR(7), 00390099 2 FILLER_100 CHAR(7), /* FOR ZCOORD */ 00400099 2 FILLER_200 CHAR(1), /* FOR GSS USE*/ 00410099 2 PIWA2_FN1_MARBLE_RIKERS_FLAG CHAR(1), 00420099 2 PIWA2_FN1_DOT_SLA CHAR(1), 00430099 2 PIWA2_FN1_COM_DIST, 00440099 3 PIWA2_FN1_COM_DIST_BORO CHAR(1), 00450099 3 PIWA2_FN1_COM_DIST_NUM CHAR(2), 00460099 2 PIWA2_FN1_ZIP CHAR(5), 00470099 00480099 2 PIWA2_FN1E_ELECT_DIST CHAR(3), /*****************/ 00490099 2 PIWA2_FN1E_ASSEM_DIST CHAR(2), /* THE FNIE */ 00500099 2 PIWA2_FN1E_SPLIT_ED_FLAG CHAR(1), /* FIELDS ARE */ 00510099 2 PIWA2_FN1E_CONG_DIST CHAR(2), /* VALID ONLY FOR*/ 00520099 2 PIWA2_FN1E_SENATE_DIST CHAR(2), /* FUNCTION 1E, */ 00530099 2 PIWA2_FN1E_COURT_DIST CHAR(2), /* NOT FUNC 1. */ 00540099 2 PIWA2_FN1E_COUNCIL_DIST CHAR(2), /*****************/ 00550099 00560099 2 PIWA2_FN1_HEALTH_CENTER_DIST CHAR(2), /* HEALTH CENTR*/ 00570099 2 PIWA2_FN1_HEALTH_AREA CHAR(4), /* HEALTH AREA*/ 00580099 2 PIWA2_FN1_SANI_DIST, 00590099 3 PIWA2_FN1_SANI_DIST_BORO CHAR(1), 00600099 3 PIWA2_FN1_SANI_DIST_NUM CHAR(2), 00610099 2 PIWA2_FN1_SANI_SUBSEC CHAR(2), 00620099 2 PIWA2_FN1_SANI_REG CHAR(5), 00630099 2 PIWA2_FN1_SANI_REC CHAR(3), 00640099 2 PIWA2_FN1_POLICE_DIST, 00650099 3 PIWA2_FN1_POL_PAT_BORO_CMD CHAR(1), 00660099 3 PIWA2_FN1_POL_PRECINCT CHAR(3), 00670099 2 PIWA2_FN1_FIRE_DIV CHAR(2), 00680099 2 PIWA2_FN1_FIRE_BAT CHAR(2), 00690099 2 PIWA2_FN1_FIRE_CO, 00700099 3 PIWA2_FN1_FIRE_CO_TYPE CHAR(1), 00710099 3 PIWA2_FN1_FIRE_CO_NUM CHAR(3), 00720099 2 PIWA2_FN1_FILL_DIST_SPLIT_FLAG CHAR(1), /*WAS SPLIT SC*/ 00730099 2 PIWA2_FN1_SCHL_DIST CHAR(2), 00740099 2 PIWA2_FN1_DYN_BLK CHAR(3), /*ATOMIC POLYGON*/ 00750099 2 PIWA2_FN1_POLICE_PAT_BORO CHAR(2), 00760099 2 PIWA2_FN1_FEATURE_TYPE CHAR(1), 00770099 2 PIWA2_FN1_SEGMENT_TYPE CHAR(1), 00780099 2 PIWA2_FN1_ALX CHAR(1), 00790099 2 PIWA2_FN1_COINCIDENT_SEG_CTR CHAR(1), 00800099 2 FILLER_290 CHAR(2), 00810099 2 PIWA2_FN1_CENS_TRCT_BORO CHAR(1), /*USED FOR GRIDGEN*/ 00820099 2 PIWA2_FN1_1990_CENS_TRCT CHAR(6), 00830099 2 PIWA2_FN1_2010_CENSUS_TRACT CHAR(6), 00840099 2 PIWA2_FN1_2010_CENSUS_BLOCK CHAR(4), 00850099 2 PIWA2_FN1_2010_CENSUS_BLK_SF CHAR(1), /*NOT IMPLEMENTED*/ 00860099 2 PIWA2_FN1_2000_CENS_TRACT CHAR(6), 00870099 2 PIWA2_FN1_2000_CENS_BLOCK CHAR(4), 00880099 2 PIWA2_FN1_2000_CENS_BLOCK_SUF CHAR(1), 00890099 2 PIWA2_FN1_NTA CHAR(4), /*NEIGHBORHOOD */ 00900099 /*TABULATION AREA */ 00910099 2 PIWA2_FN1_SANIT_SNOW_PRIORITY CHAR(1), /*SANITATION STRT */ 00920099 /*SNOW PRIORITY */ 00930099 2 PIWA2_FN1_SANIT_ORGANICS CHAR(5), /*SANITATION */ 00940099 /*ORGANIC PICKUP */ 00950099 2 PIWA2_FN1_SANIT_BULK_PICK_UP CHAR(5), /*SANITATION BULK */ 00960099 /** 2 PIWA2_FN1_SANIT_RESERVED *V16.4* CHAR(5), /*SANITATION RESRV*/ 00961099 2 PIWA2_FN1_HURRICANE_ZONE CHAR(2), /*OEM HURRICANE */ 00970099 /*EVACUATION ZONE */ 00980099 2 FILLER_300 CHAR(11), 00990099 2 PIWA2_FN1_UHNS CHAR(11), 01000099 2 PIWA2_FN1_REAL_B7SC CHAR(8), 01010099 2 PIWA2_FN1_SEGMENT_ID CHAR(7), 01020099 2 PIWA2_FN1_CURVE_FLAG CHAR(1); 01030099 01040099 DCL PIWA2_FN1_COMDIST CHAR(3) 01050099 BASED(ADDR(PIWA2_FN1_COM_DIST)); 01060099 DCL PIWA2_FN1_SANIDIST CHAR(3) 01070099 BASED(ADDR(PIWA2_FN1_SANI_DIST)); 01080099 DCL PIWA2_FN1_POLDIST CHAR(4) 01090099 BASED(ADDR(PIWA2_FN1_POLICE_DIST)); 01100099 01110099 01120099 /*******************************************************************/ 01130099 /******* FOR: FUNCTIONS 2 & 2C *****************************/ 01140099 DCL 01150099 1 PIWA2_FUNCTION2 BASED(PP2), 01160099 2 PIWA2_FN2_ACCESS_KEY CHAR(21), 01170099 2 PIWA2_FN2_DUP_INTERSECT_FLAG CHAR(1), 01180099 2 PIWA2_FN2_PREF_LGC1 CHAR(2), 01190099 2 PIWA2_FN2_PREF_LGC2 CHAR(2), 01200099 2 PIWA2_FN2_NUM_OF_INTERSECTS CHAR(1), 01210099 2 PIWA2_FN2_INTERSECT_B5SC(5) CHAR(6), 01220099 2 PIWA2_FN2_COMPDIR CHAR(1), 01230099 2 PIWA2_FN2_ATOMIC_POLYGON CHAR(3), 01240099 2 FILLER_350 CHAR(2), 01250099 2 PIWA2_FN2_LIONNODENUM CHAR(7), 01260099 2 PIWA2_FN2_XCOORD CHAR(7), 01270099 2 PIWA2_FN2_YCOORD CHAR(7), 01280099 2 FILLER_400 CHAR(7), /* FOR ZCOORD */ 01290099 2 PIWA2_FN2_SANBORN1, 01300099 3 PIWA2_FN2_SANBORN1_BORO CHAR(1), 01310099 3 PIWA2_FN2_SANBORN1_VOL CHAR(3), 01320099 3 PIWA2_FN2_SANBORN1_PAGE CHAR(4), 01330099 2 PIWA2_FN2_SANBORN2, 01340099 3 PIWA2_FN2_SANBORN2_BORO CHAR(1), 01350099 3 PIWA2_FN2_SANBORN2_VOL CHAR(3), 01360099 3 PIWA2_FN2_SANBORN2_PAGE CHAR(4), 01370099 2 PIWA2_FN2_MARBLE_RIKERS_FLAG CHAR(1), 01380099 2 PIWA2_FN2_DOT_SLA CHAR(1), 01390099 2 PIWA2_FN2_COM_DIST, 01400099 3 PIWA2_FN2_COM_DIST_BORO CHAR(1), 01410099 3 PIWA2_FN2_COM_DIST_NUM CHAR(2), 01420099 2 PIWA2_FN2_ZIP CHAR(5), 01430099 2 PIWA2_FN2_HEALTH_AREA CHAR(4), /*HEALTH AREA*/ 01440099 2 PIWA2_FN2_POLICE_DIST, 01450099 3 PIWA2_FN2_POL_PAT_BORO_CMD CHAR(1), 01460099 3 PIWA2_FN2_POL_PRECINCT CHAR(3), 01470099 2 PIWA2_FN2_FIRE_DIV CHAR(2), 01480099 2 PIWA2_FN2_FIRE_BAT CHAR(2), 01490099 2 PIWA2_FN2_FIRE_CO, 01500099 3 PIWA2_FN2_FIRE_CO_TYPE CHAR(1), 01510099 3 PIWA2_FN2_FIRE_CO_NUM CHAR(3), 01520099 2 PIWA2_FN2_SCHL_DIST CHAR(2), 01530099 2 PIWA2_FN2_2010_CENSUS_TRACT CHAR(6), 01540099 2 PIWA2_FN2_1990_CENS_TRCT CHAR(6), 01550099 2 PIWA2_FN2_LEVEL_CODES(5,2) CHAR(1), 01560099 2 PIWA2_FN2_POLICE_PAT_BORO CHAR(2), 01570099 2 PIWA2_FN2_ASSEM_DIST CHAR(2), 01580099 2 PIWA2_FN2_CONG_DIST CHAR(2), 01590099 2 PIWA2_FN2_SENATE_DIST CHAR(2), 01600099 2 PIWA2_FN2_COURT_DIST CHAR(2), 01610099 2 PIWA2_FN2_COUNCIL_DIST CHAR(2), 01620099 2 PIWA2_FN2_CD_ELIGIBLE CHAR(1), 01630099 2 PIWA2_FN2_DUP_INTERSECT_DIST CHAR(5), 01640099 2 PIWA2_FN2_2000_CENS_TRACT CHAR(6), 01650099 2 PIWA2_FN2_HEALTH_CENTER_DIST CHAR(2), /*HEALTH CENTER*/ 01660099 2 PIWA2_FN2_SANITATION_DIST CHAR(3), 01670099 2 PIWA2_FN2_SANITATION_SUBSEC CHAR(2), 01680099 2 PIWA2_FN2_POLICE_SECTOR CHAR(4), 01681099 2 FILLER_500 CHAR(8) ; 01690099 /* 2 FILLER_500 ** V18.3** CHAR(12) */ 01691099 01700099 DCL PIWA2_FN2_COMDIST CHAR(3) 01710099 BASED(ADDR(PIWA2_FN2_COM_DIST)); 01720099 DCL PIWA2_FN2_POLDIST CHAR(4) 01730099 BASED(ADDR(PIWA2_FN2_POLICE_DIST)); 01740099 DCL PIWA2_FN2_SANBORN1_BVOLPAGE CHAR(8) 01750099 BASED(ADDR(PIWA2_FN2_SANBORN1)), 01760099 PIWA2_FN2_SANBORN2_BVOLPAGE CHAR(8) 01770099 BASED(ADDR(PIWA2_FN2_SANBORN2)); 01780099 01790099 01800099 /*******************************************************************/ 01810099 /******* FOR: FUNCTIONS 2W *****************************/ 01820099 DCL 01830099 1 PIWA2_FUNCTION2W BASED(PP2), 01840099 2 PIWA2_FN2W_ACCESS_KEY CHAR(21), 01850099 2 PIWA2_FN2W_DUP_INTERSECT_FLAG CHAR(1), 01860099 2 PIWA2_FN2W_PREF_LGC1 CHAR(2), 01870099 2 PIWA2_FN2W_PREF_LGC2 CHAR(2), 01880099 2 PIWA2_FN2W_NUM_OF_INTERSECTS CHAR(1), 01890099 2 PIWA2_FN2W_INTERSECT_B5SC(5) CHAR(6), 01900099 2 PIWA2_FN2W_COMPDIR CHAR(1), 01910099 2 PIWA2_FN2W_ATOMIC_POLYGON CHAR(3), 01920099 2 PIWA2_FN2W_FILLER_350 CHAR(2), 01930099 2 PIWA2_FN2W_LIONNODENUM CHAR(7), 01940099 2 PIWA2_FN2W_XCOORD CHAR(7), 01950099 2 PIWA2_FN2W_YCOORD CHAR(7), 01960099 2 PIWA2_FN2W_FILLER_400 CHAR(7), /* FOR ZCOORD */ 01970099 2 PIWA2_FN2W_SANBORN1, 01980099 3 PIWA2_FN2W_SANBORN1_BORO CHAR(1), 01990099 3 PIWA2_FN2W_SANBORN1_VOL CHAR(3), 02000099 3 PIWA2_FN2W_SANBORN1_PAGE CHAR(4), 02010099 2 PIWA2_FN2W_SANBORN2, 02020099 3 PIWA2_FN2W_SANBORN2_BORO CHAR(1), 02030099 3 PIWA2_FN2W_SANBORN2_VOL CHAR(3), 02040099 3 PIWA2_FN2W_SANBORN2_PAGE CHAR(4), 02050099 2 PIWA2_FN2W_MARBLE_RIKERS_FLAG CHAR(1), 02060099 2 PIWA2_FN2W_DOT_SLA CHAR(1), 02070099 2 PIWA2_FN2W_COM_DIST, 02080099 3 PIWA2_FN2W_COM_DIST_BORO CHAR(1), 02090099 3 PIWA2_FN2W_COM_DIST_NUM CHAR(2), 02100099 2 PIWA2_FN2W_ZIP CHAR(5), 02110099 2 PIWA2_FN2W_HEALTH_AREA CHAR(4), /*HEALTH AREA*/ 02120099 2 PIWA2_FN2W_POLICE_DIST, 02130099 3 PIWA2_FN2W_POL_PAT_BORO_CMD CHAR(1), 02140099 3 PIWA2_FN2W_POL_PRECINCT CHAR(3), 02150099 2 PIWA2_FN2W_FIRE_DIV CHAR(2), 02160099 2 PIWA2_FN2W_FIRE_BAT CHAR(2), 02170099 2 PIWA2_FN2W_FIRE_CO, 02180099 3 PIWA2_FN2W_FIRE_CO_TYPE CHAR(1), 02190099 3 PIWA2_FN2W_FIRE_CO_NUM CHAR(3), 02200099 2 PIWA2_FN2W_SCHL_DIST CHAR(2), 02210099 2 PIWA2_FN2W_2010_CENSUS_TRACT CHAR(6), 02220099 2 PIWA2_FN2W_1990_CENS_TRCT CHAR(6), 02230099 2 PIWA2_FN2W_LEVEL_CODES(5,2) CHAR(1), 02240099 2 PIWA2_FN2W_POLICE_PAT_BORO CHAR(2), 02250099 2 PIWA2_FN2W_ASSEM_DIST CHAR(2), 02260099 2 PIWA2_FN2W_CONG_DIST CHAR(2), 02270099 2 PIWA2_FN2W_SENATE_DIST CHAR(2), 02280099 2 PIWA2_FN2W_COURT_DIST CHAR(2), 02290099 2 PIWA2_FN2W_COUNCIL_DIST CHAR(2), 02300099 2 PIWA2_FN2W_CD_ELIGIBLE CHAR(1), 02310099 2 PIWA2_FN2W_DUP_INTERSECT_DIST CHAR(5), 02320099 2 PIWA2_FN2W_2000_CENS_TRACT CHAR(6), 02330099 2 PIWA2_FN2W_HEALTH_CENTER_DIST CHAR(2), 02340099 2 PIWA2_FN2W_SANITATION_DIST CHAR(3), 02350099 2 PIWA2_FN2W_SANITATION_SUBSEC CHAR(2), 02360099 2 PIWA2_FN2W_POLICE_SECTOR CHAR(4), 02361099 2 FILLER_500 CHAR(8), 02362099 /* 2 FILLER_500 ** V18.3** CHAR(12) */ 02363099 2 PIWA2_FN2W_FILLER_500 CHAR(12), 02370099 2 PIWA2_FN2W_FILLER_GRIDGEN CHAR(22), 02380099 2 PIWA2_FN2W_LGCS_FIRST_INTERSCT(4), /*UP TO 4 LGCS FOR */02390099 3 PIWA2_FN2W_LGC_FIRST_INTERSCT CHAR(2), /*1ST INPUT STREET */02400099 /*IN INTERSECTION */02410099 2 PIWA2_FN2W_LGCS_SECOND_INTERSCT(4), /*UP TO 4 LGCS FOR */02420099 3 PIWA2_FN2W_LGC_SECOND_INTERSCT CHAR(2), /*2ND INPUT STREET */02430099 /*IN INTERSECTION */02440099 2 PIWA2_FN2W_TURN_RESTRICTIONS(10), 02450099 3 PIWA2_FN2W_TURN_RESTRICTION CHAR(1), 02460099 2 PIWA2_FN2W_INTERSECT_B5SC_LGCS(5), 02470099 3 PIWA2_FN2W_INTERSECT_B5SC_LGC CHAR(2), 02480099 2 PIWA2_FN2W_TRUE_REP_COUNTER CHAR(2), 02490099 2 PIWA2_FN2W_NODE_LIST(20), 02500099 3 PIWA2_FN2W_NODE_LIST_NODE CHAR(7), 02510099 2 PIWA2_FN2W_NODE_LIST_B7SCS_LIST(20), 02520099 3 PIWA2_FN2W_NODE_LIST_B7SCS(5), 02530099 4 PIWA2_FN2W_NODE_LIST_B7SC(4) CHAR(8), 02540099 2 PIWA2_FN2W_REASON_CODE CHAR(1), 02550099 2 PIWA2_FN2W_REASON_CODE_QUAL CHAR(1), 02560099 2 PIWA2_FN2W_WARN_CODE CHAR(2), 02570099 2 PIWA2_FN2W_RETURN_CODE CHAR(2), 02580099 2 PIWA2_FN2W_LATITUDE CHAR(9), 02590099 2 PIWA2_FN2W_LONGITUDE CHAR(11), 02600099 2 PIWA2_FN2W_FILLER6 CHAR(374); 02610099 /* 2 PIWA2_FN2W_FILLER6 V15.3 CHAR(394) ***/ 02620099 02630099 DCL PIWA2_FN2W_COMDIST CHAR(3) 02640099 BASED(ADDR(PIWA2_FN2W_COM_DIST)); 02650099 DCL PIWA2_FN2W_POLDIST CHAR(4) 02660099 BASED(ADDR(PIWA2_FN2W_POLICE_DIST)); 02670099 DCL PIWA2_FN2W_SANBORN1_BVOLPAGE CHAR(8) 02680099 BASED(ADDR(PIWA2_FN2W_SANBORN1)), 02690099 PIWA2_FN2W_SANBORN2_BVOLPAGE CHAR(8) 02700099 BASED(ADDR(PIWA2_FN2W_SANBORN2)); 02710099 02720099 /*******************************************************************/ 02730099 /******* FOR: FUNCTION 3 *****************************/ 02740099 DCL 02750099 1 PIWA2_FUNCTION3 BASED(PP2), 02760099 2 PIWA2_FN3_ACCESS_KEY CHAR(21), 02770099 2 PIWA2_FN3_DUP_KEY_FLAG CHAR(1),/*(OR CONT PARITY)*/ 02780099 2 PIWA2_FN3_LOCATION_STATUS CHAR(1), 02790099 2 PIWA2_FN3_COUNTY_BOUNDARY CHAR(1), 02800099 2 PIWA2_FN3_PREF_LGC1 CHAR(2), 02810099 2 PIWA2_FN3_PREF_LGC2 CHAR(2), 02820099 2 PIWA2_FN3_PREF_LGC3 CHAR(2), 02830099 2 PIWA2_FN3_NUM_X_ST_LOW_END CHAR(1), 02840099 2 PIWA2_FN3_LOW_B5SC(5) CHAR(6), 02850099 2 PIWA2_FN3_NUM_X_ST_HI_END CHAR(1), 02860099 2 PIWA2_FN3_HI_B5SC(5) CHAR(6), 02870099 2 PIWA2_FN3_REVERSAL_FLAG CHAR(1), 02880099 2 PIWA2_FN3_LIONKEY, 02890099 3 PIWA2_FN3_LION_BORO CHAR(1), 02900099 3 PIWA2_FN3_LION_FACECODE CHAR(4), 02910099 3 PIWA2_FN3_LION_SEQ CHAR(5), 02920099 2 PIWA2_FN3_GENREC_FLAG CHAR(1), 02930099 2 PIWA2_FN3_SEG_LEN CHAR(5), 02940099 2 PIWA2_FN3_SEG_SLOPE CHAR(3), 02950099 2 PIWA2_FN3_SEG_ORIENT CHAR(1), 02960099 2 PIWA2_FN3_MARBLE_RIKERS_FLAG CHAR(1), 02970099 2 PIWA2_FN3_FROM_TO_NODES, 02980099 3 PIWA2_FN3_FROM_NODE CHAR(7), 02990099 3 PIWA2_FN3_TO_NODE CHAR(7), 03000099 2 PIWA2_FN3_SANIT_SNOW_PRIORITY CHAR(1), /*SANITATION STRT */ 03010099 /*SNOW PRIORITY */ 03020099 2 FILLER_600 CHAR(4), 03030099 2 PIWA2_FN3_SEGMENT_ID CHAR(7), 03040099 2 PIWA2_FN3_DOT_SLA CHAR(1), 03050099 2 PIWA2_FN3_CURVE_FLAG CHAR(1), 03060099 2 PIWA2_FN3_DOG_LEG CHAR(1), 03070099 2 PIWA2_FN3_FEATURE_TYPE CHAR(1), 03080099 2 PIWA2_FN3_SEGMENT_TYPE CHAR(1), 03090099 2 PIWA2_FN3_COINCIDENT_SEG_CTR CHAR(1), 03100099 2 FILLER_700 CHAR(4), 03110099 2 PIWA2_FN3_LEFT_SIDE_OF_STR, 03120099 3 PIWA2_FN3_L_COM_DIST, 03130099 4 PIWA2_FN3_L_COM_DIST_BORO CHAR(1), 03140099 4 PIWA2_FN3_L_COM_DIST_NUM CHAR(2), 03150099 3 PIWA2_FN3_L_LOW_HOUSENUM CHAR(16),/*DISPLAY FORMAT*/ 03160099 3 PIWA2_FN3_L_HI_HOUSENUM CHAR(16),/*DISPLAY FORMAT*/ 03170099 3 FILLER_800 CHAR(33),/* FOR GSS USE*/ 03180099 3 PIWA2_FN3_L_ZIP CHAR(5), 03190099 3 PIWA2_FN3_L_HEALTH_AREA CHAR(4), /*HEALTH AREA*/ 03200099 3 PIWA2_FN3_L_POLICE_DIST, 03210099 4 PIWA2_FN3_L_POL_PAT_BORO_CMD CHAR(1), 03220099 4 PIWA2_FN3_L_POL_PRECINCT CHAR(3), 03230099 3 PIWA2_FN3_L_FIRE_DIV CHAR(2), 03240099 3 PIWA2_FN3_L_FIRE_BAT CHAR(2), 03250099 3 PIWA2_FN3_L_FIRE_CO, 03260099 4 PIWA2_FN3_L_FIRE_CO_TYPE CHAR(1), 03270099 4 PIWA2_FN3_L_FIRE_CO_NUM CHAR(3), 03280099 3 PIWA2_FN3_L_SCHL_DIST CHAR(2), 03290099 3 PIWA2_FN3_L_DYN_BLK CHAR(3), /*ATOMIC POLYGON*/ 03300099 3 PIWA2_FN3_L_ED CHAR(3), 03310099 3 PIWA2_FN3_L_AD CHAR(2), 03320099 3 PIWA2_FN3_L_POLICE_PAT_BORO CHAR(2), 03330099 3 FILLER_880 CHAR(1), 03340099 3 PIWA2_FN3_L_BORO CHAR(1), 03350099 3 PIWA2_FN3_L_1990_CENS_TRCT CHAR(6), 03360099 3 PIWA2_FN3_L_2010_CENSUS_TRACT CHAR(6), 03370099 3 PIWA2_FN3_L_2010_CENSUS_BLOCK CHAR(4), 03380099 3 PIWA2_FN3_L_2010_CENSUS_BLK_SF CHAR(1), /*NOT IMPLEMENTED*/ 03390099 3 PIWA2_FN3_L_2000_CENSUS_TRACT CHAR(6), 03400099 3 PIWA2_FN3_L_2000_CENSUS_BLOCK CHAR(4), 03410099 3 PIWA2_FN3_L_2000_CENSUS_BLK_SF CHAR(1), 03420099 3 FILLER_890 CHAR(7), 03430099 /** 3 PIWA2_FN3_L_BLOCKFACE_ID *V16.1* CHAR(7) **/ 03440099 3 PIWA2_FN3_L_NTA CHAR(4), /*NEIGHBORHOOD */ 03450099 /*TABULATION AREA */ 03460099 3 FILLER_900 CHAR(8), 03470099 2 PIWA2_FN3_RIGHT_SIDE_OF_STR, 03480099 3 PIWA2_FN3_R_COM_DIST, 03490099 4 PIWA2_FN3_R_COM_DIST_BORO CHAR(1), 03500099 4 PIWA2_FN3_R_COM_DIST_NUM CHAR(2), 03510099 3 PIWA2_FN3_R_LOW_HOUSENUM CHAR(16),/*DISPLAY FORMAT*/ 03520099 3 PIWA2_FN3_R_HI_HOUSENUM CHAR(16),/*DISPLAY FORMAT*/ 03530099 3 FILLER_1000 CHAR(33),/*FOR GSS USE */ 03540099 3 PIWA2_FN3_R_ZIP CHAR(5), 03550099 3 PIWA2_FN3_R_HEALTH_AREA CHAR(4), /*HEALTH AREA*/ 03560099 3 PIWA2_FN3_R_POLICE_DIST, 03570099 4 PIWA2_FN3_R_POL_PAT_BORO_CMD CHAR(1), 03580099 4 PIWA2_FN3_R_POL_PRECINCT CHAR(3), 03590099 3 PIWA2_FN3_R_FIRE_DIV CHAR(2), 03600099 3 PIWA2_FN3_R_FIRE_BAT CHAR(2), 03610099 3 PIWA2_FN3_R_FIRE_CO, 03620099 4 PIWA2_FN3_R_FIRE_CO_TYPE CHAR(1), 03630099 4 PIWA2_FN3_R_FIRE_CO_NUM CHAR(3), 03640099 3 PIWA2_FN3_R_SCHL_DIST CHAR(2), 03650099 3 PIWA2_FN3_R_DYN_BLK CHAR(3), /*ATOMIC POLYGON*/ 03660099 3 PIWA2_FN3_R_ED CHAR(3), 03670099 3 PIWA2_FN3_R_AD CHAR(2), 03680099 3 PIWA2_FN3_R_POLICE_PAT_BORO CHAR(2), 03690099 3 FILLER_1080 CHAR(1), 03700099 3 PIWA2_FN3_R_BORO CHAR(1), 03710099 3 PIWA2_FN3_R_1990_CENS_TRCT CHAR(6), 03720099 3 PIWA2_FN3_R_2010_CENSUS_TRACT CHAR(6), 03730099 3 PIWA2_FN3_R_2010_CENSUS_BLOCK CHAR(4), 03740099 3 PIWA2_FN3_R_2010_CENSUS_BLK_SF CHAR(1), /*NOT IMPLEMENTED*/ 03750099 3 PIWA2_FN3_R_2000_CENS_TRACT CHAR(6), 03760099 3 PIWA2_FN3_R_2000_CENS_BLOCK CHAR(4), 03770099 3 PIWA2_FN3_R_2000_CENS_BLK_SUF CHAR(1), 03780099 3 FILLER_1090 CHAR(7), 03790099 /** 3 PIWA2_FN3_R_BLOCKFACE_ID *V16.1* CHAR(7) **/ 03800099 3 PIWA2_FN3_R_NTA CHAR(4), /*NEIGHBORHOOD */ 03810099 /*TABULATION AREA */ 03820099 3 FILLER_1100 CHAR(8), 03830099 2 PIWA2_FN3_SEGAUX, 03840099 3 PIWA2_FN3_SEGAUX_FILL CHAR(6), 03850099 3 PIWA2_FN3_SEGAUX_CTR CHAR(4), 03860099 3 PIWA2_FN3_SEGAUX_SEGS(70) CHAR(7); 03870099 03880099 DCL PIWA2_FN3_L_COMDIST CHAR(3) 03890099 BASED(ADDR(PIWA2_FN3_L_COM_DIST)); 03900099 DCL PIWA2_FN3_L_POLDIST CHAR(4) 03910099 BASED(ADDR(PIWA2_FN3_L_POLICE_DIST)); 03920099 DCL PIWA2_FN3_R_COMDIST CHAR(3) 03930099 BASED(ADDR(PIWA2_FN3_R_COM_DIST)); 03940099 DCL PIWA2_FN3_R_POLDIST CHAR(4) 03950099 BASED(ADDR(PIWA2_FN3_R_POLICE_DIST)); 03960099 03970099 /*******************************************************************/ 03980099 /******* FOR: FUNCTION 3 EXTENDED *****************************/ 03990099 DCL 04000099 1 PIWA2_FUNCTION3X BASED(PP2), 04010099 2 PIWA2_3X_ACCESS_KEY CHAR(21), 04020099 2 PIWA2_3X_DUP_KEY_FLAG CHAR(1),/*(OR CONT PARITY)*/ 04030099 2 PIWA2_3X_LOCATION_STATUS CHAR(1), 04040099 2 PIWA2_3X_COUNTY_BOUNDARY CHAR(1), 04050099 2 PIWA2_3X_PREF_LGC1 CHAR(2), 04060099 2 PIWA2_3X_PREF_LGC2 CHAR(2), 04070099 2 PIWA2_3X_PREF_LGC3 CHAR(2), 04080099 2 PIWA2_3X_NUM_X_ST_LOW_END CHAR(1), 04090099 2 PIWA2_3X_LOW_B5SC(5) CHAR(6), 04100099 2 PIWA2_3X_NUM_X_ST_HI_END CHAR(1), 04110099 2 PIWA2_3X_HI_B5SC(5) CHAR(6), 04120099 2 PIWA2_3X_REVERSAL_FLAG CHAR(1), 04130099 2 PIWA2_3X_LIONKEY, 04140099 3 PIWA2_3X_LION_BORO CHAR(1), 04150099 3 PIWA2_3X_LION_FACECODE CHAR(4), 04160099 3 PIWA2_3X_LION_SEQ CHAR(5), 04170099 2 PIWA2_3X_GENREC_FLAG CHAR(1), 04180099 2 PIWA2_3X_SEG_LEN CHAR(5), 04190099 2 PIWA2_3X_SEG_SLOPE CHAR(3), 04200099 2 PIWA2_3X_SEG_ORIENT CHAR(1), 04210099 2 PIWA2_3X_MARBLE_RIKERS_FLAG CHAR(1), 04220099 2 PIWA2_3X_FROM_TO_NODES, 04230099 3 PIWA2_3X_FROM_NODE CHAR(7), 04240099 3 PIWA2_3X_TO_NODE CHAR(7), 04250099 2 PIWA2_3X_SANIT_SNOW_PRIORITY CHAR(1), /*SANITATION STRT */ 04260099 /*SNOW PRIORITY */ 04270099 2 FILLER3X_600 CHAR(4), 04280099 2 PIWA2_3X_SEGMENT_ID CHAR(7), 04290099 2 PIWA2_3X_DOT_SLA CHAR(1), 04300099 2 PIWA2_3X_CURVE_FLAG CHAR(1), 04310099 2 PIWA2_3X_DOG_LEG CHAR(1), 04320099 2 PIWA2_3X_FEATURE_TYPE CHAR(1), 04330099 2 PIWA2_3X_SEGMENT_TYPE CHAR(1), 04340099 2 PIWA2_3X_COINCIDENT_SEG_CTR CHAR(1), 04350099 2 FILLER3X_700 CHAR(4), 04360099 2 PIWA2_3X_LEFT_SIDE_OF_STR, 04370099 3 PIWA2_3X_L_COM_DIST, 04380099 4 PIWA2_3X_L_COM_DIST_BORO CHAR(1), 04390099 4 PIWA2_3X_L_COM_DIST_NUM CHAR(2), 04400099 3 PIWA2_3X_L_LOW_HOUSENUM CHAR(16),/*DISPLAY FORMAT*/ 04410099 3 PIWA2_3X_L_HI_HOUSENUM CHAR(16),/*DISPLAY FORMAT*/ 04420099 3 FILLER3X_800 CHAR(33),/* FOR GSS USE*/ 04430099 3 PIWA2_3X_L_ZIP CHAR(5), 04440099 3 PIWA2_3X_L_HEALTH_AREA CHAR(4), /* HEALTH AREA*/ 04450099 3 PIWA2_3X_L_POLICE_DIST, 04460099 4 PIWA2_3X_L_POL_PAT_BORO_CMD CHAR(1), 04470099 4 PIWA2_3X_L_POL_PRECINCT CHAR(3), 04480099 3 PIWA2_3X_L_FIRE_DIV CHAR(2), 04490099 3 PIWA2_3X_L_FIRE_BAT CHAR(2), 04500099 3 PIWA2_3X_L_FIRE_CO, 04510099 4 PIWA2_3X_L_FIRE_CO_TYPE CHAR(1), 04520099 4 PIWA2_3X_L_FIRE_CO_NUM CHAR(3), 04530099 3 PIWA2_3X_L_SCHL_DIST CHAR(2), 04540099 3 PIWA2_3X_L_DYN_BLK CHAR(3), /*ATOMIC POLYGON*/ 04550099 3 PIWA2_3X_L_ED CHAR(3), 04560099 3 PIWA2_3X_L_AD CHAR(2), 04570099 3 PIWA2_3X_L_POLICE_PAT_BORO CHAR(2), 04580099 3 FILLER3X_880 CHAR(1), 04590099 3 PIWA2_3X_L_BORO CHAR(1), 04600099 3 PIWA2_3X_L_1990_CENS_TRCT CHAR(6), 04610099 3 PIWA2_3X_L_2010_CENSUS_TRACT CHAR(6), 04620099 3 PIWA2_3X_L_2010_CENSUS_BLOCK CHAR(4), 04630099 3 PIWA2_3X_L_2010_CENSUS_BLK_SF CHAR(1), /*NOT IMPLEMENTED*/ 04640099 3 PIWA2_3X_L_2000_CENS_TRACT CHAR(6), 04650099 3 PIWA2_3X_L_2000_CENS_BLOCK CHAR(4), 04660099 3 PIWA2_3X_L_2000_CENS_BLK_SF CHAR(1), 04670099 3 FILLER_3X_L_890 CHAR(7), 04680099 /** 3 PIWA2_3X_L_BLOCKFACE_ID *V16.1* CHAR(7) **/ 04690099 3 PIWA2_3X_L_NTA CHAR(4), /*NEIGHBORHOOD */ 04700099 /*TABULATION AREA */ 04710099 3 FILLER_3X_L_900 CHAR(8), 04720099 2 PIWA2_3X_RIGHT_SIDE_OF_STR, 04730099 3 PIWA2_3X_R_COM_DIST, 04740099 4 PIWA2_3X_R_COM_DIST_BORO CHAR(1), 04750099 4 PIWA2_3X_R_COM_DIST_NUM CHAR(2), 04760099 3 PIWA2_3X_R_LOW_HOUSENUM CHAR(16),/*DISPLAY FORMAT*/ 04770099 3 PIWA2_3X_R_HI_HOUSENUM CHAR(16),/*DISPLAY FORMAT*/ 04780099 3 FILLER3X_R_1000 CHAR(33),/*FOR GSS USE */ 04790099 3 PIWA2_3X_R_ZIP CHAR(5), 04800099 3 PIWA2_3X_R_HEALTH_AREA CHAR(4), /*HEALTH AREA*/ 04810099 3 PIWA2_3X_R_POLICE_DIST, 04820099 4 PIWA2_3X_R_POL_PAT_BORO_CMD CHAR(1), 04830099 4 PIWA2_3X_R_POL_PRECINCT CHAR(3), 04840099 3 PIWA2_3X_R_FIRE_DIV CHAR(2), 04850099 3 PIWA2_3X_R_FIRE_BAT CHAR(2), 04860099 3 PIWA2_3X_R_FIRE_CO, 04870099 4 PIWA2_3X_R_FIRE_CO_TYPE CHAR(1), 04880099 4 PIWA2_3X_R_FIRE_CO_NUM CHAR(3), 04890099 3 PIWA2_3X_R_SCHL_DIST CHAR(2), 04900099 3 PIWA2_3X_R_DYN_BLK CHAR(3), /*ATOMIC POLYGON*/ 04910099 3 PIWA2_3X_R_ED CHAR(3), 04920099 3 PIWA2_3X_R_AD CHAR(2), 04930099 3 PIWA2_3X_R_POLICE_PAT_BORO CHAR(2), 04940099 3 FILLER3X_R_1080 CHAR(1), 04950099 3 PIWA2_3X_R_BORO CHAR(1), 04960099 3 PIWA2_3X_R_1990_CENS_TRCT CHAR(6), 04970099 3 PIWA2_3X_R_2010_CENSUS_TRACT CHAR(6), 04980099 3 PIWA2_3X_R_2010_CENSUS_BLOCK CHAR(4), 04990099 3 PIWA2_3X_R_2010_CENSUS_BLK_SF CHAR(1), /*NOT IMPLEMENTED*/ 05000099 3 PIWA2_3X_R_2000_CENS_TRACT CHAR(6), 05010099 3 PIWA2_3X_R_2000_CENS_BLOCK CHAR(4), 05020099 3 PIWA2_3X_R_2000_CENS_BLK_SF CHAR(1), 05030099 3 FILLER3X_R_1090 CHAR(7), 05040099 /** 3 PIWA2_3X_R_BLOCKFACE_ID *V16.1* CHAR(7) **/ 05050099 3 PIWA2_3X_R_NTA CHAR(4), /*NEIGHBORHOOD */ 05060099 /*TABULATION AREA */ 05070099 3 FILLER_3X_R_1100 CHAR(8), 05080099 2 PIWA2_3X_LGCS CHAR(8), 05090099 2 PIWA2_3X_LGCS_FROM CHAR(8), 05100099 2 PIWA2_3X_LGCS_TO CHAR(8), 05110099 2 PIWA2_3X_L_HEALTH_CTR_DIST CHAR(2), /*HEALTH CENTER*/ 05120099 2 PIWA2_3X_R_HEALTH_CTR_DIST CHAR(2), /*HEALTH CENTER*/ 05130099 2 PIWA2_3X_FILL1 CHAR(1), 05140099 2 PIWA2_3X_TRAFFIC_DIR CHAR(1), 05150099 2 PIWA2_3X_ROADWAY_TYPE CHAR(2), 05160099 2 PIWA2_3X_PHYSICAL_ID CHAR(7), 05170099 2 PIWA2_3X_GENERIC_ID CHAR(7), 05180099 2 PIWA2_3X_INTP_ID CHAR(7), /*INTERNAL USE*/ 05190099 2 PIWA2_3X_INTF_ID CHAR(7), /*INTERNAL USE*/ 05200099 2 PIWA2_3X_STR_STATUS CHAR(1), 05210099 2 PIWA2_3X_STR_WIDTH CHAR(3), 05220099 2 PIWA2_3X_STR_WIDTH_IRREG CHAR(1), 05230099 2 PIWA2_3X_BIKE_LANE CHAR(1), 05240099 2 PIWA2_3X_FED_CLASS_CODE CHAR(2), 05250099 2 PIWA2_3X_ROW_TYPE CHAR(1), 05260099 2 PIWA2_3X_LGC_LIST CHAR(10), 05270099 2 PIWA2_3X_LEGACY_ID CHAR(7), 05280099 2 PIWA2_3X_L_NTA_NAME CHAR(75), 05290099 2 PIWA2_3X_R_NTA_NAME CHAR(75), 05300099 2 PIWA2_3X_FROM_XCOORD CHAR(7), 05310099 2 PIWA2_3X_FROM_YCOORD CHAR(7), 05320099 2 PIWA2_3X_TO_XCOORD CHAR(7), 05330099 2 PIWA2_3X_TO_YCOORD CHAR(7), 05340099 2 PIWA2_3X_FROM_LATITUDE CHAR(9), 05350099 2 PIWA2_3X_FROM_LONGITUDE CHAR(11), 05360099 2 PIWA2_3X_TO_LATITUDE CHAR(9), 05370099 2 PIWA2_3X_TO_LONGITUDE CHAR(11), 05380099 2 PIWA2_3X_L_BLOCKFACE_ID CHAR(10), 05390099 2 PIWA2_3X_R_BLOCKFACE_ID CHAR(10), 05400099 2 PIWA2_3X_NBR_TRAVEL_LANES CHAR(2), 05410099 2 PIWA2_3X_NBR_PARK_LANES CHAR(2), 05420099 2 PIWA2_3X_NBR_TOTAL_LANES CHAR(2), 05430099 2 PIWA2_3X_BIKE_LANE_2 CHAR(2), 05431099 2 PIWA2_3X_STR_WIDTH_MAX CHAR(3), 05432099 2 PIWA2_3X_BIKE_TRAFFIC_DIR CHAR(2), 05433099 2 PIWA2_3X_SPEED_LIMIT CHAR(2), 05434099 2 PIWA2_3X_LEFT_PUMA_CODE CHAR(5), 05435099 2 PIWA2_3X_RIGHT_PUMA_CODE CHAR(5), 05436099 2 PIWA2_3X_LEFT_POLICE_SECTOR CHAR(4), 05437099 2 PIWA2_3X_RIGHT_POLICE_SECTOR CHAR(4), 05437199 2 PIWA2_3X_FILL2 CHAR(193), 05438099 /* 2 PIWA2_3X_FILL2 ** V18.3 *** CHAR(201) **/ 05440099 /* 2 PIWA2_3X_FILL2 ** V18.1 *** CHAR(211) **/ 05440199 /* 2 PIWA2_3X_FILL2 ** V17.1 *** CHAR(215) **/ 05441099 /* 2 PIWA2_3X_FILL2 ** V16.4 *** CHAR(220) **/ 05442099 /* 2 PIWA2_3X_FILL2 ** V16.1 *** CHAR(246) **/ 05450099 /* 2 PIWA2_3X_FILL2 ** V15.3 *** CHAR(286) **/ 05460099 2 PIWA2_3X_SEGAUX, 05470099 3 PIWA2_3X_SEGAUX_FILL CHAR(6), 05480099 3 PIWA2_3X_SEGAUX_CTR CHAR(4), 05490099 3 PIWA2_3X_SEGAUX_SEGS(70) CHAR(7); 05500099 05510099 /*******************************************************************/ 05520099 /******* FOR: FUNCTION 3C *****************************/ 05530099 DCL 05540099 1 PIWA2_FUNCTION3C BASED(PP2), 05550099 2 PIWA2_FN3C_ACCESS_KEY CHAR(21), 05560099 2 PIWA2_FN3C_DUP_KEY_FLAG CHAR(1),/*(OR CONT PARITY)*/ 05570099 2 PIWA2_FN3C_LOCATION_STATUS CHAR(1), 05580099 2 PIWA2_FN3C_COUNTY_BOUNDARY CHAR(1), 05590099 2 PIWA2_FN3C_PREF_LGC1 CHAR(2), 05600099 2 PIWA2_FN3C_PREF_LGC2 CHAR(2), 05610099 2 PIWA2_FN3C_PREF_LGC3 CHAR(2), 05620099 2 PIWA2_FN3C_NUM_X_ST_LOW_END CHAR(1), 05630099 2 PIWA2_FN3C_LOW_B5SC(5) CHAR(6), 05640099 2 PIWA2_FN3C_NUM_X_ST_HI_END CHAR(1), 05650099 2 PIWA2_FN3C_HI_B5SC(5) CHAR(6), 05660099 2 PIWA2_FN3C_REVERSAL_FLAG CHAR(1), 05670099 2 PIWA2_FN3C_LIONKEY, 05680099 3 PIWA2_FN3C_LION_BORO CHAR(1), 05690099 3 PIWA2_FN3C_LION_FACECODE CHAR(4), 05700099 3 PIWA2_FN3C_LION_SEQ CHAR(5), 05710099 2 PIWA2_FN3C_GENREC_FLAG CHAR(1), 05720099 2 PIWA2_FN3C_SEG_LEN CHAR(5), 05730099 2 PIWA2_FN3C_SEG_SLOPE CHAR(3), 05740099 2 PIWA2_FN3C_SEG_ORIENT CHAR(1), 05750099 2 PIWA2_FN3C_MARBLE_RIKERS_FLAG CHAR(1), 05760099 2 PIWA2_FN3C_FROM_TO_NODES, 05770099 3 PIWA2_FN3C_FROM_NODE CHAR(7), 05780099 3 PIWA2_FN3C_TO_NODE CHAR(7), 05790099 2 PIWA2_FN3C_SANIT_SNOW_PRIORITY CHAR(1), /*SANITATION STRT */ 05800099 /*SNOW PRIORITY */ 05810099 2 FILLER_1200 CHAR(4), 05820099 2 PIWA2_FN3C_SEGMENT_ID CHAR(7), 05830099 2 PIWA2_FN3C_DOT_SLA CHAR(1), 05840099 2 PIWA2_FN3C_SIDE_OF_STR CHAR(1), 05850099 2 PIWA2_FN3C_CURVE_FLAG CHAR(1), 05860099 2 PIWA2_FN3C_FEATURE_TYPE CHAR(1), 05870099 2 PIWA2_FN3C_SEGMENT_TYPE CHAR(1), 05880099 2 PIWA2_FN3C_COINCIDENT_SEG_CTR CHAR(1), 05890099 2 FILLER_1300 CHAR(4), 05900099 2 PIWA2_FN3C_BLOCKFACE_INFO, 05910099 3 PIWA2_FN3C_COM_DIST, 05920099 4 PIWA2_FN3C_COM_DIST_BORO CHAR(1), 05930099 4 PIWA2_FN3C_COM_DIST_NUM CHAR(2), 05940099 3 PIWA2_FN3C_LOW_HOUSENUM CHAR(16),/*DISPLAY FORMAT*/ 05950099 3 PIWA2_FN3C_HI_HOUSENUM CHAR(16),/*DISPLAY FORMAT*/ 05960099 3 PIWA2_FN3C_LOW_HOUSENUM2 CHAR(16),/*DISPLAY FORMAT*/ 05970099 3 PIWA2_FN3C_HI_HOUSENUM2 CHAR(16),/*DISPLAY FORMAT*/ 05980099 3 FILLER_1400 CHAR(1), /* FOR GSS USE */ 05990099 3 PIWA2_FN3C_ZIP CHAR(5), 06000099 3 PIWA2_FN3C_HEALTH_AREA CHAR(4), /*HEALTH AREA*/ 06010099 3 PIWA2_FN3C_POLICE_DIST, 06020099 4 PIWA2_FN3C_POL_PAT_BORO_CMD CHAR(1), 06030099 4 PIWA2_FN3C_POL_PRECINCT CHAR(3), 06040099 3 PIWA2_FN3C_FIRE_DIV CHAR(2), 06050099 3 PIWA2_FN3C_FIRE_BAT CHAR(2), 06060099 3 PIWA2_FN3C_FIRE_CO, 06070099 4 PIWA2_FN3C_FIRE_CO_TYPE CHAR(1), 06080099 4 PIWA2_FN3C_FIRE_CO_NUM CHAR(3), 06090099 3 PIWA2_FN3C_SCHL_DIST CHAR(2), 06100099 3 PIWA2_FN3C_DYN_BLK CHAR(3), /*ATOMIC POLYGON*/ 06110099 3 PIWA2_FN3C_ED CHAR(3), 06120099 3 PIWA2_FN3C_AD CHAR(2), 06130099 3 PIWA2_FN3C_POLICE_PAT_BORO CHAR(2), 06140099 3 FILLER_1480 CHAR(1), 06150099 3 PIWA2_FN3C_BORO CHAR(1), 06160099 3 PIWA2_FN3C_1990_CENS_TRCT CHAR(6), 06170099 3 PIWA2_FN3C_2010_CENSUS_TRACT CHAR(6), 06180099 3 PIWA2_FN3C_2010_CENSUS_BLOCK CHAR(4), 06190099 3 PIWA2_FN3C_2010_CENSUS_BLK_SF CHAR(1), /*NOT IMPLEMENTED*/ 06200099 3 PIWA2_FN3C_2000_CENS_TRACT CHAR(6), 06210099 3 PIWA2_FN3C_2000_CENS_BLOCK CHAR(4), 06220099 3 PIWA2_FN3C_2000_CENS_BLK_SUF CHAR(1), 06230099 3 FILLER_1490 CHAR(7), 06240099 /** 3 PIWA2_FN3C_BLOCKFACE_ID *V16.1* CHAR(7) **/ 06250099 3 PIWA2_FN3C_NTA CHAR(4), /*NEIGHBORHOOD */ 06260099 /*TABULATION AREA */ 06270099 3 FILLER_1500 CHAR(8), 06280099 2 PIWA2_FN3C_SEGAUX, 06290099 3 PIWA2_FN3C_SEGAUX_FILL CHAR(6), 06300099 3 PIWA2_FN3C_SEGAUX_CTR CHAR(4), 06310099 3 PIWA2_FN3C_SEGAUX_SEGS(70) CHAR(7); 06320099 06330099 DCL PIWA2_FN3C_COMDIST CHAR(3) 06340099 BASED(ADDR(PIWA2_FN3C_COM_DIST)); 06350099 DCL PIWA2_FN3C_POLDIST CHAR(4) 06360099 BASED(ADDR(PIWA2_FN3C_POLICE_DIST)); 06370099 06380099 /*******************************************************************/ 06390099 /******* FOR: FUNCTION 3CX (EXTENDED) **************************/ 06400099 DCL 06410099 1 PIWA2_FUNCTION3CX BASED(PP2), 06420099 2 PIWA2_3CX_ACCESS_KEY CHAR(21), 06430099 2 PIWA2_3CX_DUP_KEY_FLAG CHAR(1),/*(OR CONT PARITY)*/ 06440099 2 PIWA2_3CX_LOCATION_STATUS CHAR(1), 06450099 2 PIWA2_3CX_COUNTY_BOUNDARY CHAR(1), 06460099 2 PIWA2_3CX_PREF_LGC1 CHAR(2), 06470099 2 PIWA2_3CX_PREF_LGC2 CHAR(2), 06480099 2 PIWA2_3CX_PREF_LGC3 CHAR(2), 06490099 2 PIWA2_3CX_NUM_X_ST_LOW_END CHAR(1), 06500099 2 PIWA2_3CX_LOW_B5SC(5) CHAR(6), 06510099 2 PIWA2_3CX_NUM_X_ST_HI_END CHAR(1), 06520099 2 PIWA2_3CX_HI_B5SC(5) CHAR(6), 06530099 2 PIWA2_3CX_REVERSAL_FLAG CHAR(1), 06540099 2 PIWA2_3CX_LIONKEY, 06550099 3 PIWA2_3CX_LION_BORO CHAR(1), 06560099 3 PIWA2_3CX_LION_FACECODE CHAR(4), 06570099 3 PIWA2_3CX_LION_SEQ CHAR(5), 06580099 2 PIWA2_3CX_GENREC_FLAG CHAR(1), 06590099 2 PIWA2_3CX_SEG_LEN CHAR(5), 06600099 2 PIWA2_3CX_SEG_SLOPE CHAR(3), 06610099 2 PIWA2_3CX_SEG_ORIENT CHAR(1), 06620099 2 PIWA2_3CX_MARBLE_RIKERS_FLAG CHAR(1), 06630099 2 PIWA2_3CX_FROM_TO_NODES, 06640099 3 PIWA2_3CX_FROM_NODE CHAR(7), 06650099 3 PIWA2_3CX_TO_NODE CHAR(7), 06660099 2 PIWA2_3CX_SANIT_SNOW_PRIORITY CHAR(1), /*SANITATION STRT */ 06670099 /*SNOW PRIORITY */ 06680099 2 FILLER3CX_1200 CHAR(4), 06690099 2 PIWA2_3CX_SEGMENT_ID CHAR(7), 06700099 2 PIWA2_3CX_DOT_SLA CHAR(1), 06710099 2 PIWA2_3CX_SIDE_OF_STR CHAR(1), 06720099 2 PIWA2_3CX_CURVE_FLAG CHAR(1), 06730099 2 PIWA2_3CX_FEATURE_TYPE CHAR(1), 06740099 2 PIWA2_3CX_SEGMENT_TYPE CHAR(1), 06750099 2 PIWA2_3CX_COINCIDENT_SEG_CTR CHAR(1), 06760099 2 FILLER3CX_1300 CHAR(4), 06770099 2 PIWA2_3CX_BLOCKFACE_INFO, 06780099 3 PIWA2_3CX_COM_DIST, 06790099 4 PIWA2_3CX_COM_DIST_BORO CHAR(1), 06800099 4 PIWA2_3CX_COM_DIST_NUM CHAR(2), 06810099 3 PIWA2_3CX_LOW_HOUSENUM CHAR(16),/*DISPLAY FORMAT*/ 06820099 3 PIWA2_3CX_HI_HOUSENUM CHAR(16),/*DISPLAY FORMAT*/ 06830099 3 PIWA2_3CX_LOW_HOUSENUM2 CHAR(16),/*DISPLAY FORMAT*/ 06840099 3 PIWA2_3CX_HI_HOUSENUM2 CHAR(16),/*DISPLAY FORMAT*/ 06850099 3 FILLER3CX_1400 CHAR(1), /* FOR GSS USE */ 06860099 3 PIWA2_3CX_ZIP CHAR(5), 06870099 3 PIWA2_3CX_HEALTH_AREA CHAR(4), /*HEALTH AREA*/ 06880099 3 PIWA2_3CX_POLICE_DIST, 06890099 4 PIWA2_3CX_POL_PAT_BORO_CMD CHAR(1), 06900099 4 PIWA2_3CX_POL_PRECINCT CHAR(3), 06910099 3 PIWA2_3CX_FIRE_DIV CHAR(2), 06920099 3 PIWA2_3CX_FIRE_BAT CHAR(2), 06930099 3 PIWA2_3CX_FIRE_CO, 06940099 4 PIWA2_3CX_FIRE_CO_TYPE CHAR(1), 06950099 4 PIWA2_3CX_FIRE_CO_NUM CHAR(3), 06960099 3 PIWA2_3CX_SCHL_DIST CHAR(2), 06970099 3 PIWA2_3CX_DYN_BLK CHAR(3), /*ATOMIC POLYGON*/ 06980099 3 PIWA2_3CX_ED CHAR(3), 06990099 3 PIWA2_3CX_AD CHAR(2), 07000099 3 PIWA2_3CX_POLICE_PAT_BORO CHAR(2), 07010099 3 FILLER3CX_1480 CHAR(1), 07020099 3 PIWA2_3CX_BORO CHAR(1), 07030099 3 PIWA2_3CX_1990_CENS_TRCT CHAR(6), 07040099 3 PIWA2_3CX_2010_CENSUS_TRACT CHAR(6), 07050099 3 PIWA2_3CX_2010_CENSUS_BLOCK CHAR(4), 07060099 3 PIWA2_3CX_2010_CENSUS_BLK_SF CHAR(1), /*NOT IMPLEMENTED*/ 07070099 3 PIWA2_3CX_2000_CENS_TRACT CHAR(6), 07080099 3 PIWA2_3CX_2000_CENS_BLOCK CHAR(4), 07090099 3 PIWA2_3CX_2000_CENS_BLK_S CHAR(1), 07100099 3 FILLER3CX_1490 CHAR(7), 07110099 /** 3 PIWA2_3CX_BLOCKFACE_ID *V16.1* CHAR(7) **/ 07120099 3 PIWA2_3CX_NTA CHAR(4), /*NEIGHBORHOOD */ 07130099 /*TABULATION AREA */ 07140099 3 FILLER3CX_1500 CHAR(8), 07150099 07160099 2 PIWA2_3CX_LGCS CHAR(8), 07170099 2 PIWA2_3CX_LGCS_FROM CHAR(8), 07180099 2 PIWA2_3CX_LGCS_TO CHAR(8), 07190099 2 PIWA2_3CX_L_HEALTH_CTR_DIST CHAR(2), /*HEALTH CENTER*/ 07200099 2 PIWA2_3CX_R_HEALTH_CTR_DIST CHAR(2), /*HEALTH CENTER*/ 07210099 2 PIWA2_3CX_FILL1550 CHAR(1), 07220099 2 PIWA2_3CX_TRAFFIC_DIRECTN CHAR(1), 07230099 2 PIWA2_3CX_ROADWAY_TYPE CHAR(2), 07240099 2 PIWA2_3CX_PHYSICAL_ID CHAR(7), 07250099 2 PIWA2_3CX_GENERIC_ID CHAR(7), 07260099 2 PIWA2_3CX_INTP_ID CHAR(7), /*INTERNAL USE*/ 07270099 2 PIWA2_3CX_INTF_ID CHAR(7), /*INTERNAL USE*/ 07280099 2 PIWA2_3CX_STREET_STATUS CHAR(1), 07290099 2 PIWA2_3CX_STREET_WIDTH CHAR(3), 07300099 2 PIWA2_3CX_STREET_WIDTH_IRREG CHAR(1), 07310099 2 PIWA2_3CX_BIKE_LANE CHAR(1), 07320099 2 PIWA2_3CX_FED_CLASS_CODE CHAR(2), 07330099 2 PIWA2_3CX_ROW_TYPE CHAR(1), 07340099 2 PIWA2_3CX_LGC_LIST CHAR(10), 07350099 2 PIWA2_3CX_LEGACY_ID CHAR(7), 07360099 2 PIWA2_3CX_NTA_NAME CHAR(75), 07370099 2 PIWA2_3CX_FROM_XCOORD CHAR(7), 07380099 2 PIWA2_3CX_FROM_YCOORD CHAR(7), 07390099 2 PIWA2_3CX_TO_XCOORD CHAR(7), 07400099 2 PIWA2_3CX_TO_YCOORD CHAR(7), 07410099 2 PIWA2_3CX_FROM_LATITUDE CHAR(9), 07420099 2 PIWA2_3CX_FROM_LONGITUDE CHAR(11), 07430099 2 PIWA2_3CX_TO_LATITUDE CHAR(9), 07440099 2 PIWA2_3CX_TO_LONGITUDE CHAR(11), 07450099 2 PIWA2_3CX_BLOCKFACE_ID CHAR(10), 07460099 2 PIWA2_3CX_NBR_TRAVEL_LANES CHAR(2), 07470099 2 PIWA2_3CX_NBR_PARK_LANES CHAR(2), 07480099 2 PIWA2_3CX_NBR_TOTAL_LANES CHAR(2), 07490099 2 PIWA2_3CX_BIKE_LANE_2 CHAR(2), 07491099 2 PIWA2_3CX_STREET_WIDTH_MAX CHAR(3), 07492099 2 PIWA2_3CX_BIKE_TRAFFIC_DIR CHAR(2), 07493099 2 PIWA2_3CX_SPEED_LIMIT CHAR(2), 07494099 2 PIWA2_3CX_PUMA_CODE CHAR(5), 07494199 2 PIWA2_3CX_POLICE_SECTOR CHAR(4), 07494299 2 PIWA2_3CX_FILL1560 CHAR(287), 07494499 /* 2 PIWA2_3CX_FILL1560 ** V18.3 ** CHAR(291) **/ 07495099 /* 2 PIWA2_3CX_FILL1560 ** V18.1 ** CHAR(296) **/ 07500099 /* 2 PIWA2_3CX_FILL1560 ** V17.4 ** CHAR(298) **/ 07500199 /* 2 PIWA2_3CX_FILL1560 ** V17.1 ** CHAR(300) **/ 07501099 /* 2 PIWA2_3CX_FILL1560 ** V16.4 ** CHAR(305) **/ 07502099 /* 2 PIWA2_3CX_FILL1560 ** V16.1 ** CHAR(321) **/ 07510099 /* 2 PIWA2_3CX_FILL1560 ** V15.3 ** CHAR(361) **/ 07520099 2 PIWA2_3CX_SEGAUX, 07530099 3 PIWA2_3CX_SEGAUX_FILL CHAR(6), 07540099 3 PIWA2_3CX_SEGAUX_CTR CHAR(4), 07550099 3 PIWA2_3CX_SEGAUX_SEGS(70) CHAR(7); 07560099 07570099 /*******************************************************************/ 07580099 /******* FOR: FUNCTION 5 *****************************/ 07590099 DCL 07600099 1 PIWA2_FUNCTION5 BASED(PP2), 07610099 2 PIWA2_FN5_ADDR_MATCHING_KEY CHAR(33), 07620099 2 FILLER_1600 CHAR(267); 07630099 07640099 PP2=ADDR(P2PL1); 07650099","title":"P2PL1 COPY File"},{"location":"appendices/appendix14/#p2pl11a-copy-file","text":"/*******************************************************************/ 00000100 /*** THIS IS THE PL/1 STRUCTURE FOR GEOSUPPORT SYSTEM PLATFORM ***/ 00000200 /*** INDEPENDENT REGULAR WORK AREA 2 FOR FUNCTIONS: 1A , BL, ***/ 00000300 /*** AND BN. ***/ 00000400 /*** THESE THREE FUNCTIONS SHARE A SINGLE WORK AREA 2 LAYOUT. ***/ 00000500 /*** ***/ 00000600 /*** COPY FILE - P2PL11A. 10/10/97 ***/ 00000700 /*******************************************************************/ 00000800 00000900 DCL 00001000 1 P2PL11A, 00001100 2 PIWA2_1A_ACCESS_KEY CHAR(21), 00001200 2 PIWA2_1A_CONT_PARITY CHAR(1), /*(OR DUP ADDR IND)*/ 00001300 2 PIWA2_1A_LOW_HOUSENUM CHAR(11), /* SORT FORMAT */ 00001400 2 PIWA2_1A_BBL, 00001500 3 PIWA2_1A_BBL_BORO CHAR(1), 00001600 3 PIWA2_1A_BLOCK CHAR(5), 00001700 3 PIWA2_1A_LOT CHAR(4), 00001800 2 PIWA2_1A_LOT_VER CHAR(1), 00001900 2 PIWA2_1A_SCC CHAR(1), 00002000 2 FILLER_100 CHAR(1), 00002100 2 PIWA2_1A_GENERAL_LOT_INFO, 00002200 3 PIWA2_1A_RPAD_BLDG_CLASS CHAR(2), 00002300 3 PIWA2_1A_CORNER_CODE CHAR(2), 00002400 3 PIWA2_1A_NUM_OF_STRUCTURES CHAR(4), 00002502 3 PIWA2_1A_NUM_OF_BLOCKFACES CHAR(2), 00002600 3 PIWA2_1A_INTERIOR_FLAG CHAR(1), 00002700 3 PIWA2_1A_VACANT_FLAG CHAR(1), 00002800 3 PIWA2_1A_IRREG_LOT_FLAG CHAR(1), 00002900 2 PIWA2_1A_MARBLE_RIKERS_FLAG CHAR(1), 00003000 2 PIWA2_1A_ADDR_LIST_OVFLOW_FLAG CHAR(1), 00003100 2 PIWA2_1A_STROLL_KEY, 00003200 3 PIWA2_1A_STROLL_BORO CHAR(1), 00003300 3 PIWA2_1A_STROLL_5SC CHAR(5), 00003400 3 PIWA2_1A_STROLL_SIDE_OF_STR CHAR(1), /* L, R */ 00003500 3 PIWA2_1A_STROLL_HI_HOUSENUM CHAR(11), /* SORT FORMAT */ 00003600 3 FILLER_200 CHAR(1), 00003700 2 FILLER_300 CHAR(1), /* FOR GSS USE*/ 00003800 2 PIWA2_1A_BIN CHAR(7), 00003900 2 PIWA2_1A_CONDO_FLAG CHAR(1), 00004000 2 FILLER_400 CHAR(1), 00004100 2 PIWA2_1A_RPAD_CONDO_ID_NUM CHAR(4), 00004200 2 PIWA2_1A_CONDO_UNIT_ID_NUM CHAR(7), 00004300 2 PIWA2_1A_CONDO_BILL_BBL CHAR(10), 00004400 2 PIWA2_1A_CONDO_BILL_BBL_VER CHAR(1), 00004500 2 PIWA2_1A_CONDO_BILL_BBL_SCC CHAR(1), 00004600 2 PIWA2_1A_CONDO_LOW_BBL CHAR(10), 00004700 2 PIWA2_1A_CONDO_LOW_BBL_VER CHAR(1), 00004800 2 PIWA2_1A_CONDO_HIGH_BBL CHAR(10), 00004900 2 PIWA2_1A_CONDO_HIGH_BBL_VER CHAR(1), 00005000 2 FILLER_500 CHAR(15), 00005100 2 PIWA2_1A_COOP_NUM CHAR(4), 00005200 2 PIWA2_1A_SANBORN, 00005300 3 PIWA2_1A_SANBORN_BORO CHAR(1), 00005400 3 PIWA2_1A_SANBORN_VOL CHAR(3), 00005500 3 PIWA2_1A_SANBORN_PAGE CHAR(4), 00005600 2 PIWA2_1A_COMMERC_DIST CHAR(5), 00005700 2 PIWA2_1A_DOF_MAP_BORO CHAR(1), 00005803 2 PIWA2_1A_DOF_MAP_SECVOL CHAR(4), 00005902 2 PIWA2_1A_DOF_MAP_PAGE CHAR(4), 00006003 2 RESERVED_DCP CHAR(3), 00006110 2 PIWA2_1A_LATITUDE CHAR(09), 00006210 2 PIWA2_1A_LONGITUDE CHAR(11), 00006310 2 PIWA2_1A_X_COORD CHAR(07), 00006410 2 PIWA2_1A_Y_COORD CHAR(07), 00006510 2 PIWA2_1A_BID CHAR(06), 00006610 2 PIWA2_1A_TPAD_BIN_ST CHAR(01), /*CURRENT STATUS*/ 00006710 2 PIWA2_1A_TPAD_NEW_BIN CHAR(07), /*NEW BIN */ 00006810 2 PIWA2_1A_TPAD_NEW_BIN_ST CHAR(01), /*NEW BIN STATUS*/ 00006910 2 PIWA2_1A_TPAD_CONFLICT CHAR(01), /*CONFLICT FLAG */ 00007010 2 PIWA2_1A_DCP_ZONE_MAP CHAR(03), /*DCP ZONING MAP*/ 00007111 2 FILLER_650 CHAR(06), 00007211 2 FILLER_700 CHAR(8), /* LGC - GSS USE*/ 00007311 2 PIWA2_1A_NUM_OF_ADDR CHAR(4), 00007411 2 PIWA2_1A_ADDR_LIST(21), 00007511 3 PIWA2_1A_LIST_LOW_HOUSENUM CHAR(16), /*DISPLAY FORMAT*/ 00007611 3 PIWA2_1A_LIST_HI_HOUSENUM CHAR(16), /*DISPLAY FORMAT*/ 00007711 3 PIWA2_1A_LIST_BORO CHAR(1), 00007811 3 PIWA2_1A_LIST_5SC CHAR(5), 00007911 3 PIWA2_1A_LIST_LGC CHAR(2), 00008011 3 PIWA2_1A_LIST_BIN CHAR(7), 00008111 3 PIWA2_1A_LIST_SIDE_OF_STR CHAR(1), /* L, R */ 00008211 3 PIWA2_1A_ADDR_TYPE CHAR(1), /* */ 00008311 /* BLANK = NORMAL*/ 00008411 3 PIWA2_1A_TPAD_STATUS CHAR(1), /* 0 - 9 */ 00008511 3 FILLER_800 CHAR(3); 00008611 00008711 DCL PIWA2_1A_SANBORN_BVOLPAGE CHAR(8) 00008811 BASED(ADDR(PIWA2_1A_SANBORN)); 00008911 DCL PIWA2_1A_STROLLKEY CHAR(19) 00009011 BASED(ADDR(PIWA2_1A_STROLL_KEY)); 00010011","title":"P2PL11A COPY File"},{"location":"appendices/appendix14/#p2pl11al-copy-file","text":"/*******************************************************************/ 00000100 /*********************************************************************/00000276 /* */00000376 /*** P2PL1AL ***/00000480 /* ADD NEW 4 BYTE POLICE SECTOR TLV 06/18 V19.2*/00000687 /* ADD NEW 1 BYTE POLICE SERVICE AREA TLV 06/18 V19.2*/00000787 /* ADD NEW 5 BYTE PUMA CODE YNL 12/17 V18.1*/00000886 /*** LAST MODIFIED DECEMBER 2016 ***/00000986 /* ADD NEW 2 BYTE SPEED LIMIT TLV 09/17 V17.4*/00001086 /* ADD NEW 2 BYTE BIKE TRAFFIC DIRECTION YNL 12/16 V17,1*/00001186 /* REPLACED SANIT_RESERVED WITH SANIT_BULK_PICK_UP YNL 10/16 V16.4*/00001286 /* ADD NEW 2 BYTE BIKE LANE AND MAX STR WIDTH YNL 10/16 V16.4*/00001386 /* */00001486 /*********************************************************************/00001586 /*** THIS IS THE PL/1 STRUCTURE FOR GEOSUPPORT SYSTEM PLATFORM ***/ 00001686 /*** INDEPENDENT LONG WORK AREA 2 FOR FUNCTIONS: 1A , AND BL. ***/ 00001786 /*** THESE TWO FUNCTIONS SHARE A SINGLE LONG WORK AREA 2 LAYOUT.***/ 00001886 /*** THIS IS ALSO THE PL/1 STRUCTURE FOR GEOSUPPORT SYSTEM ***/ 00001986 /*** PLATFORM INDEPENDENT EXTENDED WORK AREA 2 FOR ***/ 00002086 /*** FUNCTIONS 1E AND 1A, AND FOR FUNCTION 1B WHICH IS A ***/ 00002186 /*** COMBINATION OF EXTENDED 1/1E AND EXTENDED 1A) ***/ 00002286 /*** ***/ 00002386 /*** LAST MODIFIED OCTOBER 2016 ***/ 00002486 /*** COPY FILE - P2PL11AL. 10/11/2000 ***/ 00002586 /*******************************************************************/ 00002686 00002786 DCL 00002886 1 P2PL11AL, 00002986 2 PIWA2_1AL_ACCESS_KEY CHAR(21), 00003086 2 PIWA2_1AL_CONT_PARITY CHAR(1), /*(OR DUP ADDR IND)*/ 00003186 2 PIWA2_1AL_LOW_HOUSENUM CHAR(11), /* SORT FORMAT */ 00003286 2 PIWA2_1AL_BBL, 00003386 3 PIWA2_1AL_BBL_BORO CHAR(1), 00003486 3 PIWA2_1AL_BLOCK CHAR(5), 00003586 3 PIWA2_1AL_LOT CHAR(4), 00003686 2 PIWA2_1AL_LOT_VER CHAR(1), 00003786 2 PIWA2_1AL_SCC CHAR(1), 00003886 2 FILLER_100 CHAR(1), 00003986 2 PIWA2_1AL_GENERAL_LOT_INFO, 00004086 3 PIWA2_1AL_RPAD_BLDG_CLASS CHAR(2), 00004186 3 PIWA2_1AL_CORNER_CODE CHAR(2), 00004286 3 PIWA2_1AL_NUM_OF_STRUCTURES CHAR(4), 00004386 3 PIWA2_1AL_NUM_OF_BLOCKFACES CHAR(2), 00004486 3 PIWA2_1AL_INTERIOR_FLAG CHAR(1), 00004586 3 PIWA2_1AL_VACANT_FLAG CHAR(1), 00004686 3 PIWA2_1AL_IRREG_LOT_FLAG CHAR(1), 00004786 2 PIWA2_1AL_MARBLE_RIKERS_FLAG CHAR(1), 00004886 2 PIWA2_1AL_ADDR_LIST_OVFLOW_FLAG CHAR(1), 00004986 2 PIWA2_1AL_STROLL_KEY, 00005086 3 PIWA2_1AL_STROLL_BORO CHAR(1), 00005186 3 PIWA2_1AL_STROLL_5SC CHAR(5), 00005286 3 PIWA2_1AL_STROLL_SIDE_OF_STR CHAR(1), /* L, R */ 00005386 3 PIWA2_1AL_STROLL_HI_HOUSENUM CHAR(11), /* SORT FORMAT */ 00005486 3 FILLER_200 CHAR(1), 00005586 2 FILLER_300 CHAR(1), /* FOR GSS USE*/ 00005686 2 PIWA2_1AL_BIN CHAR(7), 00005786 2 PIWA2_1AL_CONDO_FLAG CHAR(1), 00005886 2 FILLER_400 CHAR(1), 00005986 2 PIWA2_1AL_RPAD_CONDO_ID_NUM CHAR(4), 00006086 2 PIWA2_1AL_CONDO_UNIT_ID_NUM CHAR(7), 00006186 2 PIWA2_1AL_CONDO_BILL_BBL CHAR(10), 00006286 2 PIWA2_1AL_CONDO_BILL_BBL_VER CHAR(1), 00006386 2 PIWA2_1AL_CONDO_BILL_BBL_SCC CHAR(1), 00006486 2 PIWA2_1AL_CONDO_LOW_BBL CHAR(10), 00006586 2 PIWA2_1AL_CONDO_LOW_BBL_VER CHAR(1), 00006686 2 PIWA2_1AL_CONDO_HIGH_BBL CHAR(10), 00006786 2 PIWA2_1AL_CONDO_HIGH_BBL_VER CHAR(1), 00006886 2 FILLER_500 CHAR(15), 00006986 2 PIWA2_1AL_COOP_NUM CHAR(4), 00007086 2 PIWA2_1AL_SANBORN, 00007186 3 PIWA2_1AL_SANBORN_BORO CHAR(1), 00007286 3 PIWA2_1AL_SANBORN_VOL CHAR(3), 00007386 3 PIWA2_1AL_SANBORN_PAGE CHAR(4), 00007486 2 PIWA2_1AL_COMMERC_DIST CHAR(5), 00007586 2 PIWA2_1AL_DOF_MAP_BORO CHAR(1), 00007686 2 PIWA2_1AL_DOF_MAP_SECVOL CHAR(4), 00007786 2 PIWA2_1AL_DOF_MAP_PAGE CHAR(4), 00007886 2 FILLER_600 CHAR(3), 00007986 2 PIWA2_1AL_LATITUDE CHAR(9), 00008086 2 PIWA2_1AL_LONGITUDE CHAR(11), 00008186 2 PIWA2_1AL_X_COORD CHAR(07), 00008286 2 PIWA2_1AL_Y_COORD CHAR(07), 00008386 2 PIWA2_1AL_BID CHAR(06), 00008486 2 PIWA2_1AL_TPAD_BIN_ST CHAR(01), /*CURRENT STATUS*/ 00008586 2 PIWA2_1AL_TPAD_NEW_BIN CHAR(07), /*NEW BIN */ 00008686 2 PIWA2_1AL_TPAD_NEW_BIN_ST CHAR(01), /*NEW BIN STATUS*/ 00008786 2 PIWA2_1AL_TPAD_CONFLICT CHAR(01), /*CONFLICT FLAG */ 00008886 2 PIWA2_1AL_DCP_ZONE_MAP CHAR(03), /*DCP ZONING MAP*/ 00008986 2 FILLER_650 CHAR(06), 00009086 2 FILLER_700 CHAR(8), /*LGC -GSS USE*/ 00009186 2 PIWA2_1AL_NUM_OF_BINS CHAR(4), 00009286 2 PIWA2_1AL_BINS(2500) CHAR(7); 00009386 00009486 DCL 1 PIWA2_1AL_TPAD_BINLIST BASED(ADDR(PIWA2_1AL_BINS)), 00009586 2 PIWA2_1AL_TPAD_BINS(2187), 00009686 3 PIWA2_1AL_TPAD_BINS_BIN CHAR (7), 00009786 3 PIWA2_1AL_TPAD_BINS_STAT CHAR (1), 00009886 2 PIWA2_1AL_TPAD_FILL CHAR (4); 00009986 00010086 DCL PIWA2_1AL_SANBORN_BVOLPAGE CHAR(8) 00010186 BASED(ADDR(PIWA2_1AL_SANBORN)); 00010286 DCL PIWA2_1AL_STROLLKEY CHAR(19) 00010386 BASED(ADDR(PIWA2_1AL_STROLL_KEY)); 00010486 00010586 00010686 DCL 1 PIWA2_1EX BASED(ADDR(P2PL11AL)), 00010786 00010886 /*******************************************************************/ 00010986 /*** WORK AREA 2 FOR FUNCTION 1/1E EXTENDED ***/ 00011086 /*** ***/ 00011186 /*******************************************************************/ 00011286 /*******************************************************************/ 00011386 00011486 /*******************************************************************/ 00011586 /*** ***/ 00011686 /*** THE FOLLOWING FIELDS ARE FROM FUNCTION 1/1E ***/ 00011786 /*******************************************************************/ 00011886 2 PIWA2_1EX_ACCESS_KEY CHAR(21), 00011986 2 PIWA2_1EX_CONT_PARITY CHAR(1),/*(OR DUP ADDR IND)*/ 00012086 2 PIWA2_1EX_LOW_HOUSENUM CHAR(11),/* SORT FORMAT */ 00012186 2 PIWA2_1EX_HI_HOUSENUM CHAR(11),/* SORT FORMAT */ 00012286 2 PIWA2_1EX_DCP_PREF_LGC CHAR(2), 00012386 2 PIWA2_1EX_NUM_X_ST_LOW_END CHAR(1), 00012486 2 PIWA2_1EX_LOW_B5SC(5) CHAR(6), 00012586 2 PIWA2_1EX_NUM_X_ST_HI_END CHAR(1), 00012686 2 PIWA2_1EX_HI_B5SC(5) CHAR(6), 00012786 2 PIWA2_1EX_LIONKEY, 00012886 3 PIWA2_1EX_LION_BORO CHAR(1), 00012986 3 PIWA2_1EX_LION_FACECODE CHAR(4), 00013086 3 PIWA2_1EX_LION_SEQ CHAR(5), 00013186 2 PIWA2_1EX_SPECIAL_ADDR_FLAG CHAR(1), 00013286 2 PIWA2_1EX_SIDE_OF_STR CHAR(1), 00013386 2 PIWA2_1EX_SEG_LEN CHAR(5), 00013486 2 PIWA2_1EX_XCOORD CHAR(7), 00013586 2 PIWA2_1EX_YCOORD CHAR(7), 00013686 2 FILLER_1EX_100 CHAR(7), /* FOR ZCOORD */ 00013786 2 FILLER_1EX_200 CHAR(1), /* FOR GSS USE*/ 00013886 2 PIWA2_1EX_MARBLE_RIKERS_FLAG CHAR(1), 00013986 2 PIWA2_1EX_DOT_SLA CHAR(1), 00014086 2 PIWA2_1EX_COM_DIST, 00014186 3 PIWA2_1EX_COM_DIST_BORO CHAR(1), 00014286 3 PIWA2_1EX_COM_DIST_NUM CHAR(2), 00014386 2 PIWA2_1EX_ZIP CHAR(5), 00014486 00014586 2 PIWA2_1EX_ELECT_DIST CHAR(3), /*****************/ 00014686 2 PIWA2_1EX_ASSEM_DIST CHAR(2), /* FUNCTION 1E */ 00014786 2 PIWA2_1EX_SPLIT_ED_FLAG CHAR(1), /* FIELDS */ 00014886 2 PIWA2_1EX_CONG_DIST CHAR(2), /* */ 00014986 2 PIWA2_1EX_SENATE_DIST CHAR(2), /* */ 00015086 2 PIWA2_1EX_COURT_DIST CHAR(2), /* */ 00015186 2 PIWA2_1EX_COUNCIL_DIST CHAR(2), /*****************/ 00015286 00015386 2 PIWA2_1EX_HEALTH_CENTER_DIST CHAR(2), /*HEALTH CENTER*/ 00015486 2 PIWA2_1EX_HEALTH_AREA CHAR(4), /*HEALTH AREA*/ 00015586 2 PIWA2_1EX_SANI_DIST, 00015686 3 PIWA2_1EX_SANI_DIST_BORO CHAR(1), 00015786 3 PIWA2_1EX_SANI_DIST_NUM CHAR(2), 00015886 2 PIWA2_1EX_SANI_SUBSEC CHAR(2), 00015986 2 PIWA2_1EX_SANI_REG CHAR(5), 00016086 2 PIWA2_1EX_SANI_REC CHAR(3), 00016186 2 PIWA2_1EX_POLICE_DIST, 00016286 3 PIWA2_1EX_POL_PAT_BORO_CMD CHAR(1), 00016386 3 PIWA2_1EX_POL_PRECINCT CHAR(3), 00016486 2 PIWA2_1EX_FIRE_DIV CHAR(2), 00016586 2 PIWA2_1EX_FIRE_BAT CHAR(2), 00016686 2 PIWA2_1EX_FIRE_CO, 00016786 3 PIWA2_1EX_FIRE_CO_TYPE CHAR(1), 00016886 3 PIWA2_1EX_FIRE_CO_NUM CHAR(3), 00016986 2 PIWA2_1EX_FILL_DIST_SPLT_FLAG CHAR(1), 00017086 2 PIWA2_1EX_SCHL_DIST CHAR(2), 00017186 2 PIWA2_1EX_DYN_BLK CHAR(3), /*ATOMIC POLYGON*/ 00017286 2 PIWA2_1EX_POLICE_PAT_BORO CHAR(2), 00017386 2 PIWA2_1EX_FEATURE_TYPE CHAR(1), 00017486 2 PIWA2_1EX_SEGMENT_TYPE CHAR(1), 00017586 2 PIWA2_1EX_ALX CHAR(1), 00017686 2 PIWA2_1EX_COINCIDENT_SEG_CTR CHAR(1), 00017786 2 FILLER_1EX_290 CHAR(2), 00017886 2 PIWA2_1EX_CENS_TRCT_BORO CHAR(1), /*USED FOR GRIDGEN*/ 00017986 2 PIWA2_1EX_1990_CENS_TRCT CHAR(6), 00018086 2 PIWA2_1EX_2010_CENSUS_TRACT CHAR(6), 00018186 2 PIWA2_1EX_2010_CENSUS_BLOCK CHAR(4), 00018286 2 PIWA2_1EX_2010_CENSUS_BLK_SF CHAR(1), /*NOT IMPLEMENTED*/ 00018386 2 PIWA2_1EX_2000_CENS_TRACT CHAR(6), 00018486 2 PIWA2_1EX_2000_CENS_BLOCK CHAR(4), 00018586 2 PIWA2_1EX_2000_CENS_BLK_S CHAR(1), 00018686 2 PIWA2_1EX_NTA CHAR(4), /*NEIGHBORHOOD */ 00018786 /*TABULATION AREA */ 00018886 2 PIWA2_1EX_SANIT_SNOW_PRIORITY CHAR(1), /*SANITATION STRT */ 00018986 /*SNOW PRIORITY */ 00019086 2 PIWA2_1EX_SANIT_ORGANICS CHAR(5), /*SANITATION */ 00019186 /*ORGANIC PICK UP */ 00019286 2 PIWA2_1EX_SANIT_BULK_PICK_UP CHAR(5), /*SANITATION BULK */ 00019386 /* 2 PIWA2_1EX_SANIT_RESERVED *V16.4*CHAR(5), *SANITATION RESERVE*/ 00019486 2 PIWA2_1EX_HURRICANE_ZONE CHAR(2), /*OEM HURRICANE */ 00019586 /*EVACUATION ZONE */ 00019686 2 FILLER_1EX_400 CHAR(11), 00019786 2 PIWA2_1EX_UHNS CHAR(11), 00019886 2 PIWA2_1EX_REAL_B7SC CHAR(8), 00019986 2 PIWA2_1EX_SEGMENT_ID CHAR(7), 00020086 2 PIWA2_1EX_CURVE_FLAG CHAR(1), 00020186 2 PIWA2_1EX_LGCS CHAR(8), 00020286 2 PIWA2_1EX_BOE_PTR CHAR(1), 00020386 2 PIWA2_1EX_AZIMUTH CHAR(3), 00020486 2 PIWA2_1EX_ORIENT CHAR(1), 00020586 2 PIWA2_1EX_X_LOW CHAR(7), 00020686 2 PIWA2_1EX_Y_LOW CHAR(7), 00020786 2 PIWA2_1EX_Z_LOW CHAR(7), /*NOT IMPLEMENTED*/ 00020886 2 PIWA2_1EX_X_HI CHAR(7), 00020986 2 PIWA2_1EX_Y_HI CHAR(7), 00021086 2 PIWA2_1EX_Z_HI CHAR(7), /*NOT IMPLEMENTED*/ 00021186 /* SPATIAL COORDINATES OF CENTER OF CURVATURE */ 00021286 2 PIWA2_1EX_X_CC CHAR(7), 00021386 2 PIWA2_1EX_Y_CC CHAR(7), 00021486 2 PIWA2_1EX_Z_CC CHAR(7), /*NOT IMPLEMENTED*/ 00021586 2 PIWA2_1EX_RADIUS CHAR(7), 00021686 2 PIWA2_1EX_SECANT CHAR(1), 00021786 2 PIWA2_1EX_ANGLE_FROM CHAR(5), 00021886 2 PIWA2_1EX_ANGLE_TO CHAR(5), 00021986 2 PIWA2_1EX_NODE_FROM CHAR(7), 00022086 2 PIWA2_1EX_NODE_TO CHAR(7), 00022186 2 PIWA2_1EX_VANITY_LION CHAR(10), 00022286 2 PIWA2_1EX_SOS CHAR(1), 00022386 2 PIWA2_1EX_SPLIT_LOHSN CHAR(11), 00022486 2 PIWA2_1EX_TD CHAR(1), 00022586 2 PIWA2_1EX_TR CHAR(10), 00022686 2 PIWA2_1EX_CURVE_FRACTION CHAR(3), 00022786 2 PIWA2_1EX_ROADWAY_TYPE CHAR(2), 00022886 2 PIWA2_1EX_PHYSICAL_ID CHAR(7), 00022986 2 PIWA2_1EX_GENERIC_ID CHAR(7), 00023086 2 PIWA2_1EX_INTP_ID CHAR(7), /*INTERNAL USE*/ 00023186 2 PIWA2_1EX_INTF_ID CHAR(7), /*INTERNAL USE*/ 00023286 2 PIWA2_1EX_BIKE_LANE_2 CHAR(2), 00023386 2 PIWA2_1EX_BIKE_TRAFFIC_DIR CHAR(2), 00023486 2 PIWA2_1EX_FILL450 CHAR(3), 00023586 /* 2 PIWA2_1EX_FILL450 * V17.1 * CHAR(5), **/ 00023686 /* 2 PIWA2_1EX_FILL450 * V16.4 * CHAR(7), **/ 00023786 /* 2 PIWA2_1EX_BLOCKFACE_ID * V16.1* CHAR(7), **/ 00023886 2 PIWA2_1EX_STREET_STATUS CHAR(1), 00023986 2 PIWA2_1EX_STREET_WIDTH CHAR(3), 00024086 2 PIWA2_1EX_STREET_WIDTH_IRR CHAR(1), 00024186 2 PIWA2_1EX_BIKE_LANE CHAR(1), 00024286 2 PIWA2_1EX_FED_CLASS_CODE CHAR(2), 00024386 2 PIWA2_1EX_ROW_TYPE CHAR(1), 00024486 2 PIWA2_1EX_LGC_LIST_2 CHAR(10), 00024586 2 PIWA2_1EX_LEGACY_SEG_ID CHAR(7), 00024686 2 PIWA2_1EX_LGC_LIST_FROM_1 CHAR(10), 00024786 2 PIWA2_1EX_LGC_LIST_TO_1 CHAR(10), 00024886 2 PIWA2_1EX_LGC_LIST_FROM_2 CHAR(10), 00024986 2 PIWA2_1EX_LGC_LIST_TO_2 CHAR(10), 00025086 2 PIWA2_1EX_NOCROSS_FLG CHAR(1), 00025186 2 PIWA2_1EX_IND_SEG_LEN CHAR(5), 00025286 2 PIWA2_1EX_NTA_NAME CHAR(75), 00025386 2 PIWA2_1EX_USPS_CITY_NAME CHAR(25), 00025486 2 PIWA2_1EX_LATITUDE CHAR(9), 00025586 2 PIWA2_1EX_LONGITUDE CHAR(11), 00025686 2 PIWA2_1EX_SEG_FROM_NODE CHAR(7), 00025786 2 PIWA2_1EX_SEG_TO_NODE CHAR(7), 00025886 2 PIWA2_1EX_SEG_FROM_XYZ CHAR(21), 00025986 2 PIWA2_1EX_SEG_TO_XYZ CHAR(21), 00026086 2 PIWA2_1EX_BLOCKFACE_ID CHAR(10), 00026186 2 PIWA2_1EX_NBR_TRAVEL_LANES CHAR(2), 00026286 2 PIWA2_1EX_NBR_PARK_LANES CHAR(2), 00026386 2 PIWA2_1EX_NBR_TOTAL_LANES CHAR(2), 00026486 2 PIWA2_1EX_STR_WIDTH_MAX CHAR(3), 00026586 2 PIWA2_1EX_SPEED_LIMIT CHAR(2), 00026686 2 PIWA2_1EX_PUMA_CODE CHAR(5), 00026786 2 PIWA2_1EX_POLICE_SECTOR CHAR(4), 00026886 2 PIWA2_1EX_POLICE_SRVC_AREA CHAR(1), 00026986 2 PIWA2_1EX_FILL500 CHAR(240), 00027086 /* 2 PIWA2_1EX_FILL500 ** V18.3 ** CHAR(245),**/ 00027186 /* 2 PIWA2_1EX_FILL500 ** V18.1 ** CHAR(250),**/ 00027286 /* 2 PIWA2_1EX_FILL500 ** V17.4 ** CHAR(252),**/ 00027386 /* 2 PIWA2_1EX_FILL500 ** V16.4 ** CHAR(255) **/ 00027486 /* 2 PIWA2_1EX_FILL500 ** V16.1 ** CHAR(271) **/ 00027586 /* 2 PIWA2_1EX_FILL500 ** V15.3 ** CHAR(327) **/ 00027686 /*******************************************************************/ 00027786 /*** ***/ 00027886 /*** THE FOLLOWING FIELDS ARE AN ADDITION TO 1E ***/ 00027986 /*******************************************************************/ 00028086 2 PIWA2_1EX_REASON_CODE CHAR(1), 00028186 2 PIWA2_1EX_REASON_CODE_QUAL CHAR(1), 00028286 2 PIWA2_1EX_WARN_CODE CHAR(2), 00028386 2 PIWA2_1EX_RETURN_CODE CHAR(2), 00028486 2 PIWA2_1EX_NUM_X_STS_LO_END CHAR(1), 00028586 2 PIWA2_1EX_LO_B7SC(5) CHAR(8), 00028686 2 PIWA2_1EX_NUM_X_STS_HI_END CHAR(1), 00028786 2 PIWA2_1EX_HI_B7SC(5) CHAR(8), 00028886 2 PIWA2_1EX_LO_ST_NAME(5) CHAR(32), 00028986 2 PIWA2_1EX_HI_ST_NAME(5) CHAR(32), 00029086 2 PIWA2_1EX_BOE_B7SC CHAR(8), 00029186 2 PIWA2_1EX_BOE_ST_NAME CHAR(32), 00029286 2 PIWA2_1EX_FILL600 CHAR(52); 00029386 00029486 00029586 00029686 DCL 1 PIWA2_FN1AX BASED(ADDR(P2PL11AL)), 00029786 /*******************************************************************/ 00029886 /*** WORK AREA 2 FOR FUNCTION 1A EXTENDED ***/ 00029986 /*** ***/ 00030086 /*******************************************************************/ 00030186 00030286 00030386 2 PIWA2_1AX_ACCESS_KEY CHAR(21), 00030486 2 PIWA2_1AX_CONT_PARITY CHAR(1), /*(OR DUP ADDR IND)*/ 00030586 2 PIWA2_1AX_LOW_HOUSENUM CHAR(11), /* SORT FORMAT */ 00030686 2 PIWA2_1AX_BBL, 00030786 3 PIWA2_1AX_BBL_BORO CHAR(1), 00030886 3 PIWA2_1AX_BLOCK CHAR(5), 00030986 3 PIWA2_1AX_LOT CHAR(4), 00031086 2 PIWA2_1AX_LOT_VER CHAR(1), 00031186 2 PIWA2_1AX_SCC CHAR(1), 00031286 2 FILLER_1AX1 CHAR(1), 00031386 2 PIWA2_1AX_GENERAL_LOT_INFO, 00031486 3 PIWA2_1AX_RPAD_BLDG_CLASS CHAR(2), 00031586 3 PIWA2_1AX_CORNER_CODE CHAR(2), 00031686 3 PIWA2_1AX_NUM_OF_STRUCTURES CHAR(4), 00031786 3 PIWA2_1AX_NUM_OF_BLOCKFACES CHAR(2), 00031886 3 PIWA2_1AX_INTERIOR_FLAG CHAR(1), 00031986 3 PIWA2_1AX_VACANT_FLAG CHAR(1), 00032086 3 PIWA2_1AX_IRREG_LOT_FLAG CHAR(1), 00032186 2 PIWA2_1AX_MARBLE_RIKERS_FLAG CHAR(1), 00032286 2 PIWA2_1AX_ADDR_LIST_OVFLOW_FLAG CHAR(1), 00032386 2 PIWA2_1AX_STROLL_KEY, 00032486 3 PIWA2_1AX_STROLL_BORO CHAR(1), 00032586 3 PIWA2_1AX_STROLL_5SC CHAR(5), 00032686 3 PIWA2_1AX_STROLL_SIDE_OF_STR CHAR(1), /* L, R */ 00032786 3 PIWA2_1AX_STROLL_HI_HOUSENUM CHAR(11), /* SORT FORMAT */ 00032886 3 FILLER_1AX2 CHAR(1), 00032986 2 FILLER_1AX3 CHAR(1), /* FOR GSS USE*/ 00033086 2 PIWA2_1AX_BIN CHAR(7), 00033186 2 PIWA2_1AX_CONDO_FLAG CHAR(1), 00033286 2 FILLER_1AX4 CHAR(1), 00033386 2 PIWA2_1AX_RPAD_CONDO_ID_NUM CHAR(4), 00033486 2 PIWA2_1AX_CONDO_UNIT_ID_NUM CHAR(7), 00033586 2 PIWA2_1AX_CONDO_BILL_BBL CHAR(10), 00033686 2 PIWA2_1AX_CONDO_BILL_BBL_VER CHAR(1), 00033786 2 PIWA2_1AX_CONDO_BILL_BBL_SCC CHAR(1), 00033886 2 PIWA2_1AX_CONDO_LOW_BBL CHAR(10), 00033986 2 PIWA2_1AX_CONDO_LOW_BBL_VER CHAR(1), 00034086 2 PIWA2_1AX_CONDO_HIGH_BBL CHAR(10), 00034186 2 PIWA2_1AX_CONDO_HIGH_BBL_VER CHAR(1), 00034286 2 FILLER_1AX5 CHAR(15), 00034386 2 PIWA2_1AX_COOP_NUM CHAR(4), 00034486 2 PIWA2_1AX_SANBORN, 00034586 3 PIWA2_1AX_SANBORN_BORO CHAR(1), 00034686 3 PIWA2_1AX_SANBORN_VOL CHAR(3), 00034786 3 PIWA2_1AX_SANBORN_PAGE CHAR(4), 00034886 2 PIWA2_1AX_COMMERC_DIST CHAR(5), 00034986 2 PIWA2_1AX_DOF_MAP_BORO CHAR(1), 00035086 2 PIWA2_1AX_DOF_MAP_SECVOL CHAR(4), 00035186 2 PIWA2_1AX_DOF_MAP_PAGE CHAR(4), 00035286 2 PIWA2_1AX_RESERVED CHAR(03), 00035386 2 PIWA2_1AX_LATITUDE CHAR(09), 00035486 2 PIWA2_1AX_LONGITUDE CHAR(11), 00035586 2 PIWA2_1AX_X_COORD CHAR(07), 00035686 2 PIWA2_1AX_Y_COORD CHAR(07), 00035786 2 PIWA2_1AX_BID CHAR(06), 00035886 2 PIWA2_1AX_TPAD_BIN_ST CHAR(01), /*CURRENT STATUS*/ 00035986 2 PIWA2_1AX_TPAD_NEW_BIN CHAR(07), /*NEW BIN */ 00036086 2 PIWA2_1AX_TPAD_NEW_BIN_ST CHAR(01), /*NEW BIN STATUS*/ 00036186 2 PIWA2_1AX_TPAD_CONFLICT CHAR(01), /*CONFLICT FLAG */ 00036286 2 PIWA2_1AX_DCP_ZONE_MAP CHAR(03), /*DCP ZONING MAP*/ 00036386 2 FILLER_1AX7 CHAR(06), 00036486 2 FILLER_1AX8 CHAR(8), /* LGC - GSS USE*/ 00036586 2 PIWA2_1AX_REASON_CODE CHAR(01), 00036686 2 PIWA2_1AX_REASON_CODE_QUAL CHAR(01), 00036786 2 PIWA2_1AX_WARN_CODE CHAR(02), 00036886 2 PIWA2_1AX_RETURN_CODE CHAR(02), 00036986 2 FILLER_1AX9 CHAR(108), 00037086 2 PIWA2_1AX_NUM_OF_ADDR CHAR(4), 00037186 2 PIWA2_1AX_ADDR_LIST(21), 00037286 3 PIWA2_1AX_LIST_LOW_HOUSENUM CHAR(16), /*DISPLAY FORMAT*/ 00037386 3 PIWA2_1AX_LIST_HI_HOUSENUM CHAR(16), /*DISPLAY FORMAT*/ 00037486 3 PIWA2_1AX_LIST_BORO CHAR(1), 00037586 3 PIWA2_1AX_LIST_5SC CHAR(5), 00037686 3 PIWA2_1AX_LIST_LGC CHAR(2), 00037786 3 PIWA2_1AX_LIST_BIN CHAR(7), 00037886 3 PIWA2_1AX_LIST_SIDE_OF_STR CHAR(1), /* L, R */ 00037986 3 PIWA2_1AX_ADDR_TYPE CHAR(1), /* */ 00038086 /* BLANK = NORMAL*/ 00038186 3 PIWA2_1AX_TPAD_STATUS CHAR(1), 00038286 3 PIWA2_1AX_ST_NAME CHAR(32), 00038386 3 FILLER_1AX10 CHAR(34); 00038486 00038586 00038686 DCL 1 PIWA2_FN1B BASED(ADDR(P2PL11AL)), 00038786 00038886 /*******************************************************************/ 00038986 /*** WORK AREA 2 FOR FUNCTION 1B ***/ 00039086 /*** ***/ 00039186 /*******************************************************************/ 00039286 2 PIWA2_1B_1_ACCESS_KEY CHAR(21), 00039386 2 PIWA2_1B_1_CONT_PARITY CHAR(1), /*(DUP ADDR IND)*/ 00039486 2 PIWA2_1B_1_LOW_HOUSENUM CHAR(11), /* SORT FORMAT */ 00039586 2 PIWA2_1B_1_HI_HOUSENUM CHAR(11), /* SORT FORMAT */ 00039686 2 PIWA2_1B_1_PREF_LGC CHAR(2), 00039786 2 PIWA2_1B_1_NUM_X_ST_LOW_END CHAR(1), 00039886 2 PIWA2_1B_1_LOW_B5SC(5) CHAR(6), 00039986 2 PIWA2_1B_1_NUM_X_ST_HI_END CHAR(1), 00040086 2 PIWA2_1B_1_HI_B5SC(5) CHAR(6), 00040186 2 PIWA2_1B_1_LIONKEY, 00040286 3 PIWA2_1B_1_LION_BORO CHAR(1), 00040386 3 PIWA2_1B_1_LION_FACECODE CHAR(4), 00040486 3 PIWA2_1B_1_LION_SEQ CHAR(5), 00040586 2 PIWA2_1B_1_SPECIAL_ADDR_FLAG CHAR(1), 00040686 2 PIWA2_1B_1_SIDE_OF_STR CHAR(1), 00040786 2 PIWA2_1B_1_SEG_LEN CHAR(5), 00040886 2 PIWA2_1B_1_XCOORD CHAR(7), 00040986 2 PIWA2_1B_1_YCOORD CHAR(7), 00041086 2 FILLER_1B_1_100 CHAR(7), /* FOR ZCOORD */ 00041186 2 FILLER_1B_1_200 CHAR(1), /* FOR GSS USE*/ 00041286 2 PIWA2_1B_1_MARBLE_RIKERS_FLAG CHAR(1), 00041386 2 PIWA2_1B_1_DOT_SLA CHAR(1), 00041486 2 PIWA2_1B_1_COM_DIST, 00041586 3 PIWA2_1B_1_COM_DIST_BORO CHAR(1), 00041686 3 PIWA2_1B_1_COM_DIST_NUM CHAR(2), 00041786 2 PIWA2_1B_1_ZIP CHAR(5), 00041886 00041986 2 PIWA2_1B_1_ELECT_DIST CHAR(3), /*****************/ 00042086 2 PIWA2_1B_1_ASSEM_DIST CHAR(2), /* FUNCTION 1E */ 00042186 2 PIWA2_1B_1_SPLIT_ED_FLAG CHAR(1), /* FIELDS */ 00042286 2 PIWA2_1B_1_CONG_DIST CHAR(2), /* */ 00042386 2 PIWA2_1B_1_SENATE_DIST CHAR(2), /* */ 00042486 2 PIWA2_1B_1_COURT_DIST CHAR(2), /* */ 00042586 2 PIWA2_1B_1_COUNCIL_DIST CHAR(2), /*****************/ 00042686 00042786 2 PIWA2_1B_1_HEALTH_CENTER_DIST CHAR(2), 00042886 2 PIWA2_1B_1_HEALTH_AREA CHAR(4), 00042986 2 PIWA2_1B_1_SANI_DIST, 00043086 3 PIWA2_1B_1_SANI_DIST_BORO CHAR(1), 00043186 3 PIWA2_1B_1_SANI_DIST_NUM CHAR(2), 00043286 2 PIWA2_1B_1_SANI_SUBSEC CHAR(2), 00043386 2 PIWA2_1B_1_SANI_REG CHAR(5), 00043486 2 PIWA2_1B_1_SANI_REC CHAR(3), 00043586 2 PIWA2_1B_1_POLICE_DIST, 00043686 3 PIWA2_1B_1_POL_PAT_BORO_CMD CHAR(1), 00043786 3 PIWA2_1B_1_POL_PRECINCT CHAR(3), 00043886 2 PIWA2_1B_1_FIRE_DIV CHAR(2), 00043986 2 PIWA2_1B_1_FIRE_BAT CHAR(2), 00044086 2 PIWA2_1B_1_FIRE_CO, 00044186 3 PIWA2_1B_1_FIRE_CO_TYPE CHAR(1), 00044286 3 PIWA2_1B_1_FIRE_CO_NUM CHAR(3), 00044386 2 PIWA2_1B_1_FILL_DIST_SPLIT_FLAG CHAR(1), 00044486 2 PIWA2_1B_1_SCHL_DIST CHAR(2), 00044586 2 PIWA2_1B_1_DYN_BLK CHAR(3), /*ATOMIC POLYGON*/ 00044686 2 PIWA2_1B_1_POLICE_PAT_BORO CHAR(2), 00044786 2 PIWA2_1B_1_FEATURE_TYPE CHAR(1), 00044886 2 PIWA2_1B_1_SEGMENT_TYPE CHAR(1), 00044986 2 PIWA2_1B_1_ALX CHAR(1), 00045086 2 PIWA2_1B_1_COINCIDENT_SEG_CTR CHAR(1), 00045186 2 FILLER_1B_1_290 CHAR(2), 00045286 2 PIWA2_1B_1_CENS_TRCT_BORO CHAR(1), 00045386 2 PIWA2_1B_1_1990_CENS_TRCT CHAR(6), 00045486 2 PIWA2_1B_1_2010_CENSUS_TRACT CHAR(6), 00045586 2 PIWA2_1B_1_2010_CENSUS_BLOCK CHAR(4), 00045686 2 PIWA2_1B_1_2010_CENSUS_BLK_SF CHAR(1), /*NOT IMPLELMENTED*/00045786 2 PIWA2_1B_1_2000_CENS_TRACT CHAR(6), 00045886 2 PIWA2_1B_1_2000_CENS_BLOCK CHAR(4), 00045986 2 PIWA2_1B_1_2000_CENS_BLK_S CHAR(1), 00046086 2 PIWA2_1B_1_NTA CHAR(4), /*NEIGHBORHOOD */00046186 /*TABULATION AREA */00046286 2 PIWA2_1B_1_SANIT_SNOW_PRIORITY CHAR(1), /*SANITATION STRT*/ 00046386 /*SNOW PRIORITY */ 00046486 2 PIWA2_1B_1_SANIT_ORGANICS CHAR(5), /*SANITATION */ 00046586 /*ORGANIC PICK UP*/ 00046686 2 PIWA2_1B_1_SANIT_BULK_PICK_UP CHAR(5), /*SANIT BULK */ 00046786 /* 2 PIWA2_1B_1_SANIT_RESERVE *V16.4 ** CHAR(5), *SANIT RESERVE*/ 00046886 2 PIWA2_1B_1_HURRICANE_ZONE CHAR(2), /*OEM HURRICANE */ 00046986 /*EVACUATION ZONE*/ 00047086 2 FILLER_1B_1_400 CHAR(11), 00047186 2 PIWA2_1B_1_UHNS CHAR(11), 00047286 2 PIWA2_1B_1_REAL_B7SC CHAR(8), 00047386 2 PIWA2_1B_1_SEGMENT_ID CHAR(7), 00047486 2 PIWA2_1B_1_CURVE_FLAG CHAR(1), 00047586 2 PIWA2_1B_1_LGCS CHAR(8), 00047686 2 PIWA2_1B_1_BOE_PTR CHAR(1), 00047786 2 PIWA2_1B_1_AZIMUTH CHAR(3), 00047886 2 PIWA2_1B_1_ORIENT CHAR(1), 00047986 2 PIWA2_1B_1_X_LOW CHAR(7), 00048086 2 PIWA2_1B_1_Y_LOW CHAR(7), 00048186 2 PIWA2_1B_1_Z_LOW CHAR(7), /*NOT IMPLEMENTED*/ 00048286 2 PIWA2_1B_1_X_HI CHAR(7), 00049027 2 PIWA2_1B_1_Y_HI CHAR(7), 00049127 2 PIWA2_1B_1_Z_HI CHAR(7), /*NOT IMPLEMENTED*/ 00049227 /* SPATIAL COORDINATES OF CENTER OF CURVATURE */ 00049327 2 PIWA2_1B_1_X_CC CHAR(7), 00049427 2 PIWA2_1B_1_Y_CC CHAR(7), 00049527 2 PIWA2_1B_1_Z_CC CHAR(7), /*NOT IMPLEMENTED*/ 00049627 2 PIWA2_1B_1_RADIUS CHAR(7), 00049727 2 PIWA2_1B_1_SECANT CHAR(1), 00049827 2 PIWA2_1B_1_ANGLE_FROM CHAR(5), 00049927 2 PIWA2_1B_1_ANGLE_TO CHAR(5), 00050027 2 PIWA2_1B_1_NODE_FROM CHAR(7), 00051027 2 PIWA2_1B_1_NODE_TO CHAR(7), 00052027 2 PIWA2_1B_1_VANITY_LION CHAR(10), 00053027 2 PIWA2_1B_1_SOS CHAR(1), 00054027 2 PIWA2_1B_1_SPLIT_LOHSN CHAR(11), 00055027 2 PIWA2_1B_1_TD CHAR(1), 00056027 2 PIWA2_1B_1_TR CHAR(10), 00057027 2 PIWA2_1B_1_CURVE_FRACTION CHAR(3), 00058027 2 PIWA2_1B_1_ROADWAY_TYPE CHAR(2), 00058132 2 PIWA2_1B_1_PHYSICAL_ID CHAR(7), 00058232 2 PIWA2_1B_1_GENERIC_ID CHAR(7), 00058332 2 PIWA2_1B_1_INTP_ID CHAR(7), /*INTERNAL USE*/ 00058436 2 PIWA2_1B_1_INTF_ID CHAR(7), /*INTERNAL USE*/ 00058536 2 PIWA2_1B_1_BIKE_LANE_2 CHAR(2), 00058676 2 PIWA2_1B_1_BIKE_TRAFFIC_DIR CHAR(2), 00058781 2 PIWA2_1B_1_FILL450 CHAR(3), 00058879 /* 2 PIWA2_1B_1_FILL450 ** V17.1 ** CHAR(5),**/ 00058979 /* 2 PIWA2_1B_1_FILL450 ** V16.4 ** CHAR(7),**/ 00059079 /* 2 PIWA2_1B_1_BLOCKFACE_ID ** V16.1 ** CHAR(7) **/ 00059179 2 PIWA2_1B_1_STREET_STATUS CHAR(1), 00059279 2 PIWA2_1B_1_STREET_WIDTH CHAR(3), 00059379 2 PIWA2_1B_1_STREET_WIDTH_IRR CHAR(1), 00059479 2 PIWA2_1B_1_BIKE_LANE CHAR(1), 00059579 2 PIWA2_1B_1_FED_CLASS_CODE CHAR(2), 00059679 2 PIWA2_1B_1_ROW_TYPE CHAR(1), 00059779 2 PIWA2_1B_1_LGC_LIST_2 CHAR(10), 00059879 2 PIWA2_1B_1_LEGACY_SEG_ID CHAR(7), 00059979 2 PIWA2_1B_1_LGC_LIST_FROM_1 CHAR(10), 00060079 2 PIWA2_1B_1_LGC_LIST_TO_1 CHAR(10), 00060179 2 PIWA2_1B_1_LGC_LIST_FROM_2 CHAR(10), 00060279 2 PIWA2_1B_1_LGC_LIST_TO_2 CHAR(10), 00060379 2 PIWA2_1B_1_NOCROSS_FLG CHAR(1), 00060479 2 PIWA2_1B_1_IND_SEG_LEN CHAR(5), 00060579 2 PIWA2_1B_1_NTA_NAME CHAR(75), 00060679 2 PIWA2_1B_1_USPS_CITY_NAME CHAR(25), 00060779 2 PIWA2_1B_1_LATITUDE CHAR(9), 00060879 2 PIWA2_1B_1_LONGITUDE CHAR(11), 00060979 2 PIWA2_1B_1_SEG_FROM_NODE CHAR(7), 00061079 2 PIWA2_1B_1_SEG_TO_NODE CHAR(7), 00061179 2 PIWA2_1B_1_SEG_FROM_XYZ CHAR(21), 00061279 2 PIWA2_1B_1_SEG_TO_XYZ CHAR(21), 00061379 2 PIWA2_1B_1_BLOCKFACE_ID CHAR(10), 00061479 2 PIWA2_1B_1_NBR_TRAVEL_LANES CHAR(2), 00061579 2 PIWA2_1B_1_NBR_PARK_LANES CHAR(2), 00061679 2 PIWA2_1B_1_NBR_TOTAL_LANES CHAR(2), 00061779 2 PIWA2_1B_1_STREET_WIDTH_MAX CHAR(3), 00061879 2 PIWA2_1B_1_SPEED_LIMIT CHAR(2), 00061982 2 PIWA2_1B_1_PUMA_CODE CHAR(5), 00062085 2 PIWA2_1B_1_POLICE_SECTOR CHAR(4), 00062186 2 PIWA2_1B_1_POLICE_SRVC_AREA CHAR(1), 00062286 2 PIWA2_1B_1_FILL500 CHAR(240), 00062386 /* 2 PIWA2_1B_1_FILL500 ** V18.1 ** CHAR(245),**/ 00062486 /* 2 PIWA2_1B_1_FILL500 ** V18.1 ** CHAR(250),**/ 00062584 /* 2 PIWA2_1B_1_FILL500 ** V17.4 ** CHAR(252),**/ 00062684 /* 2 PIWA2_1B_1_FILL500 ** V16.4 ** CHAR(255) **/ 00062784 /**2 PIWA2_1B_1_FILL500 ** V16.1 ** CHAR(271) **/ 00062884 /**2 PIWA2_1B_1_FILL500 ** V15.3 ** CHAR(327) **/ 00062984 /*******************************************************************/ 00063084 /*** ***/ 00063184 /*** THE FOLLOWING FIELDS ARE AN ADDITION TO 1/1E ***/ 00063284 /*******************************************************************/ 00063384 2 PIWA2_1B_1_REASON_CODE CHAR(1), 00063484 2 PIWA2_1B_1_REASON_CODE_QUAL CHAR(1), 00063584 2 PIWA2_1B_1_WARN_CODE CHAR(2), 00063684 2 PIWA2_1B_1_RETURN_CODE CHAR(2), 00063784 2 PIWA2_1B_1_NUM_X_STS_LO_END CHAR(1), 00063884 2 PIWA2_1B_1_LO_B7SC(5) CHAR(8), 00063984 2 PIWA2_1B_1_NUM_X_STS_HI_END CHAR(1), 00064027 2 PIWA2_1B_1_HI_B7SC(5) CHAR(8), 00065027 2 PIWA2_1B_1_LO_ST_NAME(5) CHAR(32), 00066027 2 PIWA2_1B_1_HI_ST_NAME(5) CHAR(32), 00067027 2 PIWA2_1B_1_BOE_B7SC CHAR(8), 00068027 2 PIWA2_1B_1_BOE_ST_NAME CHAR(32), 00069027 2 PIWA2_1B_1_FILL600 CHAR(52), 00069127 00069227 /*******************************************************************/ 00069627 /*** THE FOLLOWING ARE FROM THE 1A WORK AREA 2 ***/ 00069727 /*** ***/ 00069827 /*******************************************************************/ 00069927 00070027 2 PIWA2_1B_1A_ACCESS_KEY CHAR(21), 00072027 2 PIWA2_1B_1A_CONT_PARITY CHAR(1), /*(DUP ADDR IND)*/ 00073027 2 PIWA2_1B_1A_LOW_HOUSENUM CHAR(11), /* SORT FORMAT */ 00074027 2 PIWA2_1B_1A_BBL, 00075027 3 PIWA2_1B_1A_BBL_BORO CHAR(1), 00076027 3 PIWA2_1B_1A_BLOCK CHAR(5), 00077027 3 PIWA2_1B_1A_LOT CHAR(4), 00078027 2 PIWA2_1B_1A_LOT_VER CHAR(1), 00079027 2 PIWA2_1B_1A_SCC CHAR(1), 00079127 2 FILLER_1B_1A_1 CHAR(1), 00079227 2 PIWA2_1B_1A_GENERAL_LOT_INFO, 00079327 3 PIWA2_1B_1A_RPAD_BLDG_CLASS CHAR(2), 00079427 3 PIWA2_1B_1A_CORNER_CODE CHAR(2), 00079527 3 PIWA2_1B_1A_NUM_OF_STRUCTURES CHAR(4), 00079627 3 PIWA2_1B_1A_NUM_OF_BLOCKFACES CHAR(2), 00079727 3 PIWA2_1B_1A_INTERIOR_FLAG CHAR(1), 00079827 3 PIWA2_1B_1A_VACANT_FLAG CHAR(1), 00079927 3 PIWA2_1B_1A_IRREG_LOT_FLAG CHAR(1), 00080027 2 PIWA2_1B_1A_MARBLE_RIKERS_FLAG CHAR(1), 00081028 2 PIWA2_1B_1A_OVERFLOW_FLAG CHAR(1), 00082072 2 PIWA2_1B_1A_STROLL_KEY, 00083027 3 PIWA2_1B_1A_STROLL_BORO CHAR(1), 00084027 3 PIWA2_1B_1A_STROLL_5SC CHAR(5), 00085027 3 PIWA2_1B_1A_STROLL_SIDE_OF_STR CHAR(1), /* L, R */ 00086027 3 PIWA2_1B_1A_STROLL_HI_HOUSENUM CHAR(11), /* SORT FORMAT */ 00087027 3 FILLER_1B_1A_2 CHAR(1), 00088027 2 FILLER_1B_1A_3 CHAR(1), /* FOR GSS USE*/ 00089029 2 PIWA2_1B_1A_BIN CHAR(7), 00089127 2 PIWA2_1B_1A_CONDO_FLAG CHAR(1), 00089227 2 FILLER_1B_1A_4 CHAR(1), 00089327 2 PIWA2_1B_1A_RPAD_CONDO_ID_NUM CHAR(4), 00089427 2 PIWA2_1B_1A_CONDO_UNIT_ID_NUM CHAR(7), 00089527 2 PIWA2_1B_1A_CONDO_BILL_BBL CHAR(10), 00089627 2 PIWA2_1B_1A_CONDO_BILL_BBL_VER CHAR(1), 00089727 2 PIWA2_1B_1A_CONDO_BILL_BBL_SCC CHAR(1), 00089827 2 PIWA2_1B_1A_CONDO_LOW_BBL CHAR(10), 00089927 2 PIWA2_1B_1A_CONDO_LOW_BBL_VER CHAR(1), 00090027 2 PIWA2_1B_1A_CONDO_HIGH_BBL CHAR(10), 00091027 2 PIWA2_1B_1A_CONDO_HIGH_BBL_VER CHAR(1), 00092027 2 FILLER_1B_1A_5 CHAR(15), 00093027 2 PIWA2_1B_1A_COOP_NUM CHAR(4), 00094027 2 PIWA2_1B_1A_SANBORN, 00095027 3 PIWA2_1B_1A_SANBORN_BORO CHAR(1), 00096027 3 PIWA2_1B_1A_SANBORN_VOL CHAR(3), 00097027 3 PIWA2_1B_1A_SANBORN_PAGE CHAR(4), 00098027 2 PIWA2_1B_1A_COMMERC_DIST CHAR(5), 00099027 2 PIWA2_1B_1A_DOF_MAP_BORO CHAR(1), 00099127 2 PIWA2_1B_1A_DOF_MAP_SECVOL CHAR(4), 00099227 2 PIWA2_1B_1A_DOF_MAP_PAGE CHAR(4), 00099327 2 PIWA2_1B_1A_RESERVED CHAR(3), 00099464 2 PIWA2_1B_1A_LATITUDE CHAR(9), 00099564 2 PIWA2_1B_1A_LONGITUDE CHAR(11), 00099664 2 PIWA2_1B_1A_X_COORD CHAR(07), 00099764 2 PIWA2_1B_1A_Y_COORD CHAR(07), 00099864 2 PIWA2_1B_1A_BID CHAR(06), 00099964 2 PIWA2_1B_1A_TPAD_BIN_ST CHAR(01), /*CURRENT STATUS*/ 00100064 2 PIWA2_1B_1A_TPAD_NEW_BIN CHAR(07), /*NEW BIN */ 00100164 2 PIWA2_1B_1A_TPAD_NEW_BIN_ST CHAR(01), /*NEW BIN STATUS*/ 00100264 2 PIWA2_1B_1A_TPAD_CONFLICT CHAR(01), /*CONFLICT FLAG */ 00101027 2 PIWA2_1B_1A_DCP_ZONE_MAP CHAR(03), /*DCP ZONING MAP*/ 00101183 2 FILLER_1B_1A_7 CHAR(06), 00102083 2 FILLER_1B_1A_8 CHAR(8), /*LGC M GSS USE*/ 00103070 2 PIWA2_1B_1A_REASON_CODE CHAR(01), 00104027 2 PIWA2_1B_1A_REASON_CODE_QUAL CHAR(01), 00105052 2 PIWA2_1B_1A_WARN_CODE CHAR(02), 00106027 2 PIWA2_1B_1A_RETURN_CODE CHAR(02), 00107027 2 FILLER_1B_1A_9 CHAR(108), 00108027 2 PIWA2_1B_1A_NUM_OF_ADDR CHAR(4), 00109027 2 PIWA2_1B_1A_ADDR_LIST(21), 00109127 3 PIWA2_1B_1A_LIST_LOW_HOUSENUM CHAR(16), /*DISPLAY FORMAT*/ 00109227 3 PIWA2_1B_1A_LIST_HI_HOUSENUM CHAR(16), /*DISPLAY FORMAT*/ 00109327 3 PIWA2_1B_1A_LIST_BORO CHAR(1), 00109427 3 PIWA2_1B_1A_LIST_5SC CHAR(5), 00109527 3 PIWA2_1B_1A_LIST_LGC CHAR(2), 00109627 3 PIWA2_1B_1A_LIST_BIN CHAR(7), 00109727 3 PIWA2_1B_1A_LIST_SIDE_OF_STR CHAR(1), /* L, R */ 00109827 3 PIWA2_1B_1A_ADDR_TYPE CHAR(1), /* */ 00109927 /*BLANK = NORMAL*/ 00110027 3 PIWA2_1B_1A_TPAD_STATUS CHAR(1), 00111027 3 PIWA2_1B_1A_ST_NAME CHAR(32), 00112027 3 FILLER_1B_1A_10 CHAR(34); 00113027 00120019","title":"P2PL11AL COPY File"},{"location":"appendices/appendix14/#p2pl13s-copy-file","text":"/*******************************************************************/ 00000100 /*** THIS IS THE PL/1 STRUCTURE FOR GEOSUPPORT SYSTEM PLATFORM ***/ 00000200 /*** INDEPENDENT WORK AREA 2 FOR FUNCTION: 3S. ***/ 00000300 /*** ***/ 00000400 /** COPY FILE - P2PL13S. 09/17/97 ***/ 00000500 /*******************************************************************/ 00000600 DCL 00000700 1 P2PL13S, 00000800 2 PIWA2_3S_ACCESS_KEY, 00000900 3 FILLER_GSS CHAR(2), 00001000 3 PIWA2_3S_PORS_STNAME_IND CHAR(1),/* P = PRIMARY */ 00001100 /* S = SECONDARY */ 00001200 3 PIWA2_3S_BORO CHAR(1), 00001300 3 PIWA2_3S_5SC CHAR(5), 00001400 3 PIWA2_3S_LGC CHAR(2),/* BLANK IF P IN */ 00001500 3 FILLER CHAR(10),/* POSITION 3 */ 00001600 2 PIWA2_3S_NUM_OF_INTERSECTS CHAR(3), 00001700 2 PIWA2_3S_LIST_OF_INTERSECTS(350), 00001800 3 PIWA2_3S_MARBLE_RIKERS_FLAG CHAR(1), 00001900 3 PIWA2_3S_DISTANCE CHAR(5), 00002000 3 PIWA2_3S_GAP_FLAG CHAR(1), 00002100 3 FILLER_100 CHAR(7), 00002200 3 PIWA2_3S_NUM_OF_STR CHAR(1), 00002300 3 PIWA2_3S_B7SC(5) CHAR(8); 00002400","title":"P2PL13S COPY FIle"},{"location":"appendices/appendix14/#p2pl1ap-copy-file","text":"/*******************************************************************/ 00000100 /*** THIS IS THE PL/1 STRUCTURE FOR GEOSUPPORT SYSTEM PLATFORM ***/ 00000200 /*** INDEPENDENT WORK AREA 2 FOR FUNCTIONS: AP , AND APX. ***/ 00000370 /*** MARCH 2015 BY YNL V15.2 FOR ADDRESS POINT AND AP EXTENDED. ***/ 00000470 /*** COPY FILE - P2PL1AP. ***/ 00001170 /*******************************************************************/ 00001226 00001326 DCL 1 PIWA2_FNAPX, 00026170 /*******************************************************************/ 00026263 /*** WORK AREA 2 FOR FUNCTION AP EXTENDED ***/ 00026370 /*** ***/ 00026463 /*******************************************************************/ 00026563 00026663 00026763 2 PIWA2_APX_ACCESS_KEY CHAR(21), 00026870 2 PIWA2_APX_CONT_PARITY CHAR(1), /*(OR DUP ADDR IND)*/ 00026970 2 PIWA2_APX_LOW_HOUSENUM CHAR(11), /* SORT FORMAT */ 00027070 2 PIWA2_APX_BBL, 00027170 3 PIWA2_APX_BBL_BORO CHAR(1), 00027270 3 PIWA2_APX_BLOCK CHAR(5), 00027370 3 PIWA2_APX_LOT CHAR(4), 00027470 2 FILLER_APX01 CHAR(7), 00027771 2 PIWA2_APX_NUM_OF_STRUCTURES CHAR(4), 00028171 2 FILLER_APX02 CHAR(26), 00028271 2 FILLER_GSS1 CHAR(1), /* FOR GSS USE*/ 00029571 2 PIWA2_APX_BIN CHAR(7), 00029670 2 PIWA2_APX_CONDO_FLAG CHAR(1), 00029770 2 FILLER_APX03 CHAR(1), 00029871 2 PIWA2_APX_RPAD_CONDO_ID_NUM CHAR(4), 00029970 2 FILLER_APX04 CHAR(7), 00030071 2 PIWA2_APX_CONDO_BILL_BBL CHAR(10), 00030270 2 FILLER_APX05 CHAR(2), 00030371 2 PIWA2_APX_CONDO_LOW_BBL CHAR(10), 00030670 2 FILLER_APX06 CHAR(1), 00030771 2 PIWA2_APX_CONDO_HIGH_BBL CHAR(10), 00030970 2 FILLER_APX07 CHAR(16), 00031071 2 PIWA2_APX_COOP_NUM CHAR(4), 00031370 2 FILLER_APX08 CHAR(22), 00031475 2 PIWA2_APX_RESERVED CHAR(03), 00032370 2 PIWA2_APX_LATITUDE CHAR(09), 00032470 2 PIWA2_APX_LONGITUDE CHAR(11), 00032570 2 PIWA2_APX_X_COORD CHAR(07), 00032670 2 PIWA2_APX_Y_COORD CHAR(07), 00032770 2 FILLER_APX09 CHAR(16), 00032873 2 PIWA2_APX_AP_ID CHAR(09), 00033473 2 FILLER_GSS2 CHAR(8), /* LGC - GSS USE*/ 00033571 2 PIWA2_APX_REASON_CODE CHAR(01), 00033670 2 PIWA2_APX_REASON_CODE_QUAL CHAR(01), 00033770 2 PIWA2_APX_WARN_CODE CHAR(02), 00033870 2 PIWA2_APX_RETURN_CODE CHAR(02), 00033970 2 FILLER_APX10 CHAR(108), 00034072 2 PIWA2_APX_NUM_OF_ADDR CHAR(4), 00034170 2 PIWA2_APX_ADDR_LIST(21), 00034270 3 PIWA2_APX_LIST_LOW_HOUSENUM CHAR(16), /*DISPLAY FORMAT*/ 00034370 3 PIWA2_APX_LIST_HI_HOUSENUM CHAR(16), /*DISPLAY FORMAT*/ 00034470 3 PIWA2_APX_LIST_BORO CHAR(1), 00034570 3 PIWA2_APX_LIST_5SC CHAR(5), 00034670 3 PIWA2_APX_LIST_LGC CHAR(2), 00034770 3 PIWA2_APX_LIST_BIN CHAR(7), 00034870 3 PIWA2_APX_LIST_SIDE_OF_STR CHAR(1), /* L, R */ 00034970 3 PIWA2_APX_ADDR_TYPE CHAR(1), /* */ 00035070 /* BLANK = NORMAL*/ 00035165 3 FILLER_APX11 CHAR(1), 00035274 3 PIWA2_APX_ST_NAME CHAR(32), 00035470 3 FILLER_APX12 CHAR(34); 00035572 00036065 00037071 DCL 1 PIWA2_FNAP BASED(ADDR(PIWA2_FNAPX)), 00037171 /*******************************************************************/ 00039071 /*** WORK AREA 2 FOR FUNCTION AP ***/ 00040071 /*** ***/ 00050071 /*******************************************************************/ 00060071 00070071 00080071 2 PIWA2_AP_ACCESS_KEY CHAR(21), 00090071 2 PIWA2_AP_CONT_PARITY CHAR(1), /*(OR DUP ADDR IND)*/ 00100071 2 PIWA2_AP_LOW_HOUSENUM CHAR(11), /* SORT FORMAT */ 00110071 2 PIWA2_AP_BBL, 00120071 3 PIWA2_AP_BBL_BORO CHAR(1), 00130071 3 PIWA2_AP_BLOCK CHAR(5), 00140071 3 PIWA2_AP_LOT CHAR(4), 00150071 2 FILLER_AP01 CHAR(7), 00160071 2 PIWA2_AP_NUM_OF_STRUCTURES CHAR(4), 00170071 2 FILLER_AP02 CHAR(26), 00180071 2 FILLER_GSS1 CHAR(1), /* FOR GSS USE*/ 00190071 2 PIWA2_AP_BIN CHAR(7), 00200071 2 PIWA2_AP_CONDO_FLAG CHAR(1), 00210071 2 FILLER_AP03 CHAR(1), 00220071 2 PIWA2_AP_RPAD_CONDO_ID_NUM CHAR(4), 00230071 2 FILLER_AP04 CHAR(7), 00240071 2 PIWA2_AP_CONDO_BILL_BBL CHAR(10), 00250071 2 FILLER_AP05 CHAR(2), 00260071 2 PIWA2_AP_CONDO_LOW_BBL CHAR(10), 00270071 2 FILLER_AP06 CHAR(1), 00280071 2 PIWA2_AP_CONDO_HIGH_BBL CHAR(10), 00290071 2 FILLER_AP07 CHAR(16), 00300071 2 PIWA2_AP_COOP_NUM CHAR(4), 00310071 2 FILLER_AP08 CHAR(18), 00320072 2 PIWA2_AP_DOF_MAP_PAGE CHAR(4), 00330071 2 PIWA2_AP_RESERVED CHAR(03), 00340071 2 PIWA2_AP_LATITUDE CHAR(09), 00350071 2 PIWA2_AP_LONGITUDE CHAR(11), 00360071 2 PIWA2_AP_X_COORD CHAR(07), 00370071 2 PIWA2_AP_Y_COORD CHAR(07), 00380071 2 FILLER_AP09 CHAR(16), 00390073 2 PIWA2_AP_AP_ID CHAR(09), 00400073 2 FILLER_GSS2 CHAR(8), /* LGC - GSS USE*/ 00410071 2 PIWA2_AP_NUM_OF_ADDR CHAR(4), 00470071 2 PIWA2_AP_ADDR_LIST(21), 00480071 3 PIWA2_AP_LIST_LOW_HOUSENUM CHAR(16), /*DISPLAY FORMAT*/ 00490071 3 PIWA2_AP_LIST_HI_HOUSENUM CHAR(16), /*DISPLAY FORMAT*/ 00500071 3 PIWA2_AP_LIST_BORO CHAR(1), 00510071 3 PIWA2_AP_LIST_5SC CHAR(5), 00520071 3 PIWA2_AP_LIST_LGC CHAR(2), 00530071 3 PIWA2_AP_LIST_BIN CHAR(7), 00540071 3 PIWA2_AP_LIST_SIDE_OF_STR CHAR(1), /* L, R */ 00550071 3 PIWA2_AP_ADDR_TYPE CHAR(1), /* */ 00560071 /* BLANK = NORMAL*/ 00570071 3 FILLER_AP10 CHAR(4); 00600071 00610071","title":"P2PL1AP COPY File"},{"location":"appendices/appendix14/#c-copy-file-cow","text":"","title":"C COPY File (COW)"},{"location":"appendices/appendix14/#pac-copy-file","text":"#ifndef GEOSUPPORT #define GEOSUPPORT #ifdef __cplusplus extern \"C\" { #endif /*********************************************************************/ /* */ /* Add new 1 byte field 'Police Service Area'in functions: */ /* 1/1E (Extended),1B. YNL 02/2019 V19.2*/ /* Add new 4 bytes field 'Police Sector' in functions: */ /* 1/1E (Extended),1B,2,3(Extended),3C(Extended). YNL 02/2019 V19.2*/ /* Add new 5 bytes field 'PUMA code' in functions: */ /* 1/1E (Extended),1B,3/3C (Extended). TLV 12/2017 V18.1*/ /* Add new 3 bytes field 'DCP Zoning Map' in TLV 09/2017 V17.4*/ /* functions: 1A,BL,BN; 1A,BL,BN(extended) and 1B. */ /* Add new 2 bytes field 'Speed Limit' in TLV 09/2017 V17.4*/ /* functions: 1/1E(extended), 1B, 3X, 3CX. */ /* Add new 2 bytes Bike Traffic Direction TLV 12/2016 V17.1*/ /* Replaced sanit_reserved with sanit_bulk_pick_up TLV 9/2016 V16.4*/ /* Added 'unit' fields to WA1 TLV 9/2016 V16.4*/ /* Add new 2 bytes Bike Lane and Max Str Width TLV 9/2016 V16.4*/ /* */ /*********************************************************************/ /* */ /* GeoSupport System C-Language Header File */ /* for Platform-Independent Work Areas */ /* */ /* Last Updated: February 2016 */ /* */ /*********************************************************************/ /*********************************************************************/ /* */ /* Group Items Used in Platform-Independent Work Area 1 */ /* */ /*********************************************************************/ #define UNIT_SIZE 14 //unit type+identifier v16.4 #define UNITT_SIZE 4 //unit type v16.4 #define UNITI_SIZE 10 //unit identfier v16.4 typedef struct { char boro; // Borough Code char SC10[10]; // 10 Digit Street Code char Street_name[32]; // Street Name } STREET; typedef union { char bbl[10]; /* Borough-Block-Lot */ struct { char boro; /* Borough */ char block[5]; /* Tax Block */ char lot[4]; /* Tax Lot */ } cas; } BBL; typedef struct { char unitt[UNITT_SIZE]; /* Output unit type V16.4 */ char uniti[UNITI_SIZE]; /* Output unit identifier */ } UNIT, *PUNIT; /* Output unit V16.4 */ typedef struct { char func_code[2]; /* Function Code */ char hse_nbr_disp[16]; /* House nbr in Disp form */ char hse_nbr_hns[11]; /* House nbr in Sort form */ char lohse_nbr_disp[16];/* Lo House nbr in Disp form*/ char lohse_nbr_hns[11]; /* Lo House nbr in Sort form*/ STREET sti[3]; /* Street Information */ BBL bbli; /* Borough-Block-Lot */ char filler01; /* Filler-Tax Lot Version # */ char bld_id[7]; /* Building Id Number (BIN) */ char comp_direction; /* Compass Direction */ char comp_direction2; /* Compass Direction-Fn 3S */ char node[7]; /* Node input for Fn2 */ char platform_ind; /* Must be equal to 'C' */ char zipin[5]; /* Input Zip Code */ char unit[UNIT_SIZE]; /* Input unit V16.4*/ char filler03[82]; /* Future Use */ /* Flags that influence processing */ char long_WA_flag; /* Long Work Area 2 Flag */ /* Next 2 fields not impl */ char hse_nbr_justify; /* Hse Nbr Justification Flg */ char hnl[2]; /* Hse Nbr Normalization len */ char hse_nbr_over_flag; /* Reserved for GSS Use */ char snl[2]; /* Street Name Norm Length */ char st_name_norm; /* Street Name Normalization */ /* Format Flag */ char expanded_format; /* Expanded Format Flag */ char roadbedrequest; /* Roadbed Request Switch */ char res_01; /* Reserved for Internal Use */ char segaux_switch; /* Request Auxiliary Segment */ /* Information */ char browse_flag; /* Determines if browse */ /* displays all or some names*/ char real_street_only; /* Display real streets only */ char tpad_switch; /* TPAD read for PAD process */ char mode_switch; /* Mode Flag */ /* X = Extended WA2 */ char wto_switch; /* WTOs Switch N = No WTOs */ /* should be issued */ char filler04[29]; /* Future Use */ } INWA1; typedef struct { char boro_name[9]; /* Boro Name of First Street*/ char hse_nbr_disp[16]; /* House nbr in Normalized */ /* Display form */ char hse_nbr_hns[11]; /* House number in Sort Form*/ STREET sto[3]; /* Street Information */ BBL bblo; /* Boro(len=1), Block(len=5)*/ /* and Lot (len=4)-Normalizd*/ char filler05; /* Filler-Tax Lot Version # */ char lo_hse_nbr_disp[16]; /* low Hse nbr - display */ char lo_hse_nbr_hns[11]; /* low Hse nbr - sort form */ char bin[7]; /* Building Id Number */ char attrbytes[3]; /* NAP Identification Number*/ char reason_code_2; /* 2nd Reason Code */ char reason_code_qual_2;/* 2nd Reason Code Qualifier*/ // char filler08_2; /* Future Use */ char warn_code_2[2]; /* 2nd Warning Return Code */ char ret_code_2[2]; /* 2nd GeoSupport Return Cod*/ char msg_2[80]; /* 2nd GeoSupport Message */ char node[7]; /* Node output for Fn 2 */ UNIT units; /* Output unit Sort V16.4*/ char unitd[UNIT_SIZE]; /* Output unit Display V16.4*/ char filler07[11]; /* Future Use */ char nap_id_nbr[6]; /* NAP Id Nbr - Not Impl. */ char int_use1; /* Internal Use Only */ char reason_code; /* Reason Code */ char reason_code_qual; /* Reason Code Qualifier */ // char filler08; /* Future Use */ char warn_code[2]; /* Warning Ret. Code-NotImpl*/ char ret_code[2]; /* GeoSupport Return Code */ char msg[80]; /* GeoSupport Message */ char nbr_names[2]; /* Nbr of Sreet Names */ char B_7SC[10][8]; /* 10 Boro+7-digit st codes */ char st_names[10][32]; /* Up to 10 Street Names */ } OUTWA1; /*********************************************************************/ /* */ /* Platform-Independent Work Area 1 */ /* */ /*********************************************************************/ typedef struct { INWA1 input; OUTWA1 output; } C_WA1; /******************************************************************/ /* */ /* Group Items Used in Platform-Independent Work Area 2's */ /* */ /******************************************************************/ typedef struct { /* LION KEY */ char lion_boro; /* LION Borough Code */ /* Differs from GeoSupport */ /* Borough Codes */ char face[4]; /* Face Code */ char seq[5]; /* Sequence Number */ } LION; typedef struct { char nbr_sts; /* Number of streets */ char B5SC[5][6]; /* Boro+5 Street Code*/ } St_list; typedef struct { /* used for longwa for TPAD */ char bin[7]; /* BIN */ char status; /* Status of BIN */ } TPAD_LIST; typedef struct { TPAD_LIST tpadlist[2187]; /* or BINs + Status Byte */ char fill[4]; } TPADLST; typedef struct { char lo_hse_nbr[16]; /* Low House Nbr-Disply form*/ char hi_hse_nbr[16]; /* Hi House Nbr-Display form*/ char B5SC[6]; /* Boro & 5 digit Str Code */ char lgc[2]; /* DCP Preferred Street LGC */ char bld_id[7]; /* BIN of address range */ char sos_ind; /* Side of Street Indicator */ char adr_type; /* Address type - P=NAP, */ /* B=NAB, Blank=Normal */ char TPAD_bin_status; /* Status of Job */ char filler01[3]; /* Future Use */ } ADDR_RANGE; typedef struct { char lo_hse_nbr[16]; /* Low House Nbr-Disply form*/ char hi_hse_nbr[16]; /* Hi House Nbr-Display form*/ char B5SC[6]; /* Boro & 5 digit Str Code */ char lgc[2]; /* DCP Preferred Street LGC */ char bld_id[7]; /* BIN of address range */ char sos_ind; /* Side of Street Indicator */ char adr_type; /* Address type */ /* (Blank = Normal) */ char TPAD_bin_status; /* Status of BIN from TPAD */ char st_name[32]; /* Street Name */ char filler01[34]; /* Future Use */ } ADDR_RANGE_1AX; typedef struct { char lo_hse_nbr[16]; /* Low House Nbr-Disply form*/ char hi_hse_nbr[16]; /* Hi House Nbr-Display form*/ char B5SC[6]; /* Boro & 5 digit Str Code */ char lgc[2]; /* DCP Preferred Street LGC */ char bld_id[7]; /* BIN of address range */ char sos_ind; /* Side of Street Indicator */ char adr_type; /* Address type - V=VANITY */ /* Blank=Normal */ char filler02; /* filler for func AP */ char filler01[3]; /* Future Use */ } ADDR_RANGE_AP; typedef struct { char lo_hse_nbr[16]; /* Low House Nbr-Disply form*/ char hi_hse_nbr[16]; /* Hi House Nbr-Display form*/ char B5SC[6]; /* Boro & 5 digit Str Code */ char lgc[2]; /* DCP Preferred Street LGC */ char bld_id[7]; /* BIN of address range */ char sos_ind; /* Side of Street Indicator */ char adr_type; /* Address type - V=VANITY */ /* Blank=Normal */ char filler02; /* filler for func APX */ char st_name[32]; /* Street Name */ char filler01[34]; /* Future Use */ } ADDR_RANGE_APX; typedef struct { char sanborn_boro; /* Sanborn Borough Code */ char sanborn_vol[3]; /* Sanborn Volume */ char sanborn_page[4]; /* Sanborn Page */ } SANBORN; typedef struct { char com_dist[3]; /* Community District */ char lo_hse_nbr[16]; /* Low House Nbr-Disply form*/ char hi_hse_nbr[16]; /* Hi House Nbr-Display form*/ char filler01[32]; /* Future Use */ char iaei; /* Interim Ass'tance Elig */ /* Indicator */ char zip_code[5]; /* Zip code for Street seg. */ char health_area[4]; /* Health Area */ char police_boro_com; /* Police Patrl Boro Command*/ char police_pre[3]; /* Police Precinct */ char fire_divisn[2]; /* Fire Division */ char fire_bat[2]; /* Fire Battalion */ char fire_co_type; /* Fire Company Type */ char fire_co_nbr[3]; /* Fire Company Number */ char com_schl_dist[2]; /* Community School District*/ char dynam_blk[3]; /* Atomic Polygon */ /* (was Dynamic Block) */ char ED[3]; /* ED */ char AD[2]; /* AD */ char police_pat_boro[2];/* Police Patrol Borough */ // char instruc_div[2]; /* Instructional Division */ char filler02; /* Future Use */ char boro; /* Used for the NTA name */ char cen_tract_90[6]; /* 1990 Census Tract */ char cen_tract_10[6]; /* 2010 Census Tract */ char cen_blk_10[4]; /* 2010 Census Block */ char cen_blk_10_sufx; /* 2010 Census Block Suffix */ /* 2010 Suffix Not Implement*/ char cen_tract_2000[6]; /* 2000 Census Tract */ char cen_blk_2000[4]; /* 2000 Census Block */ char cen_blk_2000_sufx; /* 2000 Census Block Suffix */ // char blockface_id[7]; /* \"Blockface ID\" became */ char filler03[7]; /* filler V16.1 */ char nta[4]; /* Neighborhood Tabulation */ /* Area */ char filler04[8]; /* Future Use */ } SEGSIDE; typedef struct { char mh_ri_flag; /* Marble Hill/Rikers Island*/ /* Alternative Boro flag */ char len[5]; /* Len in ft from prev node */ char gap_flag; /* Gap Flag */ char node_nbr[7]; /* Node Number of Intersect */ char nbr_streets; /* Nbr streets intersecting */ char B7SC[5][8]; /* Lowest B7SC at Intersect */ /* is first and 2nd Lowest */ /* B7SC is next. Remaining */ /* B7SC's in no particular */ /* order. */ } CROSS_STRS; /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function 1 */ /* */ /********************************************************************/ typedef struct { char filler01[21]; char cont_parity_ind; /* Continuous Parity Ind. */ /* or Duplicate Address Ind.*/ char lo_hse_nbr[11]; /* Lo House nbr in Sort form*/ char hi_hse_nbr[11]; /* Hi House Nbr in Sort form*/ char lgc[2]; /* DCP or BOE Preferred LGC */ St_list st[2]; /* 1=Low and 2=High */ /* Nbr of cross streets at */ /* low house nbr end of st */ /* B5SCs of lo end cross st */ LION key; /* LION Key - 10 Characters */ char sagr_flag; /* Special Address Generated*/ /* Record flag */ char sos_ind; /* Side of Street Indicator */ char seg_len[5]; /* Segment Length in Feet */ char coord[3][7]; /* 1 = X coordinate, */ /* 2 = Y coordinate, */ /* 3 = Z coordinate, Not Imp*/ char iaei; /* Interim Ass'tance Elig */ /* Indicator */ char mh_ri_flag; /* Marble Hill/Rikers Island*/ /* Alternative Borough flag */ char DOT_slca; /* DOT St Lght Contractr Are*/ char com_dist[3]; /* Community District */ /* Position 0 contains the */ /* CD Boro Code & Pos 1 & 2,*/ /* the district number */ char zip_code[5]; /* Zip code for st seg */ /* Following seven fields used for Function 1E only*/ char ed[3]; /* Election District */ char ad[2]; /* Assembly District */ char sped_flag; /* Split Elect District Flag*/ char congress_dist[2]; /* Congressional District */ char state_sen_dist[2]; /* State Senatorial District*/ char civil_court[2]; /* Civil Court District */ char city_council[2]; /* City Council District */ char health_cent[2]; /* Health Center Dictr*/ char health_area[4]; /* Health Area */ char sanit_dist[3]; /* Sanitation District */ char sanit_sub_sect[2]; /* Sanit Collect Scheduling */ /* Section and Subsection */ char sanit_reg_pick_up[5]; /* Regular Pick up */ char sanit_recycle[3]; /* Recycle pick up */ char police_boro_com; /* Police Patrol Boro Commnd*/ char police_pre[3]; /* Police Precinct */ char fire_divisn[2]; /* Fire Division */ char fire_bat[2]; /* Fire Battalion */ char fire_co_type; /* Fire Company Type */ char fire_co_nbr[3]; /* Fire Company Number */ char filler_scsd; /* Was Split Com School */ /* District Flag */ char com_schl_dist[2]; /* Community School District*/ char dynam_blk[3]; /* Atomic Polygon */ /* (was Dynamic Block) */ char police_pat_boro[2];/* Police Patrol Borough */ // char filler_indv[2]; /* */ // char instruc_div[2]; /* Instructional Division */ char feature_type; /* Feature Type Code */ char segmenttypecode; /* Segment Type Code */ char alx; /* Segment split by Alley(s)*/ /* A=Split by Alley(s) */ /* X=Cross Streets Modified */ char coincident_seg_cnt; /* Coincident Segment */ /* Counter */ char filler02[2]; /* Future Use */ char boro_of_cen_tract; /* boro of Census Tract used*/ char cen_tract_90[6]; /* 1990 Census Tract */ char cen_tract_10[6]; /* 2010 Census Tract */ char cen_blk_10[4]; /* 2010 Census Block */ char cen_blk_10_sufx; /* 2010 Census Block Suffix */ /* 2010 Suffix Not Implement*/ char cen_tract_2000[6]; /* 2000 Census Tract */ char cen_blk_2000[4]; /* 2000 Census Block */ char cen_blk_2000_sufx; /* 2000 Census Block Suffix */ char nta[4]; /* Neighborhood Tabulation */ /* Area */ char sanit_snow_priority;/* Sanitation Street Snow */ /* Priority (P,S,T,V) */ char sanit_org_pick_up[5];/* Organics Pick up */ char sanit_bulk_pick_up[5]; /* Bulk Pick Up V16.4 */ //char sanit_reserved[5]; /* Reserved for Possible */ char hurricane_zone[2]; /* Hurricane Evacuation Zone*/ char filler04[11]; /* Future Use */ char true_hns[11]; /* Underlying HNS */ char true_b7sc[8]; /* True Boro 7 Street Code */ char seg_id[7]; /* Segment Identifier */ char curv_flag; /* Curve Flag */ } C_WA2_F1; /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function 1V/1W */ /* */ /********************************************************************/ typedef struct { C_WA2_F1 c_wa2_f1; char int_use[8]; /* valid on street lgcs */ char boe_lgc; /* BOE LGC Pointer */ char seg_azm[3]; /* Segment Azimuth */ char seg_orient; /* Segment Orientation */ char seg_coord[2][3][7]; /* Spatial Coordinates of */ /* Segment */ char cc_coord[3][7]; /* Spatial Coordinates of */ /* Center of Curvature */ char radius[7]; /* Radius of Circle */ char cc_sos; /* Center of Curvature Side */ /* of Street Flag */ char node_angles[2][5]; /* Angle to FROM & TO Nodes */ char nodes[2][7]; /* LION Node Numbers of */ /* FROM and TO nodes */ LION LION_key; /* LION Key for Vanity */ /* Addresses */ char LION_sos_ind; /* LION SoS Indicator */ char split_low_hn[11]; /* Split Low House Number */ char traffic_dir; /* Traffic Direction */ char turn_restricts[10]; /* Turn restrictions */ char curve_fraction[3]; /* */ char roadway_type[2]; /* Roadway Type */ char physical_id[7]; /* */ char generic_id[7]; /* */ char filler03[7]; /* DCP internal use */ char filler04[7]; /* DCP internal use */ //char blockface_id[7]; /** V16.1 ** blockface id 10 bytes long*/ char bike_lane_2[2]; /*Bike Lane has 2 bytes */ /* numeric value moved in */ /* wa2 of F1EX */ char bike_traffic_dir[2]; //V17.1 Bike Traffic Direction char filler05[3]; // V17.1 char status; /* */ char str_width[3]; /* */ char str_width_irregular; /* Yes or No */ char bike_lane; /* */ char fcc[2]; /* Federal Classification Cd*/ char row_type; /* */ char lgcs_additional[5][2]; /* additional lgcs for on st*/ } C_WA2_F1V; /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function 1E Extended */ /* */ /********************************************************************/ typedef struct { /* Fn 1E with extra bytes */ C_WA2_F1V cwa2f1v; char legacy_segid[7]; /* */ char from_preferred_lgcs[5][2]; /* */ char to_preferred_lgcs[5][2]; /* */ char from_additional_lgcs[5][2]; /* */ char to_additional_lgcs[5][2]; /* */ char no_x_st_calc_flg; /* No Cross Street */ /* Calculation Flag */ char indiv_seg_len[5]; /* Individual Segment Length*/ /* Used with Above Flag */ char nta_name[75]; /* Neighborhood Tabulation */ /* Area Name */ char USPS_city_name[25]; /* USPS Preferred City Name */ char latitude[9]; /* Latitude calc from X-Y */ char longitude[11]; /* Longitude calc from X-Y */ char seg_from_node[7]; /* Segment from node */ char seg_to_node[7]; /* Segment to node */ char seg_from_xyz[3][7]; /* XYZ coord (segment from) */ char seg_to_xyz[3][7]; /* XYZ coord (segment to) */ char blockface_id[10]; /* NEW location V16.1 */ /* because of length changed*/ char nbr_travel_lanes[2]; /* nbr of traveling lanes */ char nbr_park_lanes[2]; /* nbr of parking lanes */ char nbr_total_lanes[2]; /* total nbr of lanes */ char str_width_max[3]; /*street width maximum */ char speed_limit[2]; /* Speed Limit */ char puma_code[5]; /* PUMA Code V18.1*/ char police_sector[4]; /* Police Sector V19.2*/ char police_service_area; /* Police Service Area V19.2*/ char filler6[240]; /* V18.3*/ //char filler6[245]; /* V18.1*/ //char filler6[252]; /* Future Use */ char reason_code; /* Reason Code */ char reason_code_qual; /* Reason Code Qualifier */ char warn_code[2]; /* Warning Return Code */ char ret_code[2]; /* GeoSupport Return Code */ char nbr_names_lo; /* Nbr of St Names Low End */ char B7SC_lo[5][8]; /* 5(Boro+7-digit) st codes */ char nbr_names_hi; /* Nbr of St Names High End */ char B7SC_hi[5][8]; /* 5 Boro+7-digit st codes */ char st_names_lo[5][32]; /* Up to 5 St Names Low End */ char st_names_hi[5][32]; /* Up to 5 St Names High End*/ char BOE_B5SC[6]; /* BOE Preffered B7SC */ char BOE_lgc[2]; /* BOE Preffered B7SC */ char BOE_st_name[32]; /* BOE Preffered Street Name*/ char filler7[52]; /* Future Use */ } C_WA2_F1EX; /* Fn 1EX with filler */ /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function 1A Extended */ /* */ /********************************************************************/ typedef struct { /* Fn 1A with extra bytes */ char filler01[21]; char cont_parity_ind; /* Continuous Parity Ind */ /* or Duplicate Address Ind */ char lo_hse_nbr[11]; /* Low House Number-Sort Frm*/ BBL bbl; /* Borough-Block-Lot */ char filler02; /* Reserved for Tax Lot Ver#*/ char RPAD_scc; /* RPAD Self_Check Code(SCC)*/ char filler03; char RPAD_lucc[2]; /* RPAD Land Use Class. Code*/ char corner[2]; /* Corner Code */ char nbr_blds[4]; /* Nbr of buildings on lot */ char nbr_str[2]; /* Nbr Street Frontages */ char inter_flag; /* Interior Lot Flag */ char vacant_flag; /* Vacant Lot Flag */ char irreg_flag; /* Irregularly-Shaped Lot Fl*/ char mh_ri_flag; /* Marble Hill/Rikers Island*/ char adr_range_overflow; /* Addr Rnge Lst Ovrflow Flg*/ char stroll_key[18]; /* Strolling key Not Implem */ char filler04; char res_internal_use; /* Reserved for Internal Use*/ char bld_id[7]; /* Building Ident. Number */ /* (BIN) of Input Address of*/ /* Existing Building, If any*/ char condo_flag; /* Condominium Flag */ char filler05; /* Future Use */ char condo_id[4]; /* RPAD Condo Id Number */ char condo_unit_id[7]; /* Condo Unit Id Nbr-Not Imp*/ BBL condo_bill_bbl; /* Condo Billing BBL */ char filler06; /* Reserved for Tax Lot Ver */ char condo_scc; /* Self-Check Code */ BBL condo_lo_bbl; /* Low BBL of Condo */ char filler07; /* Reserved for Tax Lot Ver */ BBL condo_hi_bbl; /* High BBL of Condo */ char filler08; /* Reserved for Tax Lot Ver */ char filler09[15]; char co_op_nbr[4]; /* Co-op Number */ SANBORN San; /* Sanborn Information */ char business_area[5]; /* Business Area */ char tax_map_nbr[5]; /* Tax Map Nbr-Sect and Vol */ char filler10[4]; /* Tax Map Nbr Page Not Impl*/ char filler11[3]; char latitude[9]; /* Latitude calc from X-Y */ char longitude[11]; /* Longitude calc from X-Y */ char coord[2][7]; /* 1 = X coordinate-Annotat */ /* 2 = Y coordinate-Annotat */ char bid_id[6]; /* Business Improvement */ /* District ID (BID) */ char TPAD_bin_status; /* Status of Demolition job */ /* on Existing BIN of Input */ /* Address */ char TPAD_new_bin[7]; /* BIN for New Building */ char TPAD_new_bin_status; /* Status of New Buildng BIN*/ char TPAD_conflict_flag; /* From TPAD */ char dcp_zone_map[3]; /* DCP Zoning Map */ char filler12[6]; char int_use[8]; /* Internal Use */ char reason_code; /* Reason Code */ char reason_code_qual; /* Reason Code Qualifier */ char warn_code[2]; /* Warning Return Code */ char ret_code[2]; /* GeoSupport Return Code */ char filler14[108]; char nbr_addr[4]; /* Nbr of Addr Ranges or Nbr*/ /* of BINs in List */ ADDR_RANGE_1AX addr_range_1ax[21]; } C_WA2_F1AX; /* Fn 1AX with filler */ /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function 1B */ /* */ /********************************************************************/ typedef struct { /* Function 1B */ C_WA2_F1EX cwa2f1ex; /* 1EX Component */ C_WA2_F1AX cwa2f1ax; /* 1AX Component */ } C_WA2_F1B; /* Fn 1B */ /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function 1A */ /* */ /********************************************************************/ typedef struct { char filler01[21]; char cont_parity_ind; /* Continuous Parity Ind */ /* or Duplicate Address Ind */ char lo_hse_nbr[11]; /* Low House Number-Sort Frm*/ BBL bbl; /* Borough-Block-Lot */ char filler02; /* Reserved for Tax Lot Ver#*/ char RPAD_scc; /* RPAD Self_Check Code(SCC)*/ char filler03; char RPAD_lucc[2]; /* RPAD Land Use Class. Code*/ char corner[2]; /* Corner Code */ char nbr_blds[4]; /* Nbr of buildings on lot */ char nbr_str[2]; /* Nbr Street Frontages */ char inter_flag; /* Interior Lot Flag */ char vacant_flag; /* Vacant Lot Flag */ char irreg_flag; /* Irregularly-Shaped Lot Fl*/ char mh_ri_flag; /* Marble Hill/Rikers Island*/ char adr_range_overflow;/* Addr Rnge Lst Ovrflow Flg*/ char stroll_key[18]; /* Strolling key */ char filler04; char res_internal_use; /* Reserved for Internal Use*/ char bld_id[7]; /* Building Ident. Number */ /* (BIN) of Input Address of*/ /* Existing Building, If any*/ char condo_flag; /* Condominium Flag */ char filler05; /* Future Use */ char condo_id[4]; /* RPAD Condo Id Number */ char condo_unit_id[7]; /* Condo Unit Id Nbr-Not Impl*/ BBL condo_bill_bbl; /* Condo Billing BBL */ char filler06; /* Reserved for Tax Lot Ver */ char condo_scc; /* Self-Check Code */ BBL condo_lo_bbl; /* Low BBL of Condo */ char filler07; /* Reserved for Tax Lot Ver */ BBL condo_hi_bbl; /* High BBL of Condo */ char filler08; /* Reserved for Tax Lot Ver */ char filler09[15]; char co_op_nbr[4]; /* Co-op Number */ SANBORN San; /* Sanborn Information */ char business_area[5]; /* Business Area */ char tax_map_nbr[5]; /* Tax Map Nbr-Sect and Vol */ char filler10[4]; /* Tax Map Nbr Page Not Impl*/ char filler11[3]; char latitude[9]; /* Latitude calc from X-Y */ char longitude[11]; /* Longitude calc from X-Y */ char coord[2][7]; /* 1 = X coordinate-Annotat */ /* 2 = Y coordinate-Annotat */ char bid_id[6]; /* Business Improvement Dist */ /* District ID (BID) */ char TPAD_bin_status; /* Existing BIN of Input Addr*/ char TPAD_new_bin[7]; /* BIN for New Building job */ char TPAD_new_bin_status;/* Status of New Buildng BIN*/ char TPAD_conflict_flag; /* From TPAD */ char dcp_zone_map[3]; /* DCP Zoning Map */ char filler12[6]; char int_use[8]; /* Internal Use */ char nbr_addr[4]; /* Nbr of Addr Ranges or Nbr*/ /* of BINs in List */ union { ADDR_RANGE addr_range[21]; /* List of Addr */ TPADLST tpad_list; /*or BINs + Status Byte */ char bin_list[2500][7]; /* or BINs*/ } bar; } C_WA2_F1A; /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function AP */ /* */ /********************************************************************/ typedef struct { char filler01[21]; char cont_parity_ind; /* Continuous Parity Ind */ /* or Duplicate Address Ind */ char lo_hse_nbr[11]; /* Low House Number-Sort Frm*/ BBL bbl; /* Borough-Block-Lot */ char filler02; /* Reserved for Tax Lot Ver#*/ char fil_RPAD_scc; /* filler for func AP */ char filler03; char fil_RPAD_lucc[2]; /* fillers for func AP */ char fil_corner[2]; /* fillers for func AP */ char nbr_blds[4]; /* Nbr of buildings on lot */ char fil_nbr_str[2]; /* fillers for func AP */ char fil_inter_flag; /* filler for func AP */ char fil_vacant_flag; /* filler for func AP */ char fil_irreg_flag; /* filler for func AP */ char fil_mh_ri_flag; /* filler for func AP */ char fil_adr_range_overflow;/* filler for func AP */ char fil_stroll_key[18];/* fillers for func AP */ char filler04; char res_internal_use; /* Reserved for Internal Use*/ char bld_id[7]; /* Building Ident. Number */ /* (BIN) of Input Address of*/ /* Existing Building, */ char condo_flag; /* Condominium Flag */ char filler05; /* Future Use */ char condo_id[4]; /* RPAD Condo Id Number */ char filler_unit_id[7]; /* Condo Unit Id Nbr-Not Impl*/ BBL condo_bill_bbl; /* Condo Billing BBL */ char filler06; /* Reserved for Tax Lot Ver */ char fil_condo_scc; /* filler for func AP */ BBL condo_lo_bbl; /* Low BBL of Condo */ char filler07; /* Reserved for Tax Lot Ver */ BBL condo_hi_bbl; /* High BBL of Condo */ char filler08; /* Reserved for Tax Lot Ver */ char filler09[15]; char co_op_nbr[4]; /* Co-op Number */ char fil_sanborn[8]; /* fillers for func AP */ char fil_business_area[5]; /* fillers for func AP */ char fil_tax_map_nbr[5]; /* fillers for func AP */ char filler10[4]; char filler11[3]; char latitude[9]; /* Latitude calc from X-Y */ char longitude[11]; /* Longitude calc from X-Y */ char coord[2][7]; /* 1 = X coordinate from AP */ /* 2 = Y coordinate from AP */ char fil_bid_id[6]; /* fillers for func AP */ char fil_TPAD_bin_status; /* fillers for func AP */ char fil_TPAD_new_bin[7]; /* fillers for func AP */ char fil_TPAD_new_bin_status;/* filler for func AP */ char fil_TPAD_conflict_flag; /* filler for func AP */ char ap_id[9]; /* Address Point Id */ char int_use[8]; /* Internal Use */ char nbr_addr[4]; /* Nbr of Addr = 0001 */ union { ADDR_RANGE_AP addr_range_ap[21]; /* List of Addr */ char fil_tpad_list[2191]; char fil_bin_list[2500][7]; } bar; } C_WA2_FAP; /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function APX */ /* */ /********************************************************************/ typedef struct { char filler01[21]; /* Fn AP with extra bytes */ char cont_parity_ind; /* Continuous Parity Ind */ /* or Duplicate Address Ind */ char lo_hse_nbr[11]; /* Low House Number-Sort Frm*/ BBL bbl; /* Borough-Block-Lot */ char filler02; /* Reserved for Tax Lot Ver#*/ char fil_RPAD_scc; /* filler for func AP */ char filler03; char fil_RPAD_lucc[2]; /* fillers for func AP */ char fil_corner[2]; /* fillers for func AP */ char nbr_blds[4]; /* Nbr of buildings on lot */ char fil_nbr_str[2]; /* fillers for func AP */ char fil_inter_flag; /* filler for func AP */ char fil_vacant_flag; /* filler for func AP */ char fil_irreg_flag; /* filler for func AP */ char fil_mh_ri_flag; /* filler for func AP */ char fil_adr_range_overflow;/* filler for func AP */ char fil_stroll_key[18];/* fillers for func AP */ char filler04; char res_internal_use; /* Reserved for Internal Use*/ char bld_id[7]; /* Building Ident. Number */ /* (BIN) of Input Address of*/ /* Existing Building, */ char condo_flag; /* Condominium Flag */ char filler05; /* Future Use */ char condo_id[4]; /* RPAD Condo Id Number */ char filler_unit_id[7]; /* Condo Unit Id Nbr-Not Impl*/ BBL condo_bill_bbl; /* Condo Billing BBL */ char filler06; /* Reserved for Tax Lot Ver */ char fil_condo_scc; /* filler for func AP */ BBL condo_lo_bbl; /* Low BBL of Condo */ char filler07; /* Reserved for Tax Lot Ver */ BBL condo_hi_bbl; /* High BBL of Condo */ char filler08; /* Reserved for Tax Lot Ver */ char filler09[15]; char co_op_nbr[4]; /* Co-op Number */ char fil_sanborn[8]; /* fillers for func AP */ char fil_business_area[5]; /* fillers for func AP */ char fil_tax_map_nbr[5]; /* fillers for func AP */ char filler10[4]; char filler11[3]; char latitude[9]; /* Latitude calc from X-Y */ char longitude[11]; /* Longitude calc from X-Y */ char coord[2][7]; /* 1 = X coordinate from AP */ /* 2 = Y coordinate from AP */ char fil_bid_id[6]; /* fillers for func AP */ char fil_TPAD_bin_status; /* fillers for func AP */ char fil_TPAD_new_bin[7]; /* fillers for func AP */ char fil_TPAD_new_bin_status;/* filler for func AP */ char fil_TPAD_conflict_flag; /* filler for func AP */ char ap_id[9]; /* Address Point Id */ char int_use[8]; /* Internal Use */ char reason_code; /* Reason Code */ char reason_code_qual; /* Reason Code Qualifier */ char warn_code[2]; /* Warning Return Code */ char ret_code[2]; /* GeoSupport Return Code */ char filler14[108]; char nbr_addr[4]; /* Nbr of Addr = 0001 */ ADDR_RANGE_APX addr_range_apx[21]; } C_WA2_FAPX; /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function 2 */ /* */ /********************************************************************/ typedef struct { char filler01[21]; char rep_cnt; /* Intersection Replication */ /* Counter*/ char lgc[2][2]; /* Preferred LGCs */ St_list inter; /* Number of Intersecting St*/ /* B5SCs of Intersection St */ char Dup_comp; /* Duplicate compass Directn*/ char atomic_polygon[3]; /* Atomic Polygon added V131*/ char filler02[2]; char LION_node_nbr[7]; /* LION Node Number */ char coord[3][7]; /* 1 = X coordinate, */ /* 2 = Y coordinate, */ /* 3 = Z coordinate, Not Imp*/ SANBORN San[2]; /* Sanborn Information */ char mh_ri_flag; /* Marble Hill/Rikers Island*/ char DOT_slca; /* DOT St Lght Contractr Are*/ char com_dist[3]; /* Community District */ char zip_code[5]; /* Zip code for st segment */ char health_area[4]; /* Health Area */ char police_boro_com; /* Police Patrol Boro Commnd*/ char police_pre[3]; /* Police Precinct */ char fire_sector[2]; /* Fire Sector */ char fire_bat[2]; /* Fire Battalion */ char fire_co_type; /* Fire Company Type */ char fire_co_nbr[3]; /* Fire Company Number */ char com_schl_dist[2]; /* Community School District*/ char cen_tract_10[6]; /* 2010 Census Tract */ char cen_tract_90[6]; /* 1990 Census Tract */ char level_codes [10]; /* Level codes */ char police_pat_boro[2];/* Police Patrol Borough */ // char filler_indv[2]; /* */ // char instruc_div [2]; /* Instructional Division */ char ad[2]; /* Assembly District */ char congress_dist[2]; /* Congressional District */ char state_sen_dist[2]; /* State Senatorial District*/ char civil_court[2]; /* Civil Court District */ char city_council[2]; /* City Council District */ char cd_eligible; /* CD Eligibility */ char dup_intersect_distance[5]; /*Distance in Feet */ /*Betwn Duplicate Intersects*/ /* not implemented */ char cen_tract_2000[6]; /* 2000 Census Tract */ char health_cen_dist[2];/* Health Cent Distr*/ char sanit_dist[3]; /* Sanitation District */ char sanit_sub_sect[2]; /* Sanit Collect Scheduling */ /* Section and Subsection */ char police_sector[4]; /* Police Sector V19.2 */ char filler03[8]; /* V18.3 */ // char filler03[12]; /* */ } C_WA2_F2; /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function 2W */ /********************************************************************/ typedef struct { /* Fn 2 - 200 Bytes */ C_WA2_F2 cwa2f2; /* Start with Fn 2 WA2 */ char filler04[22]; /* Fields used for Grid gen */ char lgcs_first_intersct[4][2]; /* Up to 4 LGC's for 1st */ /* intersecting street; */ char lgcs_second_intersct[4][2]; /* Up to 4 LGC's for 2nd */ /* intersecting street; */ char turn_restricts[10]; /* Up to 10 Turn restrictns */ char pref_lgc_list[5][2]; /* Preferd LGCs for Str list*/ char true_rep_cnt[2]; /* True Int Replication Cntr*/ char dup_node_list[20][7]; /* 140 *Node list for dup str code*/ char b7sc_list[20][5][4][8]; /* 3200 *B7SC lists for Node list */ char reason_code; /* Reason Code */ char reason_code_qual; /* future use */ char warn_code[2]; /* Warning Return Code */ char ret_code[2]; /* GeoSupport Return Code */ char latitude[9]; /* Latitude calc from X-Y */ char longitude[11]; /* Longitude calc from X-Y */ char filler8[374]; /* Future Use */ } C_WA2_F2W, *PC_WA2_F2W; /* Fn 2W with filler */ /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function 3 */ /* */ /********************************************************************/ typedef struct { char filler01[21]; char dup_key_flag; /* Duplicate Key Flag or */ /* Continuous Parity Flag */ char loc_stat_seg; /* Locational Status of Seg */ char cnty_bnd_ind; /* County Boundary Indicat */ char lgc[3][2]; /* Preferred LGCs */ St_list st[2]; /* 1=Low and 2=High */ /* Nbr of cross sts at low */ /* house nbr end of street */ /* B5SCs of lo end X sts */ char x_street_reversal_flag; /* X St Reversal Flag */ LION key; /* LION Key */ char genr_flag; /* Generated Record Flag */ char seg_len[5]; /* Segment Length in Feet */ char seg_azm[3]; /* Segment Azimuth */ char seg_orient; /* Segment Orientation */ char mh_ri_flag; /* Marble Hill/Rikers Island*/ /* Alternative Boro flag */ char from_node[7]; /* From node */ char to_node[7]; /* To node */ char sanit_snow_priority;/* Sanitation Street Snow */ /* Priority (P,S,T,V) */ char filler02[4]; /* Future use */ char seg_id[7]; /* Segment Identifier */ char DOT_slca; /* DOT St Lght Contractr Are*/ char curve_flag; /* Curve Flag */ char dog_leg; /* Dog leg flag */ char feature_type; /* Feature Type Code */ char segmenttypecode; /* Segment Type Code */ char coincident_seg_cnt; /* Coincident Segment */ /* Counter */ char filler03[4]; SEGSIDE side[2]; /* 1 = Left Side of street */ /* 2 = Right Side of street */ } C_WA2_F3; typedef struct { C_WA2_F3 cwa2f3; char filler1[6]; /* Future use */ char seg_cnt[4]; /* Number of Segments */ char segments[70][7]; /* Segment Ids */ } C_WA2_F3_AUXSEG; /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function 3 EXTENDED */ /* */ /********************************************************************/ typedef struct { /* Data from CSCL added */ C_WA2_F3 cwa2f3; char lgc_list[4][2]; /* List of LGC's */ char from_lgcs[4][2]; /* List of from LGC's */ char to_lgcs[4][2]; /* List of to LGC's */ char left_hcd[2]; /* Left Health Center */ /* District */ char right_hcd[2]; /* Right Health Center */ /* District */ char filler_csd; /* */ char traffic_dir; /* Traffic Direction */ char roadway_type[2]; /* */ char physical_id[7]; /* */ char generic_id[7]; /* */ char filler03[7]; /* DCP internal use */ char filler04[7]; /* DCP internal use */ char street_status; /* */ char str_width[3]; /* Street Width */ char str_width_irr; /* Irregular Width Y or N */ char bike_lane; /* */ char fcc[2]; /* Federal Classification Cd*/ char row_type; /* */ char lgc5[2]; /* */ char lgc6[2]; /* */ char lgc7[2]; /* */ char lgc8[2]; /* */ char lgc9[2]; /* */ char legacy_id[7]; /* */ char nta_name_left[75]; /* Neighborhood Tabulation */ /* Area Name (Left) */ char nta_name_right[75]; /* Neighborhood Tabulation */ /* Area Name (Right) */ char from_coord[2][7]; /* 1 = X Coordinate */ /* 2 = Y Coordinate */ char to_coord[2][7]; /* 1 = X Coordinate */ /* 2 = Y Coordinate */ char from_latitude[9]; /*Latitude of from intersct.*/ char from_longitude[11]; /*Longitude of from intersct*/ char to_latitude[9]; /*Latitude of to intersect. */ char to_longitude[11]; /*Longitude of to intersect.*/ char left_blockface_id[10]; //NEW location of blockface id char right_blockface_id[10]; char nbr_travel_lanes[2]; /* nbr of traveling lanes */ char nbr_park_lanes[2]; /* nbr of parking lanes */ char nbr_total_lanes[2]; /* total nbr of lanes */ char bike_lane_2[2]; /*Bike Lane has 2 bytes */ /* numeric value */ char str_width_max[3]; /*Street width maximum */ char bike_traffic_dir[2]; //V17.1 Bike Traffic Direction char speed_limit[2]; //V17.4 Speed Limit char left_puma_code[5]; // PUMA Code (left) V18.1 char right_puma_code[5]; // PUMA Code (right) V18.1 char left_police_sector[4]; // Police Sector(left) V19.2 char right_police_sector[4]; // Police Sector(right)V19.2 char filler05[193]; // V18.3 //char filler05[201]; // V18.1 //char filler05[211]; // V17.4 //char filler05[213]; // V17.1 } C_WA2_F3X; typedef struct { /* Fn 3 Extended with */ C_WA2_F3X cwa2f3x; /* Auxilary Segments */ char filler1[6]; /* Future use */ char seg_cnt[4]; /* Number of Segments */ char segments[70][7]; /* Segment Ids */ } C_WA2_F3X_AUXSEG; /* Fn 3X with AUXSEGID */ /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function 3C */ /* */ /********************************************************************/ typedef struct { char filler01[21]; char dup_key_flag; /* Duplicate Key Flag or */ /* Continuous Parity Flag */ char loc_stat_seg; /* Locational Status of Seg */ char cnty_bnd_ind; /* County Boundary Indicat */ char lgc[3][2]; /* Preferred LGCs */ St_list st[2]; /* 1=Low and 2=High */ /* Nbr of cross sts at low */ /* house nbr end of street */ /* B5SCs of lo end Cross sts*/ char x_street_reversal_flag; /* X St Reversal Flag */ LION key; /* LION key */ char genr_flag; /* Generated Record Flag */ char seg_len[5]; /* Segment Length in Feet */ char seg_azm[3]; /* Segment Azimuth */ char seg_orient; /* Segment Orientation */ char mh_ri_flag; /* Marble Hill/Rikers Island*/ /* Alternative Boro flag */ char from_node[7]; /* From node */ char to_node[7]; /* To Node */ char sanit_snow_priority;/* Sanitation Street Snow */ /* Priority (P,S,T,V) */ char filler02[4]; /* Future use */ char seg_id [7]; /* Segment Identifier */ char DOT_slca; /* DOT St Lght Contractr Are*/ char sos_ind; /* Side of Street Indicator */ char curve_flag; /* Curve Flag */ char feature_type; /* Feature Type Code */ char segmenttypecode; /* Segment Type Code */ char coincident_seg_cnt; /* Coincident Segment */ /* Counter */ char filler03[4]; SEGSIDE req; /* Geographic Information for*/ } C_WA2_F3C; typedef struct { C_WA2_F3C cwa2f3c; char filler1[6]; /* Future use */ char seg_cnt[4]; /* Number of Segments */ char segments[70][7]; /* Segment ids */ } C_WA2_F3C_AUXSEG; /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function 3C EXTENDED */ /* */ /********************************************************************/ typedef struct { /* Data from CSCL added */ C_WA2_F3C cwa2f3c; char lgc_list[4][2]; /* List of LGC's */ char from_lgcs[4][2]; /* List of from LGC's */ char to_lgcs[4][2]; /* List of to LGC's */ char left_hcd[2]; /* Left Health Center Distr */ char right_hcd[2]; /* Right Health Center Distr*/ char fill_csd; /* Filler */ char traffic_dir; /* Traffic Direction */ char roadway_type[2]; /* */ char physical_id[7]; /* */ char generic_id[7]; /* */ char filler03[7]; /* DCP internal use */ char filler04[7]; /* DCP internal use */ char street_status; /* */ char str_width[3]; /* Street Width */ char str_width_irr; /* Irregular Width Y or N */ char bike_lane; /* */ char fcc[2]; /* Federal Classification Cd*/ char row_type; /* */ char lgc5[2]; /* */ char lgc6[2]; /* */ char lgc7[2]; /* */ char lgc8[2]; /* */ char lgc9[2]; /* */ char legacy_id[7]; /* */ char nta_name[75]; /* Neighborhood Tabulation */ /* Area Name */ char from_coord[2][7]; /* 1 = X Coordinate */ /* 2 = Y Coordinate */ char to_coord[2][7]; /* 1 = X Coordinate */ /* 2 = Y Coordinate */ char from_latitude[9]; /* Latitude of from intersct.*/ char from_longitude[11]; /* Longitude of from intersct*/ char to_latitude[9]; /* Latitude of to intersct. */ char to_longitude[11]; /* Longitude of to intersct. */ char blockface_id[10]; /* NEW location of this field*/ /* because of length changed */ char nbr_travel_lanes[2]; /* nbr of traveling lanes */ char nbr_park_lanes[2]; /* nbr of parking lanes */ char nbr_total_lanes[2]; /* total nbr of lanes */ char bike_lane_2[2]; /*Bike Lane has 2 bytes */ /* numeric value */ char str_width_max[3]; /*street width maximum */ char bike_traffic_dir[2]; //V17.1 Bike Traffic Direction char speed_limit[2]; //V17.4 Speed Limit char puma_code[5]; // PUMA Code V18.1 char police_sector[4]; // Police Sector V19.2 char filler05[287]; // V18.3 //char filler05[291]; // V18.1 //char filler05[296]; // V17.4 //char filler05[298]; // V17.1 } C_WA2_F3CX; typedef struct { /* Fn 3C Extended with */ C_WA2_F3CX cwa2f3cx; /* Auxilary Segments */ char filler1[6]; /* Future use */ char seg_cnt[4]; /* Number of Segments */ char segments[70][7]; /* Segment Ids */ } C_WA2_F3CX_AUXSEG; /* Fn 3CX with AUXSEGID */ /********************************************************************/ /* */ /* Platform-Independent Work Area 2 for Function 3S */ /* */ /********************************************************************/ typedef struct { char filler01[21]; char nbr_x_str[3]; /* Nbr of Cross sts in list */ CROSS_STRS cross_strs[350];/* Cross Street structure*/ } C_WA2_F3S; #ifdef __cplusplus } #endif #endif","title":"PAC COPY File"},{"location":"appendices/appendix14/#natural-ldas-cow","text":"","title":"NATURAL LDAs (COW)"},{"location":"appendices/appendix14/#geolp1-copy-file","text":"* USER PROGRAMS MUST RESET GEOLP1 BEFORE PRIMING WORKAREA 1 1 GEOLP1 /* LRECL=1200 * THE FIELD P1NAT IS USED AS A PARAMETER TO CALL GEOSUPPORT RT 2 P1NAT A 2 R 2 P1NAT * * * * * INPUT FIELDS * * * * * * * * * * /* WORK AREA 1 FOR * * /* ALL FUNCTIONS 3 PIWA1-IN-FUNCTION-CODE A 2 R 3 PIWA1-IN-FUNCTION-CODE 4 PIWA1-IN-FUNCTION-1 A 1 4 PIWA1-IN-FUNCTION-2 A 1 2 PIWA1-IN-HOUSENUM-DISPLAY A 16 2 PIWA1-IN-HOUSENUM-SORT A 11 2 PIWA1-IN-LOW-HOUSENUM-DISPLAY A 16 2 PIWA1-IN-LOW-HOUSENUM-SORT A 11 2 PIWA1-IN-BORO-1 A 1 2 PIWA1-IN-10SC-1 A 10 2 PIWA1-IN-STREET-1 A 32 2 PIWA1-IN-BORO-2 A 1 2 PIWA1-IN-10SC-2 A 10 2 PIWA1-IN-STREET-2 A 32 2 PIWA1-IN-BORO-3 A 1 2 PIWA1-IN-10SC-3 A 10 2 PIWA1-IN-STREET-3 A 32 2 PIWA1-IN-BBL A 10 /* 3 LEVEL 3 ITEMS R 2 PIWA1-IN-BBL 3 PIWA1-IN-BBL-BORO A 1 3 PIWA1-IN-BLOCK A 5 3 PIWA1-IN-LOT A 4 2 PIWA1-IN-LOT-VERSION A 1 /* NA 2 PIWA1-IN-BIN A 7 2 PIWA1-IN-COMPASS A 1 2 PIWA1-IN-COMPASS2 A 1 2 PIWA1-IN-NODE A 7 2 PIWA1-IN-PLATFORM-INDICATOR A 1 2 PIWA1-IN-ZIPCODE A 5 2 PIWA1-IN-UNIT A 14 /* V16.4 ADDITION 2 FILLER-200 A 82 /* V16.4 ALTERATION * 2 FILLER-200 A 96 2 PIWA1-IN-LONG-WORKAREA2-FLAG A 1 /* L=LONG WA - 1A/BL(1200) 2 PIWA1-IN-HSE-NBR-JUSTIFY A 1 2 PIWA1-IN-HNL A 2 /* HN LENGTH 2 PIWA1-IN-HSE-OVER-FLAG A 1 /* HN OVERRIDE *,$,' ' 2 PIWA1-IN-SNL A 2 2 PIWA1-IN-SN-NORM-FORMAT A 1 /* C=COMPACT,S OR ' '=SORTT 2 PIWA1-IN-EXPANDED-FORMAT A 1 2 PIWA1-IN-ROADBED-REQ-SWITCH A 1 2 PIWA1-IN-INTERNAL-USE-LEGACY A 1 /* RESERVED FOR GSS USE 2 PIWA1-IN-SEGAUX-SWITCH A 1 2 PIWA1-IN-BROWSE-FLAG A 1 2 PIWA1-IN-REAL-STREET-ONLY A 1 /* FN 3S 2 PIWA1-IN-TPAD-SWITCH A 1 /* FN 1A 2 PIWA1-IN-MODE-SWITCH A 1 2 PIWA1-IN-WTO-SWITCH A 1 2 FILLER-400 A 29 * * * * * OUTPUT FIELDS * * * * * * * * * * 2 PIWA1-OUT-BORONAME A 9 2 PIWA1-OUT-HOUSENUM-DISPLAY A 16 2 PIWA1-OUT-HOUSENUM-SORT A 11 2 PIWA1-OUT-B10SC-1 A 11 2 PIWA1-OUT-STREET-1 A 32 2 PIWA1-OUT-B10SC-2 A 11 2 PIWA1-OUT-STREET-2 A 32 2 PIWA1-OUT-B10SC-3 A 11 2 PIWA1-OUT-STREET-3 A 32 2 PIWA1-OUT-BBL A 10 /* 3 LEVEL 3 ITEMS R 2 PIWA1-OUT-BBL 3 PIWA1-OUT-BBL-BORO A 1 3 PIWA1-OUT-BLOCK A 5 3 PIWA1-OUT-LOT A 4 2 PIWA1-OUT-LOT-VERSION A 1 /* FOR FUTRUE LOT VERSION # 2 PIWA1-OUT-LOW-HOUSENUM-DISPLAY A 16 2 PIWA1-OUT-LOW-HOUSENUM-SORT A 11 2 PIWA1-OUT-BIN A 7 2 PIWA1-OUT-STREET-ATTR A 1 (1:3) /* RES FOR GSS 2 PIWA1-OUT-REASON-CODE-2 A 1 /* FN 1B 2 PIWA1-OUT-REASON-CODE-QUAL-2 A 1 /*TPAD 2ND REASON CODE * * /*QUALIFIER 2 PIWA1-OUT-WARNING-CODE-2 A 2 /* FN 1B 2 PIWA1-OUT-RETURN-CODE-2 A 2 /* FN 1B 2 PIWA1-OUT-ERROR-MESSAGE-2 A 80 /* FN 1B 2 PIWA1-OUT-NODE A 7 2 PIWA1-OUT-UNIT-SORT A 14 /* V16.4 ADDITION R 2 PIWA1-OUT-UNIT-SORT 3 PIWA1-OUT-UNIT-TYPE A 4 /* V16.4 ADDITION 3 PIWA1-OUT-UNIT-ID A 10 /* V16.4 ADDITION 2 PIWA1-OUT-UNIT-DISP A 14 /* V16.4 ADDITION 2 FILLER-550 A 11 /* V16.4 ALTERATION * 2 FILLER-550 A 39 2 FILLER-555 A 6 /* NIN, NYI 2 PIWA1-OUT-SND-ATTR A 1 /* RES FOR GSS 2 PIWA1-OUT-REASON-CODE A 1 2 PIWA1-OUT-REASON-CODE-QUAL A 1 /*TAPAD REASON CODE * * /*QUALIFIER 2 PIWA1-OUT-WARNING-CODE A 2 2 PIWA1-OUT-RETURN-CODE A 2 2 PIWA1-OUT-ERROR-MESSAGE A 80 2 PIWA1-OUT-NUM-SIMILAR-STRS A 2 2 PIWA1-OUT-SIMILAR-B7SC A 8 (1:10) 2 PIWA1-OUT-SIMILAR-NAMES A 32 (1:10)","title":"GEOLP1 COPY File"},{"location":"appendices/appendix14/#geolp2-copy-file","text":"0010 1 GEOLP2 DSR 0744 0020 * THE FIELD P2NAT IS USED AS A PARAMETER TO CALL GEOSUPPORT FOR ALLLL C 0030 * FUNCTIONS THAT ARE REDEFINED ON GEOLP2 C 0040 * * MAXIMUM LENGTH 2W - 4000 BYTES C 0050 2 P2NAT A 21 DK 0746 0060 R 2 P2NAT DRR 0747 0070 * * BEGINNING OF FUNCTION 1 LAYOUT * **** ******* C 0080 3 PIWA2-FN1-ACCESS-KEY A 21 DFR 0748 0090 2 PIWA2-FN1-CONT-PARITY A 1 /* (OR DUP ADDR IND) DK 0749 0100 2 PIWA2-FN1-LOW-HOUSENUM A 11 /* SORT FORMAT DK 0750 0110 2 PIWA2-FN1-HI-HOUSENUM A 11 /* SORT FORMAT DK 0751 0120 2 PIWA2-FN1-PREFERRED-LGC A 2 DK 0752 0130 2 PIWA2-FN1-NUM-X-ST-LOW-END A 1 DK 0753 0140 2 PIWA2-FN1-LOW-B5SC A 6 (1:5) /* 30-BYTES DK I1 0754 M 0150 2 PIWA2-FN1-NUM-X-ST-HI-END A 1 DK 0755 0160 2 PIWA2-FN1-HI-B5SC A 6 (1:5) /* 30-BYTES DK I1 0756 M 0170 2 PIWA2-FN1-LIONKEY A 10 DK 0757 0180 R 2 PIWA2-FN1-LIONKEY DRR 0758 0190 3 PIWA2-FN1-LION-BORO A 1 DFR 0759 0200 3 PIWA2-FN1-LION-FACECODE A 4 DFR 0760 0210 3 PIWA2-FN1-LION-SEQ A 5 DFR 0761 0220 2 PIWA2-FN1-SPECIAL-ADDR-FLAG A 1 DK 0762 0230 2 PIWA2-FN1-SIDE-OF-STR A 1 DK 0763 0240 2 PIWA2-FN1-SEG-LEN A 5 DK 0764 0250 2 PIWA2-FN1-X-COORD A 7 DK 0765 0260 2 PIWA2-FN1-Y-COORD A 7 DK 0766 0270 2 FILLER-100 A 7 /* FOR ZCOORD DK 0767 0280 2 FILLER-200 A 1 /* FOR GSS USE DK 0768 0290 2 PIWA2-FN1-MARBLE-RIKERS-FLAG A 1 DK 0769 0300 2 PIWA2-FN1-DOT-SLA A 1 DK 0770 0310 2 PIWA2-FN1-COM-DIST A 3 DK 0771 0320 R 2 PIWA2-FN1-COM-DIST DRR 0772 0330 3 PIWA2-FN1-COM-DIST-BORO A 1 DFR 0773 0340 3 PIWA2-FN1-COM-DIST-NUM A 2 DFR 0774 0350 2 PIWA2-FN1-ZIP A 5 DK 0775 0360 * * * **** ***** C 0370 * * THE FN1E FIELDS ARE VALID ONLY * **** ***** C 0380 * * FOR FUNCTION 1E, NOT FUNC 1. * **** ***** C 0390 2 PIWA2-FN1E-ELECT-DIST A 3 DK 0776 0400 2 PIWA2-FN1E-ASSEM-DIST A 2 DK 0777 0410 2 PIWA2-FN1E-SPLIT-ED-FLAG A 1 DK 0778 0420 2 PIWA2-FN1E-CONG-DIST A 2 DK 0779 0430 2 PIWA2-FN1E-SENATE-DIST A 2 DK 0780 0440 2 PIWA2-FN1E-COURT-DIST A 2 DK 0781 0450 2 PIWA2-FN1E-COUNCIL-DIST A 2 DK 0782 0460 * * * **** ***** C 0470 2 PIWA2-FN1-HEALTH-CENTER-DIST A 2 DK 0783 0480 2 PIWA2-FN1-HEALTH-AREA A 4 DK 0784 0490 2 PIWA2-FN1-SANI-DIST A 3 DK 0785 0500 R 2 PIWA2-FN1-SANI-DIST DRR 0786 0510 3 PIWA2-FN1-SANI-DIST-BORO A 1 DFR 0787 0520 3 PIWA2-FN1-SANI-DIST-NUM A 2 DFR 0788 0530 2 PIWA2-FN1-SANI-SUBSEC A 2 DK 0789 0540 2 PIWA2-FN1-SANI-REG A 5 DK 0790 0550 2 PIWA2-FN1-SANI-REC A 3 DK 0791 0560 2 PIWA2-FN1-POLICE-DIST A 4 DK 0792 0570 R 2 PIWA2-FN1-POLICE-DIST DRR 0793 0580 3 PIWA2-FN1-POL-PAT-BORO-CMD A 1 DFR 0794 0590 3 PIWA2-FN1-POL-PRECINCT A 3 DFR 0795 0600 2 PIWA2-FN1-FIRE-DIV A 2 DK 0796 0610 2 PIWA2-FN1-FIRE-BAT A 2 DK 0797 0620 2 PIWA2-FN1-FIRE-CO A 4 DK 0798 0630 R 2 PIWA2-FN1-FIRE-CO DRR 0799 0640 3 PIWA2-FN1-FIRE-CO-TYPE A 1 DFR 0800 0650 3 PIWA2-FN1-FIRE-CO-NUM A 3 DFR 0801 0660 2 PIWA2-FN1-SCHL-DIST-SPLIT-FLAG A 1 DK 0802 0670 2 PIWA2-FN1-SCHL-DIST A 2 DK 0803 0680 2 PIWA2-FN1-DYN-BLK A 3 DK 0804 0690 2 PIWA2-FN1-POLICE-PAT-BORO A 2 DK 0805 0700 2 PIWA2-FN1-FEATURE-TYPE A 1 DK 0806 0710 2 PIWA2-FN1-SEGMENT-TYPE A 1 DK 0807 0720 2 PIWA2-FN1-ALX A 1 DK 0808 0730 2 PIWA2-FN1-COINCIDENT-SEG-CTR A 1 DK 0809 0740 2 FILLER-290 A 3 DK 0810 0750 2 PIWA2-FN1-1990-CENSUS-TRACT A 6 DK 0811 0760 2 PIWA2-FN1-2010-CENSUS-TRACT A 6 DK 0812 0770 2 PIWA2-FN1-2010-CENSUS-BLOCK A 4 DK 0813 0780 2 PIWA2-FN1-2010-CENSUS-BLOCK-SUF A 1 /* NA DK 0814 0790 2 PIWA2-FN1-2000-CENS-TRACT A 6 DK 0815 0800 2 PIWA2-FN1-2000-CENS-BLOCK A 4 DK 0816 0810 2 PIWA2-FN1-2000-CENS-BLOCK-SUF A 1 /* NA DK 0817 0820 2 PIWA2-FN1-NTA A 4 DK 0818 0830 2 PIWA2-FN1-SANIT-SNOW-PRIORITY A 1 DK 0819 0840 2 PIWA2-FN1-SANIT-ORGANICS A 5 DK 0820 0850 2 PIWA2-FN1-SANIT-BULK-PICK-UP A 5 /* V16.4 ADDITION DK 0821 0860 * 2 PIWA2-FN1-SANIT-RESERVED A 5 /*FOR POSSIBLE FUTURE USE CK 0821 0870 2 PIWA2-FN1-HURRICANE-ZONE A 2 /*OEM HURRICANE EVAC ZONE DK 0822 0880 2 FILLER-300 A 11 DK 0823 0890 2 PIWA2-FN1-UHNS A 11 /* UNDERLYING HNS DK 0824 0900 2 PIWA2-FN1-REAL-B7SC A 8 DK 0825 0910 2 PIWA2-FN1-SEGMENT-ID A 7 DK 0826 0920 2 PIWA2-FN1-CURVE-FLAG A 1 DK 0827 0930 2 PIWA2-FN1-PSEUDO-FILLER A 3700 /*MAX RECORD 2W IS 4000 DK 0828 0940 * * END OF FUNCTION 1 LAYOUT * **** ******* C 0950 * - -------------------------------- - ---- -------------------------------- C 0960 * * BEGINNING OF FUNCTION 2 C 0970 * * & FUNCTION 2C LAYOUT * ********** ******* C 0980 R 1 GEOLP2 DRR 0829 0990 2 PIWA2-FN2-ACCESS-KEY A 21 /* FOR FUNCTIONS 2 & 2C DFR 0830 1000 2 PIWA2-FN2-DUP-INTERSECT-FLAG A 1 DFR 0831 1010 2 PIWA2-FN2-PREFERRED-LGC1 A 2 DFR 0832 1020 2 PIWA2-FN2-PREFERRED-LGC2 A 2 DFR 0833 1030 2 PIWA2-FN2-NUM-OF-INTERSECTS A 1 DFR 0834 1040 2 PIWA2-FN2-INTERSECT-B5SC A 6 (1:5) /* 30-BYTES DFRI1 0835 M 1050 2 PIWA2-FN2-COMP-DIR A 1 DFR 0836 1060 2 PIWA2-FN2-ATOMIC-POLYGON A 3 DFR 0837 1070 2 FILLER-350 A 2 DFR 0838 1080 2 PIWA2-FN2-NODE-NUM A 7 DFR 0839 1090 2 PIWA2-FN2-X-COORD A 7 DFR 0840 1100 2 PIWA2-FN2-Y-COORD A 7 DFR 0841 1110 2 FILLER-400 A 7 /* FOR ZCOORD DFR 0842 1120 2 PIWA2-FN2-SANBORN1 A 8 DFR 0843 1130 R 2 PIWA2-FN2-SANBORN1 DRR 0844 1140 3 PIWA2-FN2-SANBORN1-BORO A 1 DFR 0845 1150 3 PIWA2-FN2-SANBORN1-VOL A 3 DFR 0846 1160 3 PIWA2-FN2-SANBORN1-PAGE A 4 DFR 0847 1170 2 PIWA2-FN2-SANBORN2 A 8 DFR 0848 1180 R 2 PIWA2-FN2-SANBORN2 DRR 0849 1190 3 PIWA2-FN2-SANBORN2-BORO A 1 DFR 0850 1200 3 PIWA2-FN2-SANBORN2-VOL A 3 DFR 0851 1210 3 PIWA2-FN2-SANBORN2-PAGE A 4 DFR 0852 1220 2 PIWA2-FN2-MARBLE-RIKERS-FLAG A 1 DFR 0853 1230 2 PIWA2-FN2-DOT-SLA A 1 DFR 0854 1240 2 PIWA2-FN2-COM-DIST A 3 DFR 0855 1250 R 2 PIWA2-FN2-COM-DIST DRR 0856 1260 3 PIWA2-FN2-COM-DIST-BORO A 1 DFR 0857 1270 3 PIWA2-FN2-COM-DIST-NUM A 2 DFR 0858 1280 2 PIWA2-FN2-ZIP A 5 DFR 0859 1290 2 PIWA2-FN2-HEALTH-AREA A 4 DFR 0860 1300 2 PIWA2-FN2-POLICE-DIST A 4 DFR 0861 1310 R 2 PIWA2-FN2-POLICE-DIST DRR 0862 1320 3 PIWA2-FN2-POL-PAT-BORO-CMD A 1 DFR 0863 1330 3 PIWA2-FN2-POL-PRECINCT A 3 DFR 0864 1340 2 PIWA2-FN2-FIRE-DIV A 2 DFR 0865 1350 2 PIWA2-FN2-FIRE-BAT A 2 DFR 0866 1360 2 PIWA2-FN2-FIRE-CO A 4 DFR 0867 1370 R 2 PIWA2-FN2-FIRE-CO DRR 0868 1380 3 PIWA2-FN2-FIRE-CO-TYPE A 1 DFR 0869 1390 3 PIWA2-FN2-FIRE-CO-NUM A 3 DFR 0870 1400 2 PIWA2-FN2-SCHL-DIST A 2 DFR 0871 1410 2 PIWA2-FN2-2010-CENSUS-TRACT A 6 DFR 0872 1420 2 PIWA2-FN2-1990-CENSUS-TRACT A 6 DFR 0873 1430 2 PIWA2-FN2-LEVEL-CODE-TBL A 10 DFR 0874 1440 R 2 PIWA2-FN2-LEVEL-CODE-TBL DRR 0875 1450 3 PIWA2-FN2-LEVEL-CODE A 1 (5,2) /* 10-BYTES DFRI2 0876 M 1460 2 PIWA2-FN2-POLICE-PAT-BORO A 2 DFR 0877 1470 2 PIWA2-FN2-ASSEM-DIST A 2 DFR 0878 1480 2 PIWA2-FN2-CONG-DIST A 2 DFR 0879 1490 2 PIWA2-FN2-SENATE-DIST A 2 DFR 0880 1500 2 PIWA2-FN2-COURT-DIST A 2 DFR 0881 1510 2 PIWA2-FN2-COUNCIL-DIST A 2 DFR 0882 1520 2 PIWA2-FN2-CD-ELIGIBLE A 1 DFR 0883 1530 2 PIWA2-FN2-DUP-INTERSECT-DIST A 5 DFR 0884 1540 2 PIWA2-FN2-2000-CENS-TRACT A 6 DFR 0885 1550 2 PIWA2-FN2-HEALTH-CENTER-DIST A 2 DFR 0886 1560 2 PIWA2-FN2-SANITATION-DIST A 3 DFR 0887 1570 2 PIWA2-FN2-SANITATION-SUBSEC A 2 DFR 0888 1580 2 PIWA2-FN2-POLICE-SECTOR A 4 DFR 1590 2 FILLER-500 A 8 DFR 0889 1600 * 2 PIWA2-FN2-PSEUDO-FILLER A 3800 CFR 0789 1610 * * END OF FUNCTION 2 * ********** ******** C 1620 * * & FUNCTION 2C LAYOUT * ********** ******** C 1630 * * -------------------------------- - ---------- ----------------- C 1640 * * BEGINNING OF FUNCTION 2W * ********** ******* C 1650 R 1 GEOLP2 DRR 0890 1660 2 PIWA2-FN2W-ACCESS-KEY A 21 /* FOR FUNCTION 2W DFR 0891 1670 2 PIWA2-FN2W-DUP-INTERSECT-FLAG A 1 DFR 0892 1680 2 PIWA2-FN2W-PREFERRED-LGC1 A 2 DFR 0893 1690 2 PIWA2-FN2W-PREFERRED-LGC2 A 2 DFR 0894 1700 2 PIWA2-FN2W-NUM-OF-INTERSECTS A 1 DFR 0895 1710 2 PIWA2-FN2W-INTERSECT-B5SC A 6 (1:5) /* 30-BYTES DFRI1 0896 M 1720 2 PIWA2-FN2W-COMP-DIR A 1 DFR 0897 1730 2 PIWA2-FN2W-ATOMIC-POLYGON A 3 DFR 0898 1740 2 FILLER-350W A 2 DFR 0899 1750 2 PIWA2-FN2W-NODE-NUM A 7 DFR 0900 1760 2 PIWA2-FN2W-X-COORD A 7 DFR 0901 1770 2 PIWA2-FN2W-Y-COORD A 7 DFR 0902 1780 2 FILLER-400W A 7 /* FOR ZCOORD DFR 0903 1790 2 PIWA2-FN2W-SANBORN1 A 8 DFR 0904 1800 R 2 PIWA2-FN2W-SANBORN1 DRR 0905 1810 3 PIWA2-FN2W-SANBORN1-BORO A 1 DFR 0906 1820 3 PIWA2-FN2W-SANBORN1-VOL A 3 DFR 0907 1830 3 PIWA2-FN2W-SANBORN1-PAGE A 4 DFR 0908 1840 2 PIWA2-FN2W-SANBORN2 A 8 DFR 0909 1850 R 2 PIWA2-FN2W-SANBORN2 DRR 0910 1860 3 PIWA2-FN2W-SANBORN2-BORO A 1 DFR 0911 1870 3 PIWA2-FN2W-SANBORN2-VOL A 3 DFR 0912 1880 3 PIWA2-FN2W-SANBORN2-PAGE A 4 DFR 0913 1890 2 PIWA2-FN2W-MARBLE-RIKERS-FLAG A 1 DFR 0914 1900 2 PIWA2-FN2W-DOT-SLA A 1 DFR 0915 1910 2 PIWA2-FN2W-COM-DIST A 3 DFR 0916 1920 R 2 PIWA2-FN2W-COM-DIST DRR 0917 1930 3 PIWA2-FN2W-COM-DIST-BORO A 1 DFR 0918 1940 3 PIWA2-FN2W-COM-DIST-NUM A 2 DFR 0919 1950 2 PIWA2-FN2W-ZIP A 5 DFR 0920 1960 2 PIWA2-FN2W-HEALTH-AREA A 4 DFR 0921 1970 2 PIWA2-FN2W-POLICE-DIST A 4 DFR 0922 1980 R 2 PIWA2-FN2W-POLICE-DIST DRR 0923 1990 3 PIWA2-FN2W-POL-PAT-BORO-CMD A 1 DFR 0924 2000 3 PIWA2-FN2W-POL-PRECINCT A 3 DFR 0925 2010 2 PIWA2-FN2W-FIRE-DIV A 2 DFR 0926 2020 2 PIWA2-FN2W-FIRE-BAT A 2 DFR 0927 2030 2 PIWA2-FN2W-FIRE-CO A 4 DFR 0928 2040 R 2 PIWA2-FN2W-FIRE-CO DRR 0929 2050 3 PIWA2-FN2W-FIRE-CO-TYPE A 1 DFR 0930 2060 3 PIWA2-FN2W-FIRE-CO-NUM A 3 DFR 0931 2070 2 PIWA2-FN2W-SCHL-DIST A 2 DFR 0932 2080 2 PIWA2-FN2W-2010-CENSUS-TRACT A 6 DFR 0933 2090 2 PIWA2-FN2W-1990-CENSUS-TRACT A 6 DFR 0934 2100 2 PIWA2-FN2W-LEVEL-CODE-TBL A 10 DFR 0935 2110 R 2 PIWA2-FN2W-LEVEL-CODE-TBL DRR 0936 2120 3 PIWA2-FN2W-LEVEL-CODE A 1 (5,2) /* 10-BYTES DFRI2 0937 M 2130 2 PIWA2-FN2W-POLICE-PAT-BORO A 2 DFR 0938 2140 2 PIWA2-FN2W-ASSEM-DIST A 2 DFR 0939 2150 2 PIWA2-FN2W-CONG-DIST A 2 DFR 0940 2160 2 PIWA2-FN2W-SENATE-DIST A 2 DFR 0941 2170 2 PIWA2-FN2W-COURT-DIST A 2 DFR 0942 2180 2 PIWA2-FN2W-COUNCIL-DIST A 2 DFR 0943 2190 2 PIWA2-FN2W-CD-ELIGIBLE A 1 DFR 0944 2200 2 PIWA2-FN2W-DUP-INTERSECT-DIST A 5 DFR 0945 2210 2 PIWA2-FN2W-2000-CENS-TRACT A 6 DFR 0946 2220 2 PIWA2-FN2W-HEALTH-CENTER-DIST A 2 DFR 0947 2230 2 PIWA2-FN2W-SANITATION-DIST A 3 DFR 0948 2240 2 PIWA2-FN2W-SANITATION-SUBSEC A 2 DFR 0949 2250 2 PIWA2-FN2W-POLICE-SECTOR A 4 /* V19.2 ADDITION DFR 2260 2 FILLER-500W A 8 DFR 0950 2270 2 PIWA2-FN2W-FILLER-GRIDGEN A 22 /*INTERNAL USE DFR 0951 2280 2 PIWA2-FN2W-LGCS-FIRST-INTERSCT A 2 (1:4) /*UP TO 4 LGCS DFRI1 0952 M 2290 2 PIWA2-FN2W-LGCS-SECOND-INTERSCT A 2 (1:4) /*UP TO 4 LGCS DFRI1 0953 M 2300 2 PIWA2-FN2W-TURN-RESTRICTIONS A 1 (1:10) DFRI1 0954 M 2310 2 PIWA2-FN2W-INTERSECT-B5SC-LGCS A 2 (1:5) /*LGCS FOR LIST DFRI1 0955 M 2320 * /*OF INTERSECTING STS C 2330 2 PIWA2-FN2W-REPLICATION-CNTR A 2 DFR 0956 2340 2 PIWA2-FN2W-NODE-LIST A 7 (1:20) /*UP TO 20 NODES DFRI1 0957 M 2350 2 PIWA2-FN2W-NODE-LIST-B7SCS-TBLS A 3200 DFR 0958 2360 R 2 PIWA2-FN2W-NODE-LIST-B7SCS-TBLS /* REDEF. BEGIN : PIWA2-FN2W-NOD DRR 0959 2370 3 PIWA2-FN2W-NODE-LIST-B7SCS-TBL A 160 (20) DFRI1 0960 M 2380 R 2 PIWA2-FN2W-NODE-LIST-B7SCS-TBLS /* REDEF. BEGIN : PIWA2-FN2W-NOD DRR 0961 2390 3 PIWA2-FN2W-NODE-LIST-B7SCS-STS A 32 (20,5) DFRI2 0962 M 2400 R 2 PIWA2-FN2W-NODE-LIST-B7SCS-TBLS /* REDEF. BEGIN : PIWA2-FN2W-NOD DRR 0963 2410 3 PIWA2-FN2W-NODE-LIST-B7SCS A 8 (20,5,4) DFRI3 0964 M 2420 2 PIWA2-FN2W-REASON-CODE A 1 DFR 0965 2430 2 PIWA2-FN2W-REASON-CODE-QUAL A 1 DFR 0966 2440 2 PIWA2-FN2W-WARN-CODE A 2 DFR 0967 2450 2 PIWA2-FN2W-RETURN-CODE A 2 DFR 0968 2460 2 PIWA2-FN2W-LATITUDE A 9 DFR 2470 2 PIWA2-FN2W-LONGITUDE A 11 DFR 2480 2 PIWA2-FN2W-FILLER2W A 374 DFR 0969 2490 * * END OF FUNCTION 2W * ********** ******** C 2500 * * -------------------------------- - ---------- ----------------- C 2510 * * BEGINNING OF FUNCTION 3 LAYOUT * ********** ********* CSR 0096 2520 R 1 GEOLP2 DRR 0970 2530 2 PIWA2-FN3-ACCESS-KEY A 21 DFR 0971 2540 2 PIWA2-FN3-DUP-KEY-FLAG A 1 /* OR CONTI PARITY DFR 0972 2550 2 PIWA2-FN3-LOCATION-STATUS A 1 DFR 0973 2560 2 PIWA2-FN3-COUNTY-BOUNDARY A 1 DFR 0974 2570 2 PIWA2-FN3-PREFERRED-LGC1 A 2 DFR 0975 2580 2 PIWA2-FN3-PREFERRED-LGC2 A 2 DFR 0976 2590 2 PIWA2-FN3-PREFERRED-LGC3 A 2 DFR 0977 2600 2 PIWA2-FN3-NUM-X-ST-LOW-END A 1 DFR 0978 2610 2 PIWA2-FN3-LOW-B5SC A 6 (1:5) /* 30-BYTES DFRI1 0979 M 2620 2 PIWA2-FN3-NUM-X-ST-HI-END A 1 DFR 0980 2630 2 PIWA2-FN3-HI-B5SC A 6 (1:5) /* 30-BYTES DFRI1 0981 M 2640 2 PIWA2-FN3-REVERSAL-FLAG A 1 DFR 0982 2650 2 PIWA2-FN3-LION-KEY A 10 DFR 0983 2660 R 2 PIWA2-FN3-LION-KEY DRR 0984 2670 3 PIWA2-FN3-LION-BORO A 1 DFR 0985 2680 3 PIWA2-FN3-LION-FACECODE A 4 DFR 0986 2690 3 PIWA2-FN3-LION-SEQ A 5 DFR 0987 2700 2 PIWA2-FN3-GENREC-FLAG A 1 DFR 0988 2710 2 PIWA2-FN3-SEG-LENGTH A 5 DFR 0989 2720 2 PIWA2-FN3-SEG-SLOP A 3 DFR 0990 2730 2 PIWA2-FN3-SEG-ORIENT A 1 DFR 0991 2740 2 PIWA2-FN3-MARBLE-RIKERS-FLAG A 1 DFR 0992 2750 2 PIWA2-FN3-FROM-NODE A 7 DFR 0993 2760 2 PIWA2-FN3-TO-NODE A 7 DFR 0994 2770 2 PIWA2-FN3-SANIT-SNOW-PRIORITY A 1 /*SANITATION STRT DFR 0995 2780 * * /*SNOW PRIORITY C 2790 2 FILLER-600 A 4 DFR 0996 2800 2 PIWA2-FN3-SEGMENT-ID A 7 DFR 0997 2810 2 PIWA2-FN3-DOT-SLA A 1 DFR 0998 2820 2 PIWA2-FN3-CURVE-FLAG A 1 DFR 0999 2830 2 PIWA2-FN3-DOG-LEG A 1 DFR 1000 2840 2 PIWA2-FN3-FEATURE-TYPE A 1 DFR 1001 2850 2 PIWA2-FN3-SEGMENT-TYPE A 1 DFR 1002 2860 2 PIWA2-FN3-COINCIDENT-SEG-CTR A 1 DFR 1003 2870 2 FILLER-700 A 4 DFR 1004 2880 * * *** LEFT SIDE OF THE STREET **** * ********** ****** C 2890 2 PIWA2-FN3-LEFT-SIDE-OF-STR A 150 DFR 1005 2900 R 2 PIWA2-FN3-LEFT-SIDE-OF-STR DRR 1006 2910 3 PIWA2-FN3-L-COM-DIST A 3 DFR 1007 2920 R 3 PIWA2-FN3-L-COM-DIST DRR 1008 2930 4 PIWA2-FN3-L-COM-DIST-BORO A 1 DFR 1009 2940 4 PIWA2-FN3-L-COM-DIST-NUM A 2 DFR 1010 2950 3 PIWA2-FN3-L-LOW-HOUSENUM A 16 /* DISPLAY FORMAT DFR 1011 2960 3 PIWA2-FN3-L-HI-HOUSENUM A 16 /* DISPLAY FORMAT DFR 1012 2970 3 FILLER-800 A 32 /* FOR FUTURE USE DFR 1013 2980 3 PIWA2-FN3-L-CD-ELIGIBLE A 1 DFR 1014 2990 3 PIWA2-FN3-L-ZIP A 5 DFR 1015 3000 3 PIWA2-FN3-L-HEALTH-AREA A 4 DFR 1016 3010 3 PIWA2-FN3-L-POLICE-DIST A 4 DFR 1017 3020 R 3 PIWA2-FN3-L-POLICE-DIST DRR 1018 3030 4 PIWA2-FN3-L-POL-PAT-BORO-CMD A 1 DFR 1019 3040 4 PIWA2-FN3-L-POL-PRECINCT A 3 DFR 1020 3050 3 PIWA2-FN3-L-FIRE-DIV A 2 DFR 1021 3060 3 PIWA2-FN3-L-FIRE-BAT A 2 DFR 1022 3070 3 PIWA2-FN3-L-FIRE-CO A 4 DFR 1023 3080 R 3 PIWA2-FN3-L-FIRE-CO DRR 1024 3090 4 PIWA2-FN3-L-FIRE-CO-TYPE A 1 DFR 1025 3100 4 PIWA2-FN3-L-FIRE-CO-NUM A 3 DFR 1026 3110 3 PIWA2-FN3-L-SCHL-DIST A 2 DFR 1027 3120 3 PIWA2-FN3-L-DYN-BLK A 3 DFR 1028 3130 3 PIWA2-FN3-L-ED A 3 DFR 1029 3140 3 PIWA2-FN3-L-AD A 2 DFR 1030 3150 3 PIWA2-FN3-L-POLICE-PAT-BORO A 2 DFR 3160 3 FILLER-880 A 1 DFR 1031 3170 3 PIWA2-FN3-L-BORO A 1 DFR 1032 3180 3 PIWA2-FN3-L-1990-CENSUS-TRACT A 6 DFR 1033 3190 3 PIWA2-FN3-L-2010-CENSUS-TRACT A 6 DFR 1034 3200 3 PIWA2-FN3-L-2010-CENSUS-BLOCK A 4 DFR 1035 3210 3 PIWA2-FN3-L-2010-CENSUS-BLK-SUF A 1 /* NA DFR 1036 3220 3 PIWA2-FN3-L-2000-CENS-TRACT A 6 DFR 1037 3230 3 PIWA2-FN3-L-2000-CENS-BLOCK A 4 DFR 1038 3240 3 PIWA2-FN3-L-2000-CENS-BLK-SUF A 1 /* NA DFR 1039 3250 3 PIWA2-FN3-L-FILLER-890 A 7 /* V16.1 REPLACEMENT DFR 1040 3260 3 PIWA2-FN3-L-NTA A 4 /*NEIGHBORHOOD DFR 1041 3270 * * /*TABULATION AREA C 3280 3 FILLER-900 A 8 DFR 1042 3290 * * *** RIGHT SIDE OF THE STREET *** * ********** *********** C 3300 2 PIWA2-FN3-RIGHT-SIDE-OF-STR A 150 DFR 1043 3310 R 2 PIWA2-FN3-RIGHT-SIDE-OF-STR DRR 1044 3320 3 PIWA2-FN3-R-COM-DIST A 3 DFR 1045 3330 R 3 PIWA2-FN3-R-COM-DIST DRR 1046 3340 4 PIWA2-FN3-R-COM-DIST-BORO A 1 DFR 1047 3350 4 PIWA2-FN3-R-COM-DIST-NUM A 2 DFR 1048 3360 3 PIWA2-FN3-R-LOW-HOUSENUM A 16 /* DISPLAY FORMAT DFR 1049 3370 3 PIWA2-FN3-R-HI-HOUSENUM A 16 /* DISPLAY FORMAT DFR 1050 3380 3 FILLER-1000 A 32 /* FOR FUTURE USE DFR 1051 3390 3 PIWA2-FN3-R-CD-ELIGIBLE A 1 DFR 1052 3400 3 PIWA2-FN3-R-ZIP A 5 DFR 1053 3410 3 PIWA2-FN3-R-HEALTH-AREA A 4 DFR 1054 3420 3 PIWA2-FN3-R-POLICE-DIST A 4 DFR 1055 3430 R 3 PIWA2-FN3-R-POLICE-DIST DRR 1056 3440 4 PIWA2-FN3-R-POL-PAT-BORO-CMD A 1 DFR 1057 3450 4 PIWA2-FN3-R-POL-PRECINCT A 3 DFR 1058 3460 3 PIWA2-FN3-R-FIRE-DIV A 2 DFR 1059 3470 3 PIWA2-FN3-R-FIRE-BAT A 2 DFR 1060 3480 3 PIWA2-FN3-R-FIRE-CO A 4 DFR 1061 3490 R 3 PIWA2-FN3-R-FIRE-CO DRR 1062 3500 4 PIWA2-FN3-R-FIRE-CO-TYPE A 1 DFR 1063 3510 4 PIWA2-FN3-R-FIRE-CO-NUM A 3 DFR 1064 3520 3 PIWA2-FN3-R-SCHL-DIST A 2 DFR 1065 3530 3 PIWA2-FN3-R-DYN-BLK A 3 DFR 1066 3540 3 PIWA2-FN3-R-ED A 3 DFR 1067 3550 3 PIWA2-FN3-R-AD A 2 DFR 1068 3560 3 PIWA2-FN3-R-POLICE-PAT-BORO A 2 DFR 3570 3 FILLER-1080 A 1 DFR 1069 3580 3 PIWA2-FN3-R-BORO A 1 DFR 1070 3590 3 PIWA2-FN3-R-1990-CENSUS-TRACT A 6 DFR 1071 3600 3 PIWA2-FN3-R-2010-CENSUS-TRACT A 6 DFR 1072 3610 3 PIWA2-FN3-R-2010-CENSUS-BLOCK A 4 DFR 1073 3620 3 PIWA2-FN3-R-2010-CENSUS-BLK-SUF A 1 /* NA DFR 1074 3630 3 PIWA2-FN3-R-2000-CENS-TRACT A 6 DFR 1075 3640 3 PIWA2-FN3-R-2000-CENS-BLOCK A 4 DFR 1076 3650 3 PIWA2-FN3-R-2000-CENS-BLK-SUF A 1 /* NA DFR 1077 3660 3 PIWA2-FN3-R-FILLER-1090 A 7 /* V16.1 REPLACEMENT DFR 1078 3670 3 PIWA2-FN3-R-NTA A 4 /*NEIGHBORHOOD DFR 1079 3680 * * /*TABULATION AREA C 3690 3 FILLER-1100 A 8 DFR 1080 3700 * 2 PIWA2-FN3-PSEUDO-FILLER A 3550 CFR 0901 3710 * * ******************************** * ********** ********** C 3720 * ** *** END OF FUNCTION 3 LAYOUT**** * ********** ********** C 3730 R 1 GEOLP2 DRR 1081 3740 2 PIWA2-FN3-SEGAUX A 450 /* SAME AS FN3 DFR 1082 3750 2 PIWA2-FN3-FILLER-SEGAUX A 6 /* FOR FUTURE USE DFR 1083 3760 2 PIWA2-FN3-SEGAUX-COUNTER A 4 DFR 1084 3770 2 PIWA2-FN3-SEGAUX-SEGMENTS A 7 (1:70) DFRI1 1085 M 3780 * 2 PIWA2-FN3-SEGAUX-PSEUDO-FILLER A 3050 CFR 0905 3790 * * ******************************** * ********** FOR AUX SEGS C 3800 * * END OF FUNCTION 3 AUX LAYOUT * ********** ******** C 3810 * * -------------------------------- - ---------- -------- C 3820 * * START OF FUNCTION 3 EXTENDED LAYOUT ******** CSR 0096 3830 R 1 GEOLP2 DRR 1086 3840 2 PIWA2-3X-ACCESS-KEY A 21 DFR 1087 3850 2 PIWA2-3X-DUP-KEY-FLAG A 1 /* OR CONTI PARITY DFR 1088 3860 2 PIWA2-3X-LOCATION-STATUS A 1 DFR 1089 3870 2 PIWA2-3X-COUNTY-BOUNDARY A 1 DFR 1090 3880 2 PIWA2-3X-PREFERRED-LGC1 A 2 DFR 1091 3890 2 PIWA2-3X-PREFERRED-LGC2 A 2 DFR 1092 3900 2 PIWA2-3X-PREFERRED-LGC3 A 2 DFR 1093 3910 2 PIWA2-3X-NUM-X-ST-LOW-END A 1 DFR 1094 3920 2 PIWA2-3X-LOW-B5SC A 6 (1:5) /* 30-BYTES DFRI1 1095 M 3930 2 PIWA2-3X-NUM-X-ST-HI-END A 1 DFR 1096 3940 2 PIWA2-3X-HI-B5SC A 6 (1:5) /* 30-BYTES DFRI1 1097 M 3950 2 PIWA2-3X-REVERSAL-FLAG A 1 DFR 1098 3960 2 PIWA2-3X-LION-KEY A 10 DFR 1099 3970 R 2 PIWA2-3X-LION-KEY DRR 1100 3980 3 PIWA2-3X-LION-BORO A 1 DFR 1101 3990 3 PIWA2-3X-LION-FACECODE A 4 DFR 1102 4000 3 PIWA2-3X-LION-SEQ A 5 DFR 1103 4010 2 PIWA2-3X-GENREC-FLAG A 1 DFR 1104 4020 2 PIWA2-3X-SEG-LENGTH A 5 DFR 1105 4030 2 PIWA2-3X-SEG-SLOP A 3 DFR 1106 4040 2 PIWA2-3X-SEG-ORIENT A 1 DFR 1107 4050 2 PIWA2-3X-MARBLE-RIKERS-FLAG A 1 DFR 1108 4060 2 PIWA2-3X-FROM-NODE A 7 DFR 1109 4070 2 PIWA2-3X-TO-NODE A 7 DFR 1110 4080 2 PIWA2-3X-SANIT-SNOW-PRIORITY A 1 /*SANITATION STRT DFR 1111 4090 * * /*SNOW PRIORITY C 4100 2 FILLER-3X-600 A 4 DFR 1112 4110 2 PIWA2-3X-SEGMENT-ID A 7 DFR 1113 4120 2 PIWA2-3X-DOT-SLA A 1 DFR 1114 4130 2 PIWA2-3X-CURVE-FLAG A 1 DFR 1115 4140 2 PIWA2-3X-DOG-LEG A 1 DFR 1116 4150 2 PIWA2-3X-FEATURE-TYPE A 1 DFR 1117 4160 2 PIWA2-3X-SEGMENT-TYPE A 1 DFR 1118 4170 2 PIWA2-3X-COINCIDENT-SEG-CTR A 1 DFR 1119 4180 2 FILLER-3X-700 A 4 DFR 1120 4190 * * *** LEFT SIDE OF THE STREET **** * *** ****** ****** C 4200 2 PIWA2-3X-LEFT-SIDE-OF-STR A 150 DFR 1121 4210 R 2 PIWA2-3X-LEFT-SIDE-OF-STR DRR 1122 4220 3 PIWA2-3X-L-COM-DIST A 3 DFR 1123 4230 R 3 PIWA2-3X-L-COM-DIST DRR 1124 4240 4 PIWA2-3X-L-COM-DIST-BORO A 1 DFR 1125 4250 4 PIWA2-3X-L-COM-DIST-NUM A 2 DFR 1126 4260 3 PIWA2-3X-L-LOW-HOUSENUM A 16 /* DISPLAY FORMAT DFR 1127 4270 3 PIWA2-3X-L-HI-HOUSENUM A 16 /* DISPLAY FORMAT DFR 1128 4280 3 FILLER-3X-800 A 32 /* FOR FUTURE USE DFR 1129 4290 3 PIWA2-3X-L-CD-ELIGIBLE A 1 DFR 1130 4300 3 PIWA2-3X-L-ZIP A 5 DFR 1131 4310 3 PIWA2-3X-L-HEALTH-AREA A 4 DFR 1132 4320 3 PIWA2-3X-L-POLICE-DIST A 4 DFR 1133 4330 R 3 PIWA2-3X-L-POLICE-DIST DRR 1134 4340 4 PIWA2-3X-L-POL-PAT-BORO-CMD A 1 DFR 1135 4350 4 PIWA2-3X-L-POL-PRECINCT A 3 DFR 1136 4360 3 PIWA2-3X-L-FIRE-DIV A 2 DFR 1137 4370 3 PIWA2-3X-L-FIRE-BAT A 2 DFR 1138 4380 3 PIWA2-3X-L-FIRE-CO A 4 DFR 1139 4390 R 3 PIWA2-3X-L-FIRE-CO DRR 1140 4400 4 PIWA2-3X-L-FIRE-CO-TYPE A 1 DFR 1141 4410 4 PIWA2-3X-L-FIRE-CO-NUM A 3 DFR 1142 4420 3 PIWA2-3X-L-SCHL-DIST A 2 DFR 1143 4430 3 PIWA2-3X-L-DYN-BLK A 3 DFR 1144 4440 3 PIWA2-3X-L-ED A 3 DFR 1145 4450 3 PIWA2-3X-L-AD A 2 DFR 1146 4460 3 PIWA2-3X-L-POLICE-PAT-BORO A 2 DFR 4470 3 FILLER-3X-880 A 1 DFR 1147 4480 3 PIWA2-3X-L-BORO A 1 DFR 1148 4490 3 PIWA2-3X-L-1990-CENSUS-TRACT A 6 DFR 1149 4500 3 PIWA2-3X-L-2010-CENSUS-TRACT A 6 DFR 1150 4510 3 PIWA2-3X-L-2010-CENSUS-BLOCK A 4 DFR 1151 4520 3 PIWA2-3X-L-2010-CENSUS-BLK-SUF A 1 /* NA DFR 1152 4530 3 PIWA2-3X-L-2000-CENS-TRACT A 6 DFR 1153 4540 3 PIWA2-3X-L-2000-CENS-BLOCK A 4 DFR 1154 4550 3 PIWA2-3X-L-2010-CENS-BLK-SUF A 1 /* NA DFR 1155 4560 3 PIWA2-3X-L-FILLER-890 A 7 /* V16.1 REPLACEMENT DFR 1156 4570 3 PIWA2-3X-L-NTA A 4 /*NEIGHBORHOOD DFR 1157 4580 * * /*TABULATION AREA C 4590 3 FILLER-3X-900 A 8 DFR 1158 4600 * * *** RIGHT SIDE OF THE STREET *** * ********** *********** C 4610 2 PIWA2-3X-RIGHT-SIDE-OF-STR A 150 DFR 1159 4620 R 2 PIWA2-3X-RIGHT-SIDE-OF-STR DRR 1160 4630 3 PIWA2-3X-R-COM-DIST A 3 DFR 1161 4640 R 3 PIWA2-3X-R-COM-DIST DRR 1162 4650 4 PIWA2-3X-R-COM-DIST-BORO A 1 DFR 1163 4660 4 PIWA2-3X-R-COM-DIST-NUM A 2 DFR 1164 4670 3 PIWA2-3X-R-LOW-HOUSENUM A 16 /* DISPLAY FORMAT DFR 1165 4680 3 PIWA2-3X-R-HI-HOUSENUM A 16 /* DISPLAY FORMAT DFR 1166 4690 3 FILLER-3X-1000 A 32 /* FOR FUTURE USE DFR 1167 4700 3 PIWA2-3X-R-CD-ELIGIBLE A 1 DFR 1168 4710 3 PIWA2-3X-R-ZIP A 5 DFR 1169 4720 3 PIWA2-3X-R-HEALTH-AREA A 4 DFR 1170 4730 3 PIWA2-3X-R-POLICE-DIST A 4 DFR 1171 4740 R 3 PIWA2-3X-R-POLICE-DIST DRR 1172 4750 4 PIWA2-3X-R-POL-PAT-BORO-CMD A 1 DFR 1173 4760 4 PIWA2-3X-R-POL-PRECINCT A 3 DFR 1174 4770 3 PIWA2-3X-R-FIRE-DIV A 2 DFR 1175 4780 3 PIWA2-3X-R-FIRE-BAT A 2 DFR 1176 4790 3 PIWA2-3X-R-FIRE-CO A 4 DFR 1177 4800 R 3 PIWA2-3X-R-FIRE-CO DRR 1178 4810 4 PIWA2-3X-R-FIRE-CO-TYPE A 1 DFR 1179 4820 4 PIWA2-3X-R-FIRE-CO-NUM A 3 DFR 1180 4830 3 PIWA2-3X-R-SCHL-DIST A 2 DFR 1181 4840 3 PIWA2-3X-R-DYN-BLK A 3 DFR 1182 4850 3 PIWA2-3X-R-ED A 3 DFR 1183 4860 3 PIWA2-3X-R-AD A 2 DFR 1184 4870 3 PIWA2-3X-R-POLICE-PAT-BORO A 2 DFR 4880 3 FILLER-3X-1080 A 1 DFR 1185 4890 3 PIWA2-3X-R-BORO A 1 DFR 1186 4900 3 PIWA2-3X-R-1990-CENSUS-TRACT A 6 DFR 1187 4910 3 PIWA2-3X-R-2010-CENSUS-TRACT A 6 DFR 1188 4920 3 PIWA2-3X-R-2010-CENSUS-BLOCK A 4 DFR 1189 4930 3 PIWA2-3X-R-2010-CENSUS-BLK-SUF A 1 /* NA DFR 1190 4940 3 PIWA2-3X-R-2000-CENS-TRACT A 6 DFR 1191 4950 3 PIWA2-3X-R-2000-CENS-BLOCK A 4 DFR 1192 4960 3 PIWA2-3X-R-2000-CENS-BLK-SUF A 1 /* NA DFR 1193 4970 3 PIWA2-3X-R-FILLER-1090 A 7 /* V16.1 REPLACEMENT DFR 1194 4980 3 PIWA2-3X-R-NTA A 4 /*NEIGHBORHOOD DFR 1195 4990 * * /*TABULATION AREA C 5000 3 FILLER-3X-1100 A 8 DFR 1196 5010 2 PIWA2-3X-LGCS A 8 DFR 1197 5020 2 PIWA2-3X-LGCS-FROM A 8 DFR 1198 5030 2 PIWA2-3X-LGCS-TO A 8 DFR 1199 5040 2 PIWA2-3X-L-HEALTH-CTR-DIST A 2 DFR 1200 5050 2 PIWA2-3X-R-HEALTH-CTR-DIST A 2 DFR 1201 5060 2 PIWA2-3X-FILL1 A 1 DFR 1202 5070 2 PIWA2-3X-TRAFFIC-DIR A 1 DFR 1203 5080 2 PIWA2-3X-ROADWAY-TYPE A 2 DFR 1204 5090 2 PIWA2-3X-PHYSICAL-ID A 7 DFR 1205 5100 2 PIWA2-3X-GENERIC-ID A 7 DFR 1206 5110 2 PIWA2-3X-INTP-ID A 7 /* INTERNAL USE DFR 1207 5120 2 PIWA2-3X-INTF-ID A 7 /* INTERNAL USE DFR 1208 5130 2 PIWA2-3X-STR-STATUS A 1 DFR 1209 5140 2 PIWA2-3X-STR-WIDTH A 3 DFR 1210 5150 2 PIWA2-3X-STR-WIDTH-IRREG A 1 DFR 1211 5160 2 PIWA2-3X-BIKE-LANE A 1 DFR 1212 5170 2 PIWA2-3X-FED-CLASS-CODE A 2 DFR 1213 5180 2 PIWA2-3X-ROW-TYPE A 1 DFR 1214 5190 2 PIWA2-3X-LGC-LIST A 10 DFR 1215 5200 2 PIWA2-3X-LEGACY-ID A 7 DFR 1216 5210 2 PIWA2-3X-L-NTA-NAME A 75 DFR 1217 5220 2 PIWA2-3X-R-NTA-NAME A 75 DFR 1218 5230 2 PIWA2-3X-FROM-XCOORD A 7 DFR 1219 5240 2 PIWA2-3X-FROM-YCOORD A 7 DFR 1220 5250 2 PIWA2-3X-TO-XCOORD A 7 DFR 1221 5260 2 PIWA2-3X-TO-YCOORD A 7 DFR 1222 5270 2 PIWA2-3X-FROM-LATITUDE A 9 DFR 5280 2 PIWA2-3X-FROM-LONGITUDE A 11 DFR 5290 2 PIWA2-3X-TO-LATITUDE A 9 DFR 5300 2 PIWA2-3X-TO-LONGITUDE A 11 DFR 5310 2 PIWA2-3X-L-BLOCKFACE-ID A 10 /* V16.1 ADD DFR 5320 2 PIWA2-3X-R-BLOCKFACE-ID A 10 /* V16.1 ADD DFR 5330 2 PIWA2-3X-NBR-TRAVEL-LANES A 2 /* V16.1 ADD DFR 5340 2 PIWA2-3X-NBR-PARK-LANES A 2 /* V16.1 ADD DFR 5350 2 PIWA2-3X-NBR-TOTAL-LANES A 2 /* V16.1 ADD DFR 5360 2 PIWA2-3X-BIKE-LANE-2 A 2 /* V16.4 ADDITION DFR 5370 2 PIWA2-3X-STR-WIDTH-MAX A 3 /* V16.4 ADDITION DFR 5380 2 PIWA2-3X-BIKE-TRAFFIC-DIR A 2 /* V17.1 ADDITION DFR 5390 2 PIWA2-3X-SPEED-LIMIT A 2 /* V17.4 ADDITION DFR 5400 2 PIWA2-3X-LEFT-PUMA-CODE A 5 /* V18.1 ADDITION DFR 5410 2 PIWA2-3X-RIGHT-PUMA-CODE A 5 /* V18.1 ADDITION DFR 5420 2 PIWA2-3X-LEFT-POLICE-SECTOR A 4 /* V19.2 ADDITION DFR 5430 2 PIWA2-3X-RIGHT-POLICE-SECTOR A 4 /* V19.2 ADDITION DFR 5440 2 FILLER-3X-FILL2 A 193 /* V17.1,V18.1 MOD DFR 1223 5450 * 2 FILLER-3X-FILL2 A 215 /* V16.4 ALTERATION CFR 1223 5460 * 2 FILLER-3X-FILL2 A 220 /* V16.1 MOD CFR 1223 5470 * 2 PIWA2-3X-PSEUDO-FILLER A 3000 CFR 1038 5480 * * ******************************** * ********** ********** C 5490 * * END OF FCT 3 EXTENDED LAYOUT *** * ********** ********** C 5500 R 1 GEOLP2 DRR 1224 5510 2 PIWA2-3X-SEGAUX A 1000 /* SAME AS FN 3X DFR 1225 5520 2 PIWA2-3X-FILLER-SEGAUX A 6 /* FOR FUTURE USE DFR 1226 5530 2 PIWA2-3X-SEGAUX-COUNTER A 4 DFR 1227 5540 2 PIWA2-3X-SEGAUX-SEGMENTS A 7 (1:70) DFRI1 1228 M 5550 * * ******************************** * ********** FOR AUX SEGS C 5560 * * END OF FCT 3 EXTENDED AUX LAYOUT * ********** ************* C 5570 * * -------------------------------- - ---------- -------- C 5580 * * BEGINNING OF FUNCTION 3C LAYOUT * ********** ******** C 5590 R 1 GEOLP2 DRR 1229 5600 2 PIWA2-FN3C-ACCESS-KEY A 21 DFR 1230 5610 2 PIWA2-FN3C-DUP-KEY-FLAG A 1 /* OR CONTI PARITY DFR 1231 5620 2 PIWA2-FN3C-LOCATION-STATUS A 1 DFR 1232 5630 2 PIWA2-FN3C-COUNTY-BOUNDARY A 1 DFR 1233 5640 2 PIWA2-FN3C-PREFERRED-LGC1 A 2 DFR 1234 5650 2 PIWA2-FN3C-PREFERRED-LGC2 A 2 DFR 1235 5660 2 PIWA2-FN3C-PREFERRED-LGC3 A 2 DFR 1236 5670 2 PIWA2-FN3C-NUM-X-ST-LOW-END A 1 DFR 1237 5680 2 PIWA2-FN3C-LOW-B5SC A 6 (1:5) /* 30-BYTES DFRI1 1238 M 5690 2 PIWA2-FN3C-NUM-X-ST-HI-END A 1 DFR 1239 5700 2 PIWA2-FN3C-HI-B5SC A 6 (1:5) /* 30-BYTES DFRI1 1240 M 5710 2 PIWA2-FN3C-REVERSAL-FLAG A 1 DFR 1241 5720 2 PIWA2-FN3C-LIONKEY A 10 DFR 1242 5730 R 2 PIWA2-FN3C-LIONKEY DRR 1243 5740 3 PIWA2-FN3C-LION-BORO A 1 DFR 1244 5750 3 PIWA2-FN3C-LION-FACECODE A 4 DFR 1245 5760 3 PIWA2-FN3C-LION-SEQ A 5 DFR 1246 5770 2 PIWA2-FN3C-GENREC-FLAG A 1 DFR 1247 5780 2 PIWA2-FN3C-SEG-LENGTH A 5 DFR 1248 5790 2 PIWA2-FN3C-SEG-AZIMUTH A 3 DFR 1249 5800 2 PIWA2-FN3C-SEG-ORIENT A 1 DFR 1250 5810 2 PIWA2-FN3C-MARBLE-RIKERS-FLAG A 1 DFR 1251 5820 2 PIWA2-FN3C-FROM-NODE A 7 DFR 1252 5830 2 PIWA2-FN3C-TO-NODE A 7 DFR 1253 5840 2 PIWA2-FN3C-SANIT-SNOW-PRIORITY A 1 /*SANITATION STRT DFR 1254 5850 * * /*SNOW PRIORITY C 5860 2 FILLER-1200 A 4 DFR 1255 5870 2 PIWA2-FN3C-SEGMENT-ID A 7 DFR 1256 5880 2 PIWA2-FN3C-DOT-SLA A 1 DFR 1257 5890 2 PIWA2-FN3C-SIDE-OF-STR A 1 DFR 1258 5900 2 PIWA2-FN3C-CURVE-FLAG A 1 DFR 1259 5910 2 PIWA2-FN3C-FEATURE-TYPE A 1 DFR 1260 5920 2 PIWA2-FN3C-SEGMENT-TYPE A 1 DFR 1261 5930 2 PIWA2-FN3C-COINCIDENT-SEG-CTR A 1 DFR 1262 5940 2 FILLER-1300 A 4 DFR 1263 5950 * * *** FCT 3C BLOCKFACE INFORMATION * ********** ****************** CRR 0545 5960 2 PIWA2-FN3C-BLOCKFACE-INFO A 150 DFR 1264 5970 R 2 PIWA2-FN3C-BLOCKFACE-INFO DRR 1265 5980 3 PIWA2-FN3C-COM-DIST A 3 DFR 1266 5990 R 3 PIWA2-FN3C-COM-DIST DRR 1267 6000 4 PIWA2-FN3C-COMDIST-BORO A 1 DFR 1268 6010 4 PIWA2-FN3C-COMDIST-NUM A 2 DFR 1269 6020 3 PIWA2-FN3C-LOW-HOUSENUM A 16 /* DISPLAY FORMAT DFR 1270 6030 3 PIWA2-FN3C-HI-HOUSENUM A 16 /* DISPLAY FORMAT DFR 1271 6040 3 PIWA2-FN3C-LOW-HOUSENUM2 A 16 /* DISPLAY FORMAT DFR 1272 6050 3 PIWA2-FN3C-HI-HOUSENUM2 A 16 /* DISPLAY FORMAT DFR 1273 6060 3 PIWA2-FN3C-FILLER-1400 A 1 /* FOR GSS USE DFR 1274 6070 3 PIWA2-FN3C-ZIP A 5 DFR 1275 6080 3 PIWA2-FN3C-HEALTH-AREA A 4 DFR 1276 6090 3 PIWA2-FN3C-POLICE-DIST A 4 DFR 1277 6100 R 3 PIWA2-FN3C-POLICE-DIST DRR 1278 6110 4 PIWA2-FN3C-POL-PAT-BORO-CMD A 1 DFR 1279 6120 4 PIWA2-FN3C-POL-PRECINCT A 3 DFR 1280 6130 3 PIWA2-FN3C-FIRE-DIV A 2 DFR 1281 6140 3 PIWA2-FN3C-FIRE-BAT A 2 DFR 1282 6150 3 PIWA2-FN3C-FIRE-CO A 4 DFR 1283 6160 R 3 PIWA2-FN3C-FIRE-CO DRR 1284 6170 4 PIWA2-FN3C-FIRE-CO-TYPE A 1 DFR 1285 6180 4 PIWA2-FN3C-FIRE-CO-NUM A 3 DFR 1286 6190 3 PIWA2-FN3C-SCHL-DIST A 2 DFR 1287 6200 3 PIWA2-FN3C-DYN-BLK A 3 DFR 1288 6210 3 PIWA2-FN3C-ED A 3 DFR 1289 6220 3 PIWA2-FN3C-AD A 2 DFR 1290 6230 3 PIWA2-FN3C-POLICE-PAT-BORO A 2 DFR 6240 3 FILLER-1480 A 1 DFR 1291 6250 3 PIWA2-FN3C-BORO A 1 DFR 1292 6260 3 PIWA2-FN3C-1900-CENSUS-TRACT A 6 DFR 1293 6270 3 PIWA2-FN3C-2010-CENSUS-TRACT A 6 DFR 1294 6280 3 PIWA2-FN3C-2010-CENSUS-BLOCK A 4 DFR 1295 6290 3 PIWA2-FN3C-2010-CENSUS-BLOCK-SUF A 1 /* NA DFR 1296 6300 3 PIWA2-FN3C-2000-CENS-TRACT A 6 DFR 1297 6310 3 PIWA2-FN3C-2000-CENS-BLOCK A 4 DFR 1298 6320 3 PIWA2-FN3C-2000-CENS-BLK-SUF A 1 /* NA DFR 1299 6330 3 PIWA2-FN3C-FILLER-1490 A 7 /* V16.1 REPLACEMENT DFR 1300 6340 3 PIWA2-FN3C-NTA A 4 /*NEIGHBORHOOD DFR 1301 6350 * * /*TABULATION AREA C 6360 * 3 FILLER-1500 A 8 CFR 1057 6370 * * PIWA2-FN3C-PSEUDO-FILLER A 3700 /*LEVEL 2 IN DEF CFR 1093 6380 * * ******************************** * ********** ****** C 6390 * * END OF FCT 3C LAYOUT ********** * ********** ****** C 6400 R 1 GEOLP2 DRR 1302 6410 2 PIWA2-FN3C-SEGAUX A 300 /*SAME AS FN3C DFR 1303 6420 2 PIWA2-FN3C-SEGAUX-FILL A 6 DFR 1304 6430 2 PIWA2-FN3C-SEGAUX-CTR A 4 DFR 1305 6440 2 PIWA2-FN3C-SEGAUX-SEGS A 7 (1:70) DFRI1 1306 M 6450 * 2 PIWA2-FN3C-AUX-PSEUDO-FILLER A 3200 CFR 1121 6460 * ** ******************************** * ********** FN3C AUX SEGS C 6470 * * END OF FCT 3C AUX LAYOUT ****** * ********** ******* C 6480 * ** ******************************** * ********** ************* C 6490 * ** ******************************** * ********** ************* C 6500 * * START OF FUNCTION 3CX LAYOUT * ********** ******** C 6510 R 1 GEOLP2 DRR 1307 6520 2 PIWA2-3CX-ACCESS-KEY A 21 DFR 1308 6530 2 PIWA2-3CX-DUP-KEY-FLAG A 1 /* OR CONTI PARITY DFR 1309 6540 2 PIWA2-3CX-LOCATION-STATUS A 1 DFR 1310 6550 2 PIWA2-3CX-COUNTY-BOUNDARY A 1 DFR 1311 6560 2 PIWA2-3CX-PREFERRED-LGC1 A 2 DFR 1312 6570 2 PIWA2-3CX-PREFERRED-LGC2 A 2 DFR 1313 6580 2 PIWA2-3CX-PREFERRED-LGC3 A 2 DFR 1314 6590 2 PIWA2-3CX-NUM-X-ST-LOW-END A 1 DFR 1315 6600 2 PIWA2-3CX-LOW-B5SC A 6 (1:5) /* 30-BYTES DFRI1 1316 M 6610 2 PIWA2-3CX-NUM-X-ST-HI-END A 1 DFR 1317 6620 2 PIWA2-3CX-HI-B5SC A 6 (1:5) /* 30-BYTES DFRI1 1318 M 6630 2 PIWA2-3CX-REVERSAL-FLAG A 1 DFR 1319 6640 2 PIWA2-3CX-LIONKEY A 10 DFR 1320 6650 R 2 PIWA2-3CX-LIONKEY DRR 1321 6660 3 PIWA2-3CX-LION-BORO A 1 DFR 1322 6670 3 PIWA2-3CX-LION-FACECODE A 4 DFR 1323 6680 3 PIWA2-3CX-LION-SEQ A 5 DFR 1324 6690 2 PIWA2-3CX-GENREC-FLAG A 1 DFR 1325 6700 2 PIWA2-3CX-SEG-LENGTH A 5 DFR 1326 6710 2 PIWA2-3CX-SEG-SLOPE A 3 DFR 1327 6720 2 PIWA2-3CX-SEG-ORIENT A 1 DFR 1328 6730 2 PIWA2-3CX-MARBLE-RIKERS-FLAG A 1 DFR 1329 6740 2 PIWA2-3CX-FROM-NODE A 7 DFR 1330 6750 2 PIWA2-3CX-TO-NODE A 7 DFR 1331 6760 2 PIWA2-3CX-SANIT-SNOW-PRIORITY A 1 /*SANITATION STRT DFR 1332 6770 * * /*SNOW PRIORITY C 6780 2 FILLER-3CX-1200 A 4 DFR 1333 6790 2 PIWA2-3CX-SEGMENT-ID A 7 DFR 1334 6800 2 PIWA2-3CX-DOT-SLA A 1 DFR 1335 6810 2 PIWA2-3CX-SIDE-OF-STR A 1 DFR 1336 6820 2 PIWA2-3CX-CURVE-FLAG A 1 DFR 1337 6830 2 PIWA2-3CX-FEATURE-TYPE A 1 DFR 1338 6840 2 PIWA2-3CX-SEGMENT-TYPE A 1 DFR 1339 6850 2 PIWA2-3CX-COINCIDENT-SEG-CTR A 1 DFR 1340 6860 2 FILLER-3CX-1300 A 4 DFR 1341 6870 * * ***FCT 3C BLOCKFACE INFORMATION * ********** ****************** CRR 0545 6880 2 PIWA2-3CX-BLOCKFACE-INFO A 150 DFR 1342 6890 R 2 PIWA2-3CX-BLOCKFACE-INFO DRR 1343 6900 3 PIWA2-3CX-COM-DIST A 3 DFR 1344 6910 R 3 PIWA2-3CX-COM-DIST DRR 1345 6920 4 PIWA2-3CX-COMDIST-BORO A 1 DFR 1346 6930 4 PIWA2-3CX-COMDIST-NUM A 2 DFR 1347 6940 3 PIWA2-3CX-LOW-HOUSENUM A 16 /* DISPLAY FORMAT DFR 1348 6950 3 PIWA2-3CX-HI-HOUSENUM A 16 /* DISPLAY FORMAT DFR 1349 6960 3 PIWA2-3CX-LOW-HOUSENUM2 A 16 /* DISPLAY FORMAT DFR 1350 6970 3 PIWA2-3CX-HI-HOUSENUM2 A 16 /* DISPLAY FORMAT DFR 1351 6980 3 FIWA2-3CX-CD-ELIGIBLE A 1 DFR 1352 6990 3 PIWA2-3CX-ZIP A 5 DFR 1353 7000 3 PIWA2-3CX-HEALTH-AREA A 4 DFR 1354 7010 3 PIWA2-3CX-POLICE-DIST A 4 DFR 1355 7020 R 3 PIWA2-3CX-POLICE-DIST DRR 1356 7030 4 PIWA2-3CX-POL-PAT-BORO-CMD A 1 DFR 1357 7040 4 PIWA2-3CX-POL-PRECINCT A 3 DFR 1358 7050 3 PIWA2-3CX-FIRE-DIV A 2 DFR 1359 7060 3 PIWA2-3CX-FIRE-BAT A 2 DFR 1360 7070 3 PIWA2-3CX-FIRE-CO A 4 DFR 1361 7080 R 3 PIWA2-3CX-FIRE-CO DRR 1362 7090 4 PIWA2-3CX-FIRE-CO-TYPE A 1 DFR 1363 7100 4 PIWA2-3CX-FIRE-CO-NUM A 3 DFR 1364 7110 3 PIWA2-3CX-SCHL-DIST A 2 DFR 1365 7120 3 PIWA2-3CX-DYN-BLK A 3 DFR 1366 7130 3 PIWA2-3CX-ED A 3 DFR 1367 7140 3 PIWA2-3CX-AD A 2 DFR 1368 7150 3 PIWA2-3CX-POLICE-PAT-BORO A 2 DFR 7160 3 FILLER-3CX-1480 A 1 DFR 1369 7170 3 PIWA2-3CX-BORO A 1 DFR 1370 7180 3 PIWA2-3CX-1990-CENSUS-TRACT A 6 DFR 1371 7190 3 PIWA2-3CX-2010-CENSUS-TRACT A 6 DFR 1372 7200 3 PIWA2-3CX-2010-CENSUS-BLOCK A 4 DFR 1373 7210 3 PIWA2-3CX-2010-CENSUS-BLOCK-SUF A 1 /* NA DFR 1374 7220 3 PIWA2-3CX-2000-CENS-TRACT A 6 DFR 1375 7230 3 PIWA2-3CX-2000-CENS-BLOCK A 4 DFR 1376 7240 3 PIWA2-3CX-2000-CENS-BLK-SUF A 1 /* NA DFR 1377 7250 3 PIWA2-3CX-FILLER-1490 A 7 /* V16.1 REPLACEMENT DFR 1378 7260 3 PIWA2-3CX-NTA A 4 /*NEIGHBORHOOD DFR 1379 7270 * * /*TABULATION AREA C 7280 3 FILLER-1500 A 8 DFR 1380 7290 2 PIWA2-3CX-LGCS A 8 DFR 1381 7300 2 PIWA2-3CX-LGCS-FROM A 8 DFR 1382 7310 2 PIWA2-3CX-LGCS-TO A 8 DFR 1383 7320 2 PIWA2-3CX-L-HEALTH-CTR-DIST A 2 DFR 1384 7330 2 PIWA2-3CX-R-HEALTH-CTR-DIST A 2 DFR 1385 7340 2 PIWA2-3CX-FILL1 A 1 DFR 1386 7350 2 PIWA2-3CX-TRAFFIC-DIR A 1 DFR 1387 7360 2 PIWA2-3CX-ROADWAY-TYPE A 2 DFR 1388 7370 2 PIWA2-3CX-PHYSICAL-ID A 7 DFR 1389 7380 2 PIWA2-3CX-GENERIC-ID A 7 DFR 1390 7390 2 PIWA2-3CX-INTP-ID A 7 /* INTERNAL USE DFR 1391 7400 2 PIWA2-3CX-INTF-ID A 7 /* INTERNAL USE DFR 1392 7410 2 PIWA2-3CX-STREET-STATUS A 1 DFR 1393 7420 2 PIWA2-3CX-STREET-WIDTH A 3 DFR 1394 7430 2 PIWA2-3CX-STREET-WIDTH-IRREG A 1 DFR 1395 7440 2 PIWA2-3CX-BIKE-LANE A 1 DFR 1396 7450 2 PIWA2-3CX-FED-CLASS-CODE A 2 DFR 1397 7460 2 PIWA2-3CX-ROW-TYPE A 1 DFR 1398 7470 2 PIWA2-3CX-LGC-LIST A 10 DFR 1399 7480 2 PIWA2-3CX-LEGACY-ID A 7 DFR 1400 7490 2 PIWA2-3CX-NTA-NAME A 75 DFR 1401 7500 2 PIWA2-3CX-FROM-XCOORD A 7 DFR 1402 7510 2 PIWA2-3CX-FROM-YCOORD A 7 DFR 1403 7520 2 PIWA2-3CX-TO-XCOORD A 7 DFR 1404 7530 2 PIWA2-3CX-TO-YCOORD A 7 DFR 1405 7540 2 PIWA2-3CX-FROM-LATITUDE A 9 DFR 7550 2 PIWA2-3CX-FROM-LONGITUDE A 11 DFR 7560 2 PIWA2-3CX-TO-LATITUDE A 9 DFR 7570 2 PIWA2-3CX-TO-LONGITUDE A 11 DFR 7580 2 PIWA2-3CX-BLOCKFACE-ID A 10 /* V16.1 ADD DFR 7590 2 PIWA2-3CX-NBR-TRAVEL-LANES A 2 /* V16.1 ADD DFR 7600 2 PIWA2-3CX-NBR-PARK-LANES A 2 /* V16.1 ADD DFR 7610 2 PIWA2-3CX-NBR-TOTAL-LANES A 2 /* V16.1 ADD DFR 7620 2 PIWA2-3CX-BIKE-LANE-2 A 2 /* V16.4 ADDITION DFR 7630 2 PIWA2-3CX-STR-WIDTH-MAX A 3 /* V16.4 ADDITION DFR 7640 2 PIWA2-3CX-BIKE-TRAFFIC-DIR A 2 /* V17.1 ADDITION DFR 7650 2 PIWA2-3CX-SPEED-LIMIT A 2 /* V17.4 ADDITION DFR 7660 2 PIWA2-3CX-PUMA-CODE A 5 /* V18.1 ADDITION DFR 7670 2 PIWA2-3CX-POLICE-SECTOR A 4 /* V19.2 ADDITION DFR 7680 2 FILLER-3CX-FILL1560 A 287 /* V17.1,V18.1 MOD DFR 1406 7690 * 2 FILLER-3CX-FILL1560 A 300 /* V16.4 ALTERATION CFR 1406 7700 * 2 FILLER-3CX-FILL1560 A 305 /* V16.1 MOD CFR 1406 7710 * 2 PIWA2-3CX-PSEUDO-FILER A 3150 CFR 1225 7720 * * ******************************** * ********** ****** C 7730 * * END OF FCT 3CX LAYOUT ********* * ********** ****** C 7740 R 1 GEOLP2 DRR 1407 7750 2 PIWA2-3CX-SEGAUX A 850 /* SAME AS FN 3CX DFR 1408 7760 2 PIWA2-3CX-SEGAUX-FILL A 6 DFR 1409 7770 2 PIWA2-3CX-SEGAUX-CTR A 4 DFR 1410 7780 2 PIWA2-3CX-SEGAUX-SEGS A 7 (1:70) DFRI1 1411 M 7790 * 2 PIWA2-3CX-AUX-PSEUDO-FILLER A 2650 CFR 1223 7800 * ** ******************************** * ********** FN3C AUX SEGS C 7810 * * END OF FCT 3CX AUX LAYOUT***** * ********** ******* C 7820 * ** ******************************** * ********** ************* C 7830 * ** ******************************** * ********** ************* C 7840 * * BEGINNING OF FUNCTION 5 LAYOUT * **** ******* C 7850 R 1 GEOLP2 DRR 1412 7860 2 PIWA2-FN5-ADDR-MATCHING-KEY A 33 DFR 1413 7870 2 FILLER-1600 A 267 DFR 1414 7880 * * END OF FUNCTION 5 LAYOUT * **** ******* C 7890 * - -------------------------------- - ---- -------------------------------- C ***** End of List *****","title":"GEOLP2 COPY File"},{"location":"appendices/appendix14/#geolp21a-copy-file","text":"0010 1 GEOLP21A /*FCT 1A,BL USE SAME WA2 AYOUT DS 0082 0020 * * THE FIELD P2NAT1A IS USED AS A PARAMETER TO CALL GEOSUPPORT C 0030 2 P2NAT1A A 21 DK 0084 0040 R 2 P2NAT1A DRR 0085 0050 3 PIWA2-1A-ACCESS-KEY A 21 DFR 0086 0060 2 PIWA2-1A-CONT-PARITY A 1 /* OR DUP ADDR IND DK 0087 0070 2 PIWA2-1A-LOW-HOUSENUM A 11 /* SORT FORMAT DK 0088 0080 2 PIWA2-1A-BBL A 10 DK 0089 0090 R 2 PIWA2-1A-BBL DRR 0090 0100 3 PIWA2-1A-BBL-BORO A 1 DFR 0091 0110 3 PIWA2-1A-BLOCK A 5 DFR 0092 0120 3 PIWA2-1A-LOT A 4 DFR 0093 0130 2 PIWA2-1A-LOT-VERSION A 1 /* NYI */ DK 0094 0140 2 PIWA2-1A-SCC A 1 DK 0095 0150 2 FILLER-100 A 1 DK 0096 0160 2 PIWA2-1A-GENERAL-LOT-INFO DS 0097 0170 3 PIWA2-1A-RPAD-BLDG-CLASS A 2 DK 0098 0180 3 PIWA2-1A-CORNER-CODE A 2 DK 0099 0190 3 PIWA2-1A-NUM-OF-STRUCTURES A 4 DK 0100 0200 3 PIWA2-1A-NUM-OF-BLOCKFACES A 2 DK 0101 0210 3 PIWA2-1A-INTERIOR-FLAG A 1 DK 0102 0220 3 PIWA2-1A-VACANT-FLAG A 1 DK 0103 0230 3 PIWA2-1A-IRREG-LOT-FLAG A 1 DK 0104 0240 2 PIWA2-1A-MARBLE-RIKERS-FLAG A 1 DK 0105 0250 2 PIWA2-1A-ADDR-LIST-OVFLOW-FLAG A 1 DK 0106 0260 2 PIWA2-1A-STROLL-KEY A 19 DK 0107 0270 R 2 PIWA2-1A-STROLL-KEY DRR 0108 0280 3 PIWA2-1A-STROLL-BORO A 1 DFR 0109 0290 3 PIWA2-1A-STROLL-5SC A 5 DFR 0110 0300 3 PIWA2-1A-STROLL-SIDE-OF-STR A 1 /* L OR R DFR 0111 0310 3 PIWA2-1A-STROLL-HI-HOUSENUM A 11 /* SORT FORMAT DFR 0112 0320 3 FILLER-200 A 1 DFR 0113 0330 2 FILLER-300 A 1 /* FOR GSS USE DK 0114 0340 2 PIWA2-1A-BIN A 7 DK 0115 0350 2 PIWA2-1A-CONDO-FLAG A 1 DK 0116 0360 2 FILLER-400 A 1 DK 0117 0370 2 PIWA2-1A-RPAD-CONDO-ID-NUM A 4 DK 0118 0380 2 PIWA2-1A-CONDO-UNIT-ID-NUM A 7 DK 0119 0390 2 PIWA2-1A-CONDO-BILL-BBL A 10 DK 0120 0400 2 PIWA2-1A-CONDO-BILL-BBL-VER A 1 DK 0121 0410 2 PIWA2-1A-CONDO-BILL-BBL-SCC A 1 DK 0122 0420 2 PIWA2-1A-CONDO-LOW-BBL A 10 DK 0123 0430 2 PIWA2-1A-CONDO-LOW-BBL-VER A 1 DK 0124 0440 2 PIWA2-1A-CONDO-HIGH-BBL A 10 DK 0125 0450 2 PIWA2-1A-CONDO-HIGH-BBL-VER A 1 DK 0126 0460 2 FILLER-500 A 15 DK 0127 0470 2 PIWA1-1A-COOP-NUM A 4 DK 0128 0480 2 PIWA2-1A-SANBORN A 8 DK 0129 0490 R 2 PIWA2-1A-SANBORN DRR 0130 0500 3 PIWA2-1A-SANBORN-BORO A 1 DFR 0131 0510 3 PIWA2-1A-SANBORN-VOL A 3 DFR 0132 0520 3 PIWA2-1A-SANBORN-PAGE A 4 DFR 0133 0530 2 PIWA2-1A-COMMERC-DIST A 5 DK 0134 0540 2 PIWA2-1A-DOF-MAP-BORO A 1 DK 0135 0550 2 PIWA2-1A-DOF-MAP-SECVOL A 4 DK 0136 0560 2 PIWA2-1A-DOF-MAP-PAGE A 4 DK 0137 0570 2 FILLER-1A-RESERVED-DCP A 3 DK 0138 0580 2 PIWA2-1A-LATITUDE A 9 DK 0139 0590 2 PIWA2-1A-LONGITUDE A 11 DK 0140 0600 2 PIWA2-1A-X-COORD A 7 DK 0141 0610 2 PIWA2-1A-Y-COORD A 7 DK 0142 0620 2 PIWA2-1A-BID A 6 DK 0143 0630 2 PIWA2-1A-TPAD-BIN-ST A 1 /* CURRENT STATUS */ DK 0144 0640 2 PIWA2-1A-TPAD-NEW-BIN A 7 /* NEW BIN */ DK 0145 0650 2 PIWA2-1A-TPAD-NEW-BIN-ST A 1 /* NEW BIN STATUS */ DK 0146 0660 2 PIWA2-1A-TPAD-CONFLICT A 1 /* CONFLICT FLAG */ DK 0147 0670 2 PIWA2-1A-DCP-ZONE-MAP A 3 /* V17.4 ADDITION DK 0680 2 FILLER-650 A 6 DK 0148 0690 2 FILLER-700 A 8 /* FOR GSS USE DK 0149 0700 2 PIWA2-1A-NUM-OF-ADDR A 4 DK 0150 0710 2 PIWA2-1A-LIST-OF-ADDR (1:21) DS I1 0151 M 0720 3 PIWA2-1A-LIST-LOW-HOUSENUM A 16 /* DISPLAY FORMAT DK 0152 0730 3 PIWA2-1A-LIST-HI-HOUSENUM A 16 /* DISPLAY FORMAT DK 0153 0740 3 PIWA2-1A-LIST-BORO A 1 DK 0154 0750 3 PIWA2-1A-LIST-5SC A 5 DK 0155 0760 3 PIWA2-1A-LIST-LGC A 2 DK 0156 0770 3 PIWA2-1A-LIST-BIN A 7 DK 0157 0780 3 PIWA2-1A-LIST-SIDE-OF-STR A 1 /* L OR R DK 0158 0790 3 PIWA2-1A-LIST-ADDR-TYPE A 1 /* P=NAP, B=NAB, MAL DK 0159 0800 * * /* BLANK=NORMAL C 0810 3 PIWA2-1A-LIST-TPAD-STATUS A 1 /* 0 - 9 DK 0160 0820 3 FILLER-800 A 3 DK 0161 ***** End of List *****","title":"GEOLP21A COPY File"},{"location":"appendices/appendix14/#geolp2al-copy-file","text":"0010 1 GEOLP2AL /* FCT 1A, BL LONG WA2 WA2 DS 0572 0020 * * THE FIELD P2NAT1AL IS USED AS A PARAMETER TO CALL GEOSUPPORT C 0030 2 P2NAT1AL A 21 DK 0574 0040 R 2 P2NAT1AL DRR 0575 0050 3 PIWA2-1AL-ACCESS-KEY A 21 DFR 0576 0060 * * BEGINNING OF FUNCTION 1AL LAYOUT * ********** ******************* C 0070 2 PIWA2-1AL-CONT-PARITY A 1 /* OR DUP ADDR IND DK 0577 0080 2 PIWA2-1AL-LOW-HOUSENUM A 11 /* SORT FORMAT DK 0578 0090 2 PIWA2-1AL-BBL A 10 DK 0579 0100 R 2 PIWA2-1AL-BBL DRR 0580 0110 3 PIWA2-1AL-BBL-BORO A 1 DFR 0581 0120 3 PIWA2-1AL-BLOCK A 5 DFR 0582 0130 3 PIWA2-1AL-LOT A 4 DFR 0583 0140 2 FILLER-1AL-LOT-VERSION A 1 /* NA DK 0584 0150 2 PIWA2-1AL-SCC A 1 DK 0585 0160 2 FILLER-100 A 1 DK 0586 0170 2 PIWA2-1AL-GENERAL-LOT-INFO DS 0587 0180 3 PIWA2-1AL-RPAD-BLDG-CLASS A 2 DK 0588 0190 3 PIWA2-1AL-CORNER-CODE A 2 DK 0589 0200 3 PIWA2-1AL-NUM-OF-STRUCTURES A 4 DK 0590 0210 3 PIWA2-1AL-NUM-OF-BLOCKFACES A 2 DK 0591 0220 3 PIWA2-1AL-INTERIOR-FLAG A 1 DK 0592 0230 3 PIWA2-1AL-VACANT-FLAG A 1 DK 0593 0240 3 PIWA2-1AL-IRREG-LOT-FLAG A 1 DK 0594 0250 2 PIWA2-1AL-MARBLE-RIKERS-FLAG A 1 DK 0595 0260 2 PIWA2-1AL-ADDR-LIST-OVFLOW-FLAG A 1 DK 0596 0270 2 PIWA2-1AL-STROLL-KEY A 19 DK 0597 0280 R 2 PIWA2-1AL-STROLL-KEY DRR 0598 0290 3 PIWA2-1AL-STROLL-KEY-BORO A 1 DFR 0599 0300 3 PIWA2-1AL-STROLL-KEY-5SC A 5 DFR 0600 0310 3 PIWA2-1AL-STROLL-SIDE-OF-STR A 1 /* L OR R DFR 0601 0320 3 PIWA2-1AL-STROLL-HI-HOUSENUM A 11 /* SORT FORMAT DFR 0602 0330 3 FILLER-200 A 1 DFR 0603 0340 2 FILLER-300 A 1 /* FOR GSS USE DK 0604 0350 2 PIWA2-1AL-BIN A 7 DK 0605 0360 2 PIWA2-1AL-CONDO-FLAG A 1 DK 0606 0370 2 FILLER-400 A 1 DK 0607 0380 2 PIWA2-1AL-RPAD-CONDO-ID-NUM A 4 DK 0608 0390 2 PIWA2-1AL-CONDO-UNIT-ID-NUM A 7 DK 0609 0400 2 PIWA2-1AL-CONDO-BILL-BBL A 10 DK 0610 0410 2 PIWA2-1AL-CONDO-BILL-BBL-VER A 1 DK 0611 0420 2 PIWA2-1AL-CONDO-BILL-BBL-SCC A 1 DK 0612 0430 2 PIWA2-1AL-CONDO-LOW-BBL A 10 DK 0613 0440 2 PIWA2-1AL-CONDO-LOW-BBL-VER A 1 DK 0614 0450 2 PIWA2-1AL-CONDO-HIGH-BBL A 10 DK 0615 0460 2 PIWA2-1AL-CONDO-HIGH-BBL-VER A 1 DK 0616 0470 2 FILLER-500 A 15 DK 0617 0480 2 PIWA2-1AL-COOP-NUM A 4 DK 0618 0490 2 PIWA2-1AL-SANBORN A 8 DK 0619 0500 R 2 PIWA2-1AL-SANBORN DRR 0620 0510 3 PIWA2-1AL-SANBORN-BORO A 1 DFR 0621 0520 3 PIWA2-1AL-SANBORN-VOL A 3 DFR 0622 0530 3 PIWA2-1AL-SANBORN-PAGE A 4 DFR 0623 0540 2 PIWA2-1AL-COMMERC-DIST A 5 DK 0624 0550 2 PIWA2-1AL-DOF-MAP-BORO A 1 DK 0625 0560 2 PIWA2-1AL-DOF-MAP-SECVOL A 4 DK 0626 0570 2 PIWA2-1AL-DOF-MAP-PAGE A 4 DK 0627 0580 2 FILLER-600 A 3 DK 0628 0590 2 PIWA2-1AL-LATITUDE A 9 DK 0629 0600 2 PIWA2-1AL-LONGITUDE A 11 DK 0630 0610 2 PIWA2-1AL-X-COORD A 7 DK 0631 0620 2 PIWA2-1AL-Y-COORD A 7 DK 0632 0630 2 PIWA2-1AL-BID A 6 DK 0633 0640 2 PIWA2-1AL-TPAD-BIN-ST A 1 /*CURRENT STATUS DK 0634 0650 2 PIWA2-1AL-TPAD-NEW-BIN A 7 /*NEW BIN DK 0635 0660 2 PIWA2-1AL-TPAD-NEW-BIN-ST A 1 /*NEW BIN STATUS DK 0636 0670 2 PIWA2-1AL-TPAD-CONFLICT A 1 /*CONFLICT FLAG DK 0637 0680 2 PIWA2-1AL-DCP-ZONE-MAP A 3 /* V17.4 ADDITION DK 0690 2 FILLER-650 A 6 DK 0638 0700 2 FILLER-700 A 8 /* LGC GSS USE DK 0639 0710 2 PIWA2-1AL-NUM-OF-BINS A 4 DK 0640 0720 2 PIWA2-1AL-TPAD-BINLIST A 17500 DK 0641 0730 R 2 PIWA2-1AL-TPAD-BINLIST /* REDEF. BEGIN : PIWA2-1AL-TPAD DRR 0642 0740 3 PIWA2-1AL-TPAD-BINS (1:2187) DSRI1 0643 M 0750 4 PIWA2-1AL-TPAD-BIN A 7 DKR 0644 0760 4 PIWA2-1AL-TPAD-BINS-STAT A 1 DKR 0645 0770 3 PIWA2-1AL-TPAD-FILL A 4 DKR 0646 0780 R 2 PIWA2-1AL-TPAD-BINLIST DRR 0647 0790 3 PIWA2-1AL-BINS A 7 (1:2500) DKRI1 0648 M 0800 * ** END OF FUNCTION 1AL LAYOUT ***** * ********** ********************** C 0810 * -- -------------------------------- - ---------- -------------------------- C 0820 * ** BEGINNING OF FCT 1/1E EXTENDED * * ********** ********************** C 0830 R 1 GEOLP2AL DRR 0649 0840 2 PIWA2-1EX-ACCESS-KEY A 21 DFR 0650 0850 2 PIWA2-1EX-CONT-PARITY A 1 /* (OR DUP ADDR IND) DFR 0651 0860 2 PIWA2-1EX-LOW-HOUSENUM A 11 /* SORT FORMAT DFR 0652 0870 2 PIWA2-1EX-HI-HOUSENUM A 11 /* SORT FORMAT DFR 0653 0880 2 PIWA2-1EX-PREFERRED-LGC A 2 DFR 0654 0890 2 PIWA2-1EX-NUM-X-ST-LOW-END A 1 DFR 0655 0900 2 PIWA2-1EX-LOW-B5SC A 6 (1:5) /* 30-BYTES DFRI1 0656 M 0910 2 PIWA2-1EX-NUM-X-ST-HI-END A 1 DFR 0657 0920 2 PIWA2-1EX-HI-B5SC A 6 (1:5) /* 30-BYTES DFRI1 0658 M 0930 2 PIWA2-1EX-LIONKEY A 10 DFR 0659 0940 R 2 PIWA2-1EX-LIONKEY DRR 0660 0950 3 PIWA2-1EX-LION-BORO A 1 DFR 0661 0960 3 PIWA2-1EX-LION-FACECODE A 4 DFR 0662 0970 3 PIWA2-1EX-LION-SEQ A 5 DFR 0663 0980 2 PIWA2-1EX-SPECIAL-ADDR-FLAG A 1 DFR 0664 0990 2 PIWA2-1EX-SIDE-OF-STR A 1 DFR 0665 1000 2 PIWA2-1EX-SEG-LEN A 5 DFR 0666 1010 2 PIWA2-1EX-X-COORD A 7 DFR 0667 1020 2 PIWA2-1EX-Y-COORD A 7 DFR 0668 1030 2 FILLER-1EX-100 A 7 /* FOR ZCOORD DFR 0669 1040 2 FILLER-1EX-200 A 1 /* FOR GSS USE DFR 0670 1050 2 PIWA2-1EX-MARBLE-RIKERS-FLAG A 1 DFR 0671 1060 2 PIWA2-1EX-DOT-SLA A 1 DFR 0672 1070 2 PIWA2-1EX-COM-DIST A 3 DFR 0673 1080 R 2 PIWA2-1EX-COM-DIST DRR 0674 1090 3 PIWA2-1EX-COM-DIST-BORO A 1 DFR 0675 1100 3 PIWA2-1EX-COM-DIST-NUM A 2 DFR 0676 1110 2 PIWA2-1EX-ZIP A 5 DFR 0677 1120 * * * **** ***** C 1130 * * THE FN1E FIELDS ARE VALID ONLY * **** ***** C 1140 * * FOR FUNCTION 1E, NOT FUNC 1. * **** ***** C 1150 2 PIWA2-1EX-ELECT-DIST A 3 DFR 0678 1160 2 PIWA2-1EX-ASSEM-DIST A 2 DFR 0679 1170 2 PIWA2-1EX-SPLIT-ED-FLAG A 1 DFR 0680 1180 2 PIWA2-1EX-CONG-DIST A 2 DFR 0681 1190 2 PIWA2-1EX-SENATE-DIST A 2 DFR 0682 1200 2 PIWA2-1EX-COURT-DIST A 2 DFR 0683 1210 2 PIWA2-1EX-COUNCIL-DIST A 2 DFR 0684 1220 * * * **** ***** C 1230 2 PIWA2-1EX-HEALTH-CENTER-DIST A 2 DFR 0685 1240 2 PIWA2-1EX-HEALTH-AREA A 4 DFR 0686 1250 2 PIWA2-1EX-SANI-DIST A 3 DFR 0687 1260 R 2 PIWA2-1EX-SANI-DIST DRR 0688 1270 3 PIWA2-1EX-SANI-DIST-BORO A 1 DFR 0689 1280 3 PIWA2-1EX-SANI-DIST-NUM A 2 DFR 0690 1290 2 PIWA2-1EX-SANI-SUBSEC A 2 DFR 0691 1300 2 PIWA2-1EX-SANI-REG A 5 DFR 0692 1310 2 PIWA2-1EX-SANI-REC A 3 DFR 0693 1320 2 PIWA2-1EX-POLICE-DIST A 4 DFR 0694 1330 R 2 PIWA2-1EX-POLICE-DIST DRR 0695 1340 3 PIWA2-1EX-POL-PAT-BORO-CMD A 1 DFR 0696 1350 3 PIWA2-1EX-POL-PRECINCT A 3 DFR 0697 1360 2 PIWA2-1EX-FIRE-DIV A 2 DFR 0698 1370 2 PIWA2-1EX-FIRE-BAT A 2 DFR 0699 1380 2 PIWA2-1EX-FIRE-CO A 4 DFR 0700 1390 R 2 PIWA2-1EX-FIRE-CO DRR 0701 1400 3 PIWA2-1EX-FIRE-CO-TYPE A 1 DFR 0702 1410 3 PIWA2-1EX-FIRE-CO-NUM A 3 DFR 0703 1420 2 PIWA2-1EX-SCHL-DIST-SPLIT-FLAG A 1 DFR 0704 1430 2 PIWA2-1EX-SCHL-DIST A 2 DFR 0705 1440 2 PIWA2-1EX-DYN-BLK A 3 DFR 0706 1450 2 PIWA2-1EX-POLICE-PAT-BORO A 2 DFR 0707 1460 2 PIWA2-1EX-FEATURE-TYPE A 1 DFR 0708 1470 2 PIWA2-1EX-SEGMENT-TYPE A 1 DFR 0709 1480 2 PIWA2-1EX-ALX A 1 DFR 0710 1490 2 PIWA2-1EX-COINCIDENT-SEG-CTR A 1 DFR 0711 1500 2 FILLER-290 A 3 DFR 0712 1510 2 PIWA2-1EX-1990-CENSUS-TRACT A 6 DFR 0713 1520 2 PIWA2-1EX-2010-CENSUS-TRACT A 6 DFR 0714 1530 2 PIWA2-1EX-2010-CENSUS-BLOCK A 4 DFR 0715 1540 2 PIWA2-1EX-2010-CENSUS-BLOCK-SUF A 1 DFR 0716 1550 2 PIWA2-1EX-2000-CENSUS-TRACT A 6 /* NA DFR 0717 1560 2 PIWA2-1EX-2000-CENSUS-BLOCK A 4 /* NA DFR 0718 1570 2 PIWA2-1EX-2000-CENSUS-BLOCK-SUF A 1 /* NA DFR 0719 1580 2 PIWA2-1EX-NTA A 4 /*NEIGHBORHOOD DFR 0720 1590 * * /*TABULATION AREA*/ C 1600 2 PIWA2-1EX-SANIT-SNOW-PRIORITY A 1 /*SANITATION STRT DFR 0721 1610 * * /*SNOW PRIORITY C 1620 2 PIWA2-1EX-SANIT-ORGANICS A 5 DFR 0722 1630 2 PIWA2-1EX-SANIT-BULK-PICK-UP A 5 /* V16.4 ADDITION DFR 0723 1640 * 2 PIWA2-1EX-SANIT-RESERVED A 5 CFR 0723 1650 2 PIWA2-1EX-HURRICANE-ZONE A 2 /*OEM HURRICANE EVAC ZONE DFR 0724 1660 2 FILLER-1EX-300 A 11 DFR 0725 1670 2 PIWA2-1EX-UHNS A 11 DFR 0726 1680 2 PIWA2-1EX-REAL-B7SC A 8 DFR 0727 1690 2 PIWA2-1EX-SEGMENT-ID A 7 DFR 0728 1700 2 PIWA2-1EX-CURVE-FLAG A 1 DFR 0729 1710 2 PIWA2-1EX-LGC A 8 DFR 0730 1720 2 PIWA2-1EX-BOE-PTR A 1 DFR 0731 1730 2 PIWA2-1EX-AZIMUTH A 3 DFR 0732 1740 2 PIWA2-1EX-ORIENT A 1 DFR 0733 1750 2 PIWA2-1EX-X-LOW A 7 DFR 0734 1760 2 PIWA2-1EX-Y-LOW A 7 DFR 0735 1770 2 PIWA2-1EX-Z-LOW A 7 DFR 0736 1780 2 PIWA2-1EX-X-HI A 7 DFR 0737 1790 2 PIWA2-1EX-Y-HI A 7 DFR 0738 1800 2 PIWA2-1EX-Z-HI A 7 DFR 0739 1810 2 PIWA2-1EX-X-CC A 7 DFR 0740 1820 2 PIWA2-1EX-Y-CC A 7 DFR 0741 1830 2 PIWA2-1EX-Z-CC A 7 DFR 0742 1840 2 PIWA2-1EX-RADIUS A 7 DFR 0743 1850 2 PIWA2-1EX-SECANT A 1 DFR 0744 1860 2 PIWA2-1EX-ANGLE-FROM A 5 DFR 0745 1870 2 PIWA2-1EX-ANGLE-TO A 5 DFR 0746 1880 2 PIWA2-1EX-NODE-FROM A 7 DFR 0747 1890 2 PIWA2-1EX-NODE-TO A 7 DFR 0748 1900 2 PIWA2-1EX-VANITY-LION A 10 DFR 0749 1910 2 PIWA2-1EX-SOS A 1 DFR 0750 1920 2 PIWA2-1EX-SPLIT-LOHSN A 11 DFR 0751 1930 2 PIWA2-1EX-TD A 1 DFR 0752 1940 2 PIWA2-1EX-TR A 10 DFR 0753 1950 2 PIWA2-1EX-CURVE-FRACTION A 3 DFR 0754 1960 2 PIWA2-1EX-ROADWAY-TYPE A 2 DFR 0755 1970 2 PIWA2-1EX-PHYSICAL-ID A 7 DFR 0756 1980 2 PIWA2-1EX-GENERIC-ID A 7 DFR 0757 1990 2 PIWA2-1EX-INTP-ID A 7 DFR 0758 2000 2 PIWA2-1EX-INTF-ID A 7 DFR 0759 2010 2 PIWA2-1EX-BIKE-LANE-2 A 2 /* V16.4 ADDITION DFR 2020 2 PIWA2-1EX-BIKE-TRAFFIC-DIR A 2 /* V17.1 ADDITION DFR 2030 2 PIWA2-1EX-FILL450 A 3 /* V17.1 ALTERATION DFR 0760 2040 * 2 PIWA2-1EX-FILL450 A 5 /* V16.4 ALTERATION CFR 0760 2050 * 2 PIWA2-1EX-FILL450 A 7 /* V16.1 REPLACEMENT CFR 0760 2060 2 PIWA2-1EX-STREET-STATUS A 1 DFR 0761 2070 2 PIWA2-1EX-STREET-WIDTH A 3 DFR 0762 2080 2 PIWA2-1EX-STREET-IRR A 1 DFR 0763 2090 2 PIWA2-1EX-BIKE-LANE A 1 DFR 0764 2100 2 PIWA2-1EX-FED-CLASS-CODE A 2 DFR 0765 2110 2 PIWA2-1EX-ROW-TYPE A 1 DFR 0766 2120 2 PIWA2-1EX-LGC-LIST-2 A 10 DFR 0767 2130 2 PIWA2-1EX-LEGACY-SEG-ID A 7 DFR 0768 2140 2 PIWA2-1EX-LGC-LIST-FROM-1 A 10 DFR 0769 2150 2 PIWA2-1EX-LGC-LIST-TO-1 A 10 DFR 0770 2160 2 PIWA2-1EX-LGC-LIST-FROM-2 A 10 DFR 0771 2170 2 PIWA2-1EX-LGC-LIST-TO-2 A 10 DFR 0772 2180 2 PIWA2-1EX-NOCROSS-FLG A 1 DFR 0773 2190 2 PIWA2-1EX-IND-SEG-LEN A 5 DFR 0774 2200 2 PIWA2-1EX-NTA-NAME A 75 DFR 0775 2210 2 PIWA2-1EX-USPS-CITY-NAME A 25 /*USPS PREFERRED CITY NAME DFR 0776 2220 2 PIWA2-1EX-LATITUDE A 9 DFR 0777 2230 2 PIWA2-1EX-LONGITUDE A 11 DFR 0778 2240 2 PIWA2-1EX-SEG-FROM-NODE A 7 DFR 2250 2 PIWA2-1EX-SEG-TO-NODE A 7 DFR 2260 2 PIWA2-1EX-SEG-FROM-XYZ A 21 DFR 2270 2 PIWA2-1EX-SEG-TO-XYZ A 21 DFR 2280 2 PIWA2-1EX-BLOCKFACE-ID A 10 /* V16.1 ADD DFR 2290 2 PIWA2-1EX-NBR-TRAVEL-LANES A 2 /* V16.1 ADD DFR 2300 2 PIWA2-1EX-NBR-PARK-LANES A 2 /* V16.1 ADD DFR 2310 2 PIWA2-1EX-NBR-TOTAL-LANES A 2 /* V16.1 ADD DFR 2320 2 PIWA2-1EX-STR-WIDTH-MAX A 3 /* V16.4 ADDITION DFR 2330 2 PIWA2-1EX-SPEED-LIMIT A 2 /* V17.4 ADDITION DFR 2340 2 PIWA2-1EX-PUMA-CODE A 5 /* V18.1 ADDITION DFR 2350 2 PIWA2-1EX-POLICE-SECTOR A 4 /* V19.2 ADDITION DFR 2360 2 PIWA2-1EX-POLICE-SRVC-AREA A 1 /* V19.2 ADDITION DFR 2370 2 FILLER-1EX-500 A 240 /* V16.1,V16.4,V18.1 MODS DFR 0779 2380 * 2 FILLER-1EX-500 A 255 /* V16.1 MOD CFR 0779 2390 * ** *** THE FOLLOWING FIELDS ARE IN ADDITION TO 1E ***************** CK 0432 2400 2 PIWA2-1EX-REASON-CODE A 1 DFR 0780 2410 2 PIWA2-1EX-REASON-CODE-QUAL A 1 DFR 0781 2420 2 PIWA2-1EX-WARN-CODE A 2 DFR 0782 2430 2 PIWA2-1EX-RETURN-CODE A 2 DFR 0783 2440 2 PIWA2-1EX-NUM-X-STS-LO-END A 1 DFR 0784 2450 2 PIWA2-1EX-LO-B7SC A 8 (1:5) DFRI1 0785 M 2460 2 PIWA2-1EX-NUM-X-STS-HI-END A 1 DFR 0786 2470 2 PIWA2-1EX-HI-B7SC A 8 (1:5) DFRI1 0787 M 2480 2 PIWA2-1EX-LO-ST-NAME A 32 (1:5) DFRI1 0788 M 2490 2 PIWA2-1EX-HI-ST-NAME A 32 (1:5) DFRI1 0789 M 2500 2 PIWA2-1EX-BOE-B7SC A 8 DFR 0790 2510 2 PIWA2-1EX-BOE-ST-NAME A 32 DFR 0791 2520 2 FILLER-1EX-600 A 52 DFR 0792 2530 * * END OF FUNCTION 1/1E LAYOUT * **** ******* C 2540 * - -------------------------------- - ---- -------------------------------- C 2550 * * BEGNING OF FCT 1A EXTENDED * ********** ******* C 2560 R 1 GEOLP2AL DRR 0793 2570 2 PIWA2-1AX-ACCESS-KEY A 21 DFR 0794 2580 2 PIWA2-1AX-CONT-PARITY A 1 /* OR DUP ADDR IND DFR 0795 2590 2 PIWA2-1AX-LOW-HOUSENUM A 11 /* SORT FORMAT DFR 0796 2600 2 PIWA2-1AX-BBL A 10 DFR 0797 2610 R 2 PIWA2-1AX-BBL DRR 0798 2620 3 PIWA2-1AX-BBL-BORO A 1 DFR 0799 2630 3 PIWA2-1AX-BLOCK A 5 DFR 0800 2640 3 PIWA2-1AX-LOT A 4 DFR 0801 2650 2 PIWA2-1AX-LOT-VERSION A 1 /* NYI */ DFR 0802 2660 2 PIWA2-1AX-SCC A 1 DFR 0803 2670 2 FILLER-1AX-100 A 1 DFR 0804 2680 2 PIWA2-1AX-GENERAL-LOT-INFO DSR 0805 2690 3 PIWA2-1AX-RPAD-BLDG-CLASS A 2 DKR 0806 2700 3 PIWA2-1AX-CORNER-CODE A 2 DKR 0807 2710 3 PIWA2-1AX-NUM-OF-STRUCTURES A 4 DKR 0808 2720 3 PIWA2-1AX-NUM-OF-BLOCKFACES A 2 DKR 0809 2730 3 PIWA2-1AX-INTERIOR-FLAG A 1 DKR 0810 2740 3 PIWA2-1AX-VACANT-FLAG A 1 DKR 0811 2750 3 PIWA2-1AX-IRREG-LOT-FLAG A 1 DKR 0812 2760 2 PIWA2-1AX-MARBLE-RIKERS-FLAG A 1 DKR 0813 2770 2 PIWA2-1AX-ADDR-LIST-OVFLOW-FLAG A 1 DKR 0814 2780 2 PIWA2-1AX-STROLL-KEY A 19 DKR 0815 2790 R 2 PIWA2-1AX-STROLL-KEY DRR 0816 2800 3 PIWA2-1AX-STROLL-BORO A 1 DKR 0817 2810 3 PIWA2-1AX-STROLL-5SC A 5 DKR 0818 2820 3 PIWA2-1AX-STROLL-SIDE-OF-STR A 1 /* L OR R DKR 0819 2830 3 PIWA2-1AX-STROLL-HI-HOUSENUM A 11 /* SORT FORMAT DKR 0820 2840 3 FILLER-1AX-200 A 1 DKR 0821 2850 2 FILLER-1AX-300 A 1 /* FOR GSS USE DKR 0822 2860 2 PIWA2-1AX-BIN A 7 DKR 0823 2870 2 PIWA2-1AX-CONDO-FLAG A 1 DKR 0824 2880 2 FILLER-1AX-400 A 1 DKR 0825 2890 2 PIWA2-1AX-RPAD-CONDO-ID-NUM A 4 DKR 0826 2900 2 PIWA2-1AX-CONDO-UNIT-ID-NUM A 7 DKR 0827 2910 2 PIWA2-1AX-CONDO-BILL-BBL A 10 DKR 0828 2920 2 PIWA2-1AX-CONDO-BILL-BBL-VER A 1 DKR 0829 2930 2 PIWA2-1AX-CONDO-BILL-BBL-SCC A 1 DKR 0830 2940 2 PIWA2-1AX-CONDO-LOW-BBL A 10 DKR 0831 2950 2 PIWA2-1AX-CONDO-LOW-BBL-VER A 1 DKR 0832 2960 2 PIWA2-1AX-CONDO-HIGH-BBL A 10 DKR 0833 2970 2 PIWA2-1AX-CONDO-HIGH-BBL-VER A 1 DKR 0834 2980 2 FILLER-1AX-600 A 15 DKR 0835 2990 2 PIWA1-1AX-COOP-NUM A 4 DKR 0836 3000 2 PIWA2-1AX-SANBORN A 8 DKR 0837 3010 R 2 PIWA2-1AX-SANBORN DRR 0838 3020 3 PIWA2-1AX-SANBORN-BORO A 1 DKR 0839 3030 3 PIWA2-1AX-SANBORN-VOL A 3 DKR 0840 3040 3 PIWA2-1AX-SANBORN-PAGE A 4 DKR 0841 3050 2 PIWA2-1AX-COMMERC-DIST A 5 DKR 0842 3060 2 PIWA2-1AX-DOF-MAP-BORO A 1 DKR 0843 3070 2 PIWA2-1AX-DOF-MAP-SECVOL A 4 DKR 0844 3080 2 PIWA2-1AX-DOF-MAP-PAGE A 4 DKR 0845 3090 2 FILLER-1AX-RESERVED-DCP A 3 DKR 0846 3100 2 PIWA2-1AX-LATITUDE A 9 DKR 0847 3110 2 PIWA2-1AX-LONGITUDE A 11 DKR 0848 3120 2 PIWA2-1AX-X-COORD A 7 DKR 0849 3130 2 PIWA2-1AX-Y-COORD A 7 DKR 0850 3140 2 PIWA2-1AX-BID A 6 DKR 0851 3150 2 PIWA2-1AX-TPAD-BIN-ST A 1 /* CURRENT STATUS */ DKR 0852 3160 2 PIWA2-1AX-TPAD-NEW-BIN A 7 /* NEW BIN */ DKR 0853 3170 2 PIWA2-1AX-TPAD-NEW-BIN-ST A 1 /* NEW BIN STATUS */ DKR 0854 3180 2 PIWA2-1AX-TPAD-CONFLICT A 1 /* CONFLICT FLAG */ DKR 0855 3190 2 PIWA2-1AX-DCP-ZONE-MAP A 3 /* V17.4 ADDITION DKR 3200 2 FILLER-1AX-650 A 6 DKR 0856 3210 2 FILLER-1AX-700 A 8 /* FOR GSS USE DKR 0857 3220 2 PIWA2-1AX-REASON-CODE A 1 DKR 0858 3230 2 PIWA2-1AX-REASON-CODE-QUAL A 1 DKR 0859 3240 2 PIWA2-1AX-WARN-CODE A 2 DKR 0860 3250 2 PIWA2-1AX-RETURN-CODE A 2 DKR 0861 3260 2 FILLER-1AX-750 A 108 DKR 0862 3270 2 PIWA2-1AX-NUM-OF-ADDR A 4 DKR 0863 3280 2 PIWA2-1AX-LIST-OF-ADDR (1:21) DSRI1 0864 M 3290 3 PIWA2-1AX-LIST-LOW-HOUSENUM A 16 /* DISPLAY FORMAT DKR 0865 3300 3 PIWA2-1AX-LIST-HI-HOUSENUM A 16 /* DISPLAY FORMAT DKR 0866 3310 3 PIWA2-1AX-LIST-BORO A 1 DKR 0867 3320 3 PIWA2-1AX-LIST-5SC A 5 DKR 0868 3330 3 PIWA2-1AX-LIST-LGC A 2 DKR 0869 3340 3 PIWA2-1AX-LIST-BIN A 7 DKR 0870 3350 3 PIWA2-1AX-LIST-SIDE-OF-STR A 1 /* L OR R DKR 0871 3360 3 PIWA2-1AX-ADDR-TYPE A 1 /* P=NAP, B=NAB, MAL DKR 0872 3370 R 3 PIWA2-1AX-ADDR-TYPE /* REDEF. BEGIN : PIWA2-1AX-ADDR DRR 0873 3380 4 PIWA2-1AX-LIST-ADDR-TYPE A 1 /* BLANK=NORMAL DKR 0874 3390 * * /* BLANK=NORMAL C 3400 3 PIWA2-1AX-TPAD-STATUS A 1 /* 0 - 9 DKR 0875 3410 R 3 PIWA2-1AX-TPAD-STATUS /* REDEF. BEGIN : PIWA2-1AX-TPAD DRR 0876 3420 4 PIWA2-1AX-LIST-TPAD-STATUS A 1 DKR 0877 3430 3 PIWA2-1AX-ST-NAME A 32 /* 0 - 9 DKR 0878 3440 R 3 PIWA2-1AX-ST-NAME /* REDEF. BEGIN : PIWA2-1AX-ST-N DRR 0879 3450 4 PIWA2-1AX-LIST-ST-NAME A 32 DKR 0880 3460 3 FILLER-800 A 34 DKR 0881 3470 * ** END OF FUNCTION 1A EXTENDED **** * ********** *********************** C 3480 * -- -------------------------------- - ---------- -------------------------- C 3490 * ** BEGINNING OF FUNCTION 1B ******* * ********** *********************** C 3500 R 1 GEOLP2AL DRR 0882 3510 2 PIWA2-1B-1-ACCESS-KEY A 21 DFR 0883 3520 2 PIWA2-1B-1-CONT-PARITY A 1 /* (OR DUP ADDR IND) DFR 0884 3530 2 PIWA2-1B-1-LOW-HOUSENUM A 11 /* SORT FORMAT DFR 0885 3540 2 PIWA2-1B-1-HI-HOUSENUM A 11 /* SORT FORMAT DFR 0886 3550 2 PIWA2-1B-1-PREFERRED-LGC A 2 DFR 0887 3560 2 PIWA2-1B-1-NUM-X-ST-LOW-END A 1 DFR 0888 3570 2 PIWA2-1B-1-LOW-B5SC A 6 (1:5) /* 30-BYTES DFRI1 0889 M 3580 2 PIWA2-1B-1-NUM-X-ST-HI-END A 1 DFR 0890 3590 2 PIWA2-1B-1-HI-B5SC A 6 (1:5) /* 30-BYTES DFRI1 0891 M 3600 2 PIWA2-1B-1-LIONKEY A 10 DFR 0892 3610 R 2 PIWA2-1B-1-LIONKEY DRR 0893 3620 3 PIWA2-1B-1-LION-BORO A 1 DFR 0894 3630 3 PIWA2-1B-1-LION-FACECODE A 4 DFR 0895 3640 3 PIWA2-1B-1-LION-SEQ A 5 DFR 0896 3650 2 PIWA2-1B-1-SPECIAL-ADDR-FLAG A 1 DFR 0897 3660 2 PIWA2-1B-1-SIDE-OF-STR A 1 DFR 0898 3670 2 PIWA2-1B-1-SEG-LEN A 5 DFR 0899 3680 2 PIWA2-1B-1-X-COORD A 7 DFR 0900 3690 2 PIWA2-1B-1-Y-COORD A 7 DFR 0901 3700 2 FILLER-1B-1-100 A 7 /* FOR ZCOORD DFR 0902 3710 2 PIWA2-1B-1-CD-ELIGIBLE A 1 DFR 0903 3720 2 PIWA2-1B-1-MARBLE-RIKERS-FLAG A 1 DFR 0904 3730 2 PIWA2-1B-1-DOT-SLA A 1 DFR 0905 3740 2 PIWA2-1B-1-COM-DIST A 3 DFR 0906 3750 R 2 PIWA2-1B-1-COM-DIST DRR 0907 3760 3 PIWA2-1B-1-COM-DIST-BORO A 1 DFR 0908 3770 3 PIWA2-1B-1-COM-DIST-NUM A 2 DFR 0909 3780 2 PIWA2-1B-1-ZIP A 5 DFR 0910 3790 * * * **** ***** C 3800 * * THE FN1E FIELDS ARE VALID ONLY * **** ***** C 3810 * * FOR FUNCTION 1E, NOT FUNC 1. * **** ***** C 3820 2 PIWA2-1B-1-ELECT-DIST A 3 DFR 0911 3830 2 PIWA2-1B-1-ASSEM-DIST A 2 DFR 0912 3840 2 PIWA2-1B-1-SPLIT-ED-FLAG A 1 DFR 0913 3850 2 PIWA2-1B-1-CONG-DIST A 2 DFR 0914 3860 2 PIWA2-1B-1-SENATE-DIST A 2 DFR 0915 3870 2 PIWA2-1B-1-COURT-DIST A 2 DFR 0916 3880 2 PIWA2-1B-1-COUNCIL-DIST A 2 DFR 0917 3890 * * * **** ***** C 3900 2 PIWA2-1B-1-HEALTH-CENTER-DIST A 2 DFR 0918 3910 2 PIWA2-1B-1-HEALTH-AREA A 4 DFR 0919 3920 2 PIWA2-1B-1-SANI-DIST A 3 DFR 0920 3930 R 2 PIWA2-1B-1-SANI-DIST DRR 0921 3940 3 PIWA2-1B-1-SANI-DIST-BORO A 1 DFR 0922 3950 3 PIWA2-1B-1-SANI-DIST-NUM A 2 DFR 0923 3960 2 PIWA2-1B-1-SANI-SUBSEC A 2 DFR 0924 3970 2 PIWA2-1B-1-SANI-REG A 5 DFR 0925 3980 2 PIWA2-1B-1-SANI-REC A 3 DFR 0926 3990 2 PIWA2-1B-1-POLICE-DIST A 4 DFR 0927 4000 R 2 PIWA2-1B-1-POLICE-DIST DRR 0928 4010 3 PIWA2-1B-1-POL-PAT-BORO-CMD A 1 DFR 0929 4020 3 PIWA2-1B-1-POL-PRECINCT A 3 DFR 0930 4030 2 PIWA2-1B-1-FIRE-DIV A 2 DFR 0931 4040 2 PIWA2-1B-1-FIRE-BAT A 2 DFR 0932 4050 2 PIWA2-1B-1-FIRE-CO A 4 DFR 0933 4060 R 2 PIWA2-1B-1-FIRE-CO DRR 0934 4070 3 PIWA2-1B-1-FIRE-CO-TYPE A 1 DFR 0935 4080 3 PIWA2-1B-1-FIRE-CO-NUM A 3 DFR 0936 4090 2 FILLER-1B-1-250 A 1 /* WAS SPLIT COM SCHL DFR 0937 4100 2 PIWA2-1B-1-SCHL-DIST A 2 DFR 0938 4110 2 PIWA2-1B-1-DYN-BLK A 3 DFR 0939 4120 2 PIWA2-1B-1-POLICE-PAT-BORO A 2 DFR 0940 4130 2 PIWA2-1B-1-FEATURE-TYPE A 1 DFR 0941 4140 2 PIWA2-1B-1-SEGMENT-TYPE A 1 DFR 0942 4150 2 PIWA2-1B-1-ALX A 1 DFR 0943 4160 2 PIWA2-1B-1-COINCIDENT-SEG-CTR A 1 DFR 0944 4170 2 FILLER-1B-1-290 A 3 DFR 0945 4180 2 PIWA2-1B-1-1990-CENSUS-TRACT A 6 DFR 0946 4190 2 PIWA2-1B-1-2010-CENSUS-TRACT A 6 DFR 0947 4200 2 PIWA2-1B-1-2010-CENSUS-BLOCK A 4 DFR 0948 4210 2 PIWA2-1B-1-2010-CENSUS-BLOCK-SUF A 1 DFR 0949 4220 2 PIWA2-1B-1-2000-CENSUS-TRACT A 6 /* NA DFR 0950 4230 2 PIWA2-1B-1-2000-CENSUS-BLOCK A 4 /* NA DFR 0951 4240 2 PIWA2-1B-1-2000-CENSUS-BLOCK-SUF A 1 /* NA DFR 0952 4250 2 PIWA2-1B-1-NTA A 4 /*NEIGHBORHOOD DFR 0953 4260 * * /*TABULATION AREA C 4270 2 PIWA2-1B-1-SANIT-SNOW-PRIORITY A 1 /*SANITATION STRT DFR 0954 4280 * * /*SNOW PRIORITY C 4290 2 PIWA2-1B-1-SANIT-ORGANICS A 5 DFR 0955 4300 2 PIWA2-1B-1-SANIT-BULK-PICK-UP A 5 /* V16.4 ADDITION DFR 0956 4310 * 2 PIWA2-1B-1-SANIT-RESERVED A 5 CFR 0956 4320 2 PIWA2-1B-1-HURRICANE-ZONE A 2 /*OEM HURRICANE EVAC ZONE DFR 0957 4330 2 FILLER-1B-1-300 A 11 DFR 0958 4340 2 PIWA2-1B-1-UHNS A 11 /* UNDERLYING HNS DFR 0959 4350 2 PIWA2-1B-1-REAL-B7SC A 8 DFR 0960 4360 2 PIWA2-1B-1-SEGMENT-ID A 7 DFR 0961 4370 2 PIWA2-1B-1-CURVE-FLAG A 1 DFR 0962 4380 2 PIWA2-1B-1-LGCS A 8 DFR 0963 4390 2 PIWA2-1B-1-BOE-PTR A 1 DFR 0964 4400 2 PIWA2-1B-1-AZIMUTH A 3 DFR 0965 4410 2 PIWA2-1B-1-ORIENT A 1 DFR 0966 4420 2 PIWA2-1B-1-X-LOW A 7 DFR 0967 4430 2 PIWA2-1B-1-Y-LOW A 7 DFR 0968 4440 2 PIWA2-1B-1-Z-LOW A 7 DFR 0969 4450 2 PIWA2-1B-1-X-HI A 7 DFR 0970 4460 2 PIWA2-1B-1-Y-HI A 7 DFR 0971 4470 2 PIWA2-1B-1-Z-HI A 7 DFR 0972 4480 2 PIWA2-1B-1-X-CC A 7 DFR 0973 4490 2 PIWA2-1B-1-Y-CC A 7 DFR 0974 4500 2 PIWA2-1B-1-Z-CC A 7 DFR 0975 4510 2 PIWA2-1B-1-RADIUS A 7 DFR 0976 4520 2 PIWA2-1B-1-SECANT A 1 DFR 0977 4530 2 PIWA2-1B-1-ANGLE-FROM A 5 DFR 0978 4540 2 PIWA2-1B-1-ANGLE-TO A 5 DFR 0979 4550 2 PIWA2-1B-1-NODE-FROM A 7 DFR 0980 4560 2 PIWA2-1B-1-NODE-TO A 7 DFR 0981 4570 2 PIWA2-1B-1-VANITY-LION A 10 DFR 0982 4580 2 PIWA2-1B-1-SOS A 1 DFR 0983 4590 2 PIWA2-1B-1-SPLIT-LOHSN A 11 DFR 0984 4600 2 PIWA2-1B-1-TD A 1 DFR 0985 4610 2 PIWA2-1B-1-TR A 10 DFR 0986 4620 2 PIWA2-1B-1-CURVE-FRACTION A 3 DFR 0987 4630 2 PIWA2-1B-1-ROADWAY-TYPE A 2 DFR 0988 4640 2 PIWA2-1B-1-PHYSICAL-ID A 7 DFR 0989 4650 2 PIWA2-1B-1-GENERIC-ID A 7 DFR 0990 4660 2 PIWA2-1B-1-INTP-ID A 7 DFR 0991 4670 2 PIWA2-1B-1-INTF-ID A 7 DFR 0992 4680 2 PIWA2-1B-1-BIKE-LANE-2 A 2 DFR 4690 2 PIWA2-1B-1-BIKE-TRAFFIC-DIR A 2 /* V17.1 ADDITION DFR 4700 2 PIWA2-1B-1-FILL450 A 3 /* V17.1 ALTERATION DFR 0993 4710 * 2 PIWA2-1B-1-FILL450 A 5 /* V16.4 ALTERATION CFR 0993 4720 * 2 PIWA2-1B-1-FILL450 A 7 /* V16.1 REPLACEMENT CFR 0993 4730 2 PIWA2-1B-1-STREET-STATUS A 1 DFR 0994 4740 2 PIWA2-1B-1-STREET-WIDTH A 3 DFR 0995 4750 2 PIWA2-1B-1-STREET-WIDTH-IRR A 1 DFR 0996 4760 2 PIWA2-1B-1-BIKE-LANE A 1 DFR 0997 4770 2 PIWA2-1B-1-FED-CLASS-CODE A 2 DFR 0998 4780 2 PIWA2-1B-1-ROW-TYPE A 1 DFR 0999 4790 2 PIWA2-1B-1-LGC-LIST-2 A 10 DFR 1000 4800 2 PIWA2-1B-1-LEGACY-SEG-ID A 7 DFR 1001 4810 2 PIWA2-1B-1-LGC-LIST-FROM-1 A 10 DFR 1002 4820 2 PIWA2-1B-1-LGC-LIST-TO-1 A 10 DFR 1003 4830 2 PIWA2-1B-1-LGC-LIST-FROM-2 A 10 DFR 1004 4840 2 PIWA2-1B-1-LGC-LIST-TO-2 A 10 DFR 1005 4850 2 PIWA2-1B-1-NOCROSS-FLG A 1 DFR 1006 4860 2 PIWA2-1B-1-IND-SEG-LEN A 5 DFR 1007 4870 2 PIWA2-1B-1-NTA-NAME A 75 DFR 1008 4880 2 PIWA2-1B-1-USPS-CITY-NAME A 25 /*USPS PREFERRED CITY NAME DFR 1009 4890 2 PIWA2-1B-1-LATITUDE A 9 DFR 1010 4900 2 PIWA2-1B-1-LONGITUDE A 11 DFR 1011 4910 2 PIWA2-1B-1-SEG-FROM-NODE A 7 DFR 4920 2 PIWA2-1B-1-SEG-TO-NODE A 7 DFR 4930 2 PIWA2-1B-1-SEG-FROM-XYZ A 21 DFR 4940 2 PIWA2-1B-1-SEG-TO-XYZ A 21 DFR 4950 2 PIWA2-1B-1-BLOCKFACE-ID A 10 /* V16.1 ADD DFR 4960 2 PIWA2-1B-1-NBR-TRAVEL-LANES A 2 /* V16.1 ADD DFR 4970 2 PIWA2-1B-1-NBR-PARK-LANES A 2 /* V16.1 ADD DFR 4980 2 PIWA2-1B-1-NBR-TOTAL-LANES A 2 /* V16.1 ADD DFR 4990 2 PIWA2-1B-1-STR-WIDTH-MAX A 3 /* V16.4 ADDITION DFR 5000 2 PIWA2-1B-1-SPEED-LIMIT A 2 /* V17.4 ADDITION DFR 5010 2 PIWA2-1B-1-PUMA-CODE A 5 /* V18.1 ADDITION DFR 5020 2 PIWA2-1B-1-POLICE-SECTOR A 4 /* V19.2 ADDITION DFR 5030 2 PIWA2-1B-1-POLICE-SRVC-AREA A 1 /* V19.2 ADDITION DFR 5040 2 FILLER-1B-1-500 A 240 /* V16.4,V18.1 MOD DFR 1012 5050 * 2 FILLER-1B-1-500 A 255 /* V16.1 MOD CFR 1012 5060 * ** **** THE FOLLOWING FIELDS ARE IN ADDITION TO 1/1E**************** C 5070 2 PIWA2-1B-1-REASON-CODE A 1 DFR 1013 5080 2 PIWA2-1B-1-REASON-CODE-QUAL A 1 DFR 1014 5090 2 PIWA2-1B-1-WARN-CODE A 2 DFR 1015 5100 2 PIWA2-1B-1-RETURN-CODE A 2 DFR 1016 5110 2 PIWA2-1B-1-NUM-X-STS-LO-END A 1 DFR 1017 5120 2 PIWA2-1B-1-LO-B7SC A 8 (1:5) DFRI1 1018 M 5130 2 PIWA2-1B-1-NUM-X-STS-HI-END A 1 DFR 1019 5140 2 PIWA2-1B-1-HI-B7SC A 8 (1:5) DFRI1 1020 M 5150 2 PIWA2-1B-1-LO-ST-NAME A 32 (1:5) DFRI1 1021 M 5160 2 PIWA2-1B-1-HI-ST-NAME A 32 (1:5) DFRI1 1022 M 5170 2 PIWA2-1B-1-BOE-B7SC A 8 DFR 1023 5180 2 PIWA2-1B-1-BOE-ST-NAME A 32 DFR 1024 5190 2 FILLER-1B-1-600 A 52 DFR 1025 5200 * * ******************************** * ********** ****************** C 5210 * * THE FOLLOWING FIELDS ARE * ********** ******** C 5220 * * PROPERTY LEVEL FIELDS * ********** ******** C 5230 2 PIWA2-1B-1A-ACCESS-KEY A 21 /*CHG FROM LEVEL 3 TO 2??? DFR 1026 5240 2 PIWA2-1B-1A-CONT-PARITY A 1 /* OR DUP ADDR IND DFR 1027 5250 2 PIWA2-1B-1A-LOW-HOUSENUM A 11 /* SORT FORMAT DFR 1028 5260 2 PIWA2-1B-1A-BBL A 10 DFR 1029 5270 R 2 PIWA2-1B-1A-BBL DRR 1030 5280 3 PIWA2-1B-1A-BBL-BORO A 1 DFR 1031 5290 3 PIWA2-1B-1A-BLOCK A 5 DFR 1032 5300 3 PIWA2-1B-1A-LOT A 4 DFR 1033 5310 2 PIWA2-1B-1A-LOT-VERSION A 1 /* NYI */ DFR 1034 5320 2 PIWA2-1B-1A-SCC A 1 DFR 1035 5330 2 FILLER-1B-1A-100 A 1 DFR 1036 5340 2 PIWA2-1B-1A-GENERAL-LOT-INFO DSR 1037 5350 3 PIWA2-1B-1A-RPAD-BLDG-CLASS A 2 DKR 1038 5360 3 PIWA2-1B-1A-CORNER-CODE A 2 DKR 1039 5370 3 PIWA2-1B-1A-NUM-OF-STRUCTURES A 4 DKR 1040 5380 3 PIWA2-1B-1A-NUM-OF-BLOCKFACES A 2 DKR 1041 5390 3 PIWA2-1B-1A-INTERIOR-FLAG A 1 DKR 1042 5400 3 PIWA2-1B-1A-VACANT-FLAG A 1 DKR 1043 5410 3 PIWA2-1B-1A-IRREG-LOT-FLAG A 1 DKR 1044 5420 2 PIWA2-1B-1A-MARBLE-RIKERS-FLAG A 1 DKR 1045 5430 2 PIWA2-1B-1A-ADDR-LIST-OVFLOW-FLG A 1 /*FLAG,FLG????????? DKR 1046 5440 2 PIWA2-1B-1A-STROLL-KEY A 19 DKR 1047 5450 R 2 PIWA2-1B-1A-STROLL-KEY DRR 1048 5460 3 PIWA2-1B-1A-STROLL-BORO A 1 DKR 1049 5470 3 PIWA2-1B-1A-STROLL-5SC A 5 DKR 1050 5480 3 PIWA2-1B-1A-STROLL-SIDE-OF-STR A 1 /* L OR R DKR 1051 5490 3 PIWA2-1B-1A-STROLL-HI-HOUSENUM A 11 /* SORT FORMAT DKR 1052 5500 3 FILLER-1B-1A-200 A 1 DKR 1053 5510 2 FILLER-1B-1A-300 A 1 /* FOR GSS USE DKR 1054 5520 2 PIWA2-1B-1A-BIN A 7 DKR 1055 5530 2 PIWA2-1B-1A-CONDO-FLAG A 1 DKR 1056 5540 2 FILLER-1B-1A-400 A 1 DKR 1057 5550 2 PIWA2-1B-1A-RPAD-CONDO-ID-NUM A 4 DKR 1058 5560 2 PIWA2-1B-1A-CONDO-UNIT-ID-NUM A 7 DKR 1059 5570 2 PIWA2-1B-1A-CONDO-BILL-BBL A 10 DKR 1060 5580 2 PIWA2-1B-1A-CONDO-BILL-BBL-VER A 1 DKR 1061 5590 2 PIWA2-1B-1A-CONDO-BILL-BBL-SCC A 1 DKR 1062 5600 2 PIWA2-1B-1A-CONDO-LOW-BBL A 10 DKR 1063 5610 2 PIWA2-1B-1A-CONDO-LOW-BBL-VER A 1 DKR 1064 5620 2 PIWA2-1B-1A-CONDO-HIGH-BBL A 10 DKR 1065 5630 2 PIWA2-1B-1A-CONDO-HIGH-BBL-VER A 1 DKR 1066 5640 2 FILLER-1B-1A-500 A 15 DKR 1067 5650 2 PIWA1-1B-1A-COOP-NUM A 4 DKR 1068 5660 2 PIWA2-1B-1A-SANBORN A 8 DKR 1069 5670 R 2 PIWA2-1B-1A-SANBORN DRR 1070 5680 3 PIWA2-1B-1A-SANBORN-BORO A 1 DKR 1071 5690 3 PIWA2-1B-1A-SANBORN-VOL A 3 DKR 1072 5700 3 PIWA2-1B-1A-SANBORN-PAGE A 4 DKR 1073 5710 2 PIWA2-1B-1A-COMMERC-DIST A 5 DKR 1074 5720 2 PIWA2-1B-1A-DOF-MAP-BORO A 1 DKR 1075 5730 2 PIWA2-1B-1A-DOF-MAP-SECVOL A 4 DKR 1076 5740 2 PIWA2-1B-1A-DOF-MAP-PAGE A 4 DKR 1077 5750 2 FILLER-1B-1A-RESERVED-DCP A 3 DKR 1078 5760 2 PIWA2-1B-1A-LATITUDE A 9 DKR 1079 5770 2 PIWA2-1B-1A-LONGITUDE A 11 DKR 1080 5780 2 PIWA2-1B-1A-X-COORD A 7 DKR 1081 5790 2 PIWA2-1B-1A-Y-COORD A 7 DKR 1082 5800 2 PIWA2-1B-1A-BID A 6 DKR 1083 5810 2 PIWA2-1B-1A-TPAD-BIN-ST A 1 /* CURRENT STATUS */ DKR 1084 5820 2 PIWA2-1B-1A-TPAD-NEW-BIN A 7 /* NEW BIN */ DKR 1085 5830 2 PIWA2-1B-1A-TPAD-NEW-BIN-ST A 1 /* NEW BIN STATUS */ DKR 1086 5840 2 PIWA2-1B-1A-TPAD-CONFLICT A 1 /* CONFLICT FLAG */ DKR 1087 5850 2 PIWA2-1B-1A-DCP-ZONE-MAP A 3 /* V17.4 ADDITION DKR 5860 2 FILLER-1B-1A-650 A 6 DKR 1088 5870 2 FILLER-1B-1A-700 A 8 /* FOR GSS USE DKR 1089 5880 2 PIWA2-1B-1A-REASON-CODE A 1 DKR 1090 5890 2 PIWA2-1B-1A-REASON-CODE-FILL A 1 DKR 1091 5900 2 PIWA2-1B-1A-WARN-CODE A 2 DKR 1092 5910 2 PIWA2-1B-1A-RETURN-CODE A 2 DKR 1093 5920 2 FILLER-1B-1A-750 A 108 DKR 1094 5930 2 PIWA2-1B-1A-NUM-OF-ADDR A 4 DKR 1095 5940 2 PIWA2-1B-1A-LIST-OF-ADDR (1:21) DSRI1 1096 M 5950 3 PIWA2-1B-1A-LIST-LOW-HOUSENUM A 16 /* DISPLAY FORMAT DKR 1097 5960 3 PIWA2-1B-1A-LIST-HI-HOUSENUM A 16 /* DISPLAY FORMAT DKR 1098 5970 3 PIWA2-1B-1A-LIST-BORO A 1 DKR 1099 5980 3 PIWA2-1B-1A-LIST-5SC A 5 DKR 1100 5990 3 PIWA2-1B-1A-LIST-LGC A 2 DKR 1101 6000 3 PIWA2-1B-1A-LIST-BIN A 7 DKR 1102 6010 3 PIWA2-1B-1A-LIST-SIDE-OF-STR A 1 /* L OR R DKR 1103 6020 3 PIWA2-1B-1A-ADDR-TYPE A 1 /* P=NAP, B=NAB, MAL DKR 1104 6030 R 3 PIWA2-1B-1A-ADDR-TYPE /* REDEF. BEGIN : PIWA2-1B-1A-AD DRR 1105 6040 4 PIWA2-1B-1A-LIST-ADDR-TYPE A 1 /* BLANK=NORMAL DKR 1106 6050 3 PIWA2-1B-1A-TPAD-STATUS A 1 /* 0 - 9 DKR 1107 6060 R 3 PIWA2-1B-1A-TPAD-STATUS /* REDEF. BEGIN : PIWA2-1B-1A-TP DRR 1108 6070 4 PIWA2-1B-1A-LIST-TPAD-STATUS A 1 DKR 1109 6080 3 PIWA2-1B-1A-ST-NAME A 32 DKR 1110 6090 R 3 PIWA2-1B-1A-ST-NAME /* REDEF. BEGIN : PIWA2-1B-1A-ST DRR 1111 6100 4 PIWA2-1B-1A-LIST-ST-NAME A 32 DKR 1112 6110 3 FILLER-1B-1A-800 A 34 DKR 1113 6120 * ** END OF FUNCTION 1B ************* * ********** ************************** C ***** End of List *****","title":"GEOLP2AL COPY File"},{"location":"appendices/appendix14/#geolp23s-copy-file","text":"1 GEOLP23S * * THE FIELD P2NAT3S IS USED AS A PARAMETER TO CALL GEOSUPPORT 2 P2NAT3S A 21 R 2 P2NAT3S 3 PIWA2-3S-ACCESS-KEY A 21 R 3 PIWA2-3S-ACCESS-KEY 4 FILLER-GSS A 2 4 PIWA2-3S-PORS-STNAME-IND A 1 4 PIWA2-3S-BORO A 1 /* P=PRIMARY * * /* B=SECONDARY 4 PIWA2-3S-5SC A 5 4 PIWA2-3S-LGC A 2 /* BLANK IF P IN 4 FILLER A 10 /* POSITION 3 2 PIWA2-3S-NUM-OF-INTERSECTS A 3 2 PIWA2-3S-LIST-OF-INTERSECTS (1:350) 3 PIWA2-3S-MARBLE-RIKERS-FLAG A 1 3 PIWA2-3S-DISTANCE A 5 3 PIWA2-3S-GAP-FLAG A 1 3 FILLER-100 A 7 3 PIWA2-3S-NUM-OF-STR A 1 3 PIWA2-3S-B7SC A 8 (1:5)","title":"GEOLP23S COPY File"},{"location":"appendices/appendix14/#geol2ap-copy-file","text":"1 GEOL2AP 2 P2NATAP A 21 R 2 P2NATAP 3 PIWA2-AP-ACCESS-KEY A 21 2 PIWA2-AP-CONT-PARITY A 1 2 PIWA2-AP-LOW-HOUSENUM A 11 2 PIWA2-AP-BBL A 10 R 2 PIWA2-AP-BBL 3 PIWA2-AP-BBL-BORO A 1 3 PIWA2-AP-BBL-BLOCK A 5 3 PIWA2-AP-BBL-LOT A 4 2 FILLER-AP01 A 7 2 PIWA2-AP-NUM-OF-STRUCTURES A 4 2 FILLER-AP02 A 26 2 FILLER-AP-GSS1 A 1 2 PIWA2-AP-BIN A 7 2 PIWA2-AP-CONDO-FLAG A 1 2 FILLER-AP03 A 1 2 PIWA2-AP-RPAD-CONDO-ID-NUM A 4 2 FILLER-AP04 A 7 2 PIWA2-AP-CONDO-BILL-BBL A 10 2 FILLER-AP05 A 2 2 PIWA2-AP-CONDO-LOW-BBL A 10 2 FILLER-AP06 A 1 2 PIWA2-AP-CONDO-HIGH-BBL A 10 2 FILLER-AP07 A 16 2 PIWA2-AP-COOP-NUM A 4 2 FILLER-AP08 A 22 2 PIWA2-AP-RESERVED A 3 2 PIWA2-AP-LATITUDE A 9 2 PIWA2-AP-LONGITUDE A 11 2 PIWA2-AP-X-COORD A 7 2 PIWA2-AP-Y-COORD A 7 2 FILLER-AP09 A 16 2 PIWA2-AP-AP-ID A 9 2 FILLER-AP-GSS2 A 8 2 PIWA2-AP-NUM-OF-ADDR A 4 2 PIWA2-AP-ADDR-LIST (1:21) 3 PIWA2-AP-LIST-LOW-HOUSENUM A 16 3 PIWA2-AP-LIST-HI-HOUSENUM A 16 3 PIWA2-AP-LIST-BORO A 1 3 PIWA2-AP-LIST-5SC A 5 3 PIWA2-AP-LIST-LGC A 2 3 PIWA2-AP-LIST-BIN A 7 3 PIWA2-AP-LIST-SIDE-OF-STR A 1 3 PIWA2-AP-ADDR-TYPE A 1 R 3 PIWA2-AP-ADDR-TYPE 4 PIWA2-AP-LIST-ADDR-TYPE A 1 3 FILLER-AP10 A 4","title":"GEOL2AP COPY File"},{"location":"appendices/appendix14/#geol2apx-copy-file","text":"1 GEOL2APX 2 P2NATAPX A 21 R 2 P2NATAPX 3 PIWA2-APX-ACCESS-KEY A 21 2 PIWA2-APX-CONT-PARITY A 1 2 PIWA2-APX-LOW-HOUSENUM A 11 2 PIWA2-APX-BBL A 10 R 2 PIWA2-APX-BBL 3 PIWA2-APX-BBL-BORO A 1 3 PIWA2-APX-BBL-BLOCK A 5 3 PIWA2-APX-BBL-LOT A 4 2 FILLER-APX01 A 7 2 PIWA2-APX-NUM-OF-STRUCTURES A 4 2 FILLER-APX02 A 26 2 FILLER-APX-GSS1 A 1 2 PIWA2-APX-BIN A 7 2 PIWA2-APX-CONDO-FLAG A 1 2 FILLER-APX03 A 1 2 PIWA2-APX-RPAD-CONDO-ID-NUM A 4 2 FILLER-APX04 A 7 2 PIWA2-APX-CONDO-BILL-BBL A 10 2 FILLER-APX05 A 2 2 PIWA2-APX-CONDO-LOW-BBL A 10 2 FILLER-APX06 A 1 2 PIWA2-APX-CONDO-HIGH-BBL A 10 2 FILLER-APX07 A 16 2 PIWA2-APX-COOP-NUM A 4 2 FILLER-APX08 A 22 2 PIWA2-APX-RESERVED A 3 2 PIWA2-APX-LATITUDE A 9 2 PIWA2-APX-LONGITUDE A 11 2 PIWA2-APX-X-COORD A 7 2 PIWA2-APX-Y-COORD A 7 2 FILLER-APX09 A 16 2 PIWA2-APX-AP-ID A 9 2 FILLER-APX-GSS2 A 8 2 PIWA2-APX-REASON-CODE A 1 2 PIWA2-APX-REASON-CODE-QUAL A 1 2 PIWA2-APX-WARN-CODE A 2 2 PIWA2-APX-RETURN-CODE A 2 2 FILLER-APX10 A 108 2 PIWA2-APX-NUM-OF-ADDR A 4 2 PIWA2-APX-ADDR-LIST (1:21) 3 PIWA2-APX-LIST-LOW-HOUSENUM A 16 3 PIWA2-APX-LIST-HI-HOUSENUM A 16 3 PIWA2-APX-LIST-BORO A 1 3 PIWA2-APX-LIST-5SC A 5 3 PIWA2-APX-LIST-LGC A 2 3 PIWA2-APX-LIST-BIN A 7 3 PIWA2-APX-LIST-SIDE-OF-STR A 1 3 PIWA2-APX-ADDR-TYPE A 1 R 3 PIWA2-APX-ADDR-TYPE 4 PIWA2-APX-LIST-ADDR-TYPE A 1 3 FILLER-APX11 A 1 3 PIWA2-APX-ST-NAME A 32 R 3 PIWA2-APX-ST-NAME 4 PIWA2-APX-LIST-ST-NAME A 32 3 FILLER-APX12 A 34","title":"GEOL2APX COPY File"},{"location":"appendices/appendix15/","text":"APPENDIX 15: 2010 CENSUS GEOGRAPHY \u2013 FUNCTIONS 1, 1E, 2, 3, and 3C This appendix is based on the Geosupport System Technical Bulletin 11-01 for Geosupport Version 11.0. If you need a copy of the Bulletin, please be in touch with the GSS Manager of Geographic Research. Contact information is available in Appendix 6 : Geosupport Feedback Procedures. As of Geosupport Software Version 11.0 / Release 11A, Geosupport returns the new 2010 Census geography (e.g. census tract and census block). As of Software Version 11.4 / Release 12B, health areas are based on 2010 Census geography. Note that other tract based district information (e.g. community development eligibility) will still be based on the 2000 Census geography until further notice. User Programming Considerations for 2010 Census Geography New 2010 Census data replaces 2000 Census data Census 2000 data has been moved to a new location and renamed There is no need to do any modifications to get 2010 Census information from GBAT or programs that use offsets, since the 2010 Census information replaces the 2000 information. Modification is needed to get 2000 Census information from GBAT or programs that use offsets, since the 2000 information has been moved to a new location. See the tables of Census Data Offsets below. At some point, users must modify and recompile programs that access Census information, accessing the new 2010 or 2000 Census field names See the new field names in the appropriate copy files If users do not recompile and Census data is processed, they will get the 2010 data. Note: If you do not recompile and you are accessing Census information via the field names in the copy books, the next time you try to recompile you will get a compile error since the existing Census field names no longer exist. You will have to indicate at that point whether you want Census 2010 or Census 2000 by modifying the field names in the programs MSW Users: For Function 1/1E , the 2000 Census information has been moved to Long Work Area 2, as there was no room for it in the regular Work Area 2. Census 2010 information is in the regular Work Area 2. Every 10 years, in conjunction with the decennial census of the population, the U.S. Census Bureau defines a new set of census geography (census tract and census block boundary lines and identifiers) throughout the nation. The Geosupport System has been providing 1990 census tract and 2000 census tract, census block and census block suffix fields. This data will continue to be included in the output information returned from Functions 1, 1B, 1E, 2, 3 and 3C. DCP/GSS received the 2010 census geography from the Census Bureau and now includes this information since File Release 11A, Geosupport Software Version 11.0. The 1990 census information will continue to be returned in the same work area fields that have been used in previous releases. However, as of Release 11A, Version 11.0, the 2010 Census information for both COW and MSW outputs is now returned in the same positions that previously held the 2000 Census information, and the 2000 Census information has been moved to positions previously defined as filler. Also, the field names (in the Copy Books) of the 2000 Census information fields have been changed This was done so that users who want the most current Census information will not have to immediately recompile their programs and change their GBAT jobs to get the 2010 Census information. However, whenever users recompile their programs, they will have to update the field names for the 2010 Census information, and, if they want the 2000 Census information, they will have to update the field names for that as well. The name changes were done purposely in order to force users who recompile programs that use the copylibs and look at Census information to change their programs and make decisions whether they want to continue receiving Census 2000 data and/or update their programs to receive Census 2010 data CENSUS DATA OFFSETS \u2013 Table 1 (COW) and Table 2 (MSW) TABLE 1 - Offsets for the 2010 and 2000 Census data for COW Work Area 2 Functions (COW) Data Item WA2 Position Prior to Release 11A WA2 Position as of 11A COW Fns 1, 1E and 1B 2010 Census Tract Not Provided 224-229 2010 Census Block Not Provided 230-233 2010 Census Block Not Provided 230-233 2010 Census Filler Not Provided 234 2000 Census Tract 224-229 235-240 2000 Census Block Suffix 234 245 COW Fn 2 2010 Census Tract Not Provided 136-141 2000 Census Tract 136-141 176-181 COW Fn 3 2010 Left Census Tract Not Provided 260-265 2010 Left Census Block Not Provided 266-269 2010 Left Census Filler Not Provided 270-270 2010 Right Census Tract Not Provided 410-415 2010 Right Census Block Not Provided 416-419 2010 Right Census Filler Not Provided 420 2000 Left Census Tract 260-265 271-276 2000 Left Census Block 266-269 277-280 2000 Left Census Block Suffix 270-270 281-281 2000 Right Census Tract 410-415 421-426 2000 Right Census Block 416-419 427-430 2000 Right Census Block Suffix 420-420 431-431 COW Fn 3C 2010 Census Tract Not Provided 260-265 2010 Census Block Not Provided 266-269 2010 Census Filler Not Provided 270-270 2000 Census Tract 260-265 271-276 2000 Census Block 266-269 277-280 2000 Census Block Suffix 270 281 TABLE 2 - Offsets for the 2010 and 2000 Census data for MSW Work Area 2 Functions (MSW) Data Item WA2 Position Prior to Release 11A WA2 Position as of Release 11A MSW Fns 1 and 1E 2010 Census Tract Not Provided 91-96 2010 Census Block Not Provided 97-100 2010 Census Filler Not Provided 101-101 2000 Census Tract 91-96 222-227 Available only with Long Work Area 2 2000 Census Block 97-100 228-231 Available only with Long Work Area 2 2000 Census Block Suffix 101-101 232 -232 Available only with Long Work Area 2 MSW Fn 2 2010 Census Tract Not Provided 87-92 2000 Census Tract 87-92 168-173 MSW Fn 3 2010 Left Census Tract Not Provided 243-248 Available only with Long Work Area 2 2010 Left Census Block Not Provided 249-252 Available only with Long Work Area 2 2010 Left Census Filler Not Provided 253 - 253 Available only with Long Work Area 2 2010 Right Census Tract Not Provided 254-259 Available only with Long Work Area 2 2010 Right Census Block Not Provided 260-263 Available only with Long Work Area 2 2010 Right Census Filler Not Provided 264-264 Available only with Long Work Area 2 2000 Left Census Tract 243-248 Available only with Long Work Area 2 279-284 Available only with Long Work Area 2 2000 Left Census Block 249-252 Available only with Long Work Area 2 285-288 Available only with Long Work Area 2 2000 Left Census Block Suffix 253-253 Available only with Long Work Area 2 289-289 Available only with Long Work Area 2 2000 Right Census Tract 254-259 Available only with Long Work Area 2 290-295 Available only with Long Work Area 2 2000 Right Census Block 260-263 Available only with Long Work Area 2 296-299 Available only with Long Work Area 2 2000 Right Census Block Suffix 264-264 Available only with Long Work Area 2 300-300 Available only with Long Work Area2","title":"Appendix 15: 2010 Census Geography \u2013 Functions 1, 1E, 2, 3, and 3C"},{"location":"appendices/appendix16/","text":"APPENDIX 16: NEIGHBORHOOD TABULATION AREAS (NTAS) AND PUMAS Originally created as Neighborhood Projection Areas for use in population projections, these aggregations of census tracts have been updated using 2010 census tracts and renamed Neighborhood Tabulation Areas (NTAs). The origin of Neighborhood Projection Areas as subsets of 55 Public Use Microdata Areas (PUMAs) is explained below. The Neighborhood Tabulation Areas (NTAs) have been adopted by the Population Division of DCP as a method of presenting the U.S. Census Bureau\u2019s American Community Survey (ACS) release of census tract data for 5-year estimates. To mitigate the small sample size and accompanying large margins of error, ACS data are aggregated to NTA geography and made available in the ACS section of the DCP Population website. Because NTAs are subsets of PUMAs, they are important to anyone requiring ACS data for subareas of Community Districts. Regarding the 2010 census, these geographic areas offer a good compromise between the very detailed data for census tracts (2,168) and the broad strokes provided by community districts (59). Neighborhood Projection Areas were created to project populations at a small area level, from 2000 to 2030. First and foremost, these aggregations were driven by population size in 2000 \u2013 neighborhood projection areas had to have a minimum population of 15,000, because this reduces the error associated with the projected population. This criterion resulted in combinations of neighborhoods that probably would not occur if one were solely designating boundaries of historical neighborhoods. Moreover, the neighborhood names associated with the neighborhood projections areas are not intended to be definitive. Neighborhood projection areas were created using whole census tracts that were exact subdivisions of New York City\u2019s 55 Public Use Microdata Areas (PUMAs). (PUMAs were developed for use with the Census Bureau\u2019s Public Use Microdata Samples (PUMS) and are approximations of Community Districts.) Neighborhood projection areas were not permitted to cross PUMA boundaries. Users need to be cognizant of the reason why these neighborhood projection areas were created, and the demographic and geographic constraints inherent in how they were configured.","title":"Appendix 16: Neighborhood Tabulation Areas (NTAs) and PUMAs"},{"location":"appendices/appendix17/","text":"APPENDIX 17: TPAD - ADDITIONAL INFORMATION Geosupport Warnings, TPAD Conflict Flag, Reason Code Qualifier and Error Message The TPAD Option allows users to get up-to-date property-level information. The TPAD Option is available for Function 1A, BL, BN, and 1B calls (PAD calls). When users turn the TPAD Switch \u2018on\u2019 in their applications, Geosupport reads the Transitional PAD file (TPAD) for intra-cycle PAD data and if any is found, Geosupport returns the TPAD data to the calling application. See Chapter VI.11 for a more detailed description of the TPAD option and the information it returns. This appendix describes the special return code and error message handling with respect to TPAD. If your applications make function 1A, BL, BN or 1B calls with the TPAD Option \u2018on\u2019, then you must read this description. Geosupport is designed to return information about both a normal warning (e.g. Hyphen Deleted) and a TPAD Conflict situation (e.g. \u2026No Existing PAD BBL) with only one Function 1A, BL, BN or 1B call (with TPAD Switch \u2018on\u2019) to Geosupport. The value in the Geosupport Reason Code will be the value that a user would expect when a Geosupport function call has completed with a warning. The TPAD Conflict Flag will be in Work Area 2 (WA2) for all PAD calls with the TPAD Option \u2018on\u2019. The \u2018*\u2019 Reason Code (which indicates a TPAD Warning) will appear in only one exceptional case. In the situation where there was no regular Warning Message for the regular PAD call and there was TPAD data found that conflicts with the PAD data, then the GRC will contain \u201801\u2019 (indicating a warning) and the Reason Code will contain \u2018*\u2019 (indicating that there is only a TPAD Conflict Flag warning and no regular Geosupport warning). In addition, if TPAD data is found and there is a conflict with the PAD data, the value in the WA2 Conflict Flag field will also be placed into a new field called the Geosupport Reason Code Qualifier field which immediately follows the Geosupport Reason Code field in Work Area 1 (WA1). When this new field is populated with the TPAD Conflict Flag, the TPAD Conflict Message will be put in the Geosupport Error Message field instead of the Geosupport Warning Message that would normally appear. Note, therefore, that if there was a Geosupport Warning involving the regular PAD portion of this call, the Reason Code field will indicate the nature of the warning as with all other Geosupport calls (but the Error Message field for this warning will be overridden by the TPAD Conflict message if a conflict exists). Values of \u20180\u2019 or \u20181\u2019 in the TPAD Conflict Flag (in WA2) are considered \u2018normal results\u2019. \u20180\u2019 signifies TPAD data was found and does not conflict with PAD data; \u20181\u2019 signifies that no TPAD data was found. When there are \u2018normal results\u2019, the WA2 TPAD Conflict Flag will not be placed into the new Geosupport Reason Qualifier field in WA1. The following table shows the possible results for Function 1A, BL, BN an 1B calls with the TPAD Switch \u2018on\u2019. Regular Geosupport Warning for PAD Call Yes No TPAD Data Found TPAD Data Found Work Area 1 Fields Yes No Yes No Geosupport Return Code (GRC) 01 01 01 00 Reason Code Warning Reason Code Warning Reason Code \\* blank Reason Code Qualifier TPAD Conflict Flag\u2020 blank TPAD Conflict Flag\u2020 blank Error Message TPAD Conflict Flag\u2020 blank TPAD Conflict Flag\u2020 blank WA2 Conflict Flag TPAD Conflict Flag TPAD Conflict Flag TPAD Conflict Flag TPAD Conflict Flag \u2020 Note: The TPAD Conflict Flag appears in the Reason Code Qualifier only if its value is greater than \u20181\u2019. Similarly, the TPAD Conflict Message will appear in the Error Message field, only if the TPAD Conflict field is greater than \u20181\u2019. The TPAD Conflict Flag \u20181\u2019 (no TPAD data was found) and the TPAD Conflict Flag \u20180\u2019 (TPAD data found and it does not conflict with PAD data) will not appear in the Reason Code Qualifier field in WA1. The Error Message field will have a TPAD Conflict Message only when TPAD data was found and it conflicts with the PAD data in some way (and as a result, the Reason Code Qualifier will be non-blank). Note that if there is no Regular Geosupport Warning, and there is TPAD data which does not conflict with the PAD data (Conflict Flag \u20180\u2019), the GRC will be \u201800\u2019 the Reason Code, Reason Code Qualifier, and Error Message will all be blank. See examples on the following pages. Examples: PAD Data Found with Regular Warnings PAD Data (with regular Geosupport warning) and No TPAD Data Found Input: 12-34 Sample Street WA1 Fields Value GRC 01 Reason Code 3 [indicates input address number altered \u2013 hyphen deleted] Reason Code Qualifier blank Error Message ADDR NUMBER ALTERED: HYPHEN DELETED WA2 Conflict Flag 1 PAD Data (with regular Geosupport warning) and TPAD Data (with no conflicts) Input: 12-34 Sample Street WA1 Fields Value GRC 01 Reason Code 3 [indicates input address number altered \u2013 hyphen deleted] Reason Code Qualifier blank Error Message ADDR NUMBER ALTERED: HYPHEN DELETED WA2 Conflict Flag 0 PAD Data (with regular Geosupport warning) and TPAD Data (with conflicts) Input: 12-34 Sample Street WA1 Fields Value GRC 01 Reason Code 3 [indicates input address number altered \u2013 hyphen deleted] Reason Code Qualifier D [indicates address in TPAD but not PAD (PAD data from BL call)] Error Message ADDRESS FOUND IN TPAD, NOT FOUND IN PAD\u2026\u2026 WA2 Conflict Flag D Examples: PAD Data Found with No Regular Geosupport Warning PAD Data (with no regular Geosupport warning) and No TPAD Data Found Input: 1234 Sample Street WA1 Fields Value GRC 00 Reason Code Blank Reason Code Qualifier Blank Error Message Blank WA2 Conflict Flag 1 PAD Data (with no regular Geosupport warning) and TPAD Data (with no conflicts) Input: 1234 Sample Street WA1 Fields Value GRC 00 Reason Code Blank Reason Code Qualifier Blank Error Message Blank WA2 Conflict Flag 0 PAD Data (with no regular Geosupport warning) and TPAD Data (with conflicts) Input: 1234 Sample Street WA1 Fields Value GRC 01 Reason Code * [indicates TPAD Conflict only; no regular warning] Reason Code Qualifier D [indicates address in TPAD but not PAD (PAD data from BL call)] Error Message ADDRESS FOUND IN TPAD, NOT FOUND IN PAD\u2026\u2026.. WA2 Conflict Flag D The Reason Code Qualifier is used to define a specific TPAD warning. When there is a true conflict between TPAD data and PAD data, the Reason Code Qualifier contains the same information as the TPAD Conflict Flag. The following table indicates where in Work Area 1 the one-byte Reason Code Qualifier field(s) may be found. (1 byte) Position Field Name Function(s) COW MSW Reason Code Qualifier 1A, BL, BN 714 n/a Reason Code Qualifier 2 1B 575 n/a For Functions 1A, BL, and BN the Reason Code Qualifier is a one-byte field, in column 714 of COW Work Area 1. For Function 1B, the Reason Code Qualifier 2 is a one-byte field, in column 575 of COW Work Area 1. The following table contains the field name in the COPY libraries for the Reason Code Qualifiers. Reason Code Qualifier(s) Field Names in COPY Libraries Language COPY Library (COW Only) Function(s) (COW Only) Field Name BAL P1BAL 1A, BL, BN 1B reason_code_qual reason_code_qual_2 COBOL P1COB 1A, BL, BN 1B GEO-WA1-OUT-REASON-CODE-QUAL GEO-WA1-OUT-REASON-CODE-QUAL2 Natural GEOLP1 1A, BL, BN 1B PIWA1-OUT-REASON-CODE-QUAL PIWA1-OUT-REASON-CODE-QUAL-2 PL/1 P1PL1 1A, BL, BN 1B PIWA1_OUT_REASON_CODE_QUAL PIWA1_OUT_REASON_CODE_QUAL_2","title":"Appendix 17: TPAD - Additional Information"},{"location":"appendices/appendix18/","text":"APPENDIX 18: RESERVED FOR FUTURE USE","title":"Appendix 18: Reserved for Future Use"},{"location":"appendices/appendix19/","text":"APPENDIX 19: WORK AREA LAYOUTS (COWs) Character-Only Work Areas (as of Geosupport System Software Version 9.7.0) This appendix contains layouts of all of the work areas used with the Geosupport System\u2019s API. These layouts are current as of the Geosupport software version indicated above. The layouts are in the Character-Only Work Area format 4 Some Geosupport functions can only be called using one work area, Work Area 1 (WA1). Other functions can be called using two work areas, WA1 and Work Area 2 (WA2). WA1 contains both input fields (fields used to pass data from the application to Geosupport) and output fields (fields used to pass data from Geosupport to the application). WA1 is organized so that all the input fields occur first, followed by all the output fields. WA2 contains output fields only. All functions use the same WA1 layout, but the set of WA1 fields that are used depends on the function. In the layout of WA1 in this appendix, the column labeled \u2018Functions\u2019 indicates which functions use each field. The functions that can be called using two work areas use various WA2 layouts of various lengths. In some cases, several functions share a single WA2 layout. For functions 1A and BL, the user has a choice of two WA2 layouts, a \u2018regular\u2019 WA2 and a \u2018long\u2019 WA2. The following is a list of all of the Geosupport work areas, indicating the length of each in bytes. Functions that are listed together share a single Work Area 2 layout. Work Area Length WA1, all functions 1200 WA2, Function 1 300 Regular WA2, Functions 1A, BL, BN 1,363 Long WA2, Functions 1A and BL 17,750 WA2, Function 1E 300 WA2, Function 2 200 WA2, Function 3 450 WA2, Function 3C 300 WA2, Function 3S 19,274 Appendix 3 consists of a data item dictionary describing the fields that occur in the work areas. Work Area 1 (COW) - All Functions Field Size Position Functions 5 INPUT FIELDS: Geosupport Function Code 2 1 2 All House Number - Display Format (HND) 16 3 18 1, 1A, 1E House Number - Sort Format (HNS) 11 19 29 1, 1A, 1E, D * Low House Number - Display Format (HND) 16 30 45 Internal Use Low House Number - Sort Format (HNS) 2 1 2 All Geosupport Function Code 11 46 56 D * , Internal Use Borough Code-1 1 57 57 All but BL & BN 10SC 6 -1 10 58 67 All but BL & BN Street Name-1 32 68 99 All but BL,BN & D * Borough Code 7 -2 1 100 100 All but 1 * & B * 10SC-2 10 101 110 All but 1 * & B * Street Name-2 32 111 142 All but 1 * & B * Borough Code-3 1 143 143 D * , 3 * 10SC-3 10 144 153 D * , 3 * Street Name-3 32 154 185 D * , 3 * BOROUGH BLOCK LOT (BBL) 11 186 196 BL Borough Code 1 186 186 BL Tax Block 5 187 191 BL Tax Lot 4 192 195 BL Filler for Tax Lot Version Number 1 196 196 Not Implemented Building Identification Number (BIN) 7 197 203 BN Compass Direction 1 204 204 2, 3C, 3S Compass Direction for 2 nd Intersection 1 205 205 3S Filler 7 206 212 Work Area Format Indicator 8 1 213 213 All Filler 101 214 314 Long Work Area 2 Flag 9 1 315 315 1A, BL House Number Justification Flag 10 1 316 316 Not Implemented House Number Normalization Length 11 2 317 318 Not Implemented House Number Normalization Override Flag 1 319 319 Internal Use Street Name Normalization Length Limit 2 320 321 All Street Name Normalization Format Flag 12 1 322 322 All Cross Street Names Flag 13 1 323 323 1, 1E, 2, 3, 3C Filler 37 324 360 OUTPUT Fields: First Borough Name 9 361 369 All but D * First Borough Name 9 361 369 All but D * House Number - Sort Format 11 386 396 1, 1A, 1E B10SC - First Borough and Street Code 11 397 407 1 * , 2, 3 * First Street Name Normalized 32 408 439 All but B * B10SC - Second Borough and Street Code 11 440 450 2,3 * Second Street Name Normalized 32 451 482 2,3 * ,D * B10SC - Third Borough and Street Code 11 483 583 3 * Third Street Name Normalized 32 494 525 3 * ,D * BOROUGH BLOCK LOT (BBL) 10 526 535 BL Borough Code 1 526 526 BL Tax Block 5 527 535 BL Tax Lot 4 532 535 BL Filler for Tax Lot Version Number 1 536 536 Not Implemented Low House Number - Display Format 16 537 552 Internal Use Low House Number - Sort Format 11 553 563 Internal Use Building Identification Number 7 564 570 1, 1E, BN Attribute Bytes - Internal Use Only 3 571 573 Internal Use Filler 132 574 705 NIN 14 6 706 711 Not Implemented Street Attribute Indicator 1 712 712 Internal Use Reason Code 1 713 713 All Reason Code Qualifier 1 714 714 Not Implemented Filler 2 715 716 Geosupport Return Code 2 717 718 All Message 80 719 798 All Number of Street Codes and Names in List (up to 10) 2 799 800 1 * ,2,3 * 10 B7SC's 80 801 880 1 * ,2,3 * List of Street Names(10 Street Name Fields, 32 Bytes Each) 320 881 660 1 * ,2,3 * 1 * = 1, 1A, 1E, 1N 3 * = 3, 3C, 3S B * = BL, BN D * = D, DG, DN Work Area 2 (COW) - Functions 1 and 1E Blockface Defined by Address Range Along a Street Field Size Position Comments Internal Use 21 1 21 Continuous Parity Indicator/Duplicate Address Indicator 1 22 22 Low House Number of Block face-Sort Format 11 23 33 High House Number of Block face-Sort Format 11 34 44 DCP Preferred LGC 15 2 45 46 Number of Cross Streets at Low Address End 1 47 47 List of Cross Streets at Low Address End (Up to 5 B5SCs) 30 48 77 B5SC - Blank-Filled Number of Cross Streets at High Address End 1 78 78 List of Cross Streets at High Address End (Up to 5 B5SCs) 30 79 108 B5SC - Blank-Filled LION KEY 10 109 118 Borough Code 1 109 109 Face Code 4 110 113 Sequence Number 5 114 118 Special Address Generated Record Flag 1 119 119 Side of Street Indicator 1 120 120 Segment Length in Feet 5 121 125 Spatial Coordinates of Address: X Coordinate 7 126 132 Y Coordinate 7 133 139 Reserved for Possible Z Coordinate 7 140 146 Interim Assistance Eligibility Indicator Also known as Community Development Eligibility Indicator 1 147 147 Marble Hill/Rikers Island Alternative Borough Flag 1 148 148 DOT Street Light Contractor Area 1 149 149 Community District: 3 150 152 Community District Borough Code 1 150 150 Community District Number 2 151 152 Zip Code 14 158 171 Function 1E Items 14 158 171 Use ONLY for Function 1E Election District 3 158 160 Invalid for Fn 1 Assembly District 2 161 162 Invalid for Fn 1 Split Election District Flag 1 163 163 Invalid for Fn 1 Congressional District 2 164 165 Invalid for Fn 1 State Senatorial District 2 166 167 Invalid for Fn 1 Civil Court District 2 168 169 Invalid for Fn 1 City Council District 2 170 171 Invalid for Fn 1 Health Center District 2 172 173 Health Area 4 174 177 Sanitation District 3 178 180 Sanitation Collection Scheduling Section and Subsection 2 181 182 Sanitation Regular Collection Schedule 5 183 187 Sanitation Recycling Collection Schedule 3 188 190 Police Patrol Borough Command 1 191 191 Police Precinct 3 192 194 Fire Division 2 195 196 Fire Battalion 2 197 198 Fire Company Type 1 199 199 Fire Company Number 3 200 202 Split Community School District Flag 1 203 203 Community School District 2 204 205 Dynamic Block 3 206 208 Instructional Region 2 209 210 Feature Type Code 1 211 211 Filler 6 212 217 1990 Census Tract 6 218 223 2000 Census Tract 6 224 229 2000 Census Block 4 230 233 Filler 51 234 284 Underlying B7SC 8 285 292 Segment Identifier 7 293 299 Curve Flag 1 300 300 Work Area 2 (COW) - Functions 1A, BL and BN Property Defined by Address, BBL, or BIN Field Size Position Comment Internal Use 21 1 21 Continuous Parity Indicator /Duplicate Address Indicator 1 22 22 Low House Number of Defining Address Range 11 23 33 Sort Format Borough-Tax Block-Tax Lot (BBL): 10 34 44 Billing BBL if Condo Borough Code 10 34 44 Tax Block 5 35 39 Tax Lot 4 40 43 Filler for Tax Lot Version Number 1 44 44 Not Implemented RPAD Self-Check Code (SCC) for BBL 1 45 45 Filler 1 46 46 RPAD Building Classification Code 2 47 48 Corner Code 2 49 50 Number of Existing Structures on Lot 4 51 54 Number of Street Frontages of Lot 2 55 56 Interior Lot Flag 1 57 57 Vacant Lot Flag 1 58 58 Irregularly-Shaped Lot Flag 1 59 59 Marble Hill/Rikers Island Alternate Borough Flag 1 60 60 List of Geographic Identifiers Overflow Flag 1 61 61 When = 'E', there are more than 21 addresses for Fns 1A and BL. STROLLING KEY: 19 62 80 Not Implemented Borough 1 62 62 5-Digit Street Code of \u2018ON\u2019 Street 5 63 67 Side of Street Indicator 1 68 68 High House Number 11 69 79 Sort Format Filler 1 80 80 Reserved for Internal Use 1 81 81 Building Identification Number (BIN) of Input Address or NAP 1 82 88 Condominium Flag 1 89 89 If condo, Flag = C Filler 1 90 90 DOF Condominium Identification Number 4 91 94 Condominium Unit ID Number 7 95 101 Not Implemented Condominium Billing BBL 10 102 111 Tax Lot Version Number for Billing BBL 1 112 112 Not Implemented Self-Check Code (SCC) of Billing BBL 1 113 113 Low BBL of this Building\u2019s Condominium Units 10 114 123 Tax Lot Version Number of Low BBL 1 124 124 Not Implemented High BBL of this Building\u2019s Condominium Units 10 125 134 Not Implemented Tax Log Version Number of High BBL 1 135 135 Filler 15 136 150 Cooperative ID Number 4 151 154 SBVP (Sanborn Map Identifier): 8 155 162 Sanborn Borough Code 1 155 155 Volume Number 2 156 157 Volume Number Suffix 1 158 158 Page Number 3 159 161 Page Number Suffix 1 162 162 DCP Commercial Study Area 5 163 167 Tax Map Number Section & Volume 5 168 172 Reserved for Tax Map Page Number 4 173 176 Not Implemented Multiple BBL Flag 1 177 177 These fields will be used with Multiple Entity NAPs Next BBL 11 178 188 Previous BBL 11 189 199 Spatial Coordinates of Internal Label Point: X Coordinate 7 200 206 Y Coordinate 7 207 213 Filler 25 214 238 Internal Use 8 239 246 Number of Entries in List of Geographic Identifiers 4 247 250 List of Geographic Identifiers: 1,113 251 1,363 Variable length list of 53-byte entries as follows: Low House Number 16 Display format(HND) High House Number 16 Display format(HND) Borough Code 1 5-Digit Street Code 5 DCP-Preferred Local Group Code (LGC) 2 Building Identification Number 7 Side of Street Indicator 1 Geographic Identifier 1 L - Left, R - Right N - NAP G - Generic NAP X - Part of Generic NAP B - NAUB F - Frontage W - Blank Wall Q - PseudoAddress V - Vanity Address R - Real Street O - Out-of-Sequence Address Blank - Normal Filler Long Work Area 2 (COW) - Functions 1A and BL Property Defined by Address or BBL Field Size Position Comment Same as Regular Work Area 2 - Functions 1A/BL 246 1 246 Number of Buildings on Tax Lot 4 247 250 List of Buildings on Tax Lot 17,500 251 17,750 Variable length list of up to 2,500 entries, each entry is a 7-byte BIN 7 Work Area 2 (COW) - Function 2 Intersection Defined by Two Intersecting Streets Field Size Position Comment Internal Use 21 1 21 Intersection Replication Counter 1 22 22 DCP-Preferred LGC for Street 1 2 23 24 DCP-Preferred LGC for Street 2 2 25 26 Number of Intersecting Streets 1 27 27 List of Intersecting Streets (Up to five B5SCs, 6 bytes each) 30 28 57 Compass Direction for Intersection Key or Counter for Multiple Intersections 1 58 58 FillerL 5 59 63 LION Node Number 7 64 70 Spatial Coordinates: 21 X Coordinate 7 71 77 Y Coordinate 7 78 84 Filler 7 85 91 SBVP1 (Sanborn Map Identifier): 8 Borough Code 1 92 92 Volume Number 2 93 94 Volume Number Suffix 1 95 95 Page Number 3 96 98 Page Number Suffix 1 99 99 SBVP2 (Sanborn Map Identifier): 8 Borough Code 1 100 100 Volume Number 2 101 102 Volume Number Suffix 1 103 103 Page Number 3 104 106 Page Number Suffix 1 107 107 Marble Hill/Rikers Island Alternative Borough Flag 1 108 108 DOT Street Light Contractor Area 1 109 109 Community District: 3 Community District Borough Code 1 110 110 Community District Number 2 111 112 Zip Code 5 113 117 Health Area 4 118 121 Police Patrol Borough Command 1 122 122 Fire Division 2 126 127 Fire Battalion 2 128 129 Fire Company Type 1 130 130 Fire Company Number 3 131 133 Community School District 2 134 135 2000 Census Tract 6 136 141 1990 Census Tract 6 142 147 List of Pairs of Level Codes 10 148 157 Not Implemented Instructional Region 2 158 159 Filler 41 160 200 Work Area 2 (COW) - Function 3 Street Segment Defined by 'ON' Street and Two Cross Streets Field Size Position Comment Internal Use 21 1 21 Duplicate Key Flag or Continuous Parity 1 22 22 Locational Status of Segment 1 23 23 County Boundary Indicator 1 24 24 DCP-Preferred LGC for Street 1 2 25 26 DCP-Preferred LGC for Street 2 2 27 28 DCP-Preferred LGC for Street 3 29 30 Number of Cross Streets at Low Address End 1 31 31 List of Cross Streets at Low Address End (Up to five B5SCs, 6 bytes each) 30 32 61 Blank Filled Number of Cross Streets at High Address End 1 62 62 List of Cross Streets at High Address End (Up to five B5SCs, 6 bytes each) 30 63 92 Blank Filled Cross Street Reversal Flag 1 93 93 LION KEY 10 94 103 LION Borough Code 1 94 94 LION Face Code 4 95 98 LION Sequence Number 5 99 103 Generated Record Flag 1 104 104 Length of Segment in Feet 5 105 109 Segment Azimuth 3 110 112 Segment Orientation 1 113 113 Marble Hill/Rikers Island Alternative Borough Flag 1 114 114 Filler 19 115 133 Segment Identifier 7 134 140 DOT Street Light Contractor Area 1 141 141 Curve Flag 1 142 142 Dog Leg Flag 1 143 143 Feature Type Code 1 144 144 Filler 6 145 150 LEFT SIDE: Community District: 3 Community District Borough Code 1 151 151 Community District Number 2 152 153 Low House Number 16 154 169 Display Format High House Number 16 170 185 Display Format Reserved for Geosupport Use 32 186 217 Interim Assistance Eligibility Indicator 1 218 218 Zip Code 5 219 223 Health Area 4 224 227 Police Patrol Borough Command 1 228 228 Police Precinct 3 229 231 Fire Division 2 232 233 Fire Battalion 2 234 235 Fire Company Type 1 236 236 Fire Company Number 3 237 239 Community School District 2 240 241 Dynamic Block 3 242 244 Instructional Region 2 245 246 Filler 7 247 253 1990 Census Tract 6 252 259 2000 Census Tract 6 260 265 2000 Census Block 4 266 269 Filler 4 374 377 RIGHT SIDE: Community District: 3 Community District Borough Code 1 301 301 Community District Number 2 302 303 Low House Number 16 304 319 Display Format High House Number 16 320 335 Display Format Reserved for Geosupport Use 32 336 367 Interim Assistance Eligibility Indicator 1 368 368 Zip Code 5 369 373 Health Area 4 374 377 Police Patrol Borough Command 1 378 378 Police Precinct 1 379 380 Fire Division 2 382 383 Fire Battalion 2 384 385 Fire Company Type 1 386 386 Fire Company Number 3 387 389 Community School District 2 390 391 Dynamic Block 3 392 394 Instructional Region 2 395 396 Filler 7 397 403 1990 Census Tract 6 404 409 2000 Census Tract 6 410 415 2000 Census Block 4 416 419 Filler 31 420 450 Work Area 2 (COW) - Function 3C Blockface Defined by 'ON' Street, Two Cross Streets and Compass Direction Field Size Position Comment Internal Use 21 1 21 Duplicate Key Flag or Continuous Parity 1 22 22 Locational Status of Segment 1 23 23 County Boundary Indicator 1 24 24 DCP-Preferred LGC for Street 1 2 25 26 DCP-Preferred LGC for Street 2 2 27 28 DCP-Preferred LGC for Street 3 2 29 30 Number of Cross Streets at Low Address End 1 31 31 List of Cross Streets at Low Address End (Up to five B5SCs, 6 bytes each) 30 32 60 Number of Cross Streets at High Address End 1 62 62 List of Cross Streets at High Address End (Up to five B5SCs, 6 bytes each) 30 63 92 Cross Street Reversal Flag 1 93 93 LION KEY 10 94 103 LION Borough Code 1 94 94 LION Face Code 4 95 98 LION Sequence Number 5 99 103 Generated Record Flag 1 104 104 Length of Segment in Feet 5 105 109 Segment Azimuth 3 110 112 Segment Orientation 1 113 113 Marble Hill/Rikers Island Alternative Borough Flag 1 114 114 Filler 19 155 133 Segment Identifier 7 134 140 DOT Street Light Contractor Area 1 141 141 Side of Street Indicator 1 142 142 Curve Flag 1 143 143 Feature Type Code 1 144 144 Filler 6 145 150 Community District: 3 Community District Borough Code 1 151 151 Community District Number 2 152 153 Low House Number of Block Face 16 154 169 Display Format High House Number of Block Face 16 170 185 Display Format Alternate Low House Number 16 186 201 Supplied for Continuous Alternate High House Number 16 202 217 Parity - Display Format Interim Assistance Eligibility Indicator 1 218 218 Zip Code 5 219 223 Health Area 4 224 227 Police Patrol Borough Command 1 228 228 Police Precinct 3 229 231 Fire Division 2 232 233 Fire Battalion 2 234 235 Fire Company Type 1 236 236 Fire Company Number 3 237 239 Community School District 2 240 241 Dynamic Block 3 242 244 Instructional Region 2 245 246 Filler 7 247 253 1990 Census Tract 6 254 259 2000 Census Tract 6 260 265 2000 Census Block 4 266 269 Filler 31 270 300 Work Area 2 (COW) - Function 3S Street Stretch Defined by 'ON' Street and Optionally Two Cross Streets Field Size Position Comment Internal Use 2 1 2 Primary/Secondary Street Name Indicator 1 3 3 P=Primary S = Secondary 16 Borough Code 1 4 4 5-Digit Street Code of 'on' Street 5 5 9 LGC 2 10 11 Blank if P in position 3 Filler 10 12 21 Always Blank NUMBER OF INTERSECTIONS 3 22 24 LIST OF UP TO 350 Intersections Each List Entry is 55 bytes in length, structured as follows: 19,250 25 19,274 Marble Hill/Rikers Island Flag 1 Distance from previous intersection in list 5 Gap Flag 1 Node Number 7 Number of streets at this intersection 1 B7SC of a street at this intersection (up to 5) 40 DCP Preferred LGC /*******************************************/* typedef struct { char boro; /* Borough Code char SC10[10]; /* } /*******************************************/* _____________________________ 4 Geosupport Desktop Edition supports the Character-Only Work Area format. The mainframe version of Geosupport supports both the Character-Only format (COW) and the Mainframe Specific format (MFS). 5 An asterisk in the second position of a function code is used as a shorthand notation to represent all function codes having the indicated value in the first position, as follows: 6 The user may supply either a 5-Digit, 7-Digit or 10-Digit Street code in this field. The contents are to be left-justified and blank-filled. 7 The second and third borough codes are only required if they differ from the first. 8 When the Work Area Format Indicator (a.k.a. the Platform Indicator) is set to C, Character-Only formats of the work areas (i.e., the formats documented herein) are used. A blank in this indicator means that the mainframe compatible work areas, known as MFS, are used. 9 The Long Work Area 2 Flag is set to L to request the Long Work Area 2. At present it may only be set to L for Functions 1A and BL and means that a list of BINS will be returned in Work Area 2 to the user in place of the list of addresses. 10 If the house number is to be right justified, the House Number Justification Flag is set to R and if the house number is to be left justified, the House Number Justification Flag is set to L or left blank. 11 The House Number Normalization Length field is used to achieve compatibility between the MainFrame Specific (MFS) work areas and the COWs. In the COWs, the House Number is permitted to be 16 characters, but, in the MFS, it is limited to 12 characters. It is not anticipated that users will make use of this field. 12 If the Street Name Normalization Format Flag is set to S or blank, then the street name is returned in sort format. If it is set to C, then the street name is returned in compact format. 13 The Cross Street Names Flag (a.k.a Expanded Format Flag), if set to E, will return the street names in the List of Street Names in the output section of Work Area 1. BBL and BIN are also returned where possible. 14 NAP Identification Number 15 For Function 1E, the Board of Elections preferred LGC is provided. 16 The functionality which creates the street stretches based upon the different LGCs has not been implemented.","title":"Appendix 19: Work Area Layouts (COWs)"},{"location":"appendices/appendix19/#character-only-work-areas","text":"(as of Geosupport System Software Version 9.7.0) This appendix contains layouts of all of the work areas used with the Geosupport System\u2019s API. These layouts are current as of the Geosupport software version indicated above. The layouts are in the Character-Only Work Area format 4 Some Geosupport functions can only be called using one work area, Work Area 1 (WA1). Other functions can be called using two work areas, WA1 and Work Area 2 (WA2). WA1 contains both input fields (fields used to pass data from the application to Geosupport) and output fields (fields used to pass data from Geosupport to the application). WA1 is organized so that all the input fields occur first, followed by all the output fields. WA2 contains output fields only. All functions use the same WA1 layout, but the set of WA1 fields that are used depends on the function. In the layout of WA1 in this appendix, the column labeled \u2018Functions\u2019 indicates which functions use each field. The functions that can be called using two work areas use various WA2 layouts of various lengths. In some cases, several functions share a single WA2 layout. For functions 1A and BL, the user has a choice of two WA2 layouts, a \u2018regular\u2019 WA2 and a \u2018long\u2019 WA2. The following is a list of all of the Geosupport work areas, indicating the length of each in bytes. Functions that are listed together share a single Work Area 2 layout. Work Area Length WA1, all functions 1200 WA2, Function 1 300 Regular WA2, Functions 1A, BL, BN 1,363 Long WA2, Functions 1A and BL 17,750 WA2, Function 1E 300 WA2, Function 2 200 WA2, Function 3 450 WA2, Function 3C 300 WA2, Function 3S 19,274 Appendix 3 consists of a data item dictionary describing the fields that occur in the work areas.","title":"Character-Only Work Areas"},{"location":"appendices/appendix19/#work-area-1-cow-all-functions","text":"Field Size Position Functions 5 INPUT FIELDS: Geosupport Function Code 2 1 2 All House Number - Display Format (HND) 16 3 18 1, 1A, 1E House Number - Sort Format (HNS) 11 19 29 1, 1A, 1E, D * Low House Number - Display Format (HND) 16 30 45 Internal Use Low House Number - Sort Format (HNS) 2 1 2 All Geosupport Function Code 11 46 56 D * , Internal Use Borough Code-1 1 57 57 All but BL & BN 10SC 6 -1 10 58 67 All but BL & BN Street Name-1 32 68 99 All but BL,BN & D * Borough Code 7 -2 1 100 100 All but 1 * & B * 10SC-2 10 101 110 All but 1 * & B * Street Name-2 32 111 142 All but 1 * & B * Borough Code-3 1 143 143 D * , 3 * 10SC-3 10 144 153 D * , 3 * Street Name-3 32 154 185 D * , 3 * BOROUGH BLOCK LOT (BBL) 11 186 196 BL Borough Code 1 186 186 BL Tax Block 5 187 191 BL Tax Lot 4 192 195 BL Filler for Tax Lot Version Number 1 196 196 Not Implemented Building Identification Number (BIN) 7 197 203 BN Compass Direction 1 204 204 2, 3C, 3S Compass Direction for 2 nd Intersection 1 205 205 3S Filler 7 206 212 Work Area Format Indicator 8 1 213 213 All Filler 101 214 314 Long Work Area 2 Flag 9 1 315 315 1A, BL House Number Justification Flag 10 1 316 316 Not Implemented House Number Normalization Length 11 2 317 318 Not Implemented House Number Normalization Override Flag 1 319 319 Internal Use Street Name Normalization Length Limit 2 320 321 All Street Name Normalization Format Flag 12 1 322 322 All Cross Street Names Flag 13 1 323 323 1, 1E, 2, 3, 3C Filler 37 324 360 OUTPUT Fields: First Borough Name 9 361 369 All but D * First Borough Name 9 361 369 All but D * House Number - Sort Format 11 386 396 1, 1A, 1E B10SC - First Borough and Street Code 11 397 407 1 * , 2, 3 * First Street Name Normalized 32 408 439 All but B * B10SC - Second Borough and Street Code 11 440 450 2,3 * Second Street Name Normalized 32 451 482 2,3 * ,D * B10SC - Third Borough and Street Code 11 483 583 3 * Third Street Name Normalized 32 494 525 3 * ,D * BOROUGH BLOCK LOT (BBL) 10 526 535 BL Borough Code 1 526 526 BL Tax Block 5 527 535 BL Tax Lot 4 532 535 BL Filler for Tax Lot Version Number 1 536 536 Not Implemented Low House Number - Display Format 16 537 552 Internal Use Low House Number - Sort Format 11 553 563 Internal Use Building Identification Number 7 564 570 1, 1E, BN Attribute Bytes - Internal Use Only 3 571 573 Internal Use Filler 132 574 705 NIN 14 6 706 711 Not Implemented Street Attribute Indicator 1 712 712 Internal Use Reason Code 1 713 713 All Reason Code Qualifier 1 714 714 Not Implemented Filler 2 715 716 Geosupport Return Code 2 717 718 All Message 80 719 798 All Number of Street Codes and Names in List (up to 10) 2 799 800 1 * ,2,3 * 10 B7SC's 80 801 880 1 * ,2,3 * List of Street Names(10 Street Name Fields, 32 Bytes Each) 320 881 660 1 * ,2,3 * 1 * = 1, 1A, 1E, 1N 3 * = 3, 3C, 3S B * = BL, BN D * = D, DG, DN","title":"Work Area 1 (COW) - All Functions "},{"location":"appendices/appendix19/#work-area-2-cow-functions-1-and-1e","text":"","title":"Work Area 2 (COW) - Functions 1 and 1E "},{"location":"appendices/appendix19/#work-area-2-cow-functions-1a-bl-and-bn","text":"","title":"Work Area 2 (COW) - Functions 1A, BL and BN "},{"location":"appendices/appendix19/#long-work-area-2-cow-functions-1a-and-bl","text":"","title":"Long Work Area 2 (COW) - Functions 1A and BL"},{"location":"appendices/appendix19/#work-area-2-cow-function-2","text":"","title":"Work Area 2 (COW) - Function 2 "},{"location":"appendices/appendix19/#work-area-2-cow-function-3","text":"","title":"Work Area 2 (COW) - Function 3"},{"location":"appendices/appendix19/#work-area-2-cow-function-3c","text":"","title":"Work Area 2 (COW) - Function 3C "},{"location":"appendices/appendix19/#work-area-2-cow-function-3s","text":"","title":"Work Area 2 (COW) - Function 3S "},{"location":"appendices/appendix20/","text":"APPENDIX 20: GEOSUPPORT HEADER AND TYPEDEF FILES This appendix contains listings of a Geosupport Header file for C/C++ and a Geosupport Typedef file for Visual Basic. It is strongly recommended that you use the supplied files, because in the future they will be modified to reflect any changes to the various work areas. The distributed filenames are: C/C++ Header file pac.h Visual Basic Typedef file vbwadef.bas You may use different names in your environment. C/C++ HEADER File #ifndef GEOSUPPORT char test; # define GEOSUPPORT ifdef __ cplusplus extern \"C\" { #endif /*********************************************************************/ /* * / /* GeoSupport System C-Language Header F * / /* for Platform-Independent Work Area * / /* * / /* Last Updated: 15 December 2003 * / /* * / /*********************************************************************/ /*********************************************************************/ /* * / /* Group Items Used in Platform-Independent Work Area 1 * / /* * / /*********************************************************************/ typedef struct { char boro; /* Borough Code * / char SC10[10]; /* 10 Digit Street Code * / char Street_name[32]; /* Street Name * / } STREET; typedef union { char bbl[10]; /* Borough-Block-Lot * / struct { char boro; /* Borough * / char block[5]; /* Tax Block * / char lot[4]; /* Tax Lot * / } cas; }BBL; typedef struct { char func_code[2]; /* Function Code * / char hse_nbr_disp[16]; /* House nbr in Disp form * / char hse_nbr_hns[11]; /* House nbr in Sort form * / char lohse_nbr_disp[16]; /* Lo House nbr in Disp form*/ char ohse_nbr_hns[11]; /* Lo House nbr in Sort form*/ STREET sti[3]; /* Street Information * / BBL bbli; /* Borough-Block-Lot * / char filler01; /* Filler-Tax Lot Version #* / char bld_id[7]; /* Building Id Number (BIN) * / char comp_direction; /* Compass Direction * / char comp_direction2; /* Compass Direction-Fn 3S * / char filler02[7]; /* Future Use * / char platform_ind; /* Must be equal to 'C' * / char filler03[101]; /* Future Use * / /* Flags that influence processing * / char long_WA_flag; /* Long Work Area 2 Flag * / char hse_nbr_justify; /* Hse Nbr Justification Flg* / char hnl[2]; /* Hse Nbr Normalization len* / char hse_nbr_over_flag; /* Reserved for GSS Use * / char snl[2]; /* Street Name Norm Length * / char st_name_norm; /* Street Name Normalization* / /* Format Flag * / char expanded_format; /* Expanded Format Flag * / char filler04[37]; /* Future Use * / } INWA1; typedef struct{ char boro_name[9]; /* Boro Name of First Street* / char hse_nbr_disp[16]; /* House nbr in Normalized * / /* Display form * / char hse_nbr_hns[11]; /* House number in Sort Form* / STREET sto[3]; /* Street Information * / BBL bblo; /* Boro(len=1), Block(len=5 * / /* and Lot (len=4)-Normalizd* / char filler05; /* Filler-Tax Lot Version # * / char lo_hse_nbr_disp[16];/* low Hse nbr - display * / char lo_hse_nbr_hns[11]; /* low Hse nbr - sort form * / char bin[7]; /* Building Id Number * / char attrbytes[3]; /* NAP Identification Number* / char filler07[132]; /* Future Use * / char nap_id_nbr[6]; /* NAP Id Nbr - Not Impl. * / char int_use1; /* Internal Use Only * / char reason_code; /* Reason Code * / char filler08; /* Future Use * / char warn_code[2]; /* Warning Ret. Code-NotImpl* / char ret_code[2]; /* GeoSupport Return Code * / char msg[80]; /* GeoSupport Message * / char nbr_names[2]; /* Nbr of Sreet Names * / char B_7SC[10][8]; /* 10 Boro+7-digit st codes * / char st_names[10][32]; /* Up to 10 Street Names * / }OUTWA1; /*********************************************************************/ /* Platform-Independent Work Area 1 * / /* * / /* * / /*********************************************************************/ typedef struct { INWA1 input; INWA1 output; }C_WA1; /*********************************************************************/ /* Group Items Used in Platform-Independent Work Area 2's * / /* * / /* * / /*********************************************************************/ typedef struct { /* LION KEY * / char lion_boro; /* LION Borough Code * / /* Differs from GeoSupport * / /* Borough Code * / char face[4]; /* Face Code * / char seq[5]; /* Sequence Number * / }LION; typedef struct { char nbr_sts; /* Number of Streets * / char B5SC[5][6]; /* Boro+5 Street Code * / }St_list; typedef struct { char lo_hse_nbr[16]; /* Low House Nbr-Disply form* / char hi_hse_nbr[16]; /* Hi House Nbr-Display form* / char B5SC[6]; /* Boro & 5 digit Str Code * / char lgc[2]; /* DCP Preferred Street LGC * / char bld_id[7]; /* BIN of address range * / char sos_ind; /* Side of Street Indicator * / char adr_type; /* Address type - P=NAP, * / /* B=NAB, Blank=Normal * / char filler01[4]; /* Future Use * / }ADDR_RANGE; typedef struct{ char sanborn_boro; /* Sanborn Borough Code * / char sanborn_vol[3]; /* Sanborn Volume * / char sanborn_page[4]; /* Sanborn Page * / }SANBORN; typedef struct { char com_dist[3]; /* Community District * / char lo_hse_nbr[16]; /* Low House Nbr-Disply form * / char hi_hse_nbr[16]; /* Hi House Nbr-Display form * / char filler01[32]; /* Future Use * / char iaei; /* Interim Ass'tance Elig * / /* Indicator * / char zip_code[5]; /* Zip code for Street seg * / char health_area[4]; /* Health Area * / char police_boro_com; /* Police Patrl Boro Command * / char police_pre[3]; /* Police Precinct * / char fire_divisn[2] /* Fire Division * / char fire_bat[2]; /* Fire Battalion * / char fire_co_type; /* Fire Company Number * / char com_schl_dist[2]; /* Community School District * / char dynam_blk[3]; /* Dynamic Block * / char instruc_div[2]; /* Instructional Division * / char filler02[7]; /* Future Use * / char cen_tract_90[6]; /* 1990 Census Tract * / char cen_tract_00[6]; /* 2000 Census Tract * / char cen_blk_00[4]; /* 2000 Census Block * / char filler03[1 ]; /* Possible Census Blk Suff * / char filler04[30]; /* Future Use * / }SEGSIDE; typedef struct { char mh_ri_flag; /* Marble Hill/Rikers Island * / /* Alternative Boro flag * / char len[5]; /* Len in ft from prev node * / char gap_flag; /* Gap Flag * / char node_nbr[7]; /* Node Number of Intersect * / char nbr_streets; /* Nbr streets intersecting * / /* Lowest B7SC at Intersect * / /* is first and 2nd Lowest * / /* B7SC is next. Remaining * / /* B7SC's in no particular * / /* order * / }CROSS_STRS; /**************************************************************************/ /* Platform-Independent Work Area 2 for Function 1 * / /* * / /* * / /**************************************************************************/ typedef struct { char filler01[21]; cont_parity_ind; /* Continuous Parity Ind. * / /* or Duplicate Address Ind. * / char lo_hse_nbr[11]; /* Lo House nbr in Sort form * / char hi_hse_nbr[11]; /* Hi House Nbr in Sort form * / char lgc[2]; /* DCP or BOE Preferred LGC * / St_list st[2]; /* 1=Low and 2=High * / /* Nbr of cross streets at * / /* low house nbr end of st * / /* B5SCs of lo end cross st * / LION key; /* LION Key - 10 Characters * / char sagr_flag; /* Special Address Generated * / /* Record flag * / char sos_ind; /* Side of Street Indicator * / char seg_len[5]; /* Segment Length in Feet * / char coord[3][7]; /* 1 = X coordinate, * / /* 2 = Y coordinate, * / /* 3 = Z coordinate, Not Imp * / char iaei; /* Interim Ass'tance Elig * / /* Indicator * / char mh_ri_flag; /* Marble Hill/Rikers Island * / /* Alternative Borough flag * / char DOT_slcaz /* DOT St Lght Contractr Are * / char com_dist[3]; /* Community District * / /* Position 0 contains the * / /* CD Boro Code & Pos 1 & 2, * / /* the district number * / char zip_code[5]; /* Zip code for st seg * / /* Following seven fields * / /* used for Function 1E only * / char ed[3]; /* Election District * / char ad[2]; /* Assembly District * / char sped_flag; /* Split Elect District Flag * / char congress_dist[2]; /* Congressional District * / char state_sen_dist[2]; /* State Senatorial District * / char civil_court[2]; /* Civil Court District * / char city_council[2]; /* City Council District * / char health_cent[2]; /* Health Center District * / char health_area[4]; /* Health Area * / char sanit_dist[3]; /* Sanitation District * / char sanit_sub_sect[2]; /* Sanit Collect Scheduling * / /* Section and Subsection * / char sanit_reg_pick_up[5]; /* Regular Pick up * / char sanit_recycle[3]; /* sanit_recycle[3]; * / char police_boro_com; /* Police Patrol Boro Commnd * / char police_pre[3]; /* Police Precinct * / char fire_divisn[2]; /* Fire Division * / char fire_bat[2]; /* Fire Battalion * / char fire_co_type; /* Fire Company Type * / char fire_co_nbr[3]; /* Fire Company Number * / char scsd_flag; /* Split Com School District * / /* flag * / char com_schl_dist[2]; /* Community School District * / char dynam_blk[3]; /* Dynamic Block * / char instruc_div[2]; /* Instructional Division * / char feature_type; /* Feature Type Code * / char filler02[6]; /* Future Use * / char cen_tract_90[6]; /* 1990 Census Tract * / char cen_tract_00[6]; /* 2000 Census Tract * / char cen_blk_00[4]; /* 2000 Census Block * / char filler03[01]; /* Possible Census Blk Suff * / char filler04[50]; /* Future Use * / char true_b7sc[8]; /* True Boro 7 Street Code * / char seg_id[7]; /* Segment Identifier * / char curv_flag; /* Curve Flag * / } C_WA2_F1; /**********************************************************************/ /* Platform-Independent Work Area 2 for Function 1A * / /* * / /* * / /**********************************************************************/ typedef struct { char filler01[21]; char cont_parity_ind; /* Continuous Parity Ind * / /* or Duplicate Address Ind * / char lo_hse_nbr[11]; /* Low House Number-Sort Frm * / BBL bbl; /* Borough-Block-Lot * / char filler02; /* Reserved for Tax Lot Ver# * / char RPAD_scc; /* RPAD Self_Check Code(SCC) * / char filler03; char RPAD_lucc[2]; /* RPAD Land Use Class. Code * / char corner[2]; /* Corner Code * / char nbr_blds[4]; /* Nbr of buildings on lot * / char nbr_str[2]; /* Nbr Street Frontages * / char inter_flag; /* Interior Lot Flag * / char vacant_flag; /* Vacant Lot Flag * / char irreg_flag; /* Irregularly-Shaped Lot Fl * / char mh_ri_flag; /* Marble Hill/Rikers Island * / char adr_range_overflow;/* Addr Rnge Lst Ovrflow Flg * / char stroll_key[18]; /* Strolling key * / char filler04; char res_internal_use; /* Reserved for Internal Use * / char bld_id[7]; /* Building Ident. Number * / /* (BIN) of Input Address of * / /* Existing Building, If any * / char condo_flag; /* Condominium Flag * / char filler05; /* Future Use * / char condo_id[4]; /* RPAD Condo Id Number * / char condo_unit_id[7]; /* Condo Unit Id Nbr-Not Impl* / BBL condo_bill_bbl; /* Condo Billing BBL * / char filler06; /* Reserved for Tax Lot Ver * / char condo_scc; /* Self-Check Code * / BBL condo_lo_bbl; /* Low BBL of Condo * / char filler07; /* Reserved for Tax Lot Ver * / BBL condo_hi_bbl; /* High BBL of Condo * / char filler08; /* Reserved for Tax Lot Ver * / char filler09[15]; char co_op_nbr[4]; /* Co-op Number * / SANBORN San; /* Sanborn Information * / char business_area[5]; /* Business Area * / char tax_map_nbr[5]; /* Tax Map Nbr-Sect and Vol * / char filler10[4 ]; /* Tax Map Nbr Page Not Impl * / char filler11[23]; char coord[2][7]; /* 1 = X coordinate-Annotat * / /* 2 = Y coordinate-Annotat * / char filler12[25]; char int_use[8]; /* Internal Use * / char nbr_addr[4]; /* Nbr of Addr Ranges or Nbr * / /* of BINs in List * / union { ADDR_RANGE addr_range[21]; /* List of Addr * / char bin_list[2500][7]; /* Ranges or BINs* / }bar; } C_WA2_F1A; /**********************************************************************/ /* * / /* Platform-Independent Work Area 2 for Function 2 * / /**********************************************************************/ typedef struct { char filler01[21]; char rep_cnt; /* Intersection Replication * / char lgc[2][2]; /* Preferred LGCs * / St_list inter; /* Number of Intersecting St * / /* B5SCs of Intersection St * / char Dup_comp; /* Duplicate compass Directn * / char filler02[5 ]; char LION_node_nbr[7 ]; /* LION Node Number * / char coord[3][7]; /* 1 = X coordinate, * / /* 2 = Y coordinate, * / /* 3 = Z coordinate, Not Imp * / SANBORN San[2]; /* Sanborn Information * / char mh_ri_flag; /* Marble Hill/Rikers Island * / char DOT_slca; /* DOT St Lght Contractr Are* / char com_dist[3]; /* Community District * / char zip_code[5]; /* Zip code for st segment * / char health_area[4]; /* Health Area * / char police_boro_com; /* Police Patrol Boro Commnd * / char police_pre[3]; /* Police Precinct * / char fire_sector[2]; /* Fire Sector * / char fire_bat[2]; /* Fire Battalion * / char fire_co_type; /* Fire Company Type * / char fire_co_nbr[3]; /* Fire Company Number * / char com_schl_dist[2]; /* Community School District * / char cen_tract_00[6]; /* 2000 Census Tract * / char cen_tract_90[6]; /* 1990 Census Tract * / char level_codes [10]; /* Level codes * / char instruc_div [2]; /* Instructional Division * / char filler03[41]; } C_WA2_F2; /********************************************************************/ /* * / /* Platform-Independent Work Area 2 for Function 3 * / /* * / /********************************************************************/ typedef struct { char filler01[21]; char dup_key_flag /* Duplicate Key Flag or * / /* Continuous Parity Flag * / char loc_stat_seg; /* Locational Status of Seg * / char cnty_bnd_ind; /* County Boundary Indicat * / char lgc[3][2]; /* Preferred LGCs * / St_list st[2]; /* 1=Low and 2=High * / /* Nbr of cross sts at low * / /* house nbr end of street * / /* B5SCs of lo end X sts * / char x_street_reversal_flag;/* X St Reversal Flag * / LION key; /* LION Key * / char genr_flag; /* Generated Record Flag * / char seg_len[5]; /* Segment Length in Feet * / char seg_azm[3]; /* Segment Azimuth * / char seg_orient; /* Segment Orientation * / char mh_ri_flag; /* Marble Hill/Rikers Island * / /* Alternative Boro flag * / char filler02[19]; /* Future use * / char seg_id[7]; /* Segment Identifier * / char DOT_slca; /* DOT St Lght Contractr Are * / char curve_flag; /* Curve Flag * / char dog_leg; /* Dog leg flag * / char feature_type; /* Feature Type Code * / char filler03[6]; SEGSIDE side[2]; /* 1 = Left Side of street * / /* 2 = Right Side of street * / } C_WA2_F3; /**********************************************************************/ /* Platform-Independent Work Area 2 for Function 3C * / /* * / /* * / /**********************************************************************/ typedef struct { char filler01[21]; char dup_key_flag; /* Duplicate Key Flag or * / /* Continuous Parity Flag * / char loc_stat_seg; /* Locational Status of Seg * / char cnty_bnd_ind; /* County Boundary Indicat * / char lgc[3][2]; /* Preferred LGCs * / St_list st[2]; /* 1=Low and 2=High * / /* Nbr of cross sts at low * / /* house nbr end of street * / /* B5SCs of lo end Cross sts * / char x_street_reversal_flag /* X St Reversal Flag * / LION key; /* LION key * / char genr_flag; /* Generated Record Flag * / char seg_len[5]; /* Segment Length in Feet * / char seg_azm[3]; /* Segment Azimuth * / char seg_orient; /* Segment Orientation * / char mh_ri_flag; /* Marble Hill/Rikers Island * / /* Alternative Boro flag * / char filler02[19]; /* Future use * / char seg_id [7]; /* Segment Identifier * / char DOT_slca; /* DOT St Lght Contractr Are * / char sos_ind; /* Side of Street Indicator * / char curve_flag; /* Curve Flag * / char feature_type; /* Feature Type Code * / char filler03[6]; SEGSIDE req; /* Geographic Information for* / /* Requested Side of segment * / } C_WA2_F3C; /**********************************************************************/ /* Platform-Independent Work Area 2 for Function 3S * / /* * / /* * / /**********************************************************************/ typedef struct { char filler01[21]; char nbr_x_str[3]; /* Nbr of Cross sts in list * / CROSS_STRS cross_strs[350]; /* Cross Street structure* / } C_WA2_F3S; #ifdef __ cplusplus #endif #endif VISUAL BASIC TYPEDEF File Option Explicit '***************************************************************** '*** geosupport for windows work area type defs for visual basic '***************************************************************** '*** Types must be declared as Private within Form Modules '***************************************************************** '***************************************************************** '*** typedefs used in workareas '***************************************************************** STREET_type boro As String * 1 sc10 As String * 10 street_name As String * 32 End Type Type BBL_type boro As String * 1 block As String * 5 lot As String * 4 End Type Type ADDR_RANGE_type lo_housenum As String * 16 hi_housenum As String * 16 B5SC As String * 6 lgc As String * 2 bin As String * 7 sos_ind As String * 1 addr_type As String * 1 filler01 As String * 4 End Type '***************************************************************** '*** typedef for input area of workarea 1 '***************************************************************** Type INPUT_DEF func_code As String * 2 housenum As String * 16 housenum_sort As String * 11 lo_housenum As String * 16 lo_housenum_sort As String * 11 sti(1 To 3) As STREET_type bbli As BBL_type filler01 As String * 1 bin As String * 7 compass As String * 1 compass2 As String * 1 filler02 As String * 7 platform_ind As String * 1 filler03 As String * 101 long_WA2_flag As String * 1 filler04 As String * 4 snl As String * 2 st_name_norm As String * 1 expanded_format As String * 1 filler05 As String * 37 End Type '***************************************************************** '*** typedef for output area of workarea 1 '***************************************************************** Type OUTPUT_DEF boro_name As String * 9 housenum As String * 16 housenum_sort As String * 11 sto(1 To 3) As STREET_type bblo As BBL_type filler05 As String * 1 lo_housenum As String * 16 lo_housenum_sort As String * 11 bin As String * 7 street_attr(1 To 3) As String * 1 filler06 As String * 139 reason_code As String * 1 filler07 As String * 1 warning_code As String * 2 return_code As String * 2 error_msg As String * 80 similar_stnames_cnt As String * 2 similar_B7SC(1 To 10) As String * 8 similar_stnames(1 To 10) As String * 32 End Type '***************************************************************** '*** typedef for workarea 1 '***************************************************************** Type C_WA1 input1 As INPUT_DEF output1 As OUTPUT_DEF End Type '***************************************************************** '*** typedefs used in workarea 2 '***************************************************************** Type ST_LIST_type street_cnt As String * 1 B5SC(1 To 5) As String * 6 End Type Type LION_type boro As String * 1 face As String * 4 seq As String * 5 End Type Type SANBORN_type boro As String * 1 vol As String * 3 page As String * 4 End Type Type DOF_MAP_type boro As String * 1 secvol As String * 4 page As String * 4 End Type Type SEGSIDE_type com_dist As String * 3 lo_housenum As String * 16 hi_housenum As String * 16 filler01 As String * 32 iaei As String * 1 zip_code As String * 5 health_area As String * 4 police_boro_com As String * 1 police_pct As String * 3 fire_div As String * 2 fire_bat As String * 2 fire_co_type As String * 1 fire_co_num As String * 3 school_dist As String * 2 dynamic_block As String * 3 instruct_div As String * 2 filler02 As String * 7 cen_tract_1990 As String * 6 cen_tract_2000 As String * 6 cen_block_2000 As String * 4 filler_03 As String * 31 End Type Type CROSS_STRS_type mh_ri_flag As String * 1 street_len As String * 5 gap_flag As String * 1 node_nbr As String * 7 street_cnt As String * 1 B7SC(1 To 5) As String * 8 End Type '***************************************************************** '*** typedef for workarea 2 for function 1/1E '***************************************************************** Type C_WA2_F1E fillera As String * 21 cont_parity_dup_addr_ind As String * 1 lo_housenum_sort As String * 11 hi_housenum_sort As String * 11 DCP_pref_lgc As String * 2 lo_x_sts As ST_LIST_type hi_x_sts As ST_LIST_type lion_key As LION_type spec_addr_flag As String * 1 sos_ind As String * 1 segment_len As String * 5 spatial_xyz_coord(1 To 3) As String * 7 res_GSS As String * 1 mh_ri_flag As String * 1 DOT_st_light_cont_area As String * 1 com_dist As String * 3 zip_code As String * 5 ED As String * 3 AD As String * 2 split_ED As String * 1 CD As String * 2 SD As String * 2 MC As String * 2 CO As String * 2 health_center_dist As String * 2 health_area As String * 4 san_dist As String * 3 san_sched As String * 2 san_reg As String * 5 san_recycle As String * 3 police_boro_com As String * 1 police_pct As String * 3 fire_div As String * 2 fire_bat As String * 2 fire_co_type As String * 1 fire_co_num As String * 3 split_school_dist_flag As String * 1 school_dist As String * 2 dynamic_block As String * 3 instruct_div As String * 2 feature_type As String * 1 filler_80ct As String * 6 census_tract_1990 As String * 6 census_tract_2000 As String * 6 census_block_2000 As String * 4 filler_left As String * 51 real_b7sc As String * 8 segment_id As String * 7 curve_flag As String * 1 End Type '***************************************************************** '*** typedef for workarea 2 for function 1A '***************************************************************** Type C_WA2_F1A filler01 As String * 21 cont_parity_ind As String * 1 lo_housenum_sort As String * 11 bbl As BBL_type filler02 As String * 1 RPAD_scc As String * 1 filler03 As String * 1 RPAD_bldg_class As String * 2 corner As String * 2 num_of_bldgs As String * 4 num_of_structures As String * 2 interior_flag As String * 1 vacant_flag As String * 1 irreg_flag As String * 1 mh_ri_flag As String * 1 addr_range_overflow As String * 1 stroll_key As String * 19 res_internal_use As String * 1 bin As String * 7 condo_flag As String * 1 filler05 As String * 1 condo_id As String * 4 filler05b As String * 7 condo_bill_bbl As BBL_type filler06 As String * 1 condo_bill_scc As String * 1 condo_lo_bbl As BBL_type filler07 As String * 1 condo_hi_bbl As BBL_type filler08 As String * 1 filler09 As String * 15 coop_num As String * 4 Sanborn As SANBORN_type business_area As String * 5 DOF_map AS DOF_MAP_type reserved_dcp As String * 23 x_coord As String * 7 y_coord As String * 7 filler10 As String * 25 int_use As String * 8 numaddr As String * 4 addr_range As ADDR_RANGE_type End Type '***************************************************************** '*** typedef for workarea 2 for function 1A long '***************************************************************** Type C_WA2_F1AL filler01 As String * 21 cont_parity_ind As String * 1 bbl As BBL_type filler02 As String * 1 RPAD_scc As String * 1 filler03 As String * 1 RPAD_bldg_class As String * 2 corner As String * 2 num_of_bldgs As String * 4 num_of_structures As String * 2 interior_flag As String * 1 vacant_flag As String * 1 irreg_flag As String * 1 mh_ri_flag As String * 1 addr_range_overflow As String * 1 stroll_key As String * 19 res_internal_use As String * 1 bin As String * 7 condo_flag As String * 1 filler05 As String * 1 condo_id As String * 4 filler05b As String * 7 condo_bill_bbl As BBL_type filler06 As String * 1 condo_bill_scc As String * 1 condo_lo_bbl As BBL_type filler07 As String * 1 condo_hi_bbl As BBL_type filler08 As String * 1 filler09 As String * 15 coop_num As String * 4 Sanborn As SANBORN_type business_area As String * 5 DOF_map AS DOF_MAP_type filler10 As String * 62 int_use As String * 8 num_of_bins As String * 4 bin_list(1 To 2500) As String * 7 End Type '***************************************************************** '*** typedef for workarea 2 for function 2 '***************************************************************** Type C_WA2_F2 filler01 As String * 21 dup_intersect_cnt As String * 1 DCP_pref_lgc(1 To 2) As String * 2 intersect_str As ST_LIST_type compass As String * 1 filler02 As String * 5 lion_node_num As String * 7 spatial_xyz_coord(1 To 3) As String * 7 Sanborn(1 To 2) As SANBORN_type mh_ri_flag As String * 1 DOT_slca As String * 1 com_dist As String * 3 zip_code As String * 5 health_area As String * 4 police_boro_com As String * 1 police_pct As String * 3 fire_div As String * 2 fire_bat As String * 2 fire_co_type As String * 1 fire_co_num As String * 3 school_dist As String * 2 census_tract_2000 As String * 6 census_tract_1990 As String * 6 level_codes (1 to 5, 1 to 2) As String * 1 instruct_div As String * 2 filler03 As String * 41 End Type '***************************************************************** '*** typedef for workarea 2 for function 3 '***************************************************************** Type C_WA2_F3 filler01 As String * 21 dup_key_flag As String * 1 loc_status As String * 1 county_boundary_ind As String * 1 DCP_pref_lgc(1 To 3) As String * 2 lo_x_st As ST_LIST_type hi_x_st As ST_LIST_type x_street_reversal_flag As String * 1 lion_key As LION_type generated_rec_flag As String * 1 segment_len As String * 5 segment_azm As String * 3 segment_orient As String * 1 mh_ri_flag As String * 1 filler02 As String * 19 segment_id As String * 7 DOT_slca As String * 1 curve_flag As String * 1 dog_leg As String * 1 feature_type As String * 1 filler03 As String * 6 side_info(1 To 2) As SEGSIDE_type End Type '***************************************************************** '*** typedef for workarea 2 for function 3C '***************************************************************** Type C_WA2_F3C filler01 As String * 21 dup_key_flag As String * 1 loc_status As String * 1 county_boundary_ind As String * 1 DCP_pref_lgc(1 To 3) As String * 2 lo_x_st As ST_LIST_type hi_x_st As ST_LIST_type x_street_reversal_flag As String * 1 lion_key As LION_type generated_rec_flag As String * 1 segment_len As String * 5 segment_azm As String * 3 segment_orient As String * 1 mh_ri_flag As String * 1 filler02 As String * 19 segment_id As String * 7 DOT_slca As String * 1 sos_ind As String * 1 curve_flag As String * 1 feature_type As String * 1 filler03 As String * 6 side_info As SEGSIDE_type End Type '***************************************************************** '*** typedef for workarea 2 for function 3S '***************************************************************** Type C_WA2_F3S filler01 As String * 21 intersect_num As String * 3 x_sts(1 To 350) As CROSS_STRS_type End Type","title":"Appendix 20: Geosupport Header And Typedef Files"},{"location":"appendices/appendix20/#cc-header-file","text":"#ifndef GEOSUPPORT char test; # define GEOSUPPORT ifdef __ cplusplus extern \"C\" { #endif /*********************************************************************/ /* * / /* GeoSupport System C-Language Header F * / /* for Platform-Independent Work Area * / /* * / /* Last Updated: 15 December 2003 * / /* * / /*********************************************************************/ /*********************************************************************/ /* * / /* Group Items Used in Platform-Independent Work Area 1 * / /* * / /*********************************************************************/ typedef struct { char boro; /* Borough Code * / char SC10[10]; /* 10 Digit Street Code * / char Street_name[32]; /* Street Name * / } STREET; typedef union { char bbl[10]; /* Borough-Block-Lot * / struct { char boro; /* Borough * / char block[5]; /* Tax Block * / char lot[4]; /* Tax Lot * / } cas; }BBL; typedef struct { char func_code[2]; /* Function Code * / char hse_nbr_disp[16]; /* House nbr in Disp form * / char hse_nbr_hns[11]; /* House nbr in Sort form * / char lohse_nbr_disp[16]; /* Lo House nbr in Disp form*/ char ohse_nbr_hns[11]; /* Lo House nbr in Sort form*/ STREET sti[3]; /* Street Information * / BBL bbli; /* Borough-Block-Lot * / char filler01; /* Filler-Tax Lot Version #* / char bld_id[7]; /* Building Id Number (BIN) * / char comp_direction; /* Compass Direction * / char comp_direction2; /* Compass Direction-Fn 3S * / char filler02[7]; /* Future Use * / char platform_ind; /* Must be equal to 'C' * / char filler03[101]; /* Future Use * / /* Flags that influence processing * / char long_WA_flag; /* Long Work Area 2 Flag * / char hse_nbr_justify; /* Hse Nbr Justification Flg* / char hnl[2]; /* Hse Nbr Normalization len* / char hse_nbr_over_flag; /* Reserved for GSS Use * / char snl[2]; /* Street Name Norm Length * / char st_name_norm; /* Street Name Normalization* / /* Format Flag * / char expanded_format; /* Expanded Format Flag * / char filler04[37]; /* Future Use * / } INWA1; typedef struct{ char boro_name[9]; /* Boro Name of First Street* / char hse_nbr_disp[16]; /* House nbr in Normalized * / /* Display form * / char hse_nbr_hns[11]; /* House number in Sort Form* / STREET sto[3]; /* Street Information * / BBL bblo; /* Boro(len=1), Block(len=5 * / /* and Lot (len=4)-Normalizd* / char filler05; /* Filler-Tax Lot Version # * / char lo_hse_nbr_disp[16];/* low Hse nbr - display * / char lo_hse_nbr_hns[11]; /* low Hse nbr - sort form * / char bin[7]; /* Building Id Number * / char attrbytes[3]; /* NAP Identification Number* / char filler07[132]; /* Future Use * / char nap_id_nbr[6]; /* NAP Id Nbr - Not Impl. * / char int_use1; /* Internal Use Only * / char reason_code; /* Reason Code * / char filler08; /* Future Use * / char warn_code[2]; /* Warning Ret. Code-NotImpl* / char ret_code[2]; /* GeoSupport Return Code * / char msg[80]; /* GeoSupport Message * / char nbr_names[2]; /* Nbr of Sreet Names * / char B_7SC[10][8]; /* 10 Boro+7-digit st codes * / char st_names[10][32]; /* Up to 10 Street Names * / }OUTWA1; /*********************************************************************/ /* Platform-Independent Work Area 1 * / /* * / /* * / /*********************************************************************/ typedef struct { INWA1 input; INWA1 output; }C_WA1; /*********************************************************************/ /* Group Items Used in Platform-Independent Work Area 2's * / /* * / /* * / /*********************************************************************/ typedef struct { /* LION KEY * / char lion_boro; /* LION Borough Code * / /* Differs from GeoSupport * / /* Borough Code * / char face[4]; /* Face Code * / char seq[5]; /* Sequence Number * / }LION; typedef struct { char nbr_sts; /* Number of Streets * / char B5SC[5][6]; /* Boro+5 Street Code * / }St_list; typedef struct { char lo_hse_nbr[16]; /* Low House Nbr-Disply form* / char hi_hse_nbr[16]; /* Hi House Nbr-Display form* / char B5SC[6]; /* Boro & 5 digit Str Code * / char lgc[2]; /* DCP Preferred Street LGC * / char bld_id[7]; /* BIN of address range * / char sos_ind; /* Side of Street Indicator * / char adr_type; /* Address type - P=NAP, * / /* B=NAB, Blank=Normal * / char filler01[4]; /* Future Use * / }ADDR_RANGE; typedef struct{ char sanborn_boro; /* Sanborn Borough Code * / char sanborn_vol[3]; /* Sanborn Volume * / char sanborn_page[4]; /* Sanborn Page * / }SANBORN; typedef struct { char com_dist[3]; /* Community District * / char lo_hse_nbr[16]; /* Low House Nbr-Disply form * / char hi_hse_nbr[16]; /* Hi House Nbr-Display form * / char filler01[32]; /* Future Use * / char iaei; /* Interim Ass'tance Elig * / /* Indicator * / char zip_code[5]; /* Zip code for Street seg * / char health_area[4]; /* Health Area * / char police_boro_com; /* Police Patrl Boro Command * / char police_pre[3]; /* Police Precinct * / char fire_divisn[2] /* Fire Division * / char fire_bat[2]; /* Fire Battalion * / char fire_co_type; /* Fire Company Number * / char com_schl_dist[2]; /* Community School District * / char dynam_blk[3]; /* Dynamic Block * / char instruc_div[2]; /* Instructional Division * / char filler02[7]; /* Future Use * / char cen_tract_90[6]; /* 1990 Census Tract * / char cen_tract_00[6]; /* 2000 Census Tract * / char cen_blk_00[4]; /* 2000 Census Block * / char filler03[1 ]; /* Possible Census Blk Suff * / char filler04[30]; /* Future Use * / }SEGSIDE; typedef struct { char mh_ri_flag; /* Marble Hill/Rikers Island * / /* Alternative Boro flag * / char len[5]; /* Len in ft from prev node * / char gap_flag; /* Gap Flag * / char node_nbr[7]; /* Node Number of Intersect * / char nbr_streets; /* Nbr streets intersecting * / /* Lowest B7SC at Intersect * / /* is first and 2nd Lowest * / /* B7SC is next. Remaining * / /* B7SC's in no particular * / /* order * / }CROSS_STRS; /**************************************************************************/ /* Platform-Independent Work Area 2 for Function 1 * / /* * / /* * / /**************************************************************************/ typedef struct { char filler01[21]; cont_parity_ind; /* Continuous Parity Ind. * / /* or Duplicate Address Ind. * / char lo_hse_nbr[11]; /* Lo House nbr in Sort form * / char hi_hse_nbr[11]; /* Hi House Nbr in Sort form * / char lgc[2]; /* DCP or BOE Preferred LGC * / St_list st[2]; /* 1=Low and 2=High * / /* Nbr of cross streets at * / /* low house nbr end of st * / /* B5SCs of lo end cross st * / LION key; /* LION Key - 10 Characters * / char sagr_flag; /* Special Address Generated * / /* Record flag * / char sos_ind; /* Side of Street Indicator * / char seg_len[5]; /* Segment Length in Feet * / char coord[3][7]; /* 1 = X coordinate, * / /* 2 = Y coordinate, * / /* 3 = Z coordinate, Not Imp * / char iaei; /* Interim Ass'tance Elig * / /* Indicator * / char mh_ri_flag; /* Marble Hill/Rikers Island * / /* Alternative Borough flag * / char DOT_slcaz /* DOT St Lght Contractr Are * / char com_dist[3]; /* Community District * / /* Position 0 contains the * / /* CD Boro Code & Pos 1 & 2, * / /* the district number * / char zip_code[5]; /* Zip code for st seg * / /* Following seven fields * / /* used for Function 1E only * / char ed[3]; /* Election District * / char ad[2]; /* Assembly District * / char sped_flag; /* Split Elect District Flag * / char congress_dist[2]; /* Congressional District * / char state_sen_dist[2]; /* State Senatorial District * / char civil_court[2]; /* Civil Court District * / char city_council[2]; /* City Council District * / char health_cent[2]; /* Health Center District * / char health_area[4]; /* Health Area * / char sanit_dist[3]; /* Sanitation District * / char sanit_sub_sect[2]; /* Sanit Collect Scheduling * / /* Section and Subsection * / char sanit_reg_pick_up[5]; /* Regular Pick up * / char sanit_recycle[3]; /* sanit_recycle[3]; * / char police_boro_com; /* Police Patrol Boro Commnd * / char police_pre[3]; /* Police Precinct * / char fire_divisn[2]; /* Fire Division * / char fire_bat[2]; /* Fire Battalion * / char fire_co_type; /* Fire Company Type * / char fire_co_nbr[3]; /* Fire Company Number * / char scsd_flag; /* Split Com School District * / /* flag * / char com_schl_dist[2]; /* Community School District * / char dynam_blk[3]; /* Dynamic Block * / char instruc_div[2]; /* Instructional Division * / char feature_type; /* Feature Type Code * / char filler02[6]; /* Future Use * / char cen_tract_90[6]; /* 1990 Census Tract * / char cen_tract_00[6]; /* 2000 Census Tract * / char cen_blk_00[4]; /* 2000 Census Block * / char filler03[01]; /* Possible Census Blk Suff * / char filler04[50]; /* Future Use * / char true_b7sc[8]; /* True Boro 7 Street Code * / char seg_id[7]; /* Segment Identifier * / char curv_flag; /* Curve Flag * / } C_WA2_F1; /**********************************************************************/ /* Platform-Independent Work Area 2 for Function 1A * / /* * / /* * / /**********************************************************************/ typedef struct { char filler01[21]; char cont_parity_ind; /* Continuous Parity Ind * / /* or Duplicate Address Ind * / char lo_hse_nbr[11]; /* Low House Number-Sort Frm * / BBL bbl; /* Borough-Block-Lot * / char filler02; /* Reserved for Tax Lot Ver# * / char RPAD_scc; /* RPAD Self_Check Code(SCC) * / char filler03; char RPAD_lucc[2]; /* RPAD Land Use Class. Code * / char corner[2]; /* Corner Code * / char nbr_blds[4]; /* Nbr of buildings on lot * / char nbr_str[2]; /* Nbr Street Frontages * / char inter_flag; /* Interior Lot Flag * / char vacant_flag; /* Vacant Lot Flag * / char irreg_flag; /* Irregularly-Shaped Lot Fl * / char mh_ri_flag; /* Marble Hill/Rikers Island * / char adr_range_overflow;/* Addr Rnge Lst Ovrflow Flg * / char stroll_key[18]; /* Strolling key * / char filler04; char res_internal_use; /* Reserved for Internal Use * / char bld_id[7]; /* Building Ident. Number * / /* (BIN) of Input Address of * / /* Existing Building, If any * / char condo_flag; /* Condominium Flag * / char filler05; /* Future Use * / char condo_id[4]; /* RPAD Condo Id Number * / char condo_unit_id[7]; /* Condo Unit Id Nbr-Not Impl* / BBL condo_bill_bbl; /* Condo Billing BBL * / char filler06; /* Reserved for Tax Lot Ver * / char condo_scc; /* Self-Check Code * / BBL condo_lo_bbl; /* Low BBL of Condo * / char filler07; /* Reserved for Tax Lot Ver * / BBL condo_hi_bbl; /* High BBL of Condo * / char filler08; /* Reserved for Tax Lot Ver * / char filler09[15]; char co_op_nbr[4]; /* Co-op Number * / SANBORN San; /* Sanborn Information * / char business_area[5]; /* Business Area * / char tax_map_nbr[5]; /* Tax Map Nbr-Sect and Vol * / char filler10[4 ]; /* Tax Map Nbr Page Not Impl * / char filler11[23]; char coord[2][7]; /* 1 = X coordinate-Annotat * / /* 2 = Y coordinate-Annotat * / char filler12[25]; char int_use[8]; /* Internal Use * / char nbr_addr[4]; /* Nbr of Addr Ranges or Nbr * / /* of BINs in List * / union { ADDR_RANGE addr_range[21]; /* List of Addr * / char bin_list[2500][7]; /* Ranges or BINs* / }bar; } C_WA2_F1A; /**********************************************************************/ /* * / /* Platform-Independent Work Area 2 for Function 2 * / /**********************************************************************/ typedef struct { char filler01[21]; char rep_cnt; /* Intersection Replication * / char lgc[2][2]; /* Preferred LGCs * / St_list inter; /* Number of Intersecting St * / /* B5SCs of Intersection St * / char Dup_comp; /* Duplicate compass Directn * / char filler02[5 ]; char LION_node_nbr[7 ]; /* LION Node Number * / char coord[3][7]; /* 1 = X coordinate, * / /* 2 = Y coordinate, * / /* 3 = Z coordinate, Not Imp * / SANBORN San[2]; /* Sanborn Information * / char mh_ri_flag; /* Marble Hill/Rikers Island * / char DOT_slca; /* DOT St Lght Contractr Are* / char com_dist[3]; /* Community District * / char zip_code[5]; /* Zip code for st segment * / char health_area[4]; /* Health Area * / char police_boro_com; /* Police Patrol Boro Commnd * / char police_pre[3]; /* Police Precinct * / char fire_sector[2]; /* Fire Sector * / char fire_bat[2]; /* Fire Battalion * / char fire_co_type; /* Fire Company Type * / char fire_co_nbr[3]; /* Fire Company Number * / char com_schl_dist[2]; /* Community School District * / char cen_tract_00[6]; /* 2000 Census Tract * / char cen_tract_90[6]; /* 1990 Census Tract * / char level_codes [10]; /* Level codes * / char instruc_div [2]; /* Instructional Division * / char filler03[41]; } C_WA2_F2; /********************************************************************/ /* * / /* Platform-Independent Work Area 2 for Function 3 * / /* * / /********************************************************************/ typedef struct { char filler01[21]; char dup_key_flag /* Duplicate Key Flag or * / /* Continuous Parity Flag * / char loc_stat_seg; /* Locational Status of Seg * / char cnty_bnd_ind; /* County Boundary Indicat * / char lgc[3][2]; /* Preferred LGCs * / St_list st[2]; /* 1=Low and 2=High * / /* Nbr of cross sts at low * / /* house nbr end of street * / /* B5SCs of lo end X sts * / char x_street_reversal_flag;/* X St Reversal Flag * / LION key; /* LION Key * / char genr_flag; /* Generated Record Flag * / char seg_len[5]; /* Segment Length in Feet * / char seg_azm[3]; /* Segment Azimuth * / char seg_orient; /* Segment Orientation * / char mh_ri_flag; /* Marble Hill/Rikers Island * / /* Alternative Boro flag * / char filler02[19]; /* Future use * / char seg_id[7]; /* Segment Identifier * / char DOT_slca; /* DOT St Lght Contractr Are * / char curve_flag; /* Curve Flag * / char dog_leg; /* Dog leg flag * / char feature_type; /* Feature Type Code * / char filler03[6]; SEGSIDE side[2]; /* 1 = Left Side of street * / /* 2 = Right Side of street * / } C_WA2_F3; /**********************************************************************/ /* Platform-Independent Work Area 2 for Function 3C * / /* * / /* * / /**********************************************************************/ typedef struct { char filler01[21]; char dup_key_flag; /* Duplicate Key Flag or * / /* Continuous Parity Flag * / char loc_stat_seg; /* Locational Status of Seg * / char cnty_bnd_ind; /* County Boundary Indicat * / char lgc[3][2]; /* Preferred LGCs * / St_list st[2]; /* 1=Low and 2=High * / /* Nbr of cross sts at low * / /* house nbr end of street * / /* B5SCs of lo end Cross sts * / char x_street_reversal_flag /* X St Reversal Flag * / LION key; /* LION key * / char genr_flag; /* Generated Record Flag * / char seg_len[5]; /* Segment Length in Feet * / char seg_azm[3]; /* Segment Azimuth * / char seg_orient; /* Segment Orientation * / char mh_ri_flag; /* Marble Hill/Rikers Island * / /* Alternative Boro flag * / char filler02[19]; /* Future use * / char seg_id [7]; /* Segment Identifier * / char DOT_slca; /* DOT St Lght Contractr Are * / char sos_ind; /* Side of Street Indicator * / char curve_flag; /* Curve Flag * / char feature_type; /* Feature Type Code * / char filler03[6]; SEGSIDE req; /* Geographic Information for* / /* Requested Side of segment * / } C_WA2_F3C; /**********************************************************************/ /* Platform-Independent Work Area 2 for Function 3S * / /* * / /* * / /**********************************************************************/ typedef struct { char filler01[21]; char nbr_x_str[3]; /* Nbr of Cross sts in list * / CROSS_STRS cross_strs[350]; /* Cross Street structure* / } C_WA2_F3S; #ifdef __ cplusplus #endif #endif","title":"C/C++ HEADER File"},{"location":"appendices/appendix20/#visual-basic-typedef-file","text":"Option Explicit '***************************************************************** '*** geosupport for windows work area type defs for visual basic '***************************************************************** '*** Types must be declared as Private within Form Modules '***************************************************************** '***************************************************************** '*** typedefs used in workareas '***************************************************************** STREET_type boro As String * 1 sc10 As String * 10 street_name As String * 32 End Type Type BBL_type boro As String * 1 block As String * 5 lot As String * 4 End Type Type ADDR_RANGE_type lo_housenum As String * 16 hi_housenum As String * 16 B5SC As String * 6 lgc As String * 2 bin As String * 7 sos_ind As String * 1 addr_type As String * 1 filler01 As String * 4 End Type '***************************************************************** '*** typedef for input area of workarea 1 '***************************************************************** Type INPUT_DEF func_code As String * 2 housenum As String * 16 housenum_sort As String * 11 lo_housenum As String * 16 lo_housenum_sort As String * 11 sti(1 To 3) As STREET_type bbli As BBL_type filler01 As String * 1 bin As String * 7 compass As String * 1 compass2 As String * 1 filler02 As String * 7 platform_ind As String * 1 filler03 As String * 101 long_WA2_flag As String * 1 filler04 As String * 4 snl As String * 2 st_name_norm As String * 1 expanded_format As String * 1 filler05 As String * 37 End Type '***************************************************************** '*** typedef for output area of workarea 1 '***************************************************************** Type OUTPUT_DEF boro_name As String * 9 housenum As String * 16 housenum_sort As String * 11 sto(1 To 3) As STREET_type bblo As BBL_type filler05 As String * 1 lo_housenum As String * 16 lo_housenum_sort As String * 11 bin As String * 7 street_attr(1 To 3) As String * 1 filler06 As String * 139 reason_code As String * 1 filler07 As String * 1 warning_code As String * 2 return_code As String * 2 error_msg As String * 80 similar_stnames_cnt As String * 2 similar_B7SC(1 To 10) As String * 8 similar_stnames(1 To 10) As String * 32 End Type '***************************************************************** '*** typedef for workarea 1 '***************************************************************** Type C_WA1 input1 As INPUT_DEF output1 As OUTPUT_DEF End Type '***************************************************************** '*** typedefs used in workarea 2 '***************************************************************** Type ST_LIST_type street_cnt As String * 1 B5SC(1 To 5) As String * 6 End Type Type LION_type boro As String * 1 face As String * 4 seq As String * 5 End Type Type SANBORN_type boro As String * 1 vol As String * 3 page As String * 4 End Type Type DOF_MAP_type boro As String * 1 secvol As String * 4 page As String * 4 End Type Type SEGSIDE_type com_dist As String * 3 lo_housenum As String * 16 hi_housenum As String * 16 filler01 As String * 32 iaei As String * 1 zip_code As String * 5 health_area As String * 4 police_boro_com As String * 1 police_pct As String * 3 fire_div As String * 2 fire_bat As String * 2 fire_co_type As String * 1 fire_co_num As String * 3 school_dist As String * 2 dynamic_block As String * 3 instruct_div As String * 2 filler02 As String * 7 cen_tract_1990 As String * 6 cen_tract_2000 As String * 6 cen_block_2000 As String * 4 filler_03 As String * 31 End Type Type CROSS_STRS_type mh_ri_flag As String * 1 street_len As String * 5 gap_flag As String * 1 node_nbr As String * 7 street_cnt As String * 1 B7SC(1 To 5) As String * 8 End Type '***************************************************************** '*** typedef for workarea 2 for function 1/1E '***************************************************************** Type C_WA2_F1E fillera As String * 21 cont_parity_dup_addr_ind As String * 1 lo_housenum_sort As String * 11 hi_housenum_sort As String * 11 DCP_pref_lgc As String * 2 lo_x_sts As ST_LIST_type hi_x_sts As ST_LIST_type lion_key As LION_type spec_addr_flag As String * 1 sos_ind As String * 1 segment_len As String * 5 spatial_xyz_coord(1 To 3) As String * 7 res_GSS As String * 1 mh_ri_flag As String * 1 DOT_st_light_cont_area As String * 1 com_dist As String * 3 zip_code As String * 5 ED As String * 3 AD As String * 2 split_ED As String * 1 CD As String * 2 SD As String * 2 MC As String * 2 CO As String * 2 health_center_dist As String * 2 health_area As String * 4 san_dist As String * 3 san_sched As String * 2 san_reg As String * 5 san_recycle As String * 3 police_boro_com As String * 1 police_pct As String * 3 fire_div As String * 2 fire_bat As String * 2 fire_co_type As String * 1 fire_co_num As String * 3 split_school_dist_flag As String * 1 school_dist As String * 2 dynamic_block As String * 3 instruct_div As String * 2 feature_type As String * 1 filler_80ct As String * 6 census_tract_1990 As String * 6 census_tract_2000 As String * 6 census_block_2000 As String * 4 filler_left As String * 51 real_b7sc As String * 8 segment_id As String * 7 curve_flag As String * 1 End Type '***************************************************************** '*** typedef for workarea 2 for function 1A '***************************************************************** Type C_WA2_F1A filler01 As String * 21 cont_parity_ind As String * 1 lo_housenum_sort As String * 11 bbl As BBL_type filler02 As String * 1 RPAD_scc As String * 1 filler03 As String * 1 RPAD_bldg_class As String * 2 corner As String * 2 num_of_bldgs As String * 4 num_of_structures As String * 2 interior_flag As String * 1 vacant_flag As String * 1 irreg_flag As String * 1 mh_ri_flag As String * 1 addr_range_overflow As String * 1 stroll_key As String * 19 res_internal_use As String * 1 bin As String * 7 condo_flag As String * 1 filler05 As String * 1 condo_id As String * 4 filler05b As String * 7 condo_bill_bbl As BBL_type filler06 As String * 1 condo_bill_scc As String * 1 condo_lo_bbl As BBL_type filler07 As String * 1 condo_hi_bbl As BBL_type filler08 As String * 1 filler09 As String * 15 coop_num As String * 4 Sanborn As SANBORN_type business_area As String * 5 DOF_map AS DOF_MAP_type reserved_dcp As String * 23 x_coord As String * 7 y_coord As String * 7 filler10 As String * 25 int_use As String * 8 numaddr As String * 4 addr_range As ADDR_RANGE_type End Type '***************************************************************** '*** typedef for workarea 2 for function 1A long '***************************************************************** Type C_WA2_F1AL filler01 As String * 21 cont_parity_ind As String * 1 bbl As BBL_type filler02 As String * 1 RPAD_scc As String * 1 filler03 As String * 1 RPAD_bldg_class As String * 2 corner As String * 2 num_of_bldgs As String * 4 num_of_structures As String * 2 interior_flag As String * 1 vacant_flag As String * 1 irreg_flag As String * 1 mh_ri_flag As String * 1 addr_range_overflow As String * 1 stroll_key As String * 19 res_internal_use As String * 1 bin As String * 7 condo_flag As String * 1 filler05 As String * 1 condo_id As String * 4 filler05b As String * 7 condo_bill_bbl As BBL_type filler06 As String * 1 condo_bill_scc As String * 1 condo_lo_bbl As BBL_type filler07 As String * 1 condo_hi_bbl As BBL_type filler08 As String * 1 filler09 As String * 15 coop_num As String * 4 Sanborn As SANBORN_type business_area As String * 5 DOF_map AS DOF_MAP_type filler10 As String * 62 int_use As String * 8 num_of_bins As String * 4 bin_list(1 To 2500) As String * 7 End Type '***************************************************************** '*** typedef for workarea 2 for function 2 '***************************************************************** Type C_WA2_F2 filler01 As String * 21 dup_intersect_cnt As String * 1 DCP_pref_lgc(1 To 2) As String * 2 intersect_str As ST_LIST_type compass As String * 1 filler02 As String * 5 lion_node_num As String * 7 spatial_xyz_coord(1 To 3) As String * 7 Sanborn(1 To 2) As SANBORN_type mh_ri_flag As String * 1 DOT_slca As String * 1 com_dist As String * 3 zip_code As String * 5 health_area As String * 4 police_boro_com As String * 1 police_pct As String * 3 fire_div As String * 2 fire_bat As String * 2 fire_co_type As String * 1 fire_co_num As String * 3 school_dist As String * 2 census_tract_2000 As String * 6 census_tract_1990 As String * 6 level_codes (1 to 5, 1 to 2) As String * 1 instruct_div As String * 2 filler03 As String * 41 End Type '***************************************************************** '*** typedef for workarea 2 for function 3 '***************************************************************** Type C_WA2_F3 filler01 As String * 21 dup_key_flag As String * 1 loc_status As String * 1 county_boundary_ind As String * 1 DCP_pref_lgc(1 To 3) As String * 2 lo_x_st As ST_LIST_type hi_x_st As ST_LIST_type x_street_reversal_flag As String * 1 lion_key As LION_type generated_rec_flag As String * 1 segment_len As String * 5 segment_azm As String * 3 segment_orient As String * 1 mh_ri_flag As String * 1 filler02 As String * 19 segment_id As String * 7 DOT_slca As String * 1 curve_flag As String * 1 dog_leg As String * 1 feature_type As String * 1 filler03 As String * 6 side_info(1 To 2) As SEGSIDE_type End Type '***************************************************************** '*** typedef for workarea 2 for function 3C '***************************************************************** Type C_WA2_F3C filler01 As String * 21 dup_key_flag As String * 1 loc_status As String * 1 county_boundary_ind As String * 1 DCP_pref_lgc(1 To 3) As String * 2 lo_x_st As ST_LIST_type hi_x_st As ST_LIST_type x_street_reversal_flag As String * 1 lion_key As LION_type generated_rec_flag As String * 1 segment_len As String * 5 segment_azm As String * 3 segment_orient As String * 1 mh_ri_flag As String * 1 filler02 As String * 19 segment_id As String * 7 DOT_slca As String * 1 sos_ind As String * 1 curve_flag As String * 1 feature_type As String * 1 filler03 As String * 6 side_info As SEGSIDE_type End Type '***************************************************************** '*** typedef for workarea 2 for function 3S '***************************************************************** Type C_WA2_F3S filler01 As String * 21 intersect_num As String * 3 x_sts(1 To 350) As CROSS_STRS_type End Type","title":"VISUAL BASIC TYPEDEF File"},{"location":"appendices/appendix21/","text":"APPENDIX 21: Geosupport Desktop Edition: Quick Start Instructions *Minimum system requirements:* PC running Windows 95 or higher 800 megabytes of available harddisk space CD-Rom drive Step 1. Start Install Program Download the Geosupport Desktop Edition Application and Extract the application from the compressed(zippped) folder. Run the setup file from the downloaded application, double click setup> Run If Install Program does not start up, click Start > Run > downloads\\gde_17b\\setup > OK. Step 2. Respond to Install Options The only question you need to answer is where you want the Geosupport Desktop Edition directory to reside. The default is \u2018harddrive:\\Program Files\\\u2019 . You may change this if you want. Also your computer\u2019s default program directory might not be \u2018Program Files\u2019. This will result in the Geosupport Desktop Editon directory residing in a directory other than \u2018harddrive:\\Program Files\\\u2019 . After the Install Program has completed, re-start your computer. You are now ready to use Geosupport Desktop Edition. Step 3. Verify that Installation was Successful Using Windows Explorer, navigate to the directory where Geosupport Desktop Editon programs were installed ( (\u2018harddrive:\\Program Files\\Geosupport Desktop Edition\\Bin\u2019 is the default). Double click on \u2018Goat.exe\u2019. Select \u20181\u2019 from the toolbar. Enter \u201822\u2019 in the House Number box. Enter \u2018Reade Street\u2019 in the Street Name box. Click on the Manhattan radio button for the Borough. Press the OK button. If Geosupport Desktop Edition was successfully installed, then you should see data displayed in the window. Congratulations on Successfully Installing Geosupport Desktop Edition User documentation can be found in C:\\Program Files\\Geosupport Desktop Editon\\Doc If you are interested in more information on how to use Goat, go to Chapter III: GOAT in the Geosupport Desktop Edition User Programming Guide . If you are interested in geocoding an existing PC database, go to Chapter IV: GBAT in the Geosupport Desktop Edition User Programming Guide . If you are interested in writing your own programs see Chapter II : Geosupport Desktop Edition API in the Geosupport Desktop Edition User Programming Guide . View C:\\Program Files\\Geosupport Desktop Edition\\readme.txt for additional items. Geosupport System General Overview FOREWORD The Geosupport System is a data processing system originally designed to run on IBM mainframes to support many of the geographic processing needs common to New York City agencies. Geosupport was developed and is maintained and enhanced by the staff of the Geographic Systems (GSS) of the Department of City Planning\u2019s Information Technology Division. Geosupport is highly customized for New York City\u2019s geography and is widely recognized to be far superior to any other existing system for processing New York City geographic locations. Currently, Geosupport is used as a component of computer applications in more than thirty New York City agencies. The Geosupport Desktop Edition \u2122 can be readily incorporated into users\u2019 Windows \u00ae based applications that require the processing of geographic data. This General Overview serves as an introduction to the Geosupport System. It is intended for a general audience, and describes the goals, objectives and capabilities of the system. Other GSS documents contain information for technical managers, software designers, programmers and analysts, particularly the Geosupport System User Programming Guide (UPG) and the Geosupport Desktop Edition \u2122 UPG Supplement. Geosupport is continually enhanced to provide users with new features. When a new system release is implemented, technical bulletins are distributed to users explaining changes and new features. To receive further information about Geosupport Desktop Edition, please email: GSS_Feedback@planning.nyc.gov I Goals And Objectives of The Geosupport System The computer applications that automate many municipal operations, such as collecting taxes, installing and repairing public infrastructure, processing citizen complaints, issuing permits, and providing social services, have similar geographic processing needs and require similar geographic information in order to be performed effectively and efficiently. Many non-governmental organizations also use geographic information for analysis and planning. Some of these common geographic processing functions are as follows: Identify and validate (confirm the existence of) various types of geographic locations, such as street names, addresses, inters and property identifiers (tax block and tax lot numbers). Recognize variations when there is more than one way to describe the same location, such as street name spelling variants, alternative street names, three-way inters, multiple addresses for a property. Obtain geographic information associated with the input location. Such information includes geographic areas, such as zip codes, community districts, census tracts, school districts, police precincts, city council districts, or application-specific districts, such as contractor areas or inspection zones. Other geographic information that applications may need include alternative addresses for a property, the cross streets adjacent to an address, the approximate distance between inters, and many others. Retrieve data from a user file by geographic location. Such retrieval should be consistent , that is, when a location can be specified in more than one way, retrieval should succeed no matter how the location is specified. The Geosupport System is designed to support user computer applications by providing the above types of geographic processing functionality. Usage of the Geosupport System has three main benefits: Geosupport centralizes geographic processing among user operations, thus eliminating duplication of effort. Without a centralized system, users would have to develop and maintain their own geographic data files and geographic processing software. Centralization enables many users to benefit from the resources developed by the Department of City Planning\u2019s highly-trained staff of programmers with expertise in the specialized field of geographic processing software, and researchers with expertise in map and aerial photography interpretation. Geosupport fosters geographic data compatibility among users\u2019 computer applications, resulting in improved efficiency and effectiveness. For example, Geosupport can enhance revenue collection by enabling a city agency that has issued fines to obtain the property identifiers (tax block and tax lot numbers) when an address of the property is known. The user can then retrieve the property owner\u2019s mailing address from a file maintained by the Department of Finance. Similarly, activities such as inspections, information gathering and enforcement can be coordinated or consolidated more easily when files are geographically compatible. Geosupport improves the operational efficiency of user applications. This is done by the following means: Geosupport provides immediate (online) verification of location data (addresses, inters, etc) which lessens or eliminates tedious research to verify the data. This feature is useful for trapping errors when data entry staff record information provided by the general public or field staff. Geosupport allows users to specify an input location in different ways . As a result, users do not have to be trained to record locations in a rigid format. For example, Geosupport recognizes that \u201c6 th Ave\u201d, \u201cSixth Avenue\u201d and \u201cAvenue of the Americas\u201d all refer to the same street in Manhattan. A different type of example is the three-way inter of Chambers Street, Hudson Street and West Broadway in Manhattan: Geosupport recognizes any pair of these streets as a valid input specification for this inter. Geosupport enables applications to retrieve data from user files consistently by location . \u2018Consistency\u2019 in this context means that, for locations that can be specified in more than one way, retrieval succeeds even if the location is specified differently at inquiry time from the way that it was originally entered. Applications can use this feature to identify and consolidate all of the transactions for a given location . One of the most important ways in which Geosupport enables consistent geographic retrieval of user data is through its system of numeric street codes representing the city\u2019s street names. Two different names or spellings of the same street are assigned the same five-digit street code. When designing an application, the user can exploit this design feature to achieve data retrieval from the user\u2019s application files that is independent of street name spelling variations. It is important to note that, if street codes are stored in a user file, the user must update those street codes to synchronize with street code changes reflected in each new Geosupport release (see IV-B). Geosupport enables users to group information by proximity . For example, Geosupport can be used to geocode a list of potential customers to manageable geographic locations such as zip codes, enabling companies to efficiently allocate field sales staff. This reduces travel time, making service delivery more efficient. Geosupport allows users to determine in which New York City administrative or political district a given location is contained . This is useful when a user must determine which contractor, inspector, service center, etc., is responsible for servicing or processing a given location. Geosupport aids in performance analysis reviews performed by internal management. Statistics of activities and performance rates by district can be produced from individual cases. This can be done by using Geosupport to code each location to a community district or other area. This statistical information can be used, for example, to monitor and evaluate the performance work crews, to reallocate resources, or to plan for new field offices. Geosupport enables graphic visualization of geographically-related user data by facilitating computer mapping. While Geosupport does not itself produce maps, its geocoding functionality and, in particular, its provision of spatial (xy) coordinates can be used in conjunction with separate computer mapping software and City Planning\u2019s LION street center line file or Tax Block or Lot files to enable data to be displayed cartographically. II System requirements, Availability And Enhancements The Geosupport System is easy to use, and is easily incorporated into a user\u2019s own computer application. The way that this is accomplished is outlined in Chapter III and discussed in detail in the technical documentation. Users usually develop their own computer application using their own resources. User-written programs communicate directly with Geosupport via its Application Programming Interface (API), which is a simple, standardized and well-documented programming procedure. Geosupport performs the geographic processing only ; all other processing is done by the user application, which has its own input and output files, screen formats and/or printed reports. A major advantage of this approach is that users have total control of their own applications, and develop them in their conventional data processing environment, using their normal programming language. This contrasts with many geographic processing packages which require users to develop their applications within the specialized environment of that package, often using a specialized, proprietary programming language. As an alternative to developing an application that accesses Geosupport via its API, users can run one of the Geosupport utility programs, GOAT or GBAT, which require no user programming. The API and the utility programs are further discussed in Chapter III. Geosupport Desktop Edition \u2122 is available to the general public through a licensing agreement. Geosupport can be installed on any Windows \u00ae based personal computer 1 .Geosupport Desktop Edition \u2122 users can write their applications, both online and batch, in any programming language that permits a standard Dynamic Link Library (DLL) call. Currently, Microsoft \u00ae Visual C+, Borland\u00ae C and Visual Basic for Applications (VBA) have been successfully tested. III Accessing Geosupport: The Application Programming Interface And Utility Programs The Geosupport System is available in both batch and online environments. Within each of these environments, Geosupport may be accessed either through user-written programs or via Geosupport utility programs. The two methods of access are described below. 1.User-written programs communicate with Geosupport via its Application Programming Interface (API). Using the API, the user program supplies geographic locations to Geosupport for processing. Geosupport determines if a user location is valid, and if so, returns geographic information about the location to the user program. (For a partial list of data items provided, see Appendix I When the user data are unrecognizable or invalid, Geosupport returns codes and messages to the user program that specify the nature of the problem. By virtue of the API mechanism, the user\u2019s programming efforts can be concentrated on the specific needs of the application, such as screen design and database updating, and the geographic processing can be left to Geosupport. The Geosupport API is easy for programmers to use. Geosupport technical documents describe how to program user applications to interact with Geosupport via the API. 2.Geosupport contains two general purpose utility programs that perform many common geographic processing functions. While not specifically tailored to the needs of any one user, these utility programs allow many users to use Geosupport while minimizing or eliminating their own programming efforts. The utility programs are called GOAT and GBAT and are described below. The API, GOAT and GBAT provide basically the same set of information. A partial list of the information that they provide is in Appendix I . a. GOAT : Geosupport\u2019s online utility program is called the Geosupport Online Address Translator (GOAT). GOAT enables users to enter a geographic location on a computer screen, and if the location is valid, to immediately receive a display of a set of geographic information about that location. If the user\u2019s location is rejected as invalid, an error message is displayed to indicate the specific reason for the rejection. b. GBAT : GBAT (Geosupport Batch Address Translator) is the Geosupport batch utility program. GBAT allows users to process large files containing geographic locations. It validates these locations and writes out an output file containing a set of geographic information for each valid input location. The Geosupport utility programs cannot, by themselves, satisfy every need of every application. For example, GOAT does not allow users to design their own screens or update their own files. Those types of functions can only be done by user-written programs accessing Geosupport via the API. Nevertheless, the Geosupport utility programs are powerful tools, particularly when used in conjunction with user-written programs. IV Geosupport Update Cycles And User Feedback 1.** Updates Cycles ** The Geosupport System is updated continually. Updated information becomes accessible to users when new releases of Geosupport are released for user access several times a year. New Geosupport releases reflect changes in the city\u2019s geography (new street names, new inters, new addresses, changes to various district boundaries, tax lot mergers and subdivisions, etc.), as well as correction of Geosupport data errors. Software enhancements and corrections are also implemented from time to time. Geosupport technical bulletins explaining new software features are distributed as needed. 2.** Resynchronizing User Files to Reflect New Geosupport Releases ** Applications are often designed so that items obtained from Geosupport are stored in user files. Some online applications use such items as \u2018keys\u2019 to retrieve data from the user\u2019s own files by geographic location. (For example, as mentioned in Chapter I, five-digit street codes are often stored and used as retrieval keys in order to make geographic retrieval independent of street name spellings.) In designing applications that store Geosupport-provided data items in user files, the user must consider the issue of updating or \u201cresynchronizing\u201d those stored items to reflect data changes reflected in new Geosupport releases, particularly when the application is using those items as retrieval keys. In cases where such resynchronization is necessary, it is the user\u2019s responsibility to set up a resynchronization procedure and to run it in conjunction with the deployment of each new Geosupport release. 3.** User Feedback ** The users of Geosupport are a crucial resource for providing feedback to GSS on changes required to the Geosupport geographic data and software. Although we cannot respond to individual user feedback, all reported problems are logged and appropriate action is taken. If in the course of reviewing user feedback it is determined that clarification is needed, users may be contacted directly. Feedback procedures are described below. ** Geographic Feedback ** Geosupport may reject a user-supplied geographic location as invalid. For example, Geosupport appropriately rejects the inter of Second Avenue and Third Avenue in Manhattan as a non-existent inter. Moreover, Geosupport geographic files may contain an error or may not be up to date, causing Geosupport to reject a valid location. For rejected items that the user considers valid, a reject feedback procedure exists. The user can submit such data for review to GSS\u2019s Data Management Unit by filling out and submitting a Geosupport System User Feedback Form (see Appendix VI ). Printouts, sketch maps or other material documenting the rejects should be attached to the form when available. Based on its research of user feedback, the GSS staff updates or corrects Geosupport files as appropriate. The corrections are reflected in the Geosupport System in a future Geosupport release. Before submitting rejected data to GSS, users should screen their data for misspellings, data entry errors or other obvious mistakes. The GSS Data Management Unit utilizes a variety of resources, including maps, aerial photographs, public utility address listings, site plans and administrative records to conduct its geographic research. GSS uses Geographic Information System (GIS) technology, which allows the GSS Data Management staff to display, update and generate key Geosupport geographic data using interactive computer mapping. (Note, however, that as accessed by users, Geosupport is a conventional computer application that does not provide the user with maps or other graphic output. Users who have their own computer mapping or GIS software can prepare their data for input to that software by using Geosupport\u2019s geocoding capabilities.) In addition to receiving user feedback, GSS receives information about changes in city geography from a variety of sources. The Department of City Planning has City Charter-mandated responsibility for mapping new streets and street closures. New names for existing streets are obtained from the City Council; new addresses from the Borough Presidents\u2019 offices; tax block and tax lot changes from the Department of Finance; changes in election district boundaries from the Board of Elections; changes in Police Precinct boundaries from the Police Department, etc.","title":"Appendix 21: Geosupport Desktop Edtion"},{"location":"appendices/appendix21/#geosupport-system-general-overview","text":"","title":"Geosupport System General Overview"},{"location":"appendices/appendix21/#i-goals-and-objectives-of-the-geosupport-system","text":"The computer applications that automate many municipal operations, such as collecting taxes, installing and repairing public infrastructure, processing citizen complaints, issuing permits, and providing social services, have similar geographic processing needs and require similar geographic information in order to be performed effectively and efficiently. Many non-governmental organizations also use geographic information for analysis and planning. Some of these common geographic processing functions are as follows: Identify and validate (confirm the existence of) various types of geographic locations, such as street names, addresses, inters and property identifiers (tax block and tax lot numbers). Recognize variations when there is more than one way to describe the same location, such as street name spelling variants, alternative street names, three-way inters, multiple addresses for a property. Obtain geographic information associated with the input location. Such information includes geographic areas, such as zip codes, community districts, census tracts, school districts, police precincts, city council districts, or application-specific districts, such as contractor areas or inspection zones. Other geographic information that applications may need include alternative addresses for a property, the cross streets adjacent to an address, the approximate distance between inters, and many others. Retrieve data from a user file by geographic location. Such retrieval should be consistent , that is, when a location can be specified in more than one way, retrieval should succeed no matter how the location is specified. The Geosupport System is designed to support user computer applications by providing the above types of geographic processing functionality. Usage of the Geosupport System has three main benefits: Geosupport centralizes geographic processing among user operations, thus eliminating duplication of effort. Without a centralized system, users would have to develop and maintain their own geographic data files and geographic processing software. Centralization enables many users to benefit from the resources developed by the Department of City Planning\u2019s highly-trained staff of programmers with expertise in the specialized field of geographic processing software, and researchers with expertise in map and aerial photography interpretation. Geosupport fosters geographic data compatibility among users\u2019 computer applications, resulting in improved efficiency and effectiveness. For example, Geosupport can enhance revenue collection by enabling a city agency that has issued fines to obtain the property identifiers (tax block and tax lot numbers) when an address of the property is known. The user can then retrieve the property owner\u2019s mailing address from a file maintained by the Department of Finance. Similarly, activities such as inspections, information gathering and enforcement can be coordinated or consolidated more easily when files are geographically compatible. Geosupport improves the operational efficiency of user applications. This is done by the following means: Geosupport provides immediate (online) verification of location data (addresses, inters, etc) which lessens or eliminates tedious research to verify the data. This feature is useful for trapping errors when data entry staff record information provided by the general public or field staff. Geosupport allows users to specify an input location in different ways . As a result, users do not have to be trained to record locations in a rigid format. For example, Geosupport recognizes that \u201c6 th Ave\u201d, \u201cSixth Avenue\u201d and \u201cAvenue of the Americas\u201d all refer to the same street in Manhattan. A different type of example is the three-way inter of Chambers Street, Hudson Street and West Broadway in Manhattan: Geosupport recognizes any pair of these streets as a valid input specification for this inter. Geosupport enables applications to retrieve data from user files consistently by location . \u2018Consistency\u2019 in this context means that, for locations that can be specified in more than one way, retrieval succeeds even if the location is specified differently at inquiry time from the way that it was originally entered. Applications can use this feature to identify and consolidate all of the transactions for a given location . One of the most important ways in which Geosupport enables consistent geographic retrieval of user data is through its system of numeric street codes representing the city\u2019s street names. Two different names or spellings of the same street are assigned the same five-digit street code. When designing an application, the user can exploit this design feature to achieve data retrieval from the user\u2019s application files that is independent of street name spelling variations. It is important to note that, if street codes are stored in a user file, the user must update those street codes to synchronize with street code changes reflected in each new Geosupport release (see IV-B). Geosupport enables users to group information by proximity . For example, Geosupport can be used to geocode a list of potential customers to manageable geographic locations such as zip codes, enabling companies to efficiently allocate field sales staff. This reduces travel time, making service delivery more efficient. Geosupport allows users to determine in which New York City administrative or political district a given location is contained . This is useful when a user must determine which contractor, inspector, service center, etc., is responsible for servicing or processing a given location. Geosupport aids in performance analysis reviews performed by internal management. Statistics of activities and performance rates by district can be produced from individual cases. This can be done by using Geosupport to code each location to a community district or other area. This statistical information can be used, for example, to monitor and evaluate the performance work crews, to reallocate resources, or to plan for new field offices. Geosupport enables graphic visualization of geographically-related user data by facilitating computer mapping. While Geosupport does not itself produce maps, its geocoding functionality and, in particular, its provision of spatial (xy) coordinates can be used in conjunction with separate computer mapping software and City Planning\u2019s LION street center line file or Tax Block or Lot files to enable data to be displayed cartographically.","title":"I Goals And Objectives of The Geosupport System "},{"location":"appendices/appendix21/#ii-system-requirements-availability-and-enhancements","text":"The Geosupport System is easy to use, and is easily incorporated into a user\u2019s own computer application. The way that this is accomplished is outlined in Chapter III and discussed in detail in the technical documentation. Users usually develop their own computer application using their own resources. User-written programs communicate directly with Geosupport via its Application Programming Interface (API), which is a simple, standardized and well-documented programming procedure. Geosupport performs the geographic processing only ; all other processing is done by the user application, which has its own input and output files, screen formats and/or printed reports. A major advantage of this approach is that users have total control of their own applications, and develop them in their conventional data processing environment, using their normal programming language. This contrasts with many geographic processing packages which require users to develop their applications within the specialized environment of that package, often using a specialized, proprietary programming language. As an alternative to developing an application that accesses Geosupport via its API, users can run one of the Geosupport utility programs, GOAT or GBAT, which require no user programming. The API and the utility programs are further discussed in Chapter III. Geosupport Desktop Edition \u2122 is available to the general public through a licensing agreement. Geosupport can be installed on any Windows \u00ae based personal computer 1 .Geosupport Desktop Edition \u2122 users can write their applications, both online and batch, in any programming language that permits a standard Dynamic Link Library (DLL) call. Currently, Microsoft \u00ae Visual C+, Borland\u00ae C and Visual Basic for Applications (VBA) have been successfully tested.","title":"II System requirements, Availability And Enhancements "},{"location":"appendices/appendix21/#iii-accessing-geosupport-the-application-programming-interface-and-utility-programs","text":"The Geosupport System is available in both batch and online environments. Within each of these environments, Geosupport may be accessed either through user-written programs or via Geosupport utility programs. The two methods of access are described below. 1.User-written programs communicate with Geosupport via its Application Programming Interface (API). Using the API, the user program supplies geographic locations to Geosupport for processing. Geosupport determines if a user location is valid, and if so, returns geographic information about the location to the user program. (For a partial list of data items provided, see Appendix I When the user data are unrecognizable or invalid, Geosupport returns codes and messages to the user program that specify the nature of the problem. By virtue of the API mechanism, the user\u2019s programming efforts can be concentrated on the specific needs of the application, such as screen design and database updating, and the geographic processing can be left to Geosupport. The Geosupport API is easy for programmers to use. Geosupport technical documents describe how to program user applications to interact with Geosupport via the API. 2.Geosupport contains two general purpose utility programs that perform many common geographic processing functions. While not specifically tailored to the needs of any one user, these utility programs allow many users to use Geosupport while minimizing or eliminating their own programming efforts. The utility programs are called GOAT and GBAT and are described below. The API, GOAT and GBAT provide basically the same set of information. A partial list of the information that they provide is in Appendix I . a. GOAT : Geosupport\u2019s online utility program is called the Geosupport Online Address Translator (GOAT). GOAT enables users to enter a geographic location on a computer screen, and if the location is valid, to immediately receive a display of a set of geographic information about that location. If the user\u2019s location is rejected as invalid, an error message is displayed to indicate the specific reason for the rejection. b. GBAT : GBAT (Geosupport Batch Address Translator) is the Geosupport batch utility program. GBAT allows users to process large files containing geographic locations. It validates these locations and writes out an output file containing a set of geographic information for each valid input location. The Geosupport utility programs cannot, by themselves, satisfy every need of every application. For example, GOAT does not allow users to design their own screens or update their own files. Those types of functions can only be done by user-written programs accessing Geosupport via the API. Nevertheless, the Geosupport utility programs are powerful tools, particularly when used in conjunction with user-written programs.","title":"III Accessing Geosupport: The Application Programming Interface And Utility Programs "},{"location":"appendices/appendix21/#iv-geosupport-update-cycles-and-user-feedback","text":"1.** Updates Cycles ** The Geosupport System is updated continually. Updated information becomes accessible to users when new releases of Geosupport are released for user access several times a year. New Geosupport releases reflect changes in the city\u2019s geography (new street names, new inters, new addresses, changes to various district boundaries, tax lot mergers and subdivisions, etc.), as well as correction of Geosupport data errors. Software enhancements and corrections are also implemented from time to time. Geosupport technical bulletins explaining new software features are distributed as needed. 2.** Resynchronizing User Files to Reflect New Geosupport Releases ** Applications are often designed so that items obtained from Geosupport are stored in user files. Some online applications use such items as \u2018keys\u2019 to retrieve data from the user\u2019s own files by geographic location. (For example, as mentioned in Chapter I, five-digit street codes are often stored and used as retrieval keys in order to make geographic retrieval independent of street name spellings.) In designing applications that store Geosupport-provided data items in user files, the user must consider the issue of updating or \u201cresynchronizing\u201d those stored items to reflect data changes reflected in new Geosupport releases, particularly when the application is using those items as retrieval keys. In cases where such resynchronization is necessary, it is the user\u2019s responsibility to set up a resynchronization procedure and to run it in conjunction with the deployment of each new Geosupport release. 3.** User Feedback ** The users of Geosupport are a crucial resource for providing feedback to GSS on changes required to the Geosupport geographic data and software. Although we cannot respond to individual user feedback, all reported problems are logged and appropriate action is taken. If in the course of reviewing user feedback it is determined that clarification is needed, users may be contacted directly. Feedback procedures are described below. ** Geographic Feedback ** Geosupport may reject a user-supplied geographic location as invalid. For example, Geosupport appropriately rejects the inter of Second Avenue and Third Avenue in Manhattan as a non-existent inter. Moreover, Geosupport geographic files may contain an error or may not be up to date, causing Geosupport to reject a valid location. For rejected items that the user considers valid, a reject feedback procedure exists. The user can submit such data for review to GSS\u2019s Data Management Unit by filling out and submitting a Geosupport System User Feedback Form (see Appendix VI ). Printouts, sketch maps or other material documenting the rejects should be attached to the form when available. Based on its research of user feedback, the GSS staff updates or corrects Geosupport files as appropriate. The corrections are reflected in the Geosupport System in a future Geosupport release. Before submitting rejected data to GSS, users should screen their data for misspellings, data entry errors or other obvious mistakes. The GSS Data Management Unit utilizes a variety of resources, including maps, aerial photographs, public utility address listings, site plans and administrative records to conduct its geographic research. GSS uses Geographic Information System (GIS) technology, which allows the GSS Data Management staff to display, update and generate key Geosupport geographic data using interactive computer mapping. (Note, however, that as accessed by users, Geosupport is a conventional computer application that does not provide the user with maps or other graphic output. Users who have their own computer mapping or GIS software can prepare their data for input to that software by using Geosupport\u2019s geocoding capabilities.) In addition to receiving user feedback, GSS receives information about changes in city geography from a variety of sources. The Department of City Planning has City Charter-mandated responsibility for mapping new streets and street closures. New names for existing streets are obtained from the City Council; new addresses from the Borough Presidents\u2019 offices; tax block and tax lot changes from the Department of Finance; changes in election district boundaries from the Board of Elections; changes in Police Precinct boundaries from the Police Department, etc.","title":"IV Geosupport Update Cycles And User Feedback "},{"location":"appendices/appendix22/","text":"APPENDIX 22: GeoX Programming Guide This document assumes that the developer is using the 64-bit verion of GeoX which is based on EntireX 8.2.2. GeoX Overview GeoX classes allow developers to write applications that can make Geosupport calls via an EntireX Broker running on the DoITT mainframe or to a locally running Geosupport Desktop Edition (GDE). Most Geosupport calls consist of what we call \u201ctwo work area calls\u201d. A work area is a data structure. These two work areas are Work Area 1 which is used for all calls and a Work Area 2 (which varies depending on the Geosupport function call and options you are using). Work Area 1 (Wa1) consists of input fields for the various function parameters and output fields which return standardized versions of the input parameters as well as return codes and return messages. Work Area 2 corresponds to the type of Geosupport function you are calling and the options you are using. For example, if to make a Function 1E (geographic information for an input address) with the \"extended mode switch\" set to \"X\", then along with Wa1 you would pass in Wa2f1ex. Setup Install the 64-bit Geosupport Desktop Edition on your PC. Navigate to C:\\Program Files\\Geosupport Desktop Edition\\GeoX\\Dotnet\\misc Run entirexminiruntime_64.exe (This will install the needed EntireX components) The supporting files that are needed are: Supporting Files DCP Components GeoX.dll (This is the primary component.) GeoXClientStub.dll GeoConns.xml (This is a list of Brokers that GeoX will call) EntireX Components SoftwareAG.EntireX.NETWrapper.Runtime.dll broker.dll erx.dll EntireX Configuration Files SoftwareAG.EntireX.NETWrapper.Runtime.xml (This tells the Runtime.dll the location for erx.dll.) Using GeoX in a .NET Program Create your application project. Add a reference to GeoX.dll to your project. This should bring in the following: GeoX.dll GeoXClientStub.dll SoftwareAG.EntireX.NETWrapper.Runtime.dll SoftwareAG.EntireX.NETWrapper.Runtime.xml To use the GeoX.Net classes without using fully qualified names include the following: Imports DCP.Geosupport.DotNet.GeoX 'for Visual Basic .Net using DCP.Geosupport.DotNet.GeoX //for C# You are now ready to use the GeoX .Net classes in your application. Important Note on Installing EntireX When you are ready to distribute your application, you must make sure that GeoX.dll and its supporting components are copied along with your application. Additionally, the underlying components for EntireX (broker.dll and erx.dll) must be in the application PATH. You have two options for the underlying EntireX components: This is the preferred method. Run entirexminiruntime_64.exe on each computer that you are going to deploy the application to. If this is going to be run from a server, then the server is the only computer you need to run this on; you do not need to run this on clients\u2019 computers that access the server. If you are to run as a stand-alone application on individual computers, then you must run this on each computer your application is installed on. This method is primarily used when the application is accessed from a file server and there are too many users to easily run entirexminiruntime_64.exe on each computer. Manually copy the EntireX Components (broker.dll and erx.dll) to your application directory. Then modify SoftwareAG.EntireX.NETWrapper.Runtime.xml to indicate the location of these components. To do this: a. Edit SoftwareAG.EntireX.NETWrapper.Runtime.xml b. Search for \u201cRuntime.ERX.Location\u201d c. Replace the existing location, likely \"C:\\Program Files\\Common Files\u2026\" With \u201c.\\\u201d [Do Not Include the Quotes] Sample Code for Function 1E **************************************************************************************************** VB.Net Code Snippet for Extended Work Area 2 Function 1E Call **************************************************************************************************** Imports DCP.Geosupport.DotNet.GeoX Module Module1 '--create a list of connections to use Dim myGeoConns as New GeoConnsCollection(\"GeoConns.xml\") '--------------------------------------------------------------------------- 'ASP.Net applications will instead need to add a line similar to this: ' Dim myGeoConns as GeoConnCollection ' myGeoConns = New GeoConnCollection(Server.MapPath(\"GeoConns.xml\")) '--------------------------------------------------------------------------- '--create your geo object (makes calls to Geosupport '--create your Wa1 object (input to Geosupport) '--create your Wa2 object (output from Geosupport) Dim myGeo As New geo(myGeoConns) Dim myWa1 As New Wa1 Dim myWa2f1ex As New Wa2F1ex Sub Main() '--initialize your input myWa1.Clear '--choose the Geosupport function to call (1 returns geographic info for an address) myWa1.in_func_code = \"1E\" '--tell Geosupport to use platform independent work areas myWa1.in_platform_ind = \"C\" '--set optional processing flags (if any) myWa1.in_mode_switch = \"X\" '--set the input data myWa1.in_B10sc1.boro = \"1\" myWa1.in_hnd = \"22\" myWa1.in_stname = \"Reade Street\" '--make a call to Geosupport passing in the correct Work Area 2 object myGeo.GeoCall(myWa1, myWa2f1ex) '--check the return codes from your Geosupport call If myWa1.out_grc = \"00\" Console.WriteLine(\"Successful Geosupport Call\") Console.WriteLine(myWa2f1ex.Print) Else If myWa1.out_grc = \"01\" Console.WriteLine(\"Successful Geosupport Call with Warning\") Console.WriteLine(myWa2f1ex.Print) Else If mywa1.out_grc = \"XX\" Console.WriteLine(\"Unable to find Broker or GDE\") Console.WriteLine(myWa1.Print) Else Console.WriteLine(\"Unsuccessful Geosupport Call\") Console.WriteLine(myWa1.Print) End If End Sub End Module Sample Code for Function BL **************************************************************************************************** VB.Net Code Snippet for Extended Work Area 2 Function BL Call **************************************************************************************************** Imports DCP.Geosupport.DotNet.GeoX Module Module1 '--create a list of connections to use Dim myGeoConns as New GeoConnsCollection(\"GeoConns.xml\") '--------------------------------------------------------------------------- 'ASP.Net applications will instead need to add a line similar to this: ' Dim myGeoConns as GeoConnCollection ' myGeoConns = New GeoConnCollection(Server.MapPath(\"GeoConns.xml\")) '--------------------------------------------------------------------------- '--create your geo object (makes calls to Geosupport '--create your Wa1 object (input to Geosupport) '--create your Wa2 object (output from Geosupport) Dim myGeo As New geo(myGeoConns) Dim myWa1 As New Wa1 Dim myWa2f1ax As New Wa2F1ax Sub Main() '--initialize your input myWa1.Clear '--choose the Geosupport function to call (BL returns tax lot info for an BBL) myWa1.in_func_code = \"BL\" '--tell Geosupport to use platform independent work areas myWa1.in_platform_ind = \"C\" '--set optional processing flags (if any) myWa1.in_mode_switch = \"X\" '--set the input data myWa1.in_bbl.boro = \"1\" myWa1.in_bbl.block = \"00154\" myWa1.in_bbl.lot = \"0023\" '--make a call to Geosupport passing in the correct Work Area 2 object myGeo.GeoCall(myWa1, myWa2f1ax) '--check the return codes from your Geosupport call If myWa1.out_grc = \"00\" Console.WriteLine(\"Successful Geosupport Call\") Console.WriteLine(myWa2f1ax.Print) Else If myWa1.out_grc = \"01\" Console.WriteLine(\"Successful Geosupport Call with Warning\") Console.WriteLine(myWa2f1ax.Print) Else If mywa1.out_grc = \"XX\" Console.WriteLine(\"Unable to find Broker or GDE\") Console.WriteLine(myWa1.Print) Else Console.WriteLine(\"Unsuccessful Geosupport Call\") Console.WriteLine(myWa1.Print) End If End Sub End Module Selecting the Broker to Use These classes allow developers to make calls to Geosupport running on the DoITT mainframe or a locally running Geosupport Desktop Edition. This is done by creating a GeoConnsCollection object that points to a list of Brokers. One of the benefits of using this collection is that if there is a problem with one of the Brokers, the classes will go to the next Broker in the list. The best way create the GeoConnsCollection object is to point it to a GeoConns.xml file that is external to the application. Below is a sample GeoConns.xml: mvsp.nycnet:4036 P030A/GEOXSERVER/GEOSUPPORTSERVICE mvsp.nycnet:4074 P030A/GEOXSERVER/GEOSUPPORTSERVICE mvsp.nycnet:4055 T030A/GEOXSERVER/GEOSUPPORTSERVICE GDE The first two GeoConn entries mvsp.nycnet:4036 P030A/GEOXSERVER/GEOSUPPORTSERVICE and mvsp.nycnet:4074 P030A/GEOXSERVER/GEOSUPPORTSERVICE point to the two production brokers (production Geosupport) on the DoITT mainframe. The third entry mvsp.nycnet:4055 T030A/GEOXSERVER/GEOSUPPORTSERVICE points to the test broker (which points to the test version of Geosupport). The final entry GDE means that a locally running Geosupport Desktop Edition (GDE) will be called instead of a broker. GDE must be installed or you will get an execption. Which Functions to Use Overview of What the Functions Do Function Input Data Returned 1 address Geographic and City Service Information 1E address Geographic, City Service Information, and Political Districts 1A address Tax Property Level Information, Alternate Addresses for Property 1B address Combines 1E (Extended) with 1A (Extended) information AP address Address Point ID and Address Point XY coordinates 1N street name Normalized Street Name and Street Code 2 intersection, node id Geographic Information 3, 3C street segment Geographic Information 3S street segment List of Intersecting Streets and their Node IDs BL BBL Same as 1A BIN BIN Same as 1A D, DG, DN street code Normalized Street Name for input street code Which Options to Use Formatting Properties in_hn_justification When set to \u201cL\u201d House Numbers in Display Format are left-justified When set to \u201cR\u201d House Numbers in Display Format are right-justified in_snl The input street names will be normalized to the indicated length Valid values are minimum of 4 and a maximum of 32 Some streets may not be able to be normalized to the requested length in_stname_normalization When set to blank street names are normalized in sort format When set to \u201cC\u201d street names are normalized in compact format When set to \u201cS\u201d street names are normalized in sort format Additional Information Properties (these usually require a different Work Area 2) in_auxseg_switch When set to \u201cY\u201d the list of Segment IDs for a street segment are Appended to the Work Area 2; for Functions 3 and 3C only in_long_wa2_flag When set to \u201cY\u201d the long workarea for the function is returned For Functions 1A and BL a list of BINs for the tax lot are returned instead of a list of alternative addresses; Wa2F1al must be used for these calls. For Functions 1 and 1E additional information is returned; Wa2F1w and Wa2F1v must be used for these calls. in_mode_switch When set to \u201cX\u201d the extended work area 2 is used for the call For Functions 1, 1E, 1A, BL, BN, 3, and 3C only; where possible, we recommend that you use this option in_tpad_switch When set to \u201cY\u201d TPAD data is added to the work area 2; for Functions 1A, BL, and BN only in_xstreet_names_flag When set to \u201cE\u201d for Functions 1, 1E, 3, and 3C the first 5 elements in Wa1.out_stname_list contain the Street Names for the intersecting streets at the low address end of the segment and the last 5 elements in Wa1.out_stname_list contain the Street Names for the intersecting streets at the high address end of the segment For Functions 1 and 1E only an additional Geosupport call to Function 1A is made. If successful the BBL and BIN obtained are returned in Wa1.out_bbl and Wa1.out_bin respectively. For Function 2 the first 5 elements in Wa1.out_stname_list contain the Street Names for the intersecting streets at the intersection. When set to space for Functions 1, 1E, 2, 3, and 3c if the Street Names of the list of intersecting streets are needed, then the user must take the street codes from Wa2 and make repeated Function D or DG calls. Other in_browse_flag Sets how Geosupport should normalize your input street names when \u201cblank\u201d the output street name is the normalized version of the input street name When \u201cP\u201d the output street name is the Primary Street Name for the input street When \u201cF\u201d the output street name is the Principal Street Name for the input street When \u201cR\u201d the output street name is the DCP Preferred Street Name for the input street in_real_streets_only When set to \u201cR\u201d Function 3S will return only intersections consisting of \u201creal streets\u201d and not changes in district boundaries or other items in_roadbed_request_switch When set to \u201cR\u201d Function 1 and 1E will return geographic data for the RoadBed street segments instead of for the Generic street segments which is the default Selecting the Proper Work Area 2 Function Work Area 1 Options Work Area 2 to use in_auxseg_switch in_long_wa2_flag in_mode_switch* in_tpad_switch 1E n/a n/a blank n/a WA2F1E n/a n/a X n/a WA2F1EX 2 n/a n/a n/a n/a WA2F2 2W n/a n/a n/a n/a WA2F2W 3 blank n/a blank n/a WA2F3 blank n/a X n/a WA2F3X Y n/a X n/a WA2F3XAS 3C blank n/a blank n/a WA2F3C Y n/a blank n/a WA2F3CAS blank n/a X n/a WA2F3CX Y n/a X n/a WA2F3CXAS 3S n/a n/a n/a n/a WA2F3S 1B n/a n/a n/a blank WA2F1B n/a n/a n/a Y WA2F1B 1A n/a blank blank blank WA2F1A n/a L blank blank WA2F1AL n/a blank X blank WA2F1AX n/a L X blank n/a n/a blank X Y WA2F1AX n/a L X Y n/a n/a blank blank Y WA2F1A n/a L blank Y WA2F1AL_TPAD BL n/a blank blank blank WA2F1A n/a L blank blank WA2F1AL n/a blank X blank WA2F1AX n/a L X blank n/a n/a blank X Y WA2F1AX n/a L X Y n/a n/a blank blank Y WA2F1A n/a L blank Y WA2F1AL_TPAD BN n/a n/a blank blank WA2F1A n/a n/a X blank WA2F1AX n/a n/a blank Y WA2F1A n/a n/a X Y WA2F1AX AP n/a n/a blank n/a WA2FAP n/a n/a X n/a WA2FAPX We highly recommend that you use the in_mode_switch = \u201cX\u201d option List of Classes and Overview The Work Area and their Supporting classes all have the following methods: default constructor constructor that takes a string as a parameter Clear method that reinitializes the data in the class ToString method that converts the data structure to a string FromString method that converts a string into the data structure Display method that creates a string consisting of the data items separated by a dash Display(Char) method that creates a string consisting of the data items separate by \u201cChar\u201d Print method that creates a string with the data field names and the data values of the class Get/Set Properties for the data fields (with the exception of Work Area 1 input fields, these are usually limited to Get only) for the most part the names are self-explanatory Classes Main GeoX Classes Description Geo Main GeoX object GeoConn Contains information needed to connect to an EntireX Broker or a locally running Geosupport Desktop Edition (GDE) GeoConnCollection Contains a list of GeoConn objects GeoConnsException Information relating to an exception involving a GeoConn object Work Area Classes Description Wa1 Input Data, Normalized Input Data, Return Codes Wa2F1 Geographic Information about a Street Segment Wa2F1w Wa2F1 with additional data Wa2F1e Wa2F1 with election district information Wa2F1v Wa2f1e with additional information (same as Wa2f1w with election district information) Wa2F1ex Wa2F1e with additional information and street names for all street codes Wa2F1a Tax Lot Information about an input Address, BBL, or BIN along with a list of alternate addresses associated with the tax lot Wa2F1al Same as Wa2F1a except with a list of BINs associated with the Tax Lot instead of a list of alternate addresses. Wa2F1al_TPAD Same as Wa2F1al with the addition of the TPAD status for each of the BINs in the BIN List Wa2F1ax Wa2F1a with additional information and street names for the alternate addresses for the Tax Lot Wa2F1b Combination of Wa2F1ex and Wa2F1ax for input address Wa2F2 Geographic Information about an Intersection Wa2F2w Same as Wa2F3x with a list of additional Segment IDs for those street segments that have multiple Segment IDs associated with them Wa2F3 Geographic information about an input street segment (consisting of an on-street and two succeeding cross streets for the on-street Wa2F3as Same as Wa2F3 with a list of additional Segment IDs for those street segments that have multiple Segment IDs associated with them Wa2F3x Same as Wa2F3 with additional information and street names for all street codes Wa2F3xas Same as Wa2F3x with a list of additional Segment IDs for those street segments that have multiple Segment IDs associated with them Wa2F3c Same information as Wa2F3 but for one side of the segment only Wa2F3cas Same as Wa2F3c with a list of additional Segment IDs for those street segments that have multiple Segment IDs associated with them Wa2F3cx Same as Wa2F3c with additional information and street names for all street codes Wa2F3cxas Same as Wa2F3x with a list of additional Segment IDs for those street segments that have multiple Segment IDs associated with them Wa2F3s List of Intersection for an input Street Stretch Wa2F5 Returns a properly formatted Geosupport address key for an input address Wa2Fhr Returns the version of Geosupport and the Release Number for the data files Wa2Fap Address Point ID and XY Coordinates for input Address Wa2Fapx Same as Wa2Fap with addition of street name in address list Wa1Aimz Returns a list of Map IDs associated with the Input Supporting Classes for Work Areas AddrRange AddrRangeX AddrRange_ap AddrRange_apx B10sc B5sc B7sc BBL BIN BusArea ComDist CrossStreetInfo DofMap FileInfo LionKey Sanborn SegSide TPADLongWa2Info VsamKey1","title":"Appendix 22: GeoX Programming Guide"},{"location":"appendices/appendix22/#geox-overview","text":"GeoX classes allow developers to write applications that can make Geosupport calls via an EntireX Broker running on the DoITT mainframe or to a locally running Geosupport Desktop Edition (GDE). Most Geosupport calls consist of what we call \u201ctwo work area calls\u201d. A work area is a data structure. These two work areas are Work Area 1 which is used for all calls and a Work Area 2 (which varies depending on the Geosupport function call and options you are using). Work Area 1 (Wa1) consists of input fields for the various function parameters and output fields which return standardized versions of the input parameters as well as return codes and return messages. Work Area 2 corresponds to the type of Geosupport function you are calling and the options you are using. For example, if to make a Function 1E (geographic information for an input address) with the \"extended mode switch\" set to \"X\", then along with Wa1 you would pass in Wa2f1ex.","title":"GeoX Overview"},{"location":"appendices/appendix22/#setup","text":"Install the 64-bit Geosupport Desktop Edition on your PC. Navigate to C:\\Program Files\\Geosupport Desktop Edition\\GeoX\\Dotnet\\misc Run entirexminiruntime_64.exe (This will install the needed EntireX components) The supporting files that are needed are: Supporting Files DCP Components GeoX.dll (This is the primary component.) GeoXClientStub.dll GeoConns.xml (This is a list of Brokers that GeoX will call) EntireX Components SoftwareAG.EntireX.NETWrapper.Runtime.dll broker.dll erx.dll EntireX Configuration Files SoftwareAG.EntireX.NETWrapper.Runtime.xml (This tells the Runtime.dll the location for erx.dll.)","title":"Setup"},{"location":"appendices/appendix22/#using-geox-in-a-net-program","text":"Create your application project. Add a reference to GeoX.dll to your project. This should bring in the following: GeoX.dll GeoXClientStub.dll SoftwareAG.EntireX.NETWrapper.Runtime.dll SoftwareAG.EntireX.NETWrapper.Runtime.xml To use the GeoX.Net classes without using fully qualified names include the following: Imports DCP.Geosupport.DotNet.GeoX 'for Visual Basic .Net using DCP.Geosupport.DotNet.GeoX //for C# You are now ready to use the GeoX .Net classes in your application. Important Note on Installing EntireX When you are ready to distribute your application, you must make sure that GeoX.dll and its supporting components are copied along with your application. Additionally, the underlying components for EntireX (broker.dll and erx.dll) must be in the application PATH. You have two options for the underlying EntireX components: This is the preferred method. Run entirexminiruntime_64.exe on each computer that you are going to deploy the application to. If this is going to be run from a server, then the server is the only computer you need to run this on; you do not need to run this on clients\u2019 computers that access the server. If you are to run as a stand-alone application on individual computers, then you must run this on each computer your application is installed on. This method is primarily used when the application is accessed from a file server and there are too many users to easily run entirexminiruntime_64.exe on each computer. Manually copy the EntireX Components (broker.dll and erx.dll) to your application directory. Then modify SoftwareAG.EntireX.NETWrapper.Runtime.xml to indicate the location of these components. To do this: a. Edit SoftwareAG.EntireX.NETWrapper.Runtime.xml b. Search for \u201cRuntime.ERX.Location\u201d c. Replace the existing location, likely \"C:\\Program Files\\Common Files\u2026\" With \u201c.\\\u201d [Do Not Include the Quotes]","title":"Using GeoX in a .NET Program"},{"location":"appendices/appendix22/#sample-code-for-function-1e","text":"**************************************************************************************************** VB.Net Code Snippet for Extended Work Area 2 Function 1E Call **************************************************************************************************** Imports DCP.Geosupport.DotNet.GeoX Module Module1 '--create a list of connections to use Dim myGeoConns as New GeoConnsCollection(\"GeoConns.xml\") '--------------------------------------------------------------------------- 'ASP.Net applications will instead need to add a line similar to this: ' Dim myGeoConns as GeoConnCollection ' myGeoConns = New GeoConnCollection(Server.MapPath(\"GeoConns.xml\")) '--------------------------------------------------------------------------- '--create your geo object (makes calls to Geosupport '--create your Wa1 object (input to Geosupport) '--create your Wa2 object (output from Geosupport) Dim myGeo As New geo(myGeoConns) Dim myWa1 As New Wa1 Dim myWa2f1ex As New Wa2F1ex Sub Main() '--initialize your input myWa1.Clear '--choose the Geosupport function to call (1 returns geographic info for an address) myWa1.in_func_code = \"1E\" '--tell Geosupport to use platform independent work areas myWa1.in_platform_ind = \"C\" '--set optional processing flags (if any) myWa1.in_mode_switch = \"X\" '--set the input data myWa1.in_B10sc1.boro = \"1\" myWa1.in_hnd = \"22\" myWa1.in_stname = \"Reade Street\" '--make a call to Geosupport passing in the correct Work Area 2 object myGeo.GeoCall(myWa1, myWa2f1ex) '--check the return codes from your Geosupport call If myWa1.out_grc = \"00\" Console.WriteLine(\"Successful Geosupport Call\") Console.WriteLine(myWa2f1ex.Print) Else If myWa1.out_grc = \"01\" Console.WriteLine(\"Successful Geosupport Call with Warning\") Console.WriteLine(myWa2f1ex.Print) Else If mywa1.out_grc = \"XX\" Console.WriteLine(\"Unable to find Broker or GDE\") Console.WriteLine(myWa1.Print) Else Console.WriteLine(\"Unsuccessful Geosupport Call\") Console.WriteLine(myWa1.Print) End If End Sub End Module","title":"Sample Code for Function 1E"},{"location":"appendices/appendix22/#sample-code-for-function-bl","text":"**************************************************************************************************** VB.Net Code Snippet for Extended Work Area 2 Function BL Call **************************************************************************************************** Imports DCP.Geosupport.DotNet.GeoX Module Module1 '--create a list of connections to use Dim myGeoConns as New GeoConnsCollection(\"GeoConns.xml\") '--------------------------------------------------------------------------- 'ASP.Net applications will instead need to add a line similar to this: ' Dim myGeoConns as GeoConnCollection ' myGeoConns = New GeoConnCollection(Server.MapPath(\"GeoConns.xml\")) '--------------------------------------------------------------------------- '--create your geo object (makes calls to Geosupport '--create your Wa1 object (input to Geosupport) '--create your Wa2 object (output from Geosupport) Dim myGeo As New geo(myGeoConns) Dim myWa1 As New Wa1 Dim myWa2f1ax As New Wa2F1ax Sub Main() '--initialize your input myWa1.Clear '--choose the Geosupport function to call (BL returns tax lot info for an BBL) myWa1.in_func_code = \"BL\" '--tell Geosupport to use platform independent work areas myWa1.in_platform_ind = \"C\" '--set optional processing flags (if any) myWa1.in_mode_switch = \"X\" '--set the input data myWa1.in_bbl.boro = \"1\" myWa1.in_bbl.block = \"00154\" myWa1.in_bbl.lot = \"0023\" '--make a call to Geosupport passing in the correct Work Area 2 object myGeo.GeoCall(myWa1, myWa2f1ax) '--check the return codes from your Geosupport call If myWa1.out_grc = \"00\" Console.WriteLine(\"Successful Geosupport Call\") Console.WriteLine(myWa2f1ax.Print) Else If myWa1.out_grc = \"01\" Console.WriteLine(\"Successful Geosupport Call with Warning\") Console.WriteLine(myWa2f1ax.Print) Else If mywa1.out_grc = \"XX\" Console.WriteLine(\"Unable to find Broker or GDE\") Console.WriteLine(myWa1.Print) Else Console.WriteLine(\"Unsuccessful Geosupport Call\") Console.WriteLine(myWa1.Print) End If End Sub End Module","title":"Sample Code for Function BL"},{"location":"appendices/appendix22/#selecting-the-broker-to-use","text":"These classes allow developers to make calls to Geosupport running on the DoITT mainframe or a locally running Geosupport Desktop Edition. This is done by creating a GeoConnsCollection object that points to a list of Brokers. One of the benefits of using this collection is that if there is a problem with one of the Brokers, the classes will go to the next Broker in the list. The best way create the GeoConnsCollection object is to point it to a GeoConns.xml file that is external to the application. Below is a sample GeoConns.xml: mvsp.nycnet:4036 P030A/GEOXSERVER/GEOSUPPORTSERVICE mvsp.nycnet:4074 P030A/GEOXSERVER/GEOSUPPORTSERVICE mvsp.nycnet:4055 T030A/GEOXSERVER/GEOSUPPORTSERVICE GDE The first two GeoConn entries mvsp.nycnet:4036 P030A/GEOXSERVER/GEOSUPPORTSERVICE and mvsp.nycnet:4074 P030A/GEOXSERVER/GEOSUPPORTSERVICE point to the two production brokers (production Geosupport) on the DoITT mainframe. The third entry mvsp.nycnet:4055 T030A/GEOXSERVER/GEOSUPPORTSERVICE points to the test broker (which points to the test version of Geosupport). The final entry GDE means that a locally running Geosupport Desktop Edition (GDE) will be called instead of a broker. GDE must be installed or you will get an execption.","title":"Selecting the Broker to Use"},{"location":"appendices/appendix22/#which-functions-to-use","text":"Overview of What the Functions Do Function Input Data Returned 1 address Geographic and City Service Information 1E address Geographic, City Service Information, and Political Districts 1A address Tax Property Level Information, Alternate Addresses for Property 1B address Combines 1E (Extended) with 1A (Extended) information AP address Address Point ID and Address Point XY coordinates 1N street name Normalized Street Name and Street Code 2 intersection, node id Geographic Information 3, 3C street segment Geographic Information 3S street segment List of Intersecting Streets and their Node IDs BL BBL Same as 1A BIN BIN Same as 1A D, DG, DN street code Normalized Street Name for input street code","title":"Which Functions to Use"},{"location":"appendices/appendix22/#which-options-to-use","text":"Formatting Properties in_hn_justification When set to \u201cL\u201d House Numbers in Display Format are left-justified When set to \u201cR\u201d House Numbers in Display Format are right-justified in_snl The input street names will be normalized to the indicated length Valid values are minimum of 4 and a maximum of 32 Some streets may not be able to be normalized to the requested length in_stname_normalization When set to blank street names are normalized in sort format When set to \u201cC\u201d street names are normalized in compact format When set to \u201cS\u201d street names are normalized in sort format Additional Information Properties (these usually require a different Work Area 2) in_auxseg_switch When set to \u201cY\u201d the list of Segment IDs for a street segment are Appended to the Work Area 2; for Functions 3 and 3C only in_long_wa2_flag When set to \u201cY\u201d the long workarea for the function is returned For Functions 1A and BL a list of BINs for the tax lot are returned instead of a list of alternative addresses; Wa2F1al must be used for these calls. For Functions 1 and 1E additional information is returned; Wa2F1w and Wa2F1v must be used for these calls. in_mode_switch When set to \u201cX\u201d the extended work area 2 is used for the call For Functions 1, 1E, 1A, BL, BN, 3, and 3C only; where possible, we recommend that you use this option in_tpad_switch When set to \u201cY\u201d TPAD data is added to the work area 2; for Functions 1A, BL, and BN only in_xstreet_names_flag When set to \u201cE\u201d for Functions 1, 1E, 3, and 3C the first 5 elements in Wa1.out_stname_list contain the Street Names for the intersecting streets at the low address end of the segment and the last 5 elements in Wa1.out_stname_list contain the Street Names for the intersecting streets at the high address end of the segment For Functions 1 and 1E only an additional Geosupport call to Function 1A is made. If successful the BBL and BIN obtained are returned in Wa1.out_bbl and Wa1.out_bin respectively. For Function 2 the first 5 elements in Wa1.out_stname_list contain the Street Names for the intersecting streets at the intersection. When set to space for Functions 1, 1E, 2, 3, and 3c if the Street Names of the list of intersecting streets are needed, then the user must take the street codes from Wa2 and make repeated Function D or DG calls. Other in_browse_flag Sets how Geosupport should normalize your input street names when \u201cblank\u201d the output street name is the normalized version of the input street name When \u201cP\u201d the output street name is the Primary Street Name for the input street When \u201cF\u201d the output street name is the Principal Street Name for the input street When \u201cR\u201d the output street name is the DCP Preferred Street Name for the input street in_real_streets_only When set to \u201cR\u201d Function 3S will return only intersections consisting of \u201creal streets\u201d and not changes in district boundaries or other items in_roadbed_request_switch When set to \u201cR\u201d Function 1 and 1E will return geographic data for the RoadBed street segments instead of for the Generic street segments which is the default","title":"Which Options to Use"},{"location":"appendices/appendix22/#selecting-the-proper-work-area-2","text":"Function Work Area 1 Options Work Area 2 to use in_auxseg_switch in_long_wa2_flag in_mode_switch* in_tpad_switch 1E n/a n/a blank n/a WA2F1E n/a n/a X n/a WA2F1EX 2 n/a n/a n/a n/a WA2F2 2W n/a n/a n/a n/a WA2F2W 3 blank n/a blank n/a WA2F3 blank n/a X n/a WA2F3X Y n/a X n/a WA2F3XAS 3C blank n/a blank n/a WA2F3C Y n/a blank n/a WA2F3CAS blank n/a X n/a WA2F3CX Y n/a X n/a WA2F3CXAS 3S n/a n/a n/a n/a WA2F3S 1B n/a n/a n/a blank WA2F1B n/a n/a n/a Y WA2F1B 1A n/a blank blank blank WA2F1A n/a L blank blank WA2F1AL n/a blank X blank WA2F1AX n/a L X blank n/a n/a blank X Y WA2F1AX n/a L X Y n/a n/a blank blank Y WA2F1A n/a L blank Y WA2F1AL_TPAD BL n/a blank blank blank WA2F1A n/a L blank blank WA2F1AL n/a blank X blank WA2F1AX n/a L X blank n/a n/a blank X Y WA2F1AX n/a L X Y n/a n/a blank blank Y WA2F1A n/a L blank Y WA2F1AL_TPAD BN n/a n/a blank blank WA2F1A n/a n/a X blank WA2F1AX n/a n/a blank Y WA2F1A n/a n/a X Y WA2F1AX AP n/a n/a blank n/a WA2FAP n/a n/a X n/a WA2FAPX We highly recommend that you use the in_mode_switch = \u201cX\u201d option","title":"Selecting the Proper Work Area 2"},{"location":"appendices/appendix22/#list-of-classes-and-overview","text":"The Work Area and their Supporting classes all have the following methods: default constructor constructor that takes a string as a parameter Clear method that reinitializes the data in the class ToString method that converts the data structure to a string FromString method that converts a string into the data structure Display method that creates a string consisting of the data items separated by a dash Display(Char) method that creates a string consisting of the data items separate by \u201cChar\u201d Print method that creates a string with the data field names and the data values of the class Get/Set Properties for the data fields (with the exception of Work Area 1 input fields, these are usually limited to Get only) for the most part the names are self-explanatory","title":"List of Classes and Overview"},{"location":"appendices/appendix22/#classes","text":"Main GeoX Classes Description Geo Main GeoX object GeoConn Contains information needed to connect to an EntireX Broker or a locally running Geosupport Desktop Edition (GDE) GeoConnCollection Contains a list of GeoConn objects GeoConnsException Information relating to an exception involving a GeoConn object Work Area Classes Description Wa1 Input Data, Normalized Input Data, Return Codes Wa2F1 Geographic Information about a Street Segment Wa2F1w Wa2F1 with additional data Wa2F1e Wa2F1 with election district information Wa2F1v Wa2f1e with additional information (same as Wa2f1w with election district information) Wa2F1ex Wa2F1e with additional information and street names for all street codes Wa2F1a Tax Lot Information about an input Address, BBL, or BIN along with a list of alternate addresses associated with the tax lot Wa2F1al Same as Wa2F1a except with a list of BINs associated with the Tax Lot instead of a list of alternate addresses. Wa2F1al_TPAD Same as Wa2F1al with the addition of the TPAD status for each of the BINs in the BIN List Wa2F1ax Wa2F1a with additional information and street names for the alternate addresses for the Tax Lot Wa2F1b Combination of Wa2F1ex and Wa2F1ax for input address Wa2F2 Geographic Information about an Intersection Wa2F2w Same as Wa2F3x with a list of additional Segment IDs for those street segments that have multiple Segment IDs associated with them Wa2F3 Geographic information about an input street segment (consisting of an on-street and two succeeding cross streets for the on-street Wa2F3as Same as Wa2F3 with a list of additional Segment IDs for those street segments that have multiple Segment IDs associated with them Wa2F3x Same as Wa2F3 with additional information and street names for all street codes Wa2F3xas Same as Wa2F3x with a list of additional Segment IDs for those street segments that have multiple Segment IDs associated with them Wa2F3c Same information as Wa2F3 but for one side of the segment only Wa2F3cas Same as Wa2F3c with a list of additional Segment IDs for those street segments that have multiple Segment IDs associated with them Wa2F3cx Same as Wa2F3c with additional information and street names for all street codes Wa2F3cxas Same as Wa2F3x with a list of additional Segment IDs for those street segments that have multiple Segment IDs associated with them Wa2F3s List of Intersection for an input Street Stretch Wa2F5 Returns a properly formatted Geosupport address key for an input address Wa2Fhr Returns the version of Geosupport and the Release Number for the data files Wa2Fap Address Point ID and XY Coordinates for input Address Wa2Fapx Same as Wa2Fap with addition of street name in address list Wa1Aimz Returns a list of Map IDs associated with the Input","title":"Classes"},{"location":"appendices/appendix22/#supporting-classes-for-work-areas","text":"AddrRange AddrRangeX AddrRange_ap AddrRange_apx B10sc B5sc B7sc BBL BIN BusArea ComDist CrossStreetInfo DofMap FileInfo LionKey Sanborn SegSide TPADLongWa2Info VsamKey1","title":"Supporting Classes for Work Areas"},{"location":"appendices/glossary/","text":"Glossary of Term And Acronyms Citations in brackets are references to sections of the UPG where the given term is defined or is principally discussed. Phrases in bold typeface have entries in this glossary. A ADDRESSABLE PLACE NAME [ Chapter III.6 ] : A place name that can be combined with a house number to form an address. (Contrast with non-addressable place names .) Geosupport\u2019s address-processing functions accept addressable place names as input data for the specification of an address. Some Manhattan examples are PENN PLAZA, WASHINGTON SQUARE VILLAGE and NEW YORK PLAZA. ADDRESS / INTERSECTION TO MAP ZONES (AIMZ) [ Chapter I.1 ] : A Geosupport CICS utility transaction that allows the user to enter an address, place name , intersection, tax lot identifier, or Building Identification Number and receive back a screen display of a set of map identifiers corresponding to the input location. The use of AIMZ requires no programming skills and AIMZ is not documented in detail in this UPG . ADDRESS-PROCESSING FUNCTION [Chapter V] : Any of the Geosupport functions that accept the input of addresses. Currently, these are Functions 1, 1A, 1B, 1E and AP. Except for Function AP, address-processing functions also accept non-addressable place names as input data (typically with no input house numbers specified). The address-processing functions are a subset of the location-processing functions . ALIAS [ Chapter IV.2 ] : Two street names (or names of non-street geographic features) are aliases of each other if they are alternative names for the same street (or non-street feature) or any portion(s) thereof, or are spelling variants of the same street (or non-street feature) name. Partial street names are considered spelling variants, and therefore aliases, of the corresponding full street names. The alias relationship is embodied in the assignment of Geosupport street codes : two street names are aliases of each other if and only if they have the same borough-and-five-digit street code . Some examples of aliases in Manhattan: 6 AVENUE, SIXTH AVENUE, and AVENUE OF THE AMERICAS are all aliases of each other. SEVENTH AVENUE, 7 AVENUE, FASHION AVENUE and ADAM C POWELL JR BOULEVARD are all aliases of each other, even though some of these names are valid for differing portions of the street. ALIASES (in GBAT) [ Chapter XI.6 ] : User-defined street name aliases may be used in GBAT applications to supplement the set of street names that Geosupport recognizes. GBAT aliases are typically used to handle a consistent misspelling of a street name. The GBAT aliases are different from the Alia ses described in Chapter IV.2 . AIMZ - see Address / Intersection to Map Zones AP - AP is the name of Function AP and the acronym of Address Point (AP). It is also the acronym for Addressable Place Name (AP) and Atomic Polygon (AP). The acronym\u2019s meaning should be clear by its usage. It is spelled out as needed. API - see Geosupport Application Programming Interface B BACKGROUND COMPONENT [ Chapter I.5 ]: The component of the Geosupport System in which GSS updates and validates geographic base files from which new releases of the foreground component files are periodically generated. The background component software and files are not directly accessed by users. BBL (\u2018Borough/Block/Lot\u2019) [ Chapter VI.2 ]: A unique identifier for a parcel of real property, or tax lot, in New York City. The BBL is a 10-byte item formed by concatenating the one-byte borough code, five-byte tax block number and four-bye tax lot number. The New York City Department of Finance assigns tax block and tax lot numbers. BEND [ Chapter III.6 ]: A pseudo-street name that Geosupport accepts as street name input to specify a bending point of a street. Geosupport treats a point along a street as a bending point if the angle of the street at that point is not within the range 160-200 degrees, that is, if it is not within 20 degrees of a straight line. BILLING BBL [Chapter VI.4]: A special BBL assigned by the Department of Finance to each condominium, to enable identification of the condominium in its entirety as distinct from the condominium\u2019s individual units. BIN - see Building Identification Number BLOCK FACE (a.k.a. BLOCKFACE) [ Chapter VII.3 ] A continuous frontage of a physical city block along one street, encompassing any bending points of the street within that frontage. BUILDING IDENTIFICATION NUMBER (BIN) [ Chapter VI.3 ]: A unique, immutable identifier for each building in New York City. BINs are not to be confused with addresses. BINs are assigned by the Geographic Systems Section (GSS) at the Department of City Planning. C CHARACTER-ONLY WORK AREA (COW) [ Appendix 12 , Appendix 13 and Appendix 14 ]: The Geosupport work areas that have long been in use are called the Mainframe-Specific Work Areas (MSWs). Most of the MSWs contain one or more packed decimal fields, a data encoding schema unique to IBM mainframes. An alternative set of Geosupport work areas was introduced in 2002. It is called the Character-Only Work Areas (COWs) which, as the name implies, contain character fields only. The COW is an essential part of a long-term effort to port the Geosupport System to other platforms. From now on, all new applications should be designed to use the COWs only . We also recommend that all existing applications be converted to use the COWs. See also Glossary entry for Work Areas . CCO - See Corporation Council Opinion CITY LIMIT [ Chapter III.6 ]: A pseudo-street name that Geosupport accepts as street name input to refer to locations on the Bronx-Westchester County border, the Queens-Nassau County border, the New York-New Jersey border, and the Staten Island-New Jersey border. CITYWIDE STREET CENTERLINE GEODATABASE - see CSCL COMPACT FORMAT [ Chapter III.3 ]: A Geosupport format for normalize d geographic feature names. The compact format is suitable for display but not for sorting. Contrast with the sort format , which is suitable for sorting but not for display. COMPLEX [ Chapter III.6 ]: A group of related buildings and/or other geographic features. The name of a complex is a NAP (Non-Addressable Place Name). Examples of complexes include housing projects, university and hospital campuses, cultural complexes (such as Lincoln Center) and airports. Compare to simplex and constituent entity of a complex . CONSTITUENT ENTITY OF A COMPLEX [ Chapter III.6 ]: An individual building or other geographically identifiable feature that is part of a complex . Examples are the buildings in Lincoln Center and in Stuyvesant Town. COPY LIBRARY, COPY FILES [ Chapter VIII.4 ]: Many programming languages have a facility for accessing external files of source code called COPY files during application program compilation. COPY files reside in a partitioned data set (PDS) called a COPY library. The Geosupport System has COPY libraries containing source code layouts of the work areas in Assembler, PL/1, COBOL, C and NATURAL. The use of the Geosupport COPY libraries by application developers is optional but is strongly recommended. CORPORATION COUNCIL OPINION (CCO) [Appendix A3]: A Corporation Council Opinion (CCO) is a geographic feature type. A CCO is an opinion by the City\u2019s Law Department that a street area, not owned by the City, (e.g. a portion of a private street) has been dedicated for public use, consistent with the requirements of General City Law, Section 36(2). That allows the City to use public funds for various improvements and services, including paving of the roadway and installing sewers. The request usually relates to planned work by the City\u2019s Department of Transportation, Department of Design and Construction, and Department of Environmental Protection. COW - See Character-Only Work Area CSC - See Computer Service Center CSCL (\u2018NYC Citywide Street Centerline File\u2019): An object-oriented database describing the features (streets, and non-street features) in NYC. D DAPS - see Duplicate Address Pseudo-Street Name DEAD END [ Chapter III.6 ]: A pseudo-street name that Geosupport accepts as street name input to refer to a termination point of a street at which there are no cross streets. DEPARTMENT OF INFORMATION TECHNOLOGY AND TELECOMMUNICATIONS (DoITT): An agency of the City of New York responsible for city government-wide information technology infrastructure support. DoITT operates the Computer Service Center. DISPLAY FUNCTION [ Chapters IV.6 and V.2 ]: Any of the Geosupport functions that provide data items that can be used to display geographic locations on application screens, reports, mailing labels etc. Specifically, the display functions provide street names corresponding to input street codes , and provide house numbers in HND format corresponding to input house numbers in HNI (MSW) or HNS (COW) format. Note that the display function s do not actually display anything themselves; they merely provide data items that are suitable for an application to display. Currently, the display function s are Functions D, DG and DN. DoITT - see Department of Information Technology and Telecommunications DRIVER, GEOSUPPORT [ Chapter II.1 ]: A Geosupport load module that serves as an interface enabling application programs to access Geosupport via API calls. There are two different drivers, one for batch applications and one for CICS applications. Application developers must link-edit the appropriate driver into the application program. DSNY - The City of New York Department of Sanitation DUPLICATE ADDRESS PSEUDO-STREET NAME (DAPS) [ Chapter V.6 ]: A pseudo-street name accepted as street name input by Geosupport in duplicate address situations. DAPSs enable applications to specify which instance of a duplicated address the application wishes to process. As an example, Hillside Avenue exists in both the Bellerose section and the Douglaston section of Queens. To allow the user to refer to Hillside Avenue in a duplicate address situation two pseudo-street names are accepted by Geosupport, namely HILLSIDE AVENUE BELLEROSE and HILLSIDE AVENUE DOUGLASTON. As an alternative to a DAPS, for Functions 1, 1A, 1B, and 1E, the user may enter the conventional street name and the ZIP code which identifies the section of the borough, e.g. .ZIP Code 11426 for Bellerose and 11363 for Douglaston. F FOREGROUND COMPONENT [ Chapter I.5 ]: The component of the Geosupport System that is directly accessed by a user application via the API . The foreground component includes both software and files. FREE-FORM ADDRESS [ Chapter V.3 ]: An address expressed with the house number and street name stored together in a single field. (Compare with parsed-form address .) Geosupport can process free-form addresses in which the house number and street name are passed together in the WA1 input street name field (and no value is passed in the separate WA1 input house number field). FRONT-TRUNCATED STREET NAME [ Chapter III.5 (E)]: In the borough of Bronx or Manhattan only, a front-truncated street name is one that can be transformed to a valid street name by adding the word EAST or WEST to the front of the street name, for example 14 STREET is a front-truncated street name for EAST 14 STREET and WEST 14 STREET. Additional criteria are described in Section III.5(E). FUNCTION [ Chapters I.2 , I.4 ]: The Geosupport System is organized into more than a dozen distinct functions that can be accessed by the user. Each function is identified by a one- or two-character function code. G GBAT - See Geosupport Batch Address Translator GEOCODE [ Chapter I.2 ]: The process of associating higher-level geographic information, such as the police precinct, ZIP code or census tract, with a specific geographic location, such as an address or street intersection. Geocoding is one of the Geosupport System\u2019s most important services. GEOGRAPHIC ONLINE ADDRESS TRANSLATOR (GOAT) [ Chapter I.1 ]: The Geosupport System\u2019s principal CICS utility transaction. GOAT is an inquiry transaction that allows the user to request any Geosupport function , enter input data and receive back a formatted screen display of the corresponding output information provided by that function . The use of GOAT requires no programming skills and it is not documented in detail in this UPG . (The GOAT utility was previously known as the Geosupport Online Address Translator (GOAT)). GEOGRAPHIC RETRIEVAL CONSISTENCY [ Chapter I.3 ]: Retrieval of information by geographic location in a manner that is independent of how the location is specified. The ability of an application to retrieve data consistently by geographic location from the application\u2019s own files is a critical design issue for many applications. One important means of implementing geographic retrieval consistency in an application is to use B5SCs (see the entry for alias ) instead of street names in the retrieval key. GEOSUPPORT APPLICATION PROGRAMMING INTERFACE (API) [ Chapter II.1 ]: The Geosupport facility that enables user-written application programs to interact with Geosupport via standardized program calls. The API involves the use of a Geosupport driver module and Geosupport work areas . GEOSUPPORT BATCH ADDRESS TRANSLATOR (GBAT) [ Chapter XI.1 ]: The Geosupport System\u2019s batch utility program. GEOSUPPORT ONLINE ADDRESS TRANSLATOR (GOAT)- see Geographic Online Address Translator(GOAT). GEOSUPPORT RETURN CODE (GRC) [ Chapter II.2 ]: A two-byte code that is returned in WA1 upon completion of every API call to Geosupport, indicating to the calling application the outcome of the call. (Not to be confused with operating system return codes or condition codes.) A GRC value of \u201800\u2019 signifies an unconditionally successful call. A GRC value of \u201801\u2019 signifies a warning . A GRC value of other than \u201800\u2019 or \u201801\u2019 signifies a reject . See also the Glossary entries for Reason Code and Message . See Appendix 4 for a comprehensive list of GRCs, Reason Codes and Messages . GEOSUPPORT SYSTEM ADMINISTRATOR [ Chapter I.1 ]: A designated staff member (generally a systems programmer) of a computer center where Geosupport is installed on a mainframe, responsible for installing new Geosupport file releases and software versions, and for trouble-shooting system-related Geosupport problems. Note: the Geosupport System Administrator is not necessarily responsible for providing application-related support to users. GOAT - see Geographic Online Address Translator GRC - See Geosupport Return Code GSS [ Chapter I.1 ]: The Geographic Systems Section of the City of New York Department of City Planning\u2019s Information Technology Division. GSS is the developer and custodian of the Geosupport System. H HND - See House Number in Display Format HNI - See House Number in Internal Format HNS - See House Number in Sort Format HOUSE NUMBER IN DISPLAY FORMAT (HND) [ Chapter V.2 ]: One of Geosupport\u2019s three output normalized house number formats. The HND is a format suitable for applications to use for display on screens, reports and mailing labels. HOUSE NUMBER IN INTERNAL FORMAT (HNI) [ Chapter V.2 ]: One of Geosupport\u2019s three output normalized house number formats. The HNI is not suitable for display, because it is partly in packed decimal form, and it contains a code representing the house number suffix (if any) rather than the suffix itself. The HNI is used internally in the Geosupport System, and it is not of direct significance to most applications. HNI is valid in MSW only. HOUSE NUMBER IN SORT FORMAT (HNS) [ Chapter V.2 ]: One of Geosupport\u2019s three output normalized house number formats. The HNS is not suitable for display, because it has an internal format and contains a code representing the house number suffix (if any) rather than the suffix itself. The HNS is used internally in the Geosupport System, and it is not of direct significance to most applications. HNS is valid in COW only. HPD - Department of Housing Preservation and Development I ID-PROCESSING FUNCTION [ Chapter I.4 ]: Any location-processing function that processes identification codes. Currently, the ID-processing functions are Function BL, which processes tax lots specified by an input BBL ; Function BN, which processes buildings specified by an input BIN ; and COW Function 2 which can process an intersection specified by a Node ID . INPUT FIELD (IN A WORK AREA) [ Chapter II.3 ]: A field into which the user application inserts a value to be passed to Geosupport. See also output field, WA1 and WA2 . WA1 has both input and output fields. WA2 has output fields only. L LDF - see LION Differences File LGC - See Local Group Code LION DIFFERENCES FILE (LDF): The LION Differences File (LDF) is a sequential file containing records documenting certain types of changes that have occurred between a particular release of LION and the immediately previous LION release. A new LDF \u2018edition\u2019 is \u2018published\u2019 in conjunction with each new production release of LION. The changes documented in the LDF relate to node changes and segment changes. LION FILE [ Chapter VII.1 ]: A predecessor to CSCL, LION is a background component file that is a digital map of New York City. LION contains a single-line representation of the city\u2019s streets and city limits. Geosupport\u2019s street configuration processing is based on that representation. LOCAL GROUP CODE (LGC) [ Chapter IV.5 ]: The LGC consists of the sixth and seventh digits of the ten-digit street code. The LGC corresponds to a set of locally valid street names for the given street. LOCALLY VALID STREET NAME [ Chapter IV.5 ]: A name of a street that is valid for a particular portion (possibly all) of the street. The set of street names that are valid for the same portion of a street constitute a \u2018local group\u2019 and share the same LGC value. LOCATION-PROCESSING FUNCTION: Any of the Geosupport function s that accept the input of a geographic location. These can be sub-classified into the address-processing functions (Functions 1, 1A and 1E); the street-configuration-processing functions (Functions 2, 3, 3C and 3S); and the ID-processing functions (Functions 2, BL and BN). M MAINFRAME-SPECIFIC WORK AREA (MSW (a.k.a. MFS)) - See Character-Only Work Area MESSAGE [ Chapter II.2 ]: A WA1 output item returned for all warnings and rejects , consisting of an appropriate explanatory text message. See Appendix 4 for a comprehensive list of GRC s, Reason Codes and Messages . MFS - See MSW MSW - See Mainframe-Specific Work Area N NAP - See Non-addressable Place Name NAUB - See Non-addressable Un-named Building NMF - See Non-Mainframe Environment NODE [ Chapter VII.2 ]: Either a conventional intersection of a street with another street, or a pseudo-intersection of a street with a pseudo-street or where there is a change in a significant geocode such as zip code or a Police Beat.. NODE ID [ Chapter VII.2 ]: A unique identifier associated with each node in the Geosupport sytem. The Node ID is sometimes referred to as the Node Number. NON-ADDRESSABLE PLACE NAME (NAP) [ Chapter III.6 ]: A place name that is typically not combined with a house number to form an address. Examples: CITY HALL, EMPIRE STATE BUILDING, PLAZA HOTEL, LINCOLN CENTER, LA GUARDIA AIRPORT. A NAP can either be the name of a simplex , a complex , or a constituent entity of a complex . Geosupport\u2019s address-processing functions accept many NAPs as input data NON-ADDRESSABLE UN-NAMED BUILDING (NAUB) [ Chapter VI.3 ]: A building that has neither addresses nor NAP s, and can only be identified by its BIN . Typical example is a storage shed on the grounds of an industrial property. NON-MAINFRAME ENVIRONMENT (NMF): The Geosupport System runs in many non-mainframe environments, e.g. Desktop Edition, GeoX, .net, and Linux. NORMALIZE [ Chapter III.2 for street names, Chapter V.2 for house numbers]: To produce a version of a data item in a standardized format. Geosupport normalizes every input geographic feature name into one of two formats selected by the user application, called the compact format and the sort format . Geosupport also normalizes every input house number. Geosupport returns output normalized names and house numbers to the calling application in WA1 . O OUT-OF-SEQUENCE ADDRESS [ Chapter V.10 ]: An address such that the house number is out of sequence relative to nearby house numbers along the given street. For an input out-of-sequence address, the output information that Functions 1 and 1E return is based on the street segment where the out-of-sequence address is actually located, including the cross streets and geographic district identifiers. The Spatial Coordinates returned are those of a point calculated under the assumption that the building entrance is located at the midpoint of the blockface. A warning is issued for any address on a blockface containing an out-of-sequence address. OUTPUT FIELD (IN A WORK AREA) [ Chapter II.3 ]: A field into which Geosupport inserts a value to be returned to the calling user application. See also input field, WA1 and WA2 . WA1 has both input and output fields. WA2 has output fields only. P PARSED-FORM ADDRESS [ Chapter V.3 ]: An address that is expressed with the house number and street (name or code) stored in separate fields. (Compare to free-form address .) PARTIAL STREET NAME [ Chapter III.4 ]: A street name formed from a full normalized street name by deleting one or more entire words from the end of the full street name. For example, in Manhattan, READE is a partial street name for READE STREET. Geosupport accepts a partial street name as an input street name when the partial street name unambiguously represents a unique full street name in the specified input borough. Additional criteria are described in Chapter III.4 . PLACE NAME [ Chapter III.6 ]: A name of a geographic feature other than a street name or a pseudo-street name . Examples of place names are the names of building complexes (such as university campuses, housing projects, hospital campuses etc.), individual named buildings (such as CITY HALL, EMPIRE STATE BUILDING, museums, hotels, theaters, stadiums etc.), parks, islands, airports etc. Geosupport recognizes some New York City place names, and more are being added over time. There are several types of place names; see Glossary entries for Addressable Place Name, Non-Addressable Place Name, Simplex, Complex and Constituent Entity of a Complex . PREFERRED STREET NAME [ Chapter IV.5 ]: If more than one local group of street names is valid at a particular location along a street, GSS designates one of them as the \u2018preferred\u2019 local group for that location. The preferred street name is the principal street name of the preferred local group. PRIMARY STREET NAME [ Chapter IV.3 ]: For every street in NYC, that is, for every valid B5SC value, GSS designates one spelling of one name of the street as the primary street name. Function D can be used to obtain the primary street name for a given B5SC value. PRIMING WA1 [ Chapter II.3 ]: The part of the API procedure in which the calling application program inserts values into WA1 input fields in preparation for issuing a call to the driver . Priming WA1 is how an application requests the function to be performed, passes the input geographic data (such as an address) to be processed, and specifies processing options. PRINCIPAL STREET NAME OF LOCAL GROUP [ Chapter IV.5 ]: The street name that GSS has designated as the \u2018best\u2019 representative from among all the names in a local group. Function DG can be used to obtain the principal street name for a given B7SC value. PSEUDO-ADDRESS [ Chapter VI.5 ]: An address unofficially assigned by GSS to a street frontage of a tax lot that has no \u2018real\u2019 building addresses, such as a driveway. Function 1A accepts pseudo-addresses as input. PSEUDO-INTERSECTION [ Chapter VII.2 ]: A point along a street specified in terms of a pseudo-street name, i.e., a bend, a dead end or a city limit point. PSEUDO-STREET NAME [ Chapter III.6 ]: An \u2018unofficial\u2019 street name that Geosupport accepts as street name input for certain geographic situations. DAPS s are pseudo-street names that the address-processing functions accept as input only for the city\u2019s very few cases of duplicate addresses (see Chapter V.6 ). DEAD END, CITY LIMIT, BEND and their aliases are pseudo-street names accepted as input by the functions that process street configurations (see Chapter VII ). R REASON CODE [ Chapter II.2 ]: A one-byte output WA1 item that qualifies the reason for a warning or rejection with greater specificity than does the GRC alone. Non-blank reason codes are returned for all warnings and for selected rejects . See Appendix 4 for a comprehensive list of GRC s, Reason Codes and Messages . REJECT, REJECTION [ Chapter II.2 ]: An unsuccessful outcome of an API call to Geosupport, indicated by a GRC value other than \u201800\u2019 or \u201801\u2019, accompanied by an appropriate Message , and for selected rejects, by a Reason Code . RELEASE (OF GEOSUPPORT FOREGROUND FILES) [ Chapter I.5 ]: Geosupport\u2019s foreground component files are read-only files, and are periodically replaced by updated files. Every foreground file is identified as belonging to a specific Geosupport release. RESYNCHRONIZATION OF STREET CODES [ Chapter IV.4 ]: The updating of Geosupport street codes stored in a user application file to reflect street code assignment changes made in a Geosupport release . ROADBED [ Chapter V.5 ]: A roadbed is a street segment that is bounded on both sides by a physical separator such as a sidewalk, median barrier or median strip. Street segments that have painted medians separating travel direction do not form multiple roadbeds. Well-known examples of streets with multiple roadbeds include Park Avenue in Manhattan, Queens Blvd in Queens and Ocean Parkway in Brooklyn. S SIMILAR NAME [ Chapter III.5 ]: When an input street name is rejected, Geosupport returns a list of up to ten \u2018similar names\u2019 in WA1 , as an aid to the application in handling the reject . A \u2018similar name\u2019 is a valid full street name from the specified input borough that Geosupport, in accordance with certain criteria, deems to be similar to the rejected input street name. SIMPLEX [ Chapter III.6 ]: A \u2018stand-alone\u2019 named geographic feature, that is, a feature that has a NAP and that is not a complex or a constituent entity of a complex. Examples: Empire State Building, Plaza Hotel, Gramercy Park. SNC - See Street Name Code SNL - See Street Name Normalization Length Limit SORT FORMAT [ Chapter III.3 ]: A Geosupport format for normalize d geographic feature names. The sort format is suitable for sorting but not for display. Contrast with the compact format , which is suitable for display but not for sorting. STREET CODE [ Chapter IV ]: In the Geosupport System, a set of numeric street codes is assigned to represent the city\u2019s street names and other geographic feature names. A borough code combined with a ten-digit street code, or B10SC, corresponds to a specific spelling of a specific street name in the given borough. Portions of the B10SC also have special significance. In particular, the first six bytes of the B10SC, the borough-and-five-digit street code (B5SC), encodes the alias relationship between street names. STREET CONFIGURATION [ Chapter VII.1 ]: A geographic location specified in terms of a combination of two or three streets. Street configurations include intersections, street segments, blockfaces and street stretches. STREET-CONFIGURATION-PROCESSING FUNCTION [ Chapter VII ]: Any of the Geosupport location-processing functions that process street configurations . Currently, these are Function 2, which processes street intersections; Function 3, which processes street segments; Function 3C, which processes blockfaces ; and Function 3S, which processes street stretches. STREET NAME CODE (SNC): The final three digits of the B10SC (Borough and Ten-digit Street Code ) are called the Street Name Code (SNC). Thus, the B10SC consists of the concatenation of the borough code, 5SC, LGC and SNC. The SNC serves simply to serialize the street names within a local group, so that the full B10SC is unique to a specific spelling of a specific street name. STREET NAME NORMALIZATION LENGTH LIMIT (SNL) [ Chapter III.2 ]: A user-specifiable parameter that sets the maximum length in bytes within which Geosupport normalizes input street names. The default value is 32. U UPG - See User Programming Guide USER PROGRAMMING GUIDE (UPG) [ Chapter I.6 ]: This document. VANITY ADDRESS [ Chapters V.9 ]: An address such that the street name refers to a different street than the one on which the referenced building entrance is actually located. For an input vanity address, the output information that Functions 1 and 1E return is based on the street segment where the vanity address is actually located, including the cross streets, geographic district identifiers and spatial coordinates. The source for the Spatial Coordinates (a.k.a. X-Y coordinates) returned for Vanity Addresses (and NAPs) is the Citywide Street Centerline file (CSCL) . The CSCL information guarantees that the X-Y coordinates fall within the actual location (e.g. building footprint) of the Vanity Address. A warning is issued accordingly. The output information that Function 1A returns is based on the building associated with the vanity address. No warning is issued for Function 1A. V VERSION (OF GEOSUPPORT FOREGROUND SOFTWARE) [ Chapter I.5 ]: Self-explanatory. Contrast use of the term \u2018version\u2019 for Geosupport software and \u2018release\u2019 for Geosupport data files. VESTIGIAL FEATURE [ Chapter I.5 ]: An element of the Geosupport System, such as a function , a work area , a data item or a JCL statement, that is obsolete and has been superseded by an enhancement. Vestigial features may continue to be operational but should not be used in new applications, and should be eliminated from existing ones. W WARNING [ Chapter II.2 ]: A conditionally successful completion of an API call to Geosupport. A warning is signified by a GRC value of \u201801\u2019 and an accompanying Reason Code and Message . In most cases, it is appropriate for applications to treat warnings in the same way as successful completions. It is sound practice, however, to examine the Reason Codes and Messages. WA1, WA2 - See Work Areas WORK AREAS [ Chapter II.1 ]: Standard-layout blocks of data in memory that are shared between Geosupport and an application. The Geosupport work areas are an essential component of the Geosupport API , and constitute the sole means by which information passes between the application and Geosupport. Different Geosupport functions use different work area layouts. API calls can involve the passing of either one work area, called Work Area 1 (WA1) , or two work areas, WA1 and Work Area 2 (WA2) .","title":"Glossary of Terms And Acronyms"},{"location":"appendices/glossary/#a","text":"ADDRESSABLE PLACE NAME [ Chapter III.6 ] : A place name that can be combined with a house number to form an address. (Contrast with non-addressable place names .) Geosupport\u2019s address-processing functions accept addressable place names as input data for the specification of an address. Some Manhattan examples are PENN PLAZA, WASHINGTON SQUARE VILLAGE and NEW YORK PLAZA. ADDRESS / INTERSECTION TO MAP ZONES (AIMZ) [ Chapter I.1 ] : A Geosupport CICS utility transaction that allows the user to enter an address, place name , intersection, tax lot identifier, or Building Identification Number and receive back a screen display of a set of map identifiers corresponding to the input location. The use of AIMZ requires no programming skills and AIMZ is not documented in detail in this UPG . ADDRESS-PROCESSING FUNCTION [Chapter V] : Any of the Geosupport functions that accept the input of addresses. Currently, these are Functions 1, 1A, 1B, 1E and AP. Except for Function AP, address-processing functions also accept non-addressable place names as input data (typically with no input house numbers specified). The address-processing functions are a subset of the location-processing functions . ALIAS [ Chapter IV.2 ] : Two street names (or names of non-street geographic features) are aliases of each other if they are alternative names for the same street (or non-street feature) or any portion(s) thereof, or are spelling variants of the same street (or non-street feature) name. Partial street names are considered spelling variants, and therefore aliases, of the corresponding full street names. The alias relationship is embodied in the assignment of Geosupport street codes : two street names are aliases of each other if and only if they have the same borough-and-five-digit street code . Some examples of aliases in Manhattan: 6 AVENUE, SIXTH AVENUE, and AVENUE OF THE AMERICAS are all aliases of each other. SEVENTH AVENUE, 7 AVENUE, FASHION AVENUE and ADAM C POWELL JR BOULEVARD are all aliases of each other, even though some of these names are valid for differing portions of the street. ALIASES (in GBAT) [ Chapter XI.6 ] : User-defined street name aliases may be used in GBAT applications to supplement the set of street names that Geosupport recognizes. GBAT aliases are typically used to handle a consistent misspelling of a street name. The GBAT aliases are different from the Alia ses described in Chapter IV.2 . AIMZ - see Address / Intersection to Map Zones AP - AP is the name of Function AP and the acronym of Address Point (AP). It is also the acronym for Addressable Place Name (AP) and Atomic Polygon (AP). The acronym\u2019s meaning should be clear by its usage. It is spelled out as needed. API - see Geosupport Application Programming Interface","title":"A"},{"location":"appendices/glossary/#b","text":"BACKGROUND COMPONENT [ Chapter I.5 ]: The component of the Geosupport System in which GSS updates and validates geographic base files from which new releases of the foreground component files are periodically generated. The background component software and files are not directly accessed by users. BBL (\u2018Borough/Block/Lot\u2019) [ Chapter VI.2 ]: A unique identifier for a parcel of real property, or tax lot, in New York City. The BBL is a 10-byte item formed by concatenating the one-byte borough code, five-byte tax block number and four-bye tax lot number. The New York City Department of Finance assigns tax block and tax lot numbers. BEND [ Chapter III.6 ]: A pseudo-street name that Geosupport accepts as street name input to specify a bending point of a street. Geosupport treats a point along a street as a bending point if the angle of the street at that point is not within the range 160-200 degrees, that is, if it is not within 20 degrees of a straight line. BILLING BBL [Chapter VI.4]: A special BBL assigned by the Department of Finance to each condominium, to enable identification of the condominium in its entirety as distinct from the condominium\u2019s individual units. BIN - see Building Identification Number BLOCK FACE (a.k.a. BLOCKFACE) [ Chapter VII.3 ] A continuous frontage of a physical city block along one street, encompassing any bending points of the street within that frontage. BUILDING IDENTIFICATION NUMBER (BIN) [ Chapter VI.3 ]: A unique, immutable identifier for each building in New York City. BINs are not to be confused with addresses. BINs are assigned by the Geographic Systems Section (GSS) at the Department of City Planning.","title":"B"},{"location":"appendices/glossary/#c","text":"CHARACTER-ONLY WORK AREA (COW) [ Appendix 12 , Appendix 13 and Appendix 14 ]: The Geosupport work areas that have long been in use are called the Mainframe-Specific Work Areas (MSWs). Most of the MSWs contain one or more packed decimal fields, a data encoding schema unique to IBM mainframes. An alternative set of Geosupport work areas was introduced in 2002. It is called the Character-Only Work Areas (COWs) which, as the name implies, contain character fields only. The COW is an essential part of a long-term effort to port the Geosupport System to other platforms. From now on, all new applications should be designed to use the COWs only . We also recommend that all existing applications be converted to use the COWs. See also Glossary entry for Work Areas . CCO - See Corporation Council Opinion CITY LIMIT [ Chapter III.6 ]: A pseudo-street name that Geosupport accepts as street name input to refer to locations on the Bronx-Westchester County border, the Queens-Nassau County border, the New York-New Jersey border, and the Staten Island-New Jersey border. CITYWIDE STREET CENTERLINE GEODATABASE - see CSCL COMPACT FORMAT [ Chapter III.3 ]: A Geosupport format for normalize d geographic feature names. The compact format is suitable for display but not for sorting. Contrast with the sort format , which is suitable for sorting but not for display. COMPLEX [ Chapter III.6 ]: A group of related buildings and/or other geographic features. The name of a complex is a NAP (Non-Addressable Place Name). Examples of complexes include housing projects, university and hospital campuses, cultural complexes (such as Lincoln Center) and airports. Compare to simplex and constituent entity of a complex . CONSTITUENT ENTITY OF A COMPLEX [ Chapter III.6 ]: An individual building or other geographically identifiable feature that is part of a complex . Examples are the buildings in Lincoln Center and in Stuyvesant Town. COPY LIBRARY, COPY FILES [ Chapter VIII.4 ]: Many programming languages have a facility for accessing external files of source code called COPY files during application program compilation. COPY files reside in a partitioned data set (PDS) called a COPY library. The Geosupport System has COPY libraries containing source code layouts of the work areas in Assembler, PL/1, COBOL, C and NATURAL. The use of the Geosupport COPY libraries by application developers is optional but is strongly recommended. CORPORATION COUNCIL OPINION (CCO) [Appendix A3]: A Corporation Council Opinion (CCO) is a geographic feature type. A CCO is an opinion by the City\u2019s Law Department that a street area, not owned by the City, (e.g. a portion of a private street) has been dedicated for public use, consistent with the requirements of General City Law, Section 36(2). That allows the City to use public funds for various improvements and services, including paving of the roadway and installing sewers. The request usually relates to planned work by the City\u2019s Department of Transportation, Department of Design and Construction, and Department of Environmental Protection. COW - See Character-Only Work Area CSC - See Computer Service Center CSCL (\u2018NYC Citywide Street Centerline File\u2019): An object-oriented database describing the features (streets, and non-street features) in NYC.","title":"C"},{"location":"appendices/glossary/#d","text":"DAPS - see Duplicate Address Pseudo-Street Name DEAD END [ Chapter III.6 ]: A pseudo-street name that Geosupport accepts as street name input to refer to a termination point of a street at which there are no cross streets. DEPARTMENT OF INFORMATION TECHNOLOGY AND TELECOMMUNICATIONS (DoITT): An agency of the City of New York responsible for city government-wide information technology infrastructure support. DoITT operates the Computer Service Center. DISPLAY FUNCTION [ Chapters IV.6 and V.2 ]: Any of the Geosupport functions that provide data items that can be used to display geographic locations on application screens, reports, mailing labels etc. Specifically, the display functions provide street names corresponding to input street codes , and provide house numbers in HND format corresponding to input house numbers in HNI (MSW) or HNS (COW) format. Note that the display function s do not actually display anything themselves; they merely provide data items that are suitable for an application to display. Currently, the display function s are Functions D, DG and DN. DoITT - see Department of Information Technology and Telecommunications DRIVER, GEOSUPPORT [ Chapter II.1 ]: A Geosupport load module that serves as an interface enabling application programs to access Geosupport via API calls. There are two different drivers, one for batch applications and one for CICS applications. Application developers must link-edit the appropriate driver into the application program. DSNY - The City of New York Department of Sanitation DUPLICATE ADDRESS PSEUDO-STREET NAME (DAPS) [ Chapter V.6 ]: A pseudo-street name accepted as street name input by Geosupport in duplicate address situations. DAPSs enable applications to specify which instance of a duplicated address the application wishes to process. As an example, Hillside Avenue exists in both the Bellerose section and the Douglaston section of Queens. To allow the user to refer to Hillside Avenue in a duplicate address situation two pseudo-street names are accepted by Geosupport, namely HILLSIDE AVENUE BELLEROSE and HILLSIDE AVENUE DOUGLASTON. As an alternative to a DAPS, for Functions 1, 1A, 1B, and 1E, the user may enter the conventional street name and the ZIP code which identifies the section of the borough, e.g. .ZIP Code 11426 for Bellerose and 11363 for Douglaston.","title":"D"},{"location":"appendices/glossary/#f","text":"FOREGROUND COMPONENT [ Chapter I.5 ]: The component of the Geosupport System that is directly accessed by a user application via the API . The foreground component includes both software and files. FREE-FORM ADDRESS [ Chapter V.3 ]: An address expressed with the house number and street name stored together in a single field. (Compare with parsed-form address .) Geosupport can process free-form addresses in which the house number and street name are passed together in the WA1 input street name field (and no value is passed in the separate WA1 input house number field). FRONT-TRUNCATED STREET NAME [ Chapter III.5 (E)]: In the borough of Bronx or Manhattan only, a front-truncated street name is one that can be transformed to a valid street name by adding the word EAST or WEST to the front of the street name, for example 14 STREET is a front-truncated street name for EAST 14 STREET and WEST 14 STREET. Additional criteria are described in Section III.5(E). FUNCTION [ Chapters I.2 , I.4 ]: The Geosupport System is organized into more than a dozen distinct functions that can be accessed by the user. Each function is identified by a one- or two-character function code.","title":"F"},{"location":"appendices/glossary/#g","text":"GBAT - See Geosupport Batch Address Translator GEOCODE [ Chapter I.2 ]: The process of associating higher-level geographic information, such as the police precinct, ZIP code or census tract, with a specific geographic location, such as an address or street intersection. Geocoding is one of the Geosupport System\u2019s most important services. GEOGRAPHIC ONLINE ADDRESS TRANSLATOR (GOAT) [ Chapter I.1 ]: The Geosupport System\u2019s principal CICS utility transaction. GOAT is an inquiry transaction that allows the user to request any Geosupport function , enter input data and receive back a formatted screen display of the corresponding output information provided by that function . The use of GOAT requires no programming skills and it is not documented in detail in this UPG . (The GOAT utility was previously known as the Geosupport Online Address Translator (GOAT)). GEOGRAPHIC RETRIEVAL CONSISTENCY [ Chapter I.3 ]: Retrieval of information by geographic location in a manner that is independent of how the location is specified. The ability of an application to retrieve data consistently by geographic location from the application\u2019s own files is a critical design issue for many applications. One important means of implementing geographic retrieval consistency in an application is to use B5SCs (see the entry for alias ) instead of street names in the retrieval key. GEOSUPPORT APPLICATION PROGRAMMING INTERFACE (API) [ Chapter II.1 ]: The Geosupport facility that enables user-written application programs to interact with Geosupport via standardized program calls. The API involves the use of a Geosupport driver module and Geosupport work areas . GEOSUPPORT BATCH ADDRESS TRANSLATOR (GBAT) [ Chapter XI.1 ]: The Geosupport System\u2019s batch utility program. GEOSUPPORT ONLINE ADDRESS TRANSLATOR (GOAT)- see Geographic Online Address Translator(GOAT). GEOSUPPORT RETURN CODE (GRC) [ Chapter II.2 ]: A two-byte code that is returned in WA1 upon completion of every API call to Geosupport, indicating to the calling application the outcome of the call. (Not to be confused with operating system return codes or condition codes.) A GRC value of \u201800\u2019 signifies an unconditionally successful call. A GRC value of \u201801\u2019 signifies a warning . A GRC value of other than \u201800\u2019 or \u201801\u2019 signifies a reject . See also the Glossary entries for Reason Code and Message . See Appendix 4 for a comprehensive list of GRCs, Reason Codes and Messages . GEOSUPPORT SYSTEM ADMINISTRATOR [ Chapter I.1 ]: A designated staff member (generally a systems programmer) of a computer center where Geosupport is installed on a mainframe, responsible for installing new Geosupport file releases and software versions, and for trouble-shooting system-related Geosupport problems. Note: the Geosupport System Administrator is not necessarily responsible for providing application-related support to users. GOAT - see Geographic Online Address Translator GRC - See Geosupport Return Code GSS [ Chapter I.1 ]: The Geographic Systems Section of the City of New York Department of City Planning\u2019s Information Technology Division. GSS is the developer and custodian of the Geosupport System.","title":"G"},{"location":"appendices/glossary/#h","text":"HND - See House Number in Display Format HNI - See House Number in Internal Format HNS - See House Number in Sort Format HOUSE NUMBER IN DISPLAY FORMAT (HND) [ Chapter V.2 ]: One of Geosupport\u2019s three output normalized house number formats. The HND is a format suitable for applications to use for display on screens, reports and mailing labels. HOUSE NUMBER IN INTERNAL FORMAT (HNI) [ Chapter V.2 ]: One of Geosupport\u2019s three output normalized house number formats. The HNI is not suitable for display, because it is partly in packed decimal form, and it contains a code representing the house number suffix (if any) rather than the suffix itself. The HNI is used internally in the Geosupport System, and it is not of direct significance to most applications. HNI is valid in MSW only. HOUSE NUMBER IN SORT FORMAT (HNS) [ Chapter V.2 ]: One of Geosupport\u2019s three output normalized house number formats. The HNS is not suitable for display, because it has an internal format and contains a code representing the house number suffix (if any) rather than the suffix itself. The HNS is used internally in the Geosupport System, and it is not of direct significance to most applications. HNS is valid in COW only. HPD - Department of Housing Preservation and Development","title":"H"},{"location":"appendices/glossary/#i","text":"ID-PROCESSING FUNCTION [ Chapter I.4 ]: Any location-processing function that processes identification codes. Currently, the ID-processing functions are Function BL, which processes tax lots specified by an input BBL ; Function BN, which processes buildings specified by an input BIN ; and COW Function 2 which can process an intersection specified by a Node ID . INPUT FIELD (IN A WORK AREA) [ Chapter II.3 ]: A field into which the user application inserts a value to be passed to Geosupport. See also output field, WA1 and WA2 . WA1 has both input and output fields. WA2 has output fields only.","title":"I"},{"location":"appendices/glossary/#l","text":"LDF - see LION Differences File LGC - See Local Group Code LION DIFFERENCES FILE (LDF): The LION Differences File (LDF) is a sequential file containing records documenting certain types of changes that have occurred between a particular release of LION and the immediately previous LION release. A new LDF \u2018edition\u2019 is \u2018published\u2019 in conjunction with each new production release of LION. The changes documented in the LDF relate to node changes and segment changes. LION FILE [ Chapter VII.1 ]: A predecessor to CSCL, LION is a background component file that is a digital map of New York City. LION contains a single-line representation of the city\u2019s streets and city limits. Geosupport\u2019s street configuration processing is based on that representation. LOCAL GROUP CODE (LGC) [ Chapter IV.5 ]: The LGC consists of the sixth and seventh digits of the ten-digit street code. The LGC corresponds to a set of locally valid street names for the given street. LOCALLY VALID STREET NAME [ Chapter IV.5 ]: A name of a street that is valid for a particular portion (possibly all) of the street. The set of street names that are valid for the same portion of a street constitute a \u2018local group\u2019 and share the same LGC value. LOCATION-PROCESSING FUNCTION: Any of the Geosupport function s that accept the input of a geographic location. These can be sub-classified into the address-processing functions (Functions 1, 1A and 1E); the street-configuration-processing functions (Functions 2, 3, 3C and 3S); and the ID-processing functions (Functions 2, BL and BN).","title":"L"},{"location":"appendices/glossary/#m","text":"MAINFRAME-SPECIFIC WORK AREA (MSW (a.k.a. MFS)) - See Character-Only Work Area MESSAGE [ Chapter II.2 ]: A WA1 output item returned for all warnings and rejects , consisting of an appropriate explanatory text message. See Appendix 4 for a comprehensive list of GRC s, Reason Codes and Messages . MFS - See MSW MSW - See Mainframe-Specific Work Area","title":"M"},{"location":"appendices/glossary/#n","text":"NAP - See Non-addressable Place Name NAUB - See Non-addressable Un-named Building NMF - See Non-Mainframe Environment NODE [ Chapter VII.2 ]: Either a conventional intersection of a street with another street, or a pseudo-intersection of a street with a pseudo-street or where there is a change in a significant geocode such as zip code or a Police Beat.. NODE ID [ Chapter VII.2 ]: A unique identifier associated with each node in the Geosupport sytem. The Node ID is sometimes referred to as the Node Number. NON-ADDRESSABLE PLACE NAME (NAP) [ Chapter III.6 ]: A place name that is typically not combined with a house number to form an address. Examples: CITY HALL, EMPIRE STATE BUILDING, PLAZA HOTEL, LINCOLN CENTER, LA GUARDIA AIRPORT. A NAP can either be the name of a simplex , a complex , or a constituent entity of a complex . Geosupport\u2019s address-processing functions accept many NAPs as input data NON-ADDRESSABLE UN-NAMED BUILDING (NAUB) [ Chapter VI.3 ]: A building that has neither addresses nor NAP s, and can only be identified by its BIN . Typical example is a storage shed on the grounds of an industrial property. NON-MAINFRAME ENVIRONMENT (NMF): The Geosupport System runs in many non-mainframe environments, e.g. Desktop Edition, GeoX, .net, and Linux. NORMALIZE [ Chapter III.2 for street names, Chapter V.2 for house numbers]: To produce a version of a data item in a standardized format. Geosupport normalizes every input geographic feature name into one of two formats selected by the user application, called the compact format and the sort format . Geosupport also normalizes every input house number. Geosupport returns output normalized names and house numbers to the calling application in WA1 .","title":"N"},{"location":"appendices/glossary/#o","text":"OUT-OF-SEQUENCE ADDRESS [ Chapter V.10 ]: An address such that the house number is out of sequence relative to nearby house numbers along the given street. For an input out-of-sequence address, the output information that Functions 1 and 1E return is based on the street segment where the out-of-sequence address is actually located, including the cross streets and geographic district identifiers. The Spatial Coordinates returned are those of a point calculated under the assumption that the building entrance is located at the midpoint of the blockface. A warning is issued for any address on a blockface containing an out-of-sequence address. OUTPUT FIELD (IN A WORK AREA) [ Chapter II.3 ]: A field into which Geosupport inserts a value to be returned to the calling user application. See also input field, WA1 and WA2 . WA1 has both input and output fields. WA2 has output fields only.","title":"O"},{"location":"appendices/glossary/#p","text":"PARSED-FORM ADDRESS [ Chapter V.3 ]: An address that is expressed with the house number and street (name or code) stored in separate fields. (Compare to free-form address .) PARTIAL STREET NAME [ Chapter III.4 ]: A street name formed from a full normalized street name by deleting one or more entire words from the end of the full street name. For example, in Manhattan, READE is a partial street name for READE STREET. Geosupport accepts a partial street name as an input street name when the partial street name unambiguously represents a unique full street name in the specified input borough. Additional criteria are described in Chapter III.4 . PLACE NAME [ Chapter III.6 ]: A name of a geographic feature other than a street name or a pseudo-street name . Examples of place names are the names of building complexes (such as university campuses, housing projects, hospital campuses etc.), individual named buildings (such as CITY HALL, EMPIRE STATE BUILDING, museums, hotels, theaters, stadiums etc.), parks, islands, airports etc. Geosupport recognizes some New York City place names, and more are being added over time. There are several types of place names; see Glossary entries for Addressable Place Name, Non-Addressable Place Name, Simplex, Complex and Constituent Entity of a Complex . PREFERRED STREET NAME [ Chapter IV.5 ]: If more than one local group of street names is valid at a particular location along a street, GSS designates one of them as the \u2018preferred\u2019 local group for that location. The preferred street name is the principal street name of the preferred local group. PRIMARY STREET NAME [ Chapter IV.3 ]: For every street in NYC, that is, for every valid B5SC value, GSS designates one spelling of one name of the street as the primary street name. Function D can be used to obtain the primary street name for a given B5SC value. PRIMING WA1 [ Chapter II.3 ]: The part of the API procedure in which the calling application program inserts values into WA1 input fields in preparation for issuing a call to the driver . Priming WA1 is how an application requests the function to be performed, passes the input geographic data (such as an address) to be processed, and specifies processing options. PRINCIPAL STREET NAME OF LOCAL GROUP [ Chapter IV.5 ]: The street name that GSS has designated as the \u2018best\u2019 representative from among all the names in a local group. Function DG can be used to obtain the principal street name for a given B7SC value. PSEUDO-ADDRESS [ Chapter VI.5 ]: An address unofficially assigned by GSS to a street frontage of a tax lot that has no \u2018real\u2019 building addresses, such as a driveway. Function 1A accepts pseudo-addresses as input. PSEUDO-INTERSECTION [ Chapter VII.2 ]: A point along a street specified in terms of a pseudo-street name, i.e., a bend, a dead end or a city limit point. PSEUDO-STREET NAME [ Chapter III.6 ]: An \u2018unofficial\u2019 street name that Geosupport accepts as street name input for certain geographic situations. DAPS s are pseudo-street names that the address-processing functions accept as input only for the city\u2019s very few cases of duplicate addresses (see Chapter V.6 ). DEAD END, CITY LIMIT, BEND and their aliases are pseudo-street names accepted as input by the functions that process street configurations (see Chapter VII ).","title":"P"},{"location":"appendices/glossary/#r","text":"REASON CODE [ Chapter II.2 ]: A one-byte output WA1 item that qualifies the reason for a warning or rejection with greater specificity than does the GRC alone. Non-blank reason codes are returned for all warnings and for selected rejects . See Appendix 4 for a comprehensive list of GRC s, Reason Codes and Messages . REJECT, REJECTION [ Chapter II.2 ]: An unsuccessful outcome of an API call to Geosupport, indicated by a GRC value other than \u201800\u2019 or \u201801\u2019, accompanied by an appropriate Message , and for selected rejects, by a Reason Code . RELEASE (OF GEOSUPPORT FOREGROUND FILES) [ Chapter I.5 ]: Geosupport\u2019s foreground component files are read-only files, and are periodically replaced by updated files. Every foreground file is identified as belonging to a specific Geosupport release. RESYNCHRONIZATION OF STREET CODES [ Chapter IV.4 ]: The updating of Geosupport street codes stored in a user application file to reflect street code assignment changes made in a Geosupport release . ROADBED [ Chapter V.5 ]: A roadbed is a street segment that is bounded on both sides by a physical separator such as a sidewalk, median barrier or median strip. Street segments that have painted medians separating travel direction do not form multiple roadbeds. Well-known examples of streets with multiple roadbeds include Park Avenue in Manhattan, Queens Blvd in Queens and Ocean Parkway in Brooklyn.","title":"R"},{"location":"appendices/glossary/#s","text":"SIMILAR NAME [ Chapter III.5 ]: When an input street name is rejected, Geosupport returns a list of up to ten \u2018similar names\u2019 in WA1 , as an aid to the application in handling the reject . A \u2018similar name\u2019 is a valid full street name from the specified input borough that Geosupport, in accordance with certain criteria, deems to be similar to the rejected input street name. SIMPLEX [ Chapter III.6 ]: A \u2018stand-alone\u2019 named geographic feature, that is, a feature that has a NAP and that is not a complex or a constituent entity of a complex. Examples: Empire State Building, Plaza Hotel, Gramercy Park. SNC - See Street Name Code SNL - See Street Name Normalization Length Limit SORT FORMAT [ Chapter III.3 ]: A Geosupport format for normalize d geographic feature names. The sort format is suitable for sorting but not for display. Contrast with the compact format , which is suitable for display but not for sorting. STREET CODE [ Chapter IV ]: In the Geosupport System, a set of numeric street codes is assigned to represent the city\u2019s street names and other geographic feature names. A borough code combined with a ten-digit street code, or B10SC, corresponds to a specific spelling of a specific street name in the given borough. Portions of the B10SC also have special significance. In particular, the first six bytes of the B10SC, the borough-and-five-digit street code (B5SC), encodes the alias relationship between street names. STREET CONFIGURATION [ Chapter VII.1 ]: A geographic location specified in terms of a combination of two or three streets. Street configurations include intersections, street segments, blockfaces and street stretches. STREET-CONFIGURATION-PROCESSING FUNCTION [ Chapter VII ]: Any of the Geosupport location-processing functions that process street configurations . Currently, these are Function 2, which processes street intersections; Function 3, which processes street segments; Function 3C, which processes blockfaces ; and Function 3S, which processes street stretches. STREET NAME CODE (SNC): The final three digits of the B10SC (Borough and Ten-digit Street Code ) are called the Street Name Code (SNC). Thus, the B10SC consists of the concatenation of the borough code, 5SC, LGC and SNC. The SNC serves simply to serialize the street names within a local group, so that the full B10SC is unique to a specific spelling of a specific street name. STREET NAME NORMALIZATION LENGTH LIMIT (SNL) [ Chapter III.2 ]: A user-specifiable parameter that sets the maximum length in bytes within which Geosupport normalizes input street names. The default value is 32.","title":"S"},{"location":"appendices/glossary/#u","text":"UPG - See User Programming Guide USER PROGRAMMING GUIDE (UPG) [ Chapter I.6 ]: This document. VANITY ADDRESS [ Chapters V.9 ]: An address such that the street name refers to a different street than the one on which the referenced building entrance is actually located. For an input vanity address, the output information that Functions 1 and 1E return is based on the street segment where the vanity address is actually located, including the cross streets, geographic district identifiers and spatial coordinates. The source for the Spatial Coordinates (a.k.a. X-Y coordinates) returned for Vanity Addresses (and NAPs) is the Citywide Street Centerline file (CSCL) . The CSCL information guarantees that the X-Y coordinates fall within the actual location (e.g. building footprint) of the Vanity Address. A warning is issued accordingly. The output information that Function 1A returns is based on the building associated with the vanity address. No warning is issued for Function 1A.","title":"U"},{"location":"appendices/glossary/#v","text":"VERSION (OF GEOSUPPORT FOREGROUND SOFTWARE) [ Chapter I.5 ]: Self-explanatory. Contrast use of the term \u2018version\u2019 for Geosupport software and \u2018release\u2019 for Geosupport data files. VESTIGIAL FEATURE [ Chapter I.5 ]: An element of the Geosupport System, such as a function , a work area , a data item or a JCL statement, that is obsolete and has been superseded by an enhancement. Vestigial features may continue to be operational but should not be used in new applications, and should be eliminated from existing ones.","title":"V"},{"location":"appendices/glossary/#w","text":"WARNING [ Chapter II.2 ]: A conditionally successful completion of an API call to Geosupport. A warning is signified by a GRC value of \u201801\u2019 and an accompanying Reason Code and Message . In most cases, it is appropriate for applications to treat warnings in the same way as successful completions. It is sound practice, however, to examine the Reason Codes and Messages. WA1, WA2 - See Work Areas WORK AREAS [ Chapter II.1 ]: Standard-layout blocks of data in memory that are shared between Geosupport and an application. The Geosupport work areas are an essential component of the Geosupport API , and constitute the sole means by which information passes between the application and Geosupport. Different Geosupport functions use different work area layouts. API calls can involve the passing of either one work area, called Work Area 1 (WA1) , or two work areas, WA1 and Work Area 2 (WA2) .","title":"W"},{"location":"chapters/chapterI/chapterI/","text":"CHAPTER I SYSTEM OVERVIEW","title":"Chapter I"},{"location":"chapters/chapterI/section01/","text":"I.1 Introduction The Geosupport System is an integrated system of software and data files that processes New York City geographic locations. Input locations can be accepted in various forms, including addresses, place names, street intersections, blockfaces, street stretches and property parcels (tax lots). Geosupport standardizes and validates the input location and provides related geographic information, such as the community district, census tract and census block, ZIP code, tax block and tax lot, police precinct, cross streets, City Council district and spatial coordinates. In addition, Geosupport provides user-written applications with the means to retrieve data from the user\u2019s own files by geographic location in a consistent manner. The Geosupport System was developed and is maintained as a service to all agencies of the City of New York by the staff of the Geographic Systems Section (GSS) of the Department of City Planning\u2019s Information Technology Division. GSS has been enhancing the Geosupport software and updating the system\u2019s data files continually since the system\u2019s introduction in 1983. This document, the Geosupport System User Programming Guide , is a comprehensive technical description of the system and how to access it. The document is intended to be read primarily by technical users such as computer application designers, software analysts and programmers. (Knowledge of IBM mainframe application programming is assumed.) Note that as of Version 19.3 Geosupport enhancements are being implemented and supported only in non-mainframe environments, e.g. Desktop Edition, GeoX, .net, and Linux. Geosupport is installed on IBM mainframes at the city computer centers listed in Appendix 7 , where it is used by most city agencies as an integral component of many of their major data processing applications. An employee of each computer center\u2019s custodial agency, generally a systems programmer, has been designated as the Geosupport System Administrator (GSA) for that computer center. The GSA is responsible for installing or coordinating the installation of new Geosupport file releases and software versions received from GSS. At some computer centers, the GSA makes certain customizing modifications to Geosupport during installation, such as changing the data set names (DSNs) of Geosupport files to conform to local file naming conventions. The GSA is also the first responder for users encountering system-related Geosupport problems, and interacts with GSS staff as needed to resolve such problems. However, the GSA is not necessarily familiar with Geosupport from a user application perspective, and is not responsible for assisting users with application-related problems or design issues. In general, Geosupport is accessible without restriction to anyone having a valid account at any of the computer centers where it is installed; no special passwords or security procedures are required beyond the normal data center logon procedures. In addition to running on IBM (and IBM-compatible) mainframes, GSS has developed Geosupport Desktop Edition for running in the Windows environment. There are also several methods by which Geosupport running on a city mainframe can be accessed by applications running on other hardware platforms, including 3270 emulation and access through the city\u2019s Intranet. Geosupport is also available via GeoX, Linux, .net and Java. This User Programming Guide can be used when programming in any of these environments. For many user applications, only a subset of Geosupport\u2019s functions, features and data items are relevant. In addition, many Geosupport options have defaults which are appropriate for most applications. Thus, even though Geosupport is a large-scale, multi-feature system, the user effort required to design an application to access it is often relatively modest. Geosupport has an Application Programming Interface (API) that enables it to be accessed directly from a user-written batch or CICS application program. (Geosupport cannot be run in the VM environment.) The Geosupport API supports application programs written in any programming language that can issue a standard IBM external program call. COBOL, PL/1, the various types of IBM mainframe assembler languages (hereafter referred to generically as \u2018Assembler\u2019), NATURAL and C are five such languages. In addition, Geosupport has one batch and two interactive \u2018stand-alone\u2019 utility programs that enable users to satisfy many geographic processing needs without having to write custom application programs. The ability of user-written applications to access Geosupport via its API enables users to avoid the burden of duplicating complex, specialized geographic processing routines within their own applications. The Geosupport API affords users total design control of their own applications, with their own input and output files, printed reports and screen formats; users develop those applications in their conventional data processing environments, using the programming languages they deem best suited to those applications. The Geosupport batch utility program is called the Geosupport Batch Address Translator (GBAT). GBAT requires no user programming; to run GBAT, the user simply sets up a batch job containing JCL and GBAT control records. There are two Geosupport interactive utility programs, both of them CICS transactions. The principal interactive utility is called the Geographic Online Address Translator (GOAT), which provides general inquiry capabilities for almost all Geosupport functions. There is also a specialized interactive utility called Address / Intersection Map Zones (AIMZ), which displays a set of map identification numbers corresponding to an input address or intersection.","title":"I.1 Introduction"},{"location":"chapters/chapterI/section02/","text":"I.2 System Functionality The output information that Geosupport provides consists of geographic information only. Geosupport does not provide, for example, population or crime statistics, housing data, building code violations, property ownership etc. Such data are available from the U.S. Bureau of the Census, city agencies and other sources. Geosupport can facilitate matching many such statistical and administrative databases with user data containing individual locations, by associating those locations with district identifiers needed for such matching, such as census tract, ZIP code or tax block. Geosupport processes New York City geography only, and is highly customized for that geography. For example, Geosupport can recognize and process many alternative names, spelling variants and partial names of New York City streets; the various address number formats that occur in the city; both old and new addresses on streets that have been renumbered; unique addressing schemes that exist in certain neighborhoods; and many other idiosyncrasies of New York City\u2019s geography Geosupport is organized into more than a dozen distinct functions that can be accessed by the user. Chapter I.4 contains a brief overview of Geosupport\u2019s suite of functions. The typical function accepts as input geographic locations of a particular type, such as addresses, street intersections or tax lots, and provides some or all of the following services, depending on the function and on calling options chosen: Geosupport standardizes and encodes components of the user input data. Specifically, it reformats input street names and input address numbers into standard formats, a process called \u2018normalizing\u2019, and it provides numeric street codes corresponding to input street names. Geosupport validates the input data. The nature of the validation performed depends on the function requested and the type of call made. Validation of geographic data is a particularly powerful tool in the interactive environment, where it can help applications to trap keying errors and street name misspellings at the point of initial data entry when such errors are most easily rectified. Geosupport geocodes the input data. That is, it outputs a predefined set of \u2018higher-level\u2019 geographic information associated with the input location, such as the community district, ZIP code, police precinct, cross streets. Geosupport enables consistent retrieval of user application data by geographic location . That is, it supports the ability of user applications to search (for inquiry or updating) or match their own data files by geographic location in a way that is independent of possible variations in referring to locations. The nature of each application determines the combination of these services that is relevant. For example, some applications need only to validate geographic locations, not to obtain any of the output information that Geosupport provides. The fourth type of service, support for geographic retrieval consistency, is relevant only for applications that retrieve or match data from their own files by geographic location (as distinct from Geosupport\u2019s retrieval of data from its internal files). For those applications, geographic retrieval consistency is a critical issue. The next section of this chapter contains a discussion of geographic retrieval consistency in general terms. Later chapters of this document contain detailed discussions of this topic.","title":"I.2 System Functionality"},{"location":"chapters/chapterI/section03/","text":"I.3 Introduction to Geographic Retrieval Consistency In applications that retrieve data from an application file by geographic location or match two application files by geographic location, the consistency of that retrieval or matching is a critical consideration that arises when processing any type of location that can be specified in more than one way. For example, consistency is a consideration for any type of location involving streets (such as addresses, intersections and street segments), since many streets have alternative names and many street names have spelling variants. The goal is to enable applications to retrieve records independently of which street name spelling was used when the record was created and which one is used at retrieval time. Similarly, consistency is a consideration when retrieving building-level data by address, since many buildings have more than one address. It is a consideration when retrieving data for street intersections, since many intersections (e.g., three-way intersections) can be specified using more than one pair of streets. The achievement of retrieval consistency can greatly improve an application\u2019s \u2018hit\u2019 rate on geographic searches into the application\u2019s own files. Moreover, it enables applications to identify and consolidate multiple records for the same location effectively. These advantages can have a significant impact on the efficiency of a city operation. For example, an application can use this capability to generate a single work order for dispatching personnel to handle multiple repairs, inspections or other transactions for the same location. Of the services that Geosupport provides, its use to achieve geographic retrieval consistency involves the most extensive integration of Geosupport in the design of the user application. Geosupport provides such support by returning certain data items which an application can store in its file during record creation and use as part of a geographic retrieval key. An example is an item called the five-digit street code , which applications can use to achieve consistent retrieval of data by those types of geographic locations that are specified in terms of streets. This is briefly discussed below, and is explained in detail in later chapters. Within Geosupport, a set of numeric street codes has been assigned to represent New York City\u2019s street names. A full street code is a ten-digit item that, together with a borough identifier, corresponds to a specific spelling of a specific name for a specific street in that borough. The first five digits of the ten-digit street code are collectively called the five-digit street code . Ten-digit street codes are assigned in such a way that alternative names and spelling variants of the same street have the same five-digit street code. As a result, applications can achieve consistent retrieval or matching of application data by any type of geographic location that involves streets by using five-digit street codes instead of street names as part of the retrieval key. For the convenience of users, for all functions that involve street input except Function 1N and the display functions (Functions D, DG and DN), applications have the option to provide input streets to Geosupport in the form of either street names or street codes. Street codes are discussed in greater detail in Chapter IV.","title":"I.3 Introduction to Geographic Retrieval Consistency"},{"location":"chapters/chapterI/section04/","text":"I.4 The Geosupport Function Suite This section contains a brief introduction to the Geosupport function suite. Each Geosupport function is identified by a one- or two-character function code . The function suite consists of location-processing functions (Functions 1, 1A, 1B, 1E, 2, 3, 3C, 3S, AP 1 ,BL and BN), display functions (Functions D, DG and DN) and miscellaneous functions (Functions 1N, BB and BF). Table I-2 lists the currently implemented functions. Note that Functions 1B and AP are COW 2 functions only. Each location-processing function processes input geographic locations of a particular type. For each type of location, there is an appropriate set of data items that collectively define such locations. Table I-1 lists the various types of geographic locations, the data items required to specify them, and examples. The location-processing functions can be sub-classified into address-processing functions , street-configuration-processing functions and ID-processing functions : The address-processing functions are Functions 1, 1A, 1B, 1E and AP. There are also Extended versions of four of the functions, viz. Function 1 Extended, Function 1A Extended, Function 1E Extended, Function AP Extended . Function 1B is a combination of Function 1E Extended and Function 1A Extended. Except for Function AP, the address-processing functions process conventional addresses, Addressable Place Names (APs) and Non-Addressable Place Names (NAPs). Function AP processes conventional addresses only. The street-configuration-processing functions are Functions 2, 3, 3C and 3S. There are also Extended versions of two of the functions, viz. Function 3 Extended and Function 3C Extended. All these street-configuration-processing functions process geographic locations that are defined in terms of one, two or three streets, such as street intersections, intersection names, blockfaces and street stretches. Note that Function 2 is also an ID-processing function (see below). The ID-processing functions are Functions BL, BN, and COW Function 2. There are also Extended versions of these functions, viz. Function BL Extended and Function BN Extended and the Wide version of Function 2, viz. Function 2W. These functions process locations defined in terms of identifying numbers, namely, tax lot identifiers in the case of Function BL, Building Identification Numbers (BINs) in the case of Function BN and Node ID in the case of Function 2. Tax lot identifiers and BINs are discussed in detail in Chapter VI. Node IDs are discussed in Chapter VII. Note that Function 2 is also a street-configuration-processing function (see above). In general, anything that applies to a basic Geosupport Function will also apply to the Extended Version (and the Enhanced Version) of that function and other variations (e.g. Long Work Area or Auxiliary Segments) as well. For example, anything that is true of Function 1 will also be true of Function 1 Extended. In our discussion of the various functions, for simplicity, we will often refer only to the basic function, but the information will apply also to the Extended function and other variations. The address-processing functions differ from each other with respect to the output data that they provide and the nature of the validation processing that they perform. In general, the type of validation processing a Geosupport function performs is related to the geographic level of the output data. Thus the processing for Functions 1, 1E (and the 1E portion of Function 1B, see below), validates only whether the input address falls within an address range for an entire blockface, but it does not validate whether the input address is itself specifically valid. Function AP and Function 1A (and the Function 1A portion of Function 1B, see below), on the other hand, do validate whether the input address is (or could be) a valid address for a specific building. The return of a Building Identification Number (BIN) from Function AP and Function 1A will verify the existence of a building at the given address. There are some users of Geosupport who process addresses by making two Geosupport calls (one call to Function 1 or 1E and another call to Function 1A). In response to requests by users, Function 1B was developed in order to allow users to retrieve blockface information (which is available with Function 1 or 1E) and Property Level information (which is available with Function 1A) in one Geosupport call. Function 1B combines Function 1E Extended with Function 1A Extended. The input requires borough (or ZIP code), address number if needed, and street name or street code. Function 1B retrieves the tax lot and building information from the PAD (Property Address Directory; data is at the property parcel level) file based on the input (Function 1A-type processing). The blockface and political data are then retrieved from the GRID (Geographic Reference Integrated Dictionary; data is at the centerline level) and the Election files (Function 1E-type processing) for the address set by the building level information The display functions do not themselves directly \u2018display\u2019 anything, but they provide street names and/or address numbers in formats suitable for applications to display on screens, reports, mailing labels etc. In Table I-1, the word \u2018street\u2019 refers to either a street name or a street code. In the examples in Table I-1, street names rather than street codes are used. (Note: the examples are formatted for reader comprehension, and would not be accepted by Geosupport as shown. Specifically, they contain borough names rather than the borough codes that Geosupport requires, and they contain English words and phrases such as \u2018intersection of\u2019 and \u2018between\u2019 that Geosupport does not recognize.) Table I-1: Types of Geographic Locations Processed Types of Locations Input Items Required to Specify Location, Example Address Borough (or ZIP code) + address number + street: Bronx, 307 East Tremont Avenue Non-Addressable Place Name Borough (or ZIP code) + place name: Manhattan, Carnegie Hall Addressable Place Name Borough (or ZIP code) + address number + place name: Manhattan, 2 Penn Plaza Street Intersection Borough + two intersecting streets: Brooklyn, intersection of Flatbush Avenue and Atlantic Avenue OR (if a pair of streets has two points of intersection), Borough + two intersecting streets + compass direction: Queens, east intersection of Alderton Street and Cromwell Crescent OR Borough + Intersection Name: Manhattan, Isaac Stern Place OR Node ID: 0015376 (intersection of Broadway and Reade St, Manhattan) Street Segment Borough + \u2018on\u2019 street + two consecutive cross streets: Manhattan, Broadway between W 38th St and W 39th St Blockface Borough + street segment + compass direction specifying side of street: Manhattan, east side of Broadway between W 38th St and W 39th St Street Stretch Borough + \u2018on\u2019 street + any two cross streets: Manhattan, Broadway between W 38th St and W 54th St OR (if either or both of the cross streets has two points of intersection with the \u2018on\u2019 street), Borough + \u2018on\u2019 street + two intersecting streets + compass direction(s): Queens, Alderton Street between East intersection with Cromwell Crescent and intersection with 63rd Drive OR Borough + \u2018on\u2019 street: Manhattan, Broadway Tax Lot Borough + tax block + tax lot: Staten Island, Block 247 Lot 16 Building Building Identification Number (BIN): 5006708 Table I-2 below lists all of the current Geosupport functions, indicating for each function the type of input geographic location processed, the geographic level of the output data, and a sample of output data items. The table does not include normalized street names, street codes and normalized address numbers among the sample output items listed; those items are always returned when the input involves street names and address numbers. Certain terms not defined until later have been included in Table I-2 for completeness. Table I-2: List of Geosupport Functions Function Type of Input Description of Output Sample Output Items 1 Address or Non-Addressable Place Name Blockface-related data Cross streets, ZIP code, census tract and block, community district, police precinct, school district, health area, spatial coordinates; COW Only: NTA, Police Patrol Borough; COW Extended Only: PUMA Code 1A Address or Non-Addressable Place Name Property-related data Tax block and lot identifiers, list of all buildings, addresses and street frontages of property, condo flag, spatial coords. 1B (COW Only) Address or Non-Addressable Place Name Combined Property and Blockface related data See Function 1E below and Function 1A above (COW Only) 1E Address or Non-Addressable Place Name Blockface-related data Same as Function 1 + political districts: Election, State Assembly and Senate, City Council, Congressional and Municipal Court Districts 1N Street Name or Place Name Normalized name, street code 2 Street Intersection or Named Intersection or Node ID Intersection-related data Additional streets at intersection (other than input streets), census tract, community district, spatial coordinates COW Only: Some Political Geography 3 Street Segment Segment-related data + data related to left and right blockfaces Cross streets, left and right ZIP code, left and right census tract and block, left and right community district, node ID 3C Blockface Blockface-related data Cross streets, ZIP code, census tract and block, community district, node ID 3S Street Stretch Street stretch-related data order along the stretch, approximate Number of and list of intersections in distance in feet between intersections AP (COW only) Address Property-related data of CSCL Address Point BBL, BIN, Spatial coordinates of CSCL Address Point, Address Point ID BB, BF Character String See right-hand column Set of ten normalized street names in alphabetical order BL Tax Lot Property-related data Same as Function 1A BN Building Property- and building-related data Tax block and lot identifiers, list of all addresses of building, condo flag, spatial coordinates D 5-Digit Street Code Normalized \u2018primary\u2019 name of street DG 7-Digit Street Code Normalized \u2018principal\u2019 name of local group DN 10-Digit Street Code Normalized street name HR None \u2013 CICS GOAT Geosupport Data Set Information Creation date, Geosupport release cycle, number of records N* Street Name Normalized street name Name is normalized without a borough, therefore no consideration of validity. As a mnemonic aid, Geosupport function codes have been chosen to be as descriptive as possible. For functions involving street input, the first character of the function code is numeric and indicates the number of input streets. (There is one exception, Function AP, which is described below). Thus, Functions 1, 1A, 1B and 1E process addresses and non-addressable place names, which are specified by a single input street or place; Function 2 processes intersections, which generally are specified by two input streets, a single intersection name, or a node ID. Functions 3, 3C and 3S process street segments, block faces and street stretches, respectively, all of which involve three input streets (an \u2018on\u2019 street and two cross streets), or, optionally, just an \u2018on \u2018street for Function 3S. The second character of the function code, if any, is often descriptive as well: the letter \u2018C\u2019 signifies that the function involves compass direction input; the letter \u2018S \u2019signifies street stretch input. Function AP is the one exception to the pattern described above: Function AP is a mnemonic for \u2018Address Point\u2019 and has one street address as input. The function codes of functions that do not involve street address input are abbreviations of descriptive terms for the functions: BB and BF are abbreviations for \u2018browse backward\u2019 and \u2018browse forward\u2019, BL for \u2018block/lot\u2019, BN for \u2018building number\u2019, and D, DG and DN for \u2018display\u2019, \u2018display group\u2019 and \u2018display name\u2019. 1 Note that \u2018AP\u2019 is the acronym for the function AP (Address Point). It is also the acronym for Addressable Place Name and Atomic Polygon. The acronym\u2019s meaning should be clear by its usage. It will be spelled out as needed. 2 Character-Only Work Area (COW). See Appendix 12 .","title":"I.4 The Geosupport Function Suite"},{"location":"chapters/chapterI/section04/#table-i-1-types-of-geographic-locations-processed","text":"Types of Locations Input Items Required to Specify Location, Example Address Borough (or ZIP code) + address number + street: Bronx, 307 East Tremont Avenue Non-Addressable Place Name Borough (or ZIP code) + place name: Manhattan, Carnegie Hall Addressable Place Name Borough (or ZIP code) + address number + place name: Manhattan, 2 Penn Plaza Street Intersection Borough + two intersecting streets: Brooklyn, intersection of Flatbush Avenue and Atlantic Avenue OR (if a pair of streets has two points of intersection), Borough + two intersecting streets + compass direction: Queens, east intersection of Alderton Street and Cromwell Crescent OR Borough + Intersection Name: Manhattan, Isaac Stern Place OR Node ID: 0015376 (intersection of Broadway and Reade St, Manhattan) Street Segment Borough + \u2018on\u2019 street + two consecutive cross streets: Manhattan, Broadway between W 38th St and W 39th St Blockface Borough + street segment + compass direction specifying side of street: Manhattan, east side of Broadway between W 38th St and W 39th St Street Stretch Borough + \u2018on\u2019 street + any two cross streets: Manhattan, Broadway between W 38th St and W 54th St OR (if either or both of the cross streets has two points of intersection with the \u2018on\u2019 street), Borough + \u2018on\u2019 street + two intersecting streets + compass direction(s): Queens, Alderton Street between East intersection with Cromwell Crescent and intersection with 63rd Drive OR Borough + \u2018on\u2019 street: Manhattan, Broadway Tax Lot Borough + tax block + tax lot: Staten Island, Block 247 Lot 16 Building Building Identification Number (BIN): 5006708 Table I-2 below lists all of the current Geosupport functions, indicating for each function the type of input geographic location processed, the geographic level of the output data, and a sample of output data items. The table does not include normalized street names, street codes and normalized address numbers among the sample output items listed; those items are always returned when the input involves street names and address numbers. Certain terms not defined until later have been included in Table I-2 for completeness.","title":"Table I-1: Types of Geographic Locations Processed"},{"location":"chapters/chapterI/section04/#table-i-2-list-of-geosupport-functions","text":"Function Type of Input Description of Output Sample Output Items 1 Address or Non-Addressable Place Name Blockface-related data Cross streets, ZIP code, census tract and block, community district, police precinct, school district, health area, spatial coordinates; COW Only: NTA, Police Patrol Borough; COW Extended Only: PUMA Code 1A Address or Non-Addressable Place Name Property-related data Tax block and lot identifiers, list of all buildings, addresses and street frontages of property, condo flag, spatial coords. 1B (COW Only) Address or Non-Addressable Place Name Combined Property and Blockface related data See Function 1E below and Function 1A above (COW Only) 1E Address or Non-Addressable Place Name Blockface-related data Same as Function 1 + political districts: Election, State Assembly and Senate, City Council, Congressional and Municipal Court Districts 1N Street Name or Place Name Normalized name, street code 2 Street Intersection or Named Intersection or Node ID Intersection-related data Additional streets at intersection (other than input streets), census tract, community district, spatial coordinates COW Only: Some Political Geography 3 Street Segment Segment-related data + data related to left and right blockfaces Cross streets, left and right ZIP code, left and right census tract and block, left and right community district, node ID 3C Blockface Blockface-related data Cross streets, ZIP code, census tract and block, community district, node ID 3S Street Stretch Street stretch-related data order along the stretch, approximate Number of and list of intersections in distance in feet between intersections AP (COW only) Address Property-related data of CSCL Address Point BBL, BIN, Spatial coordinates of CSCL Address Point, Address Point ID BB, BF Character String See right-hand column Set of ten normalized street names in alphabetical order BL Tax Lot Property-related data Same as Function 1A BN Building Property- and building-related data Tax block and lot identifiers, list of all addresses of building, condo flag, spatial coordinates D 5-Digit Street Code Normalized \u2018primary\u2019 name of street DG 7-Digit Street Code Normalized \u2018principal\u2019 name of local group DN 10-Digit Street Code Normalized street name HR None \u2013 CICS GOAT Geosupport Data Set Information Creation date, Geosupport release cycle, number of records N* Street Name Normalized street name Name is normalized without a borough, therefore no consideration of validity. As a mnemonic aid, Geosupport function codes have been chosen to be as descriptive as possible. For functions involving street input, the first character of the function code is numeric and indicates the number of input streets. (There is one exception, Function AP, which is described below). Thus, Functions 1, 1A, 1B and 1E process addresses and non-addressable place names, which are specified by a single input street or place; Function 2 processes intersections, which generally are specified by two input streets, a single intersection name, or a node ID. Functions 3, 3C and 3S process street segments, block faces and street stretches, respectively, all of which involve three input streets (an \u2018on\u2019 street and two cross streets), or, optionally, just an \u2018on \u2018street for Function 3S. The second character of the function code, if any, is often descriptive as well: the letter \u2018C\u2019 signifies that the function involves compass direction input; the letter \u2018S \u2019signifies street stretch input. Function AP is the one exception to the pattern described above: Function AP is a mnemonic for \u2018Address Point\u2019 and has one street address as input. The function codes of functions that do not involve street address input are abbreviations of descriptive terms for the functions: BB and BF are abbreviations for \u2018browse backward\u2019 and \u2018browse forward\u2019, BL for \u2018block/lot\u2019, BN for \u2018building number\u2019, and D, DG and DN for \u2018display\u2019, \u2018display group\u2019 and \u2018display name\u2019. 1 Note that \u2018AP\u2019 is the acronym for the function AP (Address Point). It is also the acronym for Addressable Place Name and Atomic Polygon. The acronym\u2019s meaning should be clear by its usage. It will be spelled out as needed. 2 Character-Only Work Area (COW). See Appendix 12 .","title":"Table I-2: List of Geosupport Functions"},{"location":"chapters/chapterI/section05/","text":"I.5 Overview of System Architecture The Geosupport System consists of two major components called the foreground component and the background component ,as well as the utility programs GBAT, GOAT and AIMZ. The relationships among the foreground component, the background component and the user application program are described in this section and are illustrated in Figure I-1 below . Both the foreground component and the background component consist of both software and files. Users access the foreground component either directly from user-written programs via Geosupport API calls, or indirectly via the utility programs, which in turn access the foreground component via the Geosupport API. The foreground component and the utility programs are installed on IBM mainframes at the city computer centers listed in Appendix 7. Users do not access the background component, and it is not described in this document beyond the brief remarks in this section. The Foreground Component The files of the foreground component contain the geographic data that the foreground software requires to process user requests. User programs never read the foreground files directly; they are read only by the Geosupport foreground software. The foreground software processes the input data passed to it by a calling user program. It performs such tasks as standardizing input street names and house numbers, reading foreground files, and returning information retrieved from those files, or appropriate error codes and messages, to the user program. The Background Component The background component contains a set of interrelated base files of the city\u2019s geography. The background files are continually updated and validated by the GSS staff. The background software includes software for updating and validating the background files and software for generating new foreground files from the background files. The background work takes place partly on an IBM mainframe at the centralized data center operated by the City of New York Department of Information Technology and Telecommunications (DoITT) and on PCs located at the Department of City Planning, and partly in an enterprise Geographic Information System (GIS) software environment running on DoITT\u2019s servers.. The background component, including GSS\u2019s GIS environment, is not accessible to users. To a user application, Geosupport appears to consist only of conventional data processing technology, and does not appear to include computer mapping capabilities. However, Geosupport, through its geocoding functionality, particularly its provision of spatial coordinates for an address, tax lot, or intersection, can facilitate the use of separate computer mapping or GIS software to display geographically-related user data graphically. In addition, many of GSS\u2019s background files are available in ESRI format for free download as part of our BYTES of the BIG APPLE TM product line which can be used in conjunction with a user\u2019s Geosupport output. Foreground Component Updating: New File Releases All of the foreground files are read-only files. They remain in production, unchanged, until GSS requests that DoITT replace them with a new set containing updated data. The set of foreground files in production at a particular time constitutes a release ,and is identified by a release designator such as Release15D. The first two characters of the release designator are the last two digits of the calendar year in which the release was deployed. In the background component, GSS periodically performs a complex series of steps, called the Geosupport production cycle ,to generate a new set of foreground files, quality assure those files, and deploy them for user access as a new Geosupport release. Each new release is first implemented for user access on the DoITT mainframe. This is done in coordination with DoITT staff, who play an active role in migrating the files of the new release to all user-accessible CICS regions and the batch environment. After the new release is in production at DoITT for a brief testing period, GSS staff disseminate the new release to the other computer centers where Geosupport is installed.The Desktop Edition also becomes available shortly after the new release is in production on the DoITT mainframe. For many applications, no special user action is required when a new release of Geosupport files is implemented; the application will continue to run as before. Of course, under the new release, Geosupport may respond differently to a particular set of input data than it had under previous releases. For example, it may return different output information for a given set of input data, it may accept input data that had previously been rejected, and it may reject input data that had previously been accepted. In some applications in which data items obtained from Geosupport are stored in an application file, it may be appropriate for the user to update those stored items to reflect changes in each new Geosupport release. This is referred to as resynchronizing the user file with respect to the new Geosupport release. Resynchronizing is particularly important for applications that use Geosupport-provided items, such as street codes, in geographic retrieval keys. For such applications, the user should develop a resynchronization procedure, and should run that procedure each time a new release of Geosupport is implemented. Resynchronization is discussed further in Chapter IV. Foreground Component Updating: New Software Versions and Vestigial Features From time to time, GSS makes changes to the foreground software, to enhance the system or correct errors. The foreground software in production is identified by a version number, such as Version13.1 etc. (Note that the foreground software is identified as a version while the foreground files are identified as a release .) On occasion, new foreground file releases and new foreground software versions are installed in production independently of one another, and therefore there is not a one-to-one correspondence between file releases and software versions. Typically, a file release and a software version are implemented simultaneously in what is referred to as a coordinated release. Since the year 2013, the numbering scheme for a Software Version is yy.n, where \u2018yy\u2019 are the last two digits of the year and \u2018n\u2019 is the sequence number of the software version in that year, starting from \u20181\u2019, e.g. Version 13.1. The numbering scheme for a Data Release is yy-x (or yyx), where \u2018yy\u2019 are the last two digits of the year and \u2018x\u2019 is the sequence letter of the data release in that year, starting from \u2018A\u2019, e.g. Release 15A). It is a fundamental policy of GSS to strive to minimize the impact of Geosupport enhancements on existing applications. Whenever possible, enhancements are designed so that existing applications that do not require the new Geosupport feature need not be modified. In other words, enhancements are generally \u2018transparent\u2019 to existing applications. Although this is generally the policy of GSS, please see the SUMMARY OF CHANGES AND NEW FEATURES, at the beginning of this manual, for any item that could possibly affect your applications. Over the years, numerous enhancements have been made to Geosupport, and virtually none of them have required existing applications to be modified or recompiled (except as necessary to take advantage of new features). As a consequence of this approach, Geosupport has a number of vestigial features. These are elements of the system, such as data items, work area formats, batch JCL, or entire functions that are still operational but are obsolete or have been superseded. Vestigial features will continue to be supported for the most part, so that existing applications that use them will continue to run without modification. However, vestigial features will not be enhanced. Moreover, vestigial features have that status because of some shortcoming. Users are strongly encouraged to update their existing applications to eliminate all usage of vestigial features. All new applications should be designed to avoid any usage of vestigial features. Vestigial features are mentioned in appropriate sections of this document, and are identified as such, but in many cases they are not documented in detail. An example of a vestigial feature is the erstwhile Function 2C (superseded by an enhancement to Function 2; discussed in Chapter VII.2 ). Character-Only Work Areas (COWs) COWs are an enhancement to Geosupport that was announced in Technical Bulletins in 2002. The Character-Only Work Areas are discussed, specifically, in Appendices 12, 13 and 14, and, in general, throughout the entire document. User Feedback of Rejects Typically, some of the geographic locations passed to Geosupport by a user application will be rejected as invalid. A reject could be caused by invalid user input data, such as a misspelled street name or an invalid address; or it could be caused by a Geosupport problem, such as an error or omission in Geosupport\u2019s internal data. Users should examine their rejects, and should report those rejects that cannot be attributed to user-caused errors to GSS staff by emailing GSS_Feedback@planning.nyc.gov (for more information, see Appendix 6 ). In addition, users should report cases where Geosupport has accepted the input data but has returned output information that the user believes to be incorrect (for example, a ZIP code that is believed to be incorrect for a particular input address). GSS relies on feedback from users as an essential source of information for quality-assuring Geosupport\u2019s data and keeping the data up-to-date and accurate. GSS researches feedback received from users and updates the Geosupport background files as appropriate. Such corrections become visible to user applications only after a new release of the foreground files reflecting the corrections is deployed for user access. A time lag of as much as several months is possible between the reporting of a reject to GSS and the appearance of the correction in the foreground component. Figure I-1 below illustrates the basic architecture of the Geosupport System. Fig I-1 Geosupport architecture: components and Production Cycle Please note the following elements depicted in Figure I-1: \u2022 The interaction between the application program and the Geosupport foreground component via the Geosupport API \u2022 The examination by the user of rejects and the feedback of unresolved rejects to GSS for research and possible background file updating \u2022 The periodic generation (in the Background Component) of new releases of foreground files","title":"I.5 Overview of System Architecture"},{"location":"chapters/chapterI/section05/#the-foreground-component","text":"The files of the foreground component contain the geographic data that the foreground software requires to process user requests. User programs never read the foreground files directly; they are read only by the Geosupport foreground software. The foreground software processes the input data passed to it by a calling user program. It performs such tasks as standardizing input street names and house numbers, reading foreground files, and returning information retrieved from those files, or appropriate error codes and messages, to the user program.","title":"The Foreground Component"},{"location":"chapters/chapterI/section05/#the-background-component","text":"The background component contains a set of interrelated base files of the city\u2019s geography. The background files are continually updated and validated by the GSS staff. The background software includes software for updating and validating the background files and software for generating new foreground files from the background files. The background work takes place partly on an IBM mainframe at the centralized data center operated by the City of New York Department of Information Technology and Telecommunications (DoITT) and on PCs located at the Department of City Planning, and partly in an enterprise Geographic Information System (GIS) software environment running on DoITT\u2019s servers.. The background component, including GSS\u2019s GIS environment, is not accessible to users. To a user application, Geosupport appears to consist only of conventional data processing technology, and does not appear to include computer mapping capabilities. However, Geosupport, through its geocoding functionality, particularly its provision of spatial coordinates for an address, tax lot, or intersection, can facilitate the use of separate computer mapping or GIS software to display geographically-related user data graphically. In addition, many of GSS\u2019s background files are available in ESRI format for free download as part of our BYTES of the BIG APPLE TM product line which can be used in conjunction with a user\u2019s Geosupport output.","title":" The Background Component "},{"location":"chapters/chapterI/section05/#foreground-component-updating-new-file-releases","text":"All of the foreground files are read-only files. They remain in production, unchanged, until GSS requests that DoITT replace them with a new set containing updated data. The set of foreground files in production at a particular time constitutes a release ,and is identified by a release designator such as Release15D. The first two characters of the release designator are the last two digits of the calendar year in which the release was deployed. In the background component, GSS periodically performs a complex series of steps, called the Geosupport production cycle ,to generate a new set of foreground files, quality assure those files, and deploy them for user access as a new Geosupport release. Each new release is first implemented for user access on the DoITT mainframe. This is done in coordination with DoITT staff, who play an active role in migrating the files of the new release to all user-accessible CICS regions and the batch environment. After the new release is in production at DoITT for a brief testing period, GSS staff disseminate the new release to the other computer centers where Geosupport is installed.The Desktop Edition also becomes available shortly after the new release is in production on the DoITT mainframe. For many applications, no special user action is required when a new release of Geosupport files is implemented; the application will continue to run as before. Of course, under the new release, Geosupport may respond differently to a particular set of input data than it had under previous releases. For example, it may return different output information for a given set of input data, it may accept input data that had previously been rejected, and it may reject input data that had previously been accepted. In some applications in which data items obtained from Geosupport are stored in an application file, it may be appropriate for the user to update those stored items to reflect changes in each new Geosupport release. This is referred to as resynchronizing the user file with respect to the new Geosupport release. Resynchronizing is particularly important for applications that use Geosupport-provided items, such as street codes, in geographic retrieval keys. For such applications, the user should develop a resynchronization procedure, and should run that procedure each time a new release of Geosupport is implemented. Resynchronization is discussed further in Chapter IV.","title":" Foreground Component Updating: New File Releases "},{"location":"chapters/chapterI/section05/#foreground-component-updating-new-software-versions-and-vestigial-features","text":"From time to time, GSS makes changes to the foreground software, to enhance the system or correct errors. The foreground software in production is identified by a version number, such as Version13.1 etc. (Note that the foreground software is identified as a version while the foreground files are identified as a release .) On occasion, new foreground file releases and new foreground software versions are installed in production independently of one another, and therefore there is not a one-to-one correspondence between file releases and software versions. Typically, a file release and a software version are implemented simultaneously in what is referred to as a coordinated release. Since the year 2013, the numbering scheme for a Software Version is yy.n, where \u2018yy\u2019 are the last two digits of the year and \u2018n\u2019 is the sequence number of the software version in that year, starting from \u20181\u2019, e.g. Version 13.1. The numbering scheme for a Data Release is yy-x (or yyx), where \u2018yy\u2019 are the last two digits of the year and \u2018x\u2019 is the sequence letter of the data release in that year, starting from \u2018A\u2019, e.g. Release 15A). It is a fundamental policy of GSS to strive to minimize the impact of Geosupport enhancements on existing applications. Whenever possible, enhancements are designed so that existing applications that do not require the new Geosupport feature need not be modified. In other words, enhancements are generally \u2018transparent\u2019 to existing applications. Although this is generally the policy of GSS, please see the SUMMARY OF CHANGES AND NEW FEATURES, at the beginning of this manual, for any item that could possibly affect your applications. Over the years, numerous enhancements have been made to Geosupport, and virtually none of them have required existing applications to be modified or recompiled (except as necessary to take advantage of new features). As a consequence of this approach, Geosupport has a number of vestigial features. These are elements of the system, such as data items, work area formats, batch JCL, or entire functions that are still operational but are obsolete or have been superseded. Vestigial features will continue to be supported for the most part, so that existing applications that use them will continue to run without modification. However, vestigial features will not be enhanced. Moreover, vestigial features have that status because of some shortcoming. Users are strongly encouraged to update their existing applications to eliminate all usage of vestigial features. All new applications should be designed to avoid any usage of vestigial features. Vestigial features are mentioned in appropriate sections of this document, and are identified as such, but in many cases they are not documented in detail. An example of a vestigial feature is the erstwhile Function 2C (superseded by an enhancement to Function 2; discussed in Chapter VII.2 ).","title":"Foreground Component Updating: New Software Versions and Vestigial Features"},{"location":"chapters/chapterI/section05/#character-only-work-areas-cows","text":"COWs are an enhancement to Geosupport that was announced in Technical Bulletins in 2002. The Character-Only Work Areas are discussed, specifically, in Appendices 12, 13 and 14, and, in general, throughout the entire document.","title":"Character-Only Work Areas (COWs) "},{"location":"chapters/chapterI/section05/#user-feedback-of-rejects","text":"Typically, some of the geographic locations passed to Geosupport by a user application will be rejected as invalid. A reject could be caused by invalid user input data, such as a misspelled street name or an invalid address; or it could be caused by a Geosupport problem, such as an error or omission in Geosupport\u2019s internal data. Users should examine their rejects, and should report those rejects that cannot be attributed to user-caused errors to GSS staff by emailing GSS_Feedback@planning.nyc.gov (for more information, see Appendix 6 ). In addition, users should report cases where Geosupport has accepted the input data but has returned output information that the user believes to be incorrect (for example, a ZIP code that is believed to be incorrect for a particular input address). GSS relies on feedback from users as an essential source of information for quality-assuring Geosupport\u2019s data and keeping the data up-to-date and accurate. GSS researches feedback received from users and updates the Geosupport background files as appropriate. Such corrections become visible to user applications only after a new release of the foreground files reflecting the corrections is deployed for user access. A time lag of as much as several months is possible between the reporting of a reject to GSS and the appearance of the correction in the foreground component. Figure I-1 below illustrates the basic architecture of the Geosupport System. Fig I-1 Geosupport architecture: components and Production Cycle Please note the following elements depicted in Figure I-1: \u2022 The interaction between the application program and the Geosupport foreground component via the Geosupport API \u2022 The examination by the user of rejects and the feedback of unresolved rejects to GSS for research and possible background file updating \u2022 The periodic generation (in the Background Component) of new releases of foreground files","title":"User Feedback of Rejects "},{"location":"chapters/chapterI/section06/","text":"I.6 Technical References For detailed information refer to the Geosupport System User Programming Guide . This section will discuss those elements where the information on the mainframe is different than when you are using Geosupport Desktop Edition. I.6.1 Street Names Refer to Chapter III in the Geosupport System User Programming Guide . There is no difference for Street Names between Geosupport on the mainframe and Geosupport Desktop Edition. I.6.2 Street Codes Refer to Chapter IV in the Geosupport System User Programming Guide . Ignore any discussion of \u201cPB5SC\u201d, which is a special form of the street codes used only on the mainframe. I.6.3 Address Processing Refer to Chapter V in the Geosupport System User Programming Guide . In Geosupport Desktop Edition, the House Number in Internal Format (HNI) is not used. In its place the House Number in Sort Format (HNS) is used. The HNI is a 6 byte field and may be used in mainframe applications. The HNS is an 11 byte field. When reading Chapter V in the Geosupport System User Programming Guide , substitute HNS whenever HNI is referenced. I.6.4 Tax Lot and Building Processing Refer to Chapter VI in the Geosupport System User Programming Guide for detailed information on this subject. However ignore Chapter VI.8 , which discusses the Standard and Legacy version of Functions 1A and BL. The Legacy version is not available in Geosupport Desktop Edition. I.6.5 Street Configuration Processing Refer to Chapter VII in the Geosupport System User Programming Guide for detailed information on this subject.","title":"I.6 Technical References"},{"location":"chapters/chapterII/chapterII/","text":"CHAPTER II INTRODUCTION TO THE GEOSUPPORT API","title":"Chapter II"},{"location":"chapters/chapterII/section01/","text":"II.1 Introduction This chapter presents an overview of the Geosupport Application Programming Interface (API), the mechanism through which a user-written application program interfaces directly with the Geosupport System. The basic architecture of the API, the user programming procedure required to utilize the API, and reject handling are described. The important distinction between one-work-area and two-work-area calls is discussed, and the long-work-area-2 option is described. The material in this chapter is general in nature. Chapter VIII discusses in detail the user programming statements and JCL required to utilize the API, and other chapters discuss application design issues specific to the various functions. The Geosupport API consists of the following elements: A Geosupport load module called the driver that the user must link-edit into the application program. The driver serves as an intermediary between the user\u2019s application program and the Geosupport foreground software. One or two standard layout work areas that the user must include in the application program and that are used to pass data between the application program and Geosupport. Programming statements that the user codes in the application program utilizing the driver and work area(s) to interact with Geosupport. With very few exceptions, the Geosupport API is identical in the batch and CICS environments. The principal exception is the name of the driver. The driver has two principal purposes. It passes execution control from the user program to the Geosupport foreground software, which is external to the user program load module. The driver also passes addressability to the work areas (which are located within the user program) to the Geosupport foreground software, thereby enabling the foreground software to access those work areas. User programs never read Geosupport\u2019s internal files directly. They are read only by the Geosupport foreground software, which returns data retrieved from those files to the calling user program in the work areas. In batch applications, the user JCL for the execute step must include DD statements for the load libraries that contain the Geosupport foreground software and data. Chapter VIII describes the JCL required for batch execution, and Appendix 8 contains examples. Figure II-1, below, illustrates the elements of the Geosupport API as just described. The illustration assumes that the user program has a data file into which it writes information obtained from successful calls to Geosupport, and another file, printed report or screen display for handling rejects. Fig II-1 The Geosupport API When a user program issues a call to the driver, either one or two work areas are passed as parameters of the call. Work Area 1 (WA1) is always passed, and its length and layout are the same for all functions. Work Area 2 (WA2) may also be passed, depending on the Geosupport function being requested and the type of information needed by the user's application. The length and layout of WA2 are determined by the function and, for functions that have the \u2018long Work Area 2 option\u2019, by whether that option is specified. The distinction between one-work-area calls and two-work-area calls is discussed in Chapter II.4 . The long Work Area 2 option is discussed in Chapter II.5 . There is also the Auxiliary Segment option which is discussed in Chapter II.6 and the Extended Work Area 2 option which is discussed in Chapter II.7 . The work areas may be Mainframe-Specific Work Areas (MSWs) or Character-Only Work areas (COWs). For a description of these formats see Appendix 12 . For the convenience of users whose programs are written in COBOL, IBM mainframe assembler, PL/1, C or NATURAL, Geosupport COPY libraries (copylibs) are maintained, containing source code layouts of each work area in each of those programming languages. The Geosupport COPY libraries are discussed in detail in Chapter VIII. The use of the Geosupport COPY libraries is optional but strongly recommended. Note for CICS NATURAL Users: In order for Geosupport\u2019s CICS driver to pass control to the foreground component of Geosupport properly, it must know whether the calling user program is written in NATURAL. The driver determines this by examining a Geosupport table. This table contains a list of the transaction-IDs of CICS transactions that launch NATURAL programs that call Geosupport. If the transaction-ID of such a transaction is not in the table, the driver will mistakenly assume that the program calling Geosupport is not written in NATURAL, and the transaction will terminate abnormally when the program calls Geosupport. At DoITT, the updating of the Geosupport NATURAL transaction-ID table is the responsibility of DoITT staff. Therefore, DoITT users who have new CICS applications written in NATURAL that are to access Geosupport must inform DoITT staff, who will enter the new transaction-ID into the table. CICS NATURAL users running at other computer centers should contact GSS.","title":"II.1 Introduction"},{"location":"chapters/chapterII/section02/","text":"II.2 Geosupport Return Codes and Reject Handling Geosupport has an elaborate apparatus to support application problem-handling. There are three output fields in Work Area 1 that are used to inform calling applications of the outcome of each call to Geosupport. These fields are the Geosupport Return Code (GRC), the Reason Code and the Message. A comprehensive list of GRCs, Reason Codes and Messages is contained in Appendix 4 . The GRC is a two-byte character item into which Geosupport inserts a value before returning control to the calling application, as follows. A GRC value of \u201800\u2019 indicates unconditionally successful completion . A GRC value of \u201801\u2019 indicates a warning condition. A GRC value other than \u201800\u2019 or \u201801\u2019 signifies unsuccessful completion, or rejection , caused by either a system error or a user error. Since Function 1B is a combination of two functions, viz. Functions 1A Extended and 1E Extended, a second set of GRC, Reason Code and Message field is defined in Work Area 1 . This second set contains the GRC, Reason Code and Message for the Function 1A Extended portion of the Function 1B call. The original GRC, Reason Code and Message fields in Work Area 1 contain the GRC, Reason Code and Message from the Function 1E Extended portion of the Function 1B call. (It is entirely possible that Geosupport will find one set of information and not find the other. There can be an error code and message in the new GRC and Message fields indicating PAD data (Function 1A) has not been found, and a 00 or 01 GRC in the original Return Code field indicating Blockface (Function 1E) information has been found, or just the opposite.) Warnings are conditionally successful completions. They alert the user to unusual aspects of the input or output data, or signify that Geosupport made an assumption about or modification to the input data. For example, Functions 1A, 1B and 1E issue a warning to alert the user that a required hyphen is missing from an input house number and that Geosupport has inserted the missing hyphen into the output normalized house number. There are situations where user input data may result in multiple warning messages. In some cases, the warnings may be combined into a single message; however in other situations, it is not possible to combine the messages. When that happens, Geosupport attempts to select the warning message that would be most important. Based upon user feedback, the relative importance of the warning messages may be updated. It is advisable for application designers to review the possible warnings that can be elicited by the functions their application will be calling (delineated in Appendix 4 ), and to determine whether there are types of warnings for which it would be appropriate to provide special handling routines. In some applications, it may be appropriate simply to display the messages that accompany warning returns, and otherwise to process warnings in the same fashion as unconditionally successful completions. For all unconditionally successful completions, Geosupport returns values in the work area(s) for the full set of output data items that the given Geosupport function is designed to provide. (But see the note of caution regarding the return of values in work area output fields in Chapter II.4. ) In the case of a warning, certain output fields may be \u2018empty\u2019 (blank, all zeros or otherwise devoid of information), depending on the nature of the warning. In the case of a rejection, almost all output fields are returned empty, but there will be values in the GRC and Message field. Rejects can be caused either by a system error or a user error. System errors are problems that are not attributable to the user program or to the user input data, and therefore are beyond the user\u2019s control. Typical system errors are hardware errors, operating system errors and Geosupport software errors or data errors. User errors can occur when the user\u2019s program makes a call to Geosupport improperly, such as passing an invalid number of work areas; or when Geosupport considers the user\u2019s input data to be geographically or otherwise invalid, such as an invalid function code, an empty input field for which a value is mandatory, an invalid borough code, an invalid address. For all warnings and rejects, the Message field contains an appropriate message. In addition, for all warnings and for some rejects, a value is returned in the Reason Code field, specifying more precisely the reason for the warning or rejection. The user program should be designed so that, immediately upon receiving execution control back after a call to Geosupport, it examines the GRC (and the Reason Code, when relevant) to determine the outcome of the call, and takes appropriate action. (Note: the textual content of Geosupport messages is subject to revision without notice. Therefore, application developers should program rejection processing based on the value of the GRC and Reason Code rather than on the Message. Note also, that, in very rare instances a GRC may be retired and reused for a new message. If and when this happens, the Geosupport users will be notified of the change in advance so that appropriate adjustments can be made.) In batch applications, appropriate actions for processing a warning or reject might include printing out the GRC, Reason Code and Message and/or writing the record to a reject file. In interactive applications, appropriate actions might include displaying the GRC, Reason Code and Message on the screen, and (for user errors, not system errors) giving the data entry operator an opportunity to correct the error and resubmit.","title":"II.2 Geosupport Return Codes and Reject Handling"},{"location":"chapters/chapterII/section03/","text":"II.3 Geosupport API User Programming Procedure A field in a Geosupport API work area into which the user program inserts a value to be passed to Geosupport is referred to as an input field of the work area (because it is an input datum to Geosupport). A field in a work area into which Geosupport inserts a value to be returned to the user program is called an output field. WA1 contains both input and output fields . WA2 contains output fields only. The loading of values into WA1 input fields by the user program prior to issuing the call to the driver is referred to as priming WA1. The function being requested, determines which WA1 input fields must be primed, which are optional, and which are not used. One WA1 input field that is mandatory for all calls is the field for the function code. Combinations of other WA1 input fields, such as those for borough code, address number, street name and street code fields, collectively serve to specify a geographic location to be processed. Still other WA1 input fields are for specifying processing options, such as parameters that control how street names are normalized; most of those fields have default values and are optional. It is essential that the user program clear WA1 to blanks before priming it, in order to eliminate any \u2018stray\u2019 data inadvertently lingering from a previous call . Various fields in the WA1 output area are initialized to blanks to help avoid extraneous data. If the call involves two work areas, however, WA2 need not be cleared by the user program before calling the driver, because Geosupport clears WA2 automatically. After clearing WA1 to blanks, the user program primes WA1, and then issues a standard subroutine call to the driver, passing the work area(s) (more precisely, their memory addresses) as parameters of the call. (Note that a standard subroutine call is used to call the driver even in the CICS environment, rather than a CICS LINK.) The driver, in turn, passes execution control to Geosupport (more precisely, to the foreground component of Geosupport), which is external to the user program load module. When Geosupport completes its processing for the given call, control is returned to the driver, which in turn returns control back to the user program. The user program can issue any number of calls to Geosupport during a single execution. Each call is an independent event, which Geosupport processes based entirely on the contents of WA1 passed in that call; Geosupport does not \u2018remember\u2019 previous calls. The procedure that a user program would follow to call Geosupport via the API can be summarized as follows: Clear WA1 to blanks Prime WA1. That is, move values to the appropriate input fields in WA1. The function code is always required; other required and optional input fields depend on the function, and are listed in Appendix 1 . Issue a standard subroutine call to the driver, passing as calling parameter(s) either WA1 only or both WA1 and WA2. The required calling statements are described in Chapter VIII.3 and VIII.5 . The distinction between one- and two-work-area calls is discussed in Chapter II.4 . Upon return of control to the user program, examine the GRC (and the Reason Code, if appropriate) in WA1, and take appropriate action. A list of the GRCs and Reason Codes that can be produced by each function is in Appendix 4 . a. For Function 1B, examine both sets of GRC (and Reason Code, if appropriate) in WA1.","title":"II.3 Geosupport API User Programming Procedure"},{"location":"chapters/chapterII/section04/","text":"II.4 One-Work-Area and Two-Work-Area Calls There are important distinctions between one-work-area and two-work-area calls. When a Geosupport function is called using one work area, Geosupport \u2018normalizes\u2019 certain input items, that is, it reformats them into a standard form. For each such input item that Geosupport successfully normalizes, there is a WA1 output field into which Geosupport inserts the item in normalized form. Normalizing includes such processing as right-justifying and zero-filling certain numeric input items (such as tax block and tax lot numbers), and providing fully spelled out borough names corresponding to input borough codes. Normalizing also encompasses performing complex algorithms to reformat street names and address numbers into standard formats. After normalizing the appropriate input items, if the one-work-area call involves street name input items, Geosupport attempts to retrieve the street code corresponding to each input street name. If this is successful, each street code is returned in WA1. In summary, the processing Geosupport performs for a one-work-area call consists of normalization of the input data and the return of normalized values and street codes (if any) in WA1. The processing performed for a two-work-area call includes all of the processing performed for a one-work-area call as well as certain additional processing. The nature of this additional processing depends on the Geosupport function. The additional processing generally consists of accessing Geosupport files in order to attempt to obtain certain geographic information associated with the input data. If the file access is successful, this geographic information is returned in WA2 (but see the cautionary note below). The process of associating higher level geographic information with an individual location is called geocoding , and the items of higher level information are called geocodes . Typical examples of geocodes returned by Geosupport in WA2 are community district, census tract, ZIP code and health area. Caution: For a two-work-area call, a GRC of \u201800\u2019 or \u201801\u2019 signifies that Geosupport has accepted as valid the input geographic location specified by the user, but it does not guarantee that every item normally returned by the given function in WA2 contains a non-empty value. If a WA2 field is returned empty, this may or may not be erroneous. The field might be empty (blanks, zeros or otherwise devoid of information) because of an erroneous Geosupport data omission; this should be reported to GSS staff using the feedback procedures described in Appendix 6 . However, the field might be empty intentionally and non-erroneously because the type of geographic area it represents does not completely cover the city. For example, there are certain non-residential areas of the city where the Department of Sanitation has not defined Collection Scheduling districts. When a two-work-area call results in a GRC of \u201800\u2019 or \u201801\u2019, it is the responsibility of the user program to determine whether the particular WA2 fields being used by the application are non-empty . Except for system errors, the outcome of a call to Geosupport, as signified by the GRC, Reason Code and Message, concomitantly has significance with respect to the geographic validity of the input data. The type of validation performed depends on the function and on whether a one- or two-work-area call has been made. The validations performed in a two\u2011work\u2011area call to a function are always more extensive than those performed in a one-work-area call to the same function. To illustrate this, consider Function 2, which processes an intersection specified in terms of two streets (note that Function 2 can also process intersections based on an intersection name or a node ID, but those inputs are not relevant to this example). In a one-work-area Function 2 call, if the two input streets were specified in the form of street names rather than street codes, Geosupport attempts to normalize the street names and obtain their street codes; success in doing so therefore validates that each input street name is recognizable to Geosupport as a valid name of a specific New York City street. However, the two input streets (names or codes) are processed independently of each other and are not treated as collectively defining a geographic location, in this case an intersection. In other words, when Function 2 is called using one work area, the existence of the intersection formed by the two input streets is not validated; the call will result in a GRC of \u201800\u2019 or \u201801\u2019 if both input street names are successfully normalized and recognized, regardless of whether the two streets intersect. In a two-work-area Function 2 call, on the other hand, Geosupport treats the two input streets as the intended specification of an intersection; an (unconditionally or conditionally) successful outcome validates the existence of this intersection, and if it is valid, Geosupport returns information about the intersection in WA2. For Geosupport functions in general, a one-work-area call validates only that the input items can be normalized and that input street names are recognizable to Geosupport, while a two-work-area call additionally provides some level of validation of the geographic location specified collectively by the input items. The specific validations performed in a two-work-area call to each Geosupport function are described in Chapters V through VII . A two\u2011work\u2011area call causes Geosupport to access files additional to those accessed for a one\u2011work\u2011area call to the same function. Therefore, to maximize execution efficiency, when an application does not require the additional output data and/or validation processing that a two\u2011work\u2011area call provides, the application should issue a one-work-area call.","title":"II.4 One-Work-Area and Two-Work-Area Calls"},{"location":"chapters/chapterII/section05/","text":"II.5 Coding Geosupport API Calls The languages discussed in this section are C/C++ and Visual Basic/VBA. In general, the discussion assumes that the defaults were chosen during installation of Geosupport Desktop Edition. This section describes the source code statements that the user must code in C/C++ and Visual Basic/VBA application programs to call the DLL. Also described are the statements required to declare the DLL. As discussed in Chapter II.4 , typically, the DLL can be called either with one or with two calling parameters. The first parameter passes the address of Work Area 1 to the DLL. If the application program is making a two-work-area call, the second parameter passes the address of Work Area 2 to the DLL. The programming statements to declare and call the DLL are shown below. Declaring the DLL In a C/C++ program, the DLL is declared by including the NYCgeo.h header file that is distributed with Geosupport Desktop Edition, as shown below: #include \"NYCgeo.h\" In a Visual Basic/VBA program, the DLL must be declared to have two calling parameters for two-work-area calls and also two calling parameters for one-work area calls. This will not affect the processing. Examples of declaring NYCgeo for a two-work-area call (function 1E) and a one-work-area call (function D) appear below: Declare Sub wgF1E Lib \"NYCgeo.dll\" Alias \"NYCgeo\" (x As C_WA1, y As C_WA2_F1E) Declare Sub wgFD Lib \"NYCgeo.dll\" Alias \"NYCgeo\" (x As C_WA1, Optional y = NOTHING) Calling the DLL If \u2018WA1\u2019 and \u2018WA2\u2019 are the names that the user has given to the work areas within the application program source code, the statement calling the DLL would be coded as follows: Language One-Work-Area Call Two-Work-Area Call C/C++ NYCgeo(&WA1); NYCgeo(&WA1,&WA2); Visual Basic/VBA wgFD wa1 wgF1E wa1, wa2","title":"II.5 Coding Geosupport API Calls"},{"location":"chapters/chapterII/section06/","text":"II.6 The Work Area C/C++ Header File and Visual Basic Typedef File The source code layouts of all the Geosupport API work areas appear in a header file for C/C++ (pac.h) and a typedef file for Visual Basic (vbwadef.bas). These files may be found in c:\\program files\\Geosupport Desktop Edition\\include Use of these files is strongly recommended. A listing of the files appear in Appendix 5. A text description of the work area layouts is provided in Appendix 2. For C/C++, Chapter II.7 describes the specific source code statements that users must code in their programs to utilize the Geosupport header file. See sample C/C++ program for what is required to compile a program that utilizes the Geosupport header file.","title":"II.6 The Work Area C/C++ Header File and Visual Basic Typedef File"},{"location":"chapters/chapterII/section07/","text":"II.7 Coding API Calls When Using Geosupport C/C++ Header Files This section describes the source code statements that users must code in application programs that use the Geosupport header file. The required statements consist of a declarative statement to reference the header file and statements calling the DLL. In Chapter II.5 , the forms of calls to the DLL were given using arbitrary data names for the work areas. In programs that do not use the Geosupport header file, those names are user-selectable. In the present section, the forms of the DLL calls are given again, this time with the specific data names that are required for compatibility with the header file. The C/C++ languages permit header file users to select their own names for the work areas (but not for the fields within the work areas). Prior to each call to the DLL, the program must prime Work Area 1 with the input data to be processed by Geosupport, as described in Chapter II.3 . II.7.1 C/C++ Source Code Statement To reference the Geosupport C/C++ header file which contains the work area layouts, the C/C++ program must contain the following statement: #include \"pac.h\" The work area layouts must be declared using the typedefs in the Geosupport header file. For example: C_WA1 anyname_wa1; WA1, all functions C_WA2_F1 anyname_wa2_f1; WA2, Functions 1 & 1E C_WA2_F1A anyname_wa2_f1a; WA2, Functions 1A & BL (regular & long WA2), BN C_WA2_F2 anyname_wa2_f2; WA2, Function 2 C_WA2_F2 anyname_wa2_f3; WA2, Function 3 C_WA2_F3C anyname_wa2_f3c; WA2, Function 3C C_WA2_F3S anyname_wa2_f3s; WA2, Function 3S For C/C++ programs that use the Geosupport header file, API calls may be coded as follows: NYCgeo (&anyname_wa1); One-work-area calls, all functions. NYCgeo (&anyname_wa1,&anyname_wa2_f1); Two-work-area calls, Functions 1 & 1E NYCgeo (&anyname_wa1,&anyname_wa2_f1a); Two-work-area calls, Functions 1A & BL (regular & long WA2), BN NYCgeo (&anyname_wa1,&anyname_wa2_f2); Two-work-area calls, Function 2 NYCgeo (&anyname_wa1,&anyname_wa2_f3); Two-work-area calls, Function 3 NYCgeo (&anyname_wa1,&anyname_wa2_f3c); Two-work-area calls, Function 3C NYCgeo (&anyname_wa1,&anyname_wa2_f3s); Two-work-area calls, Function 3S An alternative method of calling NYCgeo from C/C++ appears in the sample program. Please see Chapter II.9 .","title":"II.7 Coding API Calls When Using Geosupport C/C++ Header Files"},{"location":"chapters/chapterII/section07/#ii71-cc-source-code-statement","text":"To reference the Geosupport C/C++ header file which contains the work area layouts, the C/C++ program must contain the following statement: #include \"pac.h\" The work area layouts must be declared using the typedefs in the Geosupport header file. For example: C_WA1 anyname_wa1; WA1, all functions C_WA2_F1 anyname_wa2_f1; WA2, Functions 1 & 1E C_WA2_F1A anyname_wa2_f1a; WA2, Functions 1A & BL (regular & long WA2), BN C_WA2_F2 anyname_wa2_f2; WA2, Function 2 C_WA2_F2 anyname_wa2_f3; WA2, Function 3 C_WA2_F3C anyname_wa2_f3c; WA2, Function 3C C_WA2_F3S anyname_wa2_f3s; WA2, Function 3S For C/C++ programs that use the Geosupport header file, API calls may be coded as follows: NYCgeo (&anyname_wa1); One-work-area calls, all functions. NYCgeo (&anyname_wa1,&anyname_wa2_f1); Two-work-area calls, Functions 1 & 1E NYCgeo (&anyname_wa1,&anyname_wa2_f1a); Two-work-area calls, Functions 1A & BL (regular & long WA2), BN NYCgeo (&anyname_wa1,&anyname_wa2_f2); Two-work-area calls, Function 2 NYCgeo (&anyname_wa1,&anyname_wa2_f3); Two-work-area calls, Function 3 NYCgeo (&anyname_wa1,&anyname_wa2_f3c); Two-work-area calls, Function 3C NYCgeo (&anyname_wa1,&anyname_wa2_f3s); Two-work-area calls, Function 3S An alternative method of calling NYCgeo from C/C++ appears in the sample program. Please see Chapter II.9 .","title":" II.7.1 C/C++ Source Code Statement "},{"location":"chapters/chapterII/section08/","text":"II.8 Creating a Geosupport Desktop Edition Application The Geosupport library (NYCgeo.lib) must be made available to the languages that require it, viz. C/C++. The C/C++ header files (NYCgeo.h and pac.h) should be included in made available for C/C++ programs. See sample programs in Chapter II.9 for more detail. The internal Geosupport data files are automatically defined as environment variables during installation of Geosupport Desktop Edition. No action is required by the user.","title":"II.8 Creating a Geosupport Desktop Edition Application"},{"location":"chapters/chapterII/section09/","text":"II.9 Sample Programs with Descriptions This section contains: A fully described sample C/C++ program A fully described sample Visual Basic program Please note that the sample programs are not guaranteed to work and are provided as programming aides. II.9.1 C/C++ Sample Program with Description This section walks you through writing a C/C++ program that makes Geosupport Desktop Edition calls. It assumes that you are familiar with your Integrated Development Environment (IDE) and that you know how to code in C/C++. The complete program used here can be found at the end of this section in Listing II.8. Please note: The program in this section represents just one of many styles of coding in C/C++. It may be used as an example. It is not guaranteed. There are six basic steps to making Geosupport Desktop Edition calls from a C/C++ program: 1. Set up your environment. 2. Include needed header files and other variable definitions. 3. Prepare Work Area 1. 4. Call NYCgeo. 5. Check the Geosupport Return Code. 6. Access the data in Work Area 1 and Work Area 2. optional step - convert house numbers in sort format or street codes with a function D call. That's it. If you follow this list, in no time you should be writing C/C++ programs that take advantage of the power of Geosupport. Set Up Your Environment To begin, you need to tell your Integrated Development Environment (IDE) where to find several important Geosupport files. These can be found in Listing II.1 below. Your IDE should have a Setup Menu for changing project options. Navigate to this menu in your IDE and add Line 1 or Line 2 in Listing II.1 to the existing settings. Now add lines 3 and 4 in Listing II.1 to the settings for Include (or Header) File Locations. Listing II.1 Library and Header Files Needed by Geosupport Desktop Edition 1: harddrive:\\Program Files\\Geosupport Desktop Edition\\Include\\BC++ Library\\NYCgeo.lib or
2: harddrive:\\Program Files\\Geosupport Desktop Edition\\Include\\MSVC Library\\NYCgeo.lib 3: harddrive:\\Program Files\\Geosupport Desktop Edition\\Include\\ NYCgeo.h 4: harddrive:\\Program Files\\Geosupport Desktop Edition\\Include\\pac.h Include Header Files In C/C++, you need to include a function prototype in order to successfully call a function. Line2 in Listing II.2 below shows you how to include the Geosupport Desktop Edition prototype in your program. Geosupport uses several \"work areas\" to return data to the user. For your convenience we have included the layouts for these work areas in a header file \"pac.h\" (line 4 in Listing II.2). We strongly recommend that you use these layouts. Lines 8 and 9 below are useful variables we recommend you use. These are the lengths of the work areas that you will be using. LEN_WA1 is particularly useful as you will see later. The unions (lines 11 through 20 in Listing II.2) of the work area structures with character arrays are useful in several ways for making your calls. First, the structure (e.g.\"wa1\" in line 11) makes it easy for you to access the individual fields in the work areas. Second, the character array (e.g.\"wa1c\" in line 12) allows you to easily initialize Work Area 1. The second Work Area 1 (lines 18 through 20) was set up to enable you to make another Geosupport call (e.g. function D } without losing the Work Area 1 output data from your original function call. Listing II.2 Include Header Files and Set Up Variables 1: // function prototype for NYCgeo 2: #include \"NYCgeo.h\" 3: // header file of workarea layouts 4: #include \"pac.h\" 5: #include 6: #include 7: // lengths of workareas 8: size_t const LEN_WA1 = sizeof(C_WA1); 9: size_t const LEN_WA2F1 = sizeof(C_WA2_F1); 10: // convenient way to handle workareas 11: union { C_WA1 wa1; 12: char wa1c[LEN_WA1]; 13: } w1; 14: union { C_WA2_F1 wa21; 15: char wa21c[LEN_WA2F1]; 16: } w21; 17: // this second WA1 is for Function D calls 18: union { C_WA1 wa1fd; 19: char wa1fdc[LEN_WA1]; 20: } w1fd; Set Up Work Area 1 for Function Call There are two steps that must precede every call to Geosupport.. 1. Work Area 1 must be initialized to spaces (see line 4 in Listing II.3 below). 2. The \"platform indicator\" field must be set to #include // lengths of workareas size_t const LEN_WA1 = sizeof(C_WA1); size_t const LEN_WA2F1 = sizeof(C_WA2_F1); // convenient way to handle workareas union { C_WA1 wa1; char wa1c[LEN_WA1]; } w1; union { C_WA2_F1 wa21; char wa21c[LEN_WA2F1]; } w21; // this second WA1 is for Function D calls union { C_WA1 wa1fd; char wa1fdc[LEN_WA1]; } w1fd; char *convstr; convstr = (char*) malloc(81); //////////////////////////////////////////////////////////////////////////// // input fields initialized to sample values //////////////////////////////////////////////////////////////////////////// char in_boro_str[2] = '1'; char in_stname_str[32] = 'reade st'; char in_housenum_str[16] = '22'; char in_stcode_str[11] = '1061002010'; void main() { ///////////////////////////////////////////////////////////////////////// // get input data from user ///////////////////////////////////////////////////////////////////////// printf(\"Input a Boro Code:\"); gets(in_boro_str); printf(\"Input a House Number:\"); gets(in_housenum_str); printf(\"Input a Street Name:\"); gets(in_stname_str); ///////////////////////////////////////////////////////////////////////// // set up workarea 1 ///////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////// // these two lines of code must be executed for every NYCgeo call ///////////////////////////////////////////////////////////////////////// memset(w1.wa1c, ' ', LEN_WA1); w1.wa1.input.platform_ind = 'C'; ///////////////////////////////////////////////////////////////////////// // select the function you wish to call ///////////////////////////////////////////////////////////////////////// memcpy(w1.wa1.input.func_code, \"1E\", 2); memcpy(w1.wa1.input.sti, in_boro_str, 1); memcpy(w1.wa1.input.sti[0].Street_name, in_stname_str, 32); // can use street code instead of street name // memcpy(w1.wa1.input.sti[0].SC10, in_stcode_str, 5); memcpy(w1.wa1.input.hse_nbr_disp, in_housenum_str, 16); memcpy(w1.wa1.input.snl, \"32\", 2); NYCgeo(w1.wa1c, w21.wa21c); //////////////////////////////////////////////////////////////////////// // check the return code: if successful, process data // if not successful, display error message //////////////////////////////////////////////////////////////////////// // the function completed successfully if ((memcmp(w1.wa1.output.ret_code, \"00\", 2) == 0) | (memcmp(w1.wa1.output.ret_code, \"01\", 2) == 0)) { // these fields are returned for both function 1 and 1E calls memcpy(convstr, w21.wa21.zip_code, sizeof w21.wa21.zip_code); convstr[sizeof w21.wa21.zip_code] = '\\0'; printf(\"zip code = %s\\n\", convstr); memcpy(convstr, w21.wa21.lo_hse_nbr, sizeof w21.wa21.lo_hse_nbr); convstr[sizeof w21.wa21.lo_hse_nbr] = '\\0'; printf(\"low house number = %s\\n\", convstr); memcpy(convstr, w21.wa21.hi_hse_nbr, sizeof w21.wa21.hi_hse_nbr); convstr[sizeof w21.wa21.hi_hse_nbr] = '\\0'; printf(\"high house number = %s\\n\", convstr); memcpy(convstr, w21.wa21.coord[0], sizeof w21.wa21.coord[0]); convstr[sizeof w21.wa21.coord[0]] = '\\0'; printf(\"X coordinate = %s\\n\", convstr); memcpy(convstr, w21.wa21.coord[1], sizeof w21.wa21.coord[1]); convstr[sizeof w21.wa21.coord[1]] = '\\0'; printf(\"Y coordinate = %s\\n\", convstr); // these fields are returned for function 1E calls only memcpy(convstr, w21.wa21.ad, sizeof w21.wa21.ad); convstr[sizeof w21.wa21.ad] = '\\0'; printf(\"Assembly District = %s\\n\", convstr); memcpy(convstr, w21.wa21.ed, sizeof w21.wa21.ed); convstr[sizeof w21.wa21.ed] = '\\0'; printf(\"Election District = %s\\n\", convstr); ////////////////////////////////////////////////////////////////////// // function D, a 1 workarea call to Geosupport, converts // housenumbers in sort format to housenumbers in display format and // street codes to street names ////////////////////////////////////////////////////////////////////// // set up workarea 1 defined for function D calls memset(w1fd.wa1fdc, ' ', LEN_WA1); w1fd.wa1fd.input.platform_ind = 'C'; memcpy(w1fd.wa1fd.input.func_code, \"D \", 2); memcpy(w1fd.wa1fd.input.hse_nbr_hns, w21.wa21.hi_hse_nbr, sizeof w21.wa21.hi_hse_nbr); memcpy(w1fd.wa1fd.input.lohse_nbr_hns, w21.wa21.lo_hse_nbr, sizeof w21.wa21.lo_hse_nbr); memcpy(w1fd.wa1fd.input.sti, w1.wa1.output.sto, 1); memcpy(w1fd.wa1fd.input.sti[0].SC10, w1.wa1.output.sto[0].SC10, 5); // make 1 work area call NYCgeo(w1fd.wa1fdc); // function D completed successfully if ((memcmp(w1fd.wa1fd.output.ret_code, \"00\", 2) == 0) | (memcmp(w1fd.wa1fd.output.ret_code, \"01\", 2) == 0)) { //////////////////////////////////////////////////////////////////// // prepare output fields from function D call //////////////////////////////////////////////////////////////////// memcpy(convstr, w1fd.wa1fd.output.lo_hse_nbr_disp, sizeof w1fd.wa1fd.output.lo_hse_nbr_disp); convstr[sizeof w1fd.wa1fd.output.lo_hse_nbr_disp] = '\\0'; printf(\"Low House Number of Block Face = %s\", convstr); memcpy(convstr, w1fd.wa1fd.output.hi_hse_nbr_disp, sizeof w1fd.wa1fd.output.hi_hse_nbr_disp); convstr[sizeof w1fd.wa1fd.output.hi_hse_nbr_disp] = '\\0'; printf(\"High House Number of Block Face = %s\", convstr); memcpy(convstr, w1fd.wa1fd.output.sto[0].Street_name, sizeof w1fd.wa1fd.output.sto[0].Street_name); convstr[sizeof w1fd.wa1fd.output.sto[0].Street_name] = '\\0'; printf(\"Street Name from Function D = %s\", convstr); } // there was an error in the function D call else { // display grc of function D call memcpy(convstr, w1fd.wa1fd.output.ret_code, sizeof w1fd.wa1fd.output.ret_code); convstr[sizeof w1fd.wa1fd.output.ret_code] = '\\0'; printf(\"Error on Function D call: %s\\n\", convstr); // display grc message of function D call memcpy(convstr, w1fd.wa1fd.output.msg, sizeof w1fd.wa1fd.output.msg); convstr[80] = '\\0'; printf(\" : %s\\n\", convstr); } } // there was an error in the function 1E call else { // display grc memcpy(convstr, w1.wa1.output.ret_code, sizeof w1.wa1.output.ret_code); convstr[sizeof w1.wa1.output.ret_code] = '\\0'; printf(\"Error on Function 1E call: %s\\n\", convstr); // display grc message memcpy(convstr, w1.wa1.output.msg, sizeof w1.wa1.output.msg); convstr[80] = '\\0'; printf(\" : %s\\n\", convstr); } free (convstr); } // end of main II.9.2 Visual Basic (VB/VBA) Sample Program with Description This section walks you through writing a Visual Basic (VB) or Visual Basic for Applications (VBA) program that makes Geosupport Desktop Edition calls. It assumes that you are familiar with your Integrated Development Environment (IDE) and that you know how to code in VB or VBA. This sample program is based on a simple form that provides input fields and output fields to display the returned data. The code is attached to a command button and responds to a \"click\" event. Please note: The program in this section represents just one of many styles of coding in Visual Basic. It may be used as a sample. It is not guaranteed. There are six basic steps to making Geosupport Desktop Edition calls from a VB/VBA program: 1. declare the work area variable definitions. 2. declare the NYCgeo procedure. 3. prepare Work Area 1. 4. call NYCgeo. 5. check the Geosupport return code 6. access the data in Work Area 1 and Work Area 2 optional step - convert house numbers in sort format or street codes with a function D call. That's it. If you follow this list, in no time you should be writing VB programs that take advantage of the power of Geosupport. Declare the Work Area Variables VB/VBA users may use the tyepdef file found in c:\\program files\\Geosupport Desktop Edition\\include\\vbwadef.bas or they may choose to code their own typedefs using the character-only Work Area descriptions that can be found in Appendix 2 as the guide. It is recommended that you use the supplied typedef file. The sample program in Listing II.16 does not use the typedef file, vbwadef.bas, but does create similar typedefs for Work Area 1 and Work Area 2 for Functions 1/1E. If the users choose to create their own typedefs, particular attention should be paid to setting up Work Area 1 as this is used in every function call. Listing II.9 shows a few examples of how to set up Work Area 1 as well as a second Work Area 1 to be used in making Function D calls (see Line 33 in Listing II.9). If this code is part of a VBA application and is attached to a Form, you may have to declare the variables and types as Private. Because the code in Listing II.16 at the end is attached to a Form, the variables and types are declared as Private. Listing II.9 Declare the Work Area Variables 1: Type STREET 2: boro As String * 1 3: sc10 As String * 10 4: Street_name As String * 32 5: End Type 6: Type INPUT_DEF 7: func_code As String * 2 8: house_num As String * 16 9: house_num_sort As String * 11 10: lo_house_num As String * 16 11: lo_house_num_sort As String * 11 12: sti(1 To 3) As STREET 13: filler01 As String * 175 14: End Type 15: Type OUTPUT_DEF 16: boro_name As String * 9 17: house_num As String * 16 18: house_num_sort As String * 11 19: sto(1 To 3) As STREET 20: filler02 As String * 11 21: lo_house_num As String * 16 22: lo_house_num_sort As String * 11 23: filler05 As String * 154 24: ret_code As String * 2 25: msg As String * 80 26: filler03 As String * 402 27: End Type 28: Type C_WA1 29: input1 As INPUT_DEF 30: output1 As OUTPUT_DEF 31: End Type 32: vbwa1 As C_WA1 33: fdwa1 As C_WA1 Declare the NYCgeo Procedure Listing II.10 below shows one example of how you can declare a Sub procedure to call Geosupport Desktop Edition. If \"NYCgeo.dll\" is not in your Windows system directory (usually c:\\winnt\\system) or not in your include path, then you should give its fully qualified path name (e.g. \"c:\\myproj\\files\\NYCgeo.dll\"). You may use whatever naming convention you wish for your Sub procedures, but the Alias must always be \"NYCgeo\". Line 2 in Listing II.10 shows how to declare a Sub procedure to call Geosupport Desktop Edition for a one-work-area call. The first parameter is Work Area 1 but the second parameter must be defined as \"Optional\". Setting its default value to \"Nothing\" is not required but a safe programming technique. Listing II.10 Declare the NYCgeo Procedure 1: Declare Sub wgF1E Lib \"NYCgeo.dll\" Alias \"NYCgeo\" (x As C_WA1, _y As C_WA2_F1E) 2: Declare Sub wgFD Lib \"NYCgeo.dll\" Alias \"NYCgeo\" (x As C_WA1, _Optional y = Nothing) Prepare Work Area 1 There are two steps that must precede every call to Geosupport. First, Work Area 1 must be initialized to spaces (see lines 1 - 7 in Listing II.11 below). Second, the \"platform indicator\" field must be set to 'C' (see line 8 in Listing II.11 below). Other than the two steps above, there is only one other field that must contain a value on every call. That is the \"function code\" field. The remaining fields and their values that are set up will vary with the function call you want to make. Line 9 in Listing II.11 below shows you how to indicate you want to make a Function 1E call. Function 1E requires as input a borough code, a house number, and a street name or street code (see lines 10 through 12 in Listing II.11). Listing II.11 Prepare Work Area 1: vbwa1.input1.house_num = \" \" 2: vbwa1.input1.house_num_sort = \" \" 3: vbwa1.input1.lo_house_num = \" \" 4: vbwa1.input1.lo_house_num_sort = \" \" 5: vbwa1.input1.sti(1).boro = \" \" 6: vbwa1.input1.sti(1).sc10 = \" \" 7: vbwa1.input1.sti(1).Street_name = \" \" 8: vbwa1.input1.platform_ind = \"C\" 9: vbwa1.input1.func_code = \"1E\" 10: vbwa1.input1.sti(1).boro = Form_Geodlg.txtboro 11: vbwa1.input1.house_num = Form_Geodlg.txthousenumber 12: vbwa1.input1.sti(1).Street_name = Form_Geodlg.txtstreetname Call NYCgeo Now that we have set up Work Area 1 for the desired function we can now look at how to make the call. Line 1 in Listing II.12 below shows the code to make the Geosupport Desktop Edition call. Listing II.12 Call NYCgeo 1: wgF1E vbwa1, vbwa21e Check the Return Code After you've made the Geosupport call, you need to check the Return Code in the Output section of Work Area 1 (Listing II.13 below). A return code of <00' indicates a successful call and a value of <01' indicates a successful call but there is a warning message you should check. Any other Return Code value indicates that an error has taken place; you will want to have special processing to handle these situations. For a complete listing of the Warning and Error codes see \"Geosupport Return Codes, Reason Codes, and Messages\" in Appendix 4 of this guide. Listing II.13 Check the Return Code 1:If vbwa1.output1.ret_code = \"00\" Then 2: 'code to process successful call goes here 3: Else 4: If vbwa1.output1.ret_code = \"01\" Then 5: 'code to process a successful call with a warning goes here 6: Else 7: 'code to process an unsuccessful call goes here 8: End Access the Data from the Work Areas Listing II.14 below gives several examples of accessing data in the work areas after a successful Geosupport Function 1E call. Of course, you may not want to display the data at this point. You may want to write the data to a file or do some other processing. Listing II.14 Access the Data from the Work Areas 1: Form_Geodlg.txtB10SC = vbwa1.output1.sto(1).boro + 2: vbwa1.output1.sto(1).sc10 3: Form_Geodlg.txtzipcode = vbwa21e.zip_code 4: Form_Geodlg.txtlhns = vbwa21e.lo_house_num_sort 5: Form_Geodlg.txtlb5sc = vbwa21e.lo_xsts.B5SC_low1(1) 6: Form_Geodlg.txthhns = vbwa21e.hi_house_num_sort 7: Form_Geodlg.txthb5sc = vbwa21e.hi_xsts.B5SC_high 1(1) Convert House Numbers in Sort Format and Street Codes To convert house numbers in sort format to house numbers in display format or street codes to street names make a function D call. Function D calls (see Listing II.15 below) follow the same procedure as the other functions with one exception, only Work Area 1 is passed as a parameter (see line 16 in Listing II.15 below). Also note: We've used a second copy of Work Area 1 (see Line 33 in Listing II.9 above) so that the data in Work Area 1 from the original function 1E call is not lost. Listing II.15 Convert House numbers in Sort Format with Function D call 1: // initialize work area 1 defined for Function D calls 2: fdwa1.input1.house_num = \" \" 3: fdwa1.input1.house_num_sort = \" \" 4: fdwa1.input1.lo_house_num = \" \" 5: fdwa1.input1.lo_house_num_sort = \" \" 6: fdwa1.input1.sti(1).boro = \" \" 7: fdwa1.input1.sti(1).sc10 = \" \" 8: fdwa1.input1.sti(1).Street_name = \" \" 9: // set up work area 1 defined for function D calls 10: fdwa1.input1.platform_ind = \"C\" 11: fdwa1.input1.func_code = \"D \" 12: fdwa1.input1.sti(1).boro = vbwa1.output1.sto(1).boro 13: fdwa1.input1.house_num_sort = vbwa21e.hi_house_num_sort 14: fdwa1.input1.lo_house_num_sort = vbwa21e.lo_house_num_sort 15: // make 1 work area function D call 16: wgFD fdwa1 17: // check the return code and access the converted house numbers 18: If vbwa1.output1.ret_code = \"00\" Or vbwa1.output1.ret_code = \"01\" Then 19: Form_Geodlg.txthhnd = fdwa1.output1.house_num 20: Form_Geodlg.txtlhnd = fdwa1.output1.lo_house_num 21: End If You've now seen how to make Geosupport calls from your VB or VBA program. Of course, your style of coding may be different and your processing will probably be more involved. But if you follow these few simple steps you can easily harness the power of Geosupport Desktop Edition in your VB or VBA programs. Listing II.16 below contains a VBA sample application with the complete variable declarations for Work Area 1 and Work Area 2 for Function 1E. Listing II.16 Work Area 1 and Work Area 2 for Function 1E Variable Declarations with Sample Code Option Explicit '***************************************************************************** 'Some situations may requires these to be declared as Private '***************************************************************************** 'define data types Private Type STREET boro As String * 1 sc10 As String * 10 Street_name As String * 32 End Type Private Type BBL boro As String * 1 block As String * 5 lot As String * 4 End Type 'typedef for input area of work area 1 Private Type INPUT_DEF func_code As String * 2 house_num As String * 16 house_num_sort As String * 11 lo_house_num As String * 16 lo_house_num_sort As String * 11 sti(1 To 3) As STREET bbli As BBL filler01 As String * 1 bin As String * 7 compass_direction As String * 1 compass_direction2 As String * 1 filler02 As String * 7 platform_ind As String * 1 filler03 As String * 101 long_WA2_flag As String * 1 filler04 As String * 4 snl As String * 2 st_name_norm As String * 1 expanded_format As String * 1 filler05 As String * 37 End Type 'typedef for output area of work area 1 Private Type OUTPUT_DEF boro_name As String * 9 house_num As String * 16 house_num_sort As String * 11 sto(1 To 3) As STREET bblo As BBL filler05 As String * 1 lo_house_num As String * 16 lo_house_num_sort As String * 11 bin As String * 7 attr_byte(1 to 3) As String * 1 filler06 As String * 139 reason_code As String * 1 filler07 As String * 1 warn_code As String * 2 ret_code As String * 2 msg As String * 80 nbr_names As String * 2 B7SC(1 to 10) As String * 8 st_names(1 to 10) As String * 32 End Type 'typedef for work area 1 Private Type C_WA1 input1 As INPUT_DEF output1 As OUTPUT_DEF End Type 'typedefs used in work area 2 Private Type St_list nbr_sts As String * 1 B5SC(1 To 5) As String * 6 End Type Private Type St_list_high1 nbr_sts_high1 As String * 1 B5SC_high1(1 To 5) As String * 6 End Type Private Type St_list_low1 nbr_sts_low1 As String * 1 B5SC_low1(1 To 5) As String * 6 End Type 'typedef for work area 2 for function 1 Private Type C_WA2_F1E filler08 As String * 21 cont_parity_ind As String * 1 lo_house_num_sort As String * 11 hi_house_num_sort As String * 11 lgc As String * 2 lo_xsts As St_list_low1 hi_xsts As St_list_high1 lion_key As String * 10 sagr_flag As String * 1 sos_ind As String * 1 seg_len As String * 5 Xcoord As String * 7 Ycoord As String * 7 Zcoord As String * 7 iaei As String * 1 mh_ri_flag As String * 1 DOT_slca As String * 1 com_dist As String * 3 zip_code As String * 5 ed As String * 3 ad As String * 2 sped_flag As String * 1 congress_dist As String * 2 state_sen_dist As String * 2 civil_court as String * 2 city_council As String * 2 health_cent As String * 2 health_area As String * 4 sanit_dist As String * 3 sanit_sub_sect As String * 2 sanit_reg_pick_up As String * 5 police_boro_com As String * 1 police_pct As String * 3 fire_div As String * 2 fire_bat As String * 2 fire_co_type As String * 1 fire_co As String * 3 scsd_flag As String * 1 com_schl_dist As String * 3 dynam_block As String * 3 filler02 As String * 9 cen_tract_90 As String * 6 cen_tract_00 As String * 6 cen_blk_00 As String * 4 filler04 As String * 51 true_B7SC As String * 8 seg_id As String * 7 curve_flag As String * 1 End Type 'define variables Private vbwa1 As C_WA1 Private fdwa1 As C_WA1 Private vbwa21e As C_WA2_F1E 'define NYCgeo function Private Declare Sub wgF1E Lib \"NYCgeo.dll\" Alias \"NYCgeo\" (x As C_WA1, _y As C_WA2_F1E) Private Declare Sub wgFD Lib \"NYCgeo.dll\" Alias \"NYCgeo\" (x As C_WA1, _Optional y = Nothing) '******************************************************************************* Private Sub Call_wgF1E_Click() 'setup work area 1 'need better way to initialize wa1 to spaces vbwa1.input1.house_num = \" \" vbwa1.input1.house_num_sort = \" \" vbwa1.input1.lo_house_num = \" \" vbwa1.input1.lo_house_num_sort = \" \" vbwa1.input1.sti(1).boro = \" \" vbwa1.input1.sti(1).sc10 = \" \" vbwa1.input1.sti(1).Street_name = \" \" vbwa1.input1.platform_ind = \"C\" vbwa1.input1.func_code = \"1E\" vbwa1.input1.sti(1).boro = Form_Geodlg.txtboro vbwa1.input1.house_num = Form_Geodlg.txthousenumber vbwa1.input1.sti(1).Street_name = Form_Geodlg.txtstreetname 'call geosupport wgF1E vbwa1, vbwa21e 'check the return code and process output 'this program assumes the existence of a form called Geodlg If vbwa1.output1.ret_code = \"00\" Or vbwa1.output1.ret_code = \"01\" Then Form_Geodlg.txtB10SC = vbwa1.output1.sto(1).boro + vbwa1.output1.sto(1).sc10 Form_Geodlg.txtzipcode = vbwa21e.zip_code Form_Geodlg.txtlhns = vbwa21e.lo_house_num_sort Form_Geodlg.txtlb5sc = vbwa21e.lo_xsts.B5SC_low1(1) Form_Geodlg.txthhns = vbwa21e.hi_house_num_sort Form_Geodlg.txthb5sc = vbwa21e.hi_xsts.B5SC_high1(1) 'func d call to convert house numbers in sort format to 'setup work area 1 fdwa1.input1.house_num = \" \" fdwa1.input1.house_num_sort = \" \" fdwa1.input1.lo_house_num = \" \" fdwa1.input1.lo_house_num_sort = \" \" fdwa1.input1.sti(1).boro = \" \" fdwa1.input1.sti(1).sc10 = \" \" fdwa1.input1.sti(1).Street_name = \" \" fdwa1.input1.platform_ind = \"C\" fdwa1.input1.func_code = \"D \" fdwa1.input1.sti(1).boro = vbwa1.output1.sto(1).boro fdwa1.input1.house_num_sort = vbwa21e.hi_house_num_sort fdwa1.input1.lo_house_num_sort = vbwa21e.lo_house_num_sort wgFD fdwa1 If vbwa1.output1.ret_code = \"00\" Or vbwa1.output1.ret_code = \"01\" Then Form_Geodlg.txthhnd = fdwa1.output1.house_num Form_Geodlg.txtlhnd = fdwa1.output1.lo_house_num End If Else Form_Geodlg.txtGRC = vbwa1.output1.ret_code Form_Geodlg.txtmessage = vbwa1.output1.msg End If End Sub","title":"II.9 Sample Programs with Descriptions"},{"location":"chapters/chapterII/section09/#ii91-cc-sample-program-with-description","text":"This section walks you through writing a C/C++ program that makes Geosupport Desktop Edition calls. It assumes that you are familiar with your Integrated Development Environment (IDE) and that you know how to code in C/C++. The complete program used here can be found at the end of this section in Listing II.8. Please note: The program in this section represents just one of many styles of coding in C/C++. It may be used as an example. It is not guaranteed. There are six basic steps to making Geosupport Desktop Edition calls from a C/C++ program: 1. Set up your environment. 2. Include needed header files and other variable definitions. 3. Prepare Work Area 1. 4. Call NYCgeo. 5. Check the Geosupport Return Code. 6. Access the data in Work Area 1 and Work Area 2. optional step - convert house numbers in sort format or street codes with a function D call. That's it. If you follow this list, in no time you should be writing C/C++ programs that take advantage of the power of Geosupport.","title":"II.9.1 C/C++ Sample Program with Description "},{"location":"chapters/chapterII/section09/#ii92-visual-basic-vbvba-sample-program-with-description","text":"This section walks you through writing a Visual Basic (VB) or Visual Basic for Applications (VBA) program that makes Geosupport Desktop Edition calls. It assumes that you are familiar with your Integrated Development Environment (IDE) and that you know how to code in VB or VBA. This sample program is based on a simple form that provides input fields and output fields to display the returned data. The code is attached to a command button and responds to a \"click\" event. Please note: The program in this section represents just one of many styles of coding in Visual Basic. It may be used as a sample. It is not guaranteed. There are six basic steps to making Geosupport Desktop Edition calls from a VB/VBA program: 1. declare the work area variable definitions. 2. declare the NYCgeo procedure. 3. prepare Work Area 1. 4. call NYCgeo. 5. check the Geosupport return code 6. access the data in Work Area 1 and Work Area 2 optional step - convert house numbers in sort format or street codes with a function D call. That's it. If you follow this list, in no time you should be writing VB programs that take advantage of the power of Geosupport.","title":" II.9.2 Visual Basic (VB/VBA) Sample Program with Description "},{"location":"chapters/chapterII/section10/","text":"II.10 The Long Work-Area-2 Option From time to time, GSS adds new output fields to a function\u2019s WA2. For example, in 2011, the WA2s of several functions were enhanced to include fields for the 2010 census tract and block. In general, when new output fields are added to a Geosupport work area, GSS utilizes existing filler space in the work area for those fields, if available. In that way, the basic layout of the work area remains the same, and existing users of that function who do not need to make use of the new items are not compelled to modify their applications. If there is not enough filler space available in a function\u2019s WA2 to accommodate new fields, GSS introduces a \u2018long WA2 option\u2019 for that function, as described below. This approach enables new data items to be made available to applications that need them, without affecting existing applications that do not need them. The MSW functions that currently have the long WA2 option are Functions 1, 1E, 1A, BL and 3. The COW functions that currently have the long WA2 option are functions 1A and BL. The long WA2 option may be implemented for other functions in the future. When issuing a two\u2011work\u2011area call to a function that has the long WA2 option, the application has the option to use either the \u2018regular WA2\u2019 (the work area layout that had already been in existence before the long WA2 option was introduced for that function), or the \u2018long WA2\u2019. The application informs Geosupport that the long WA2 is being used by inserting an \u2018L\u2019 in a WA1 input field called the Long Work Area 2 Flag. When the long WA2 option is specified, it is the application\u2019s responsibility to pass a WA2 of the proper length to the Geosupport driver. If the application passes a blank in the Long WA2 Flag, the regular WA2 is used. Both the regular and long WA2s are documented in Appendix 2 . The MSW Function 3 exemplifies the role of the long WA2 option. MSW Function 3\u2019s regular WA2 is 200 bytes long, almost all of which was long ago allocated to specific fields, leaving little filler space available for new fields. At some point in the past, the necessity to add new fields for which no space was available in Function 3's regular WA2 impelled the introduction of the long WA2 option for Function 3. Function 3\u2019s long WA2 is 300 bytes long, and consists of the same 200 bytes of information that are returned in the regular WA2, followed by 100 additional bytes containing fields for several additional items that the regular WA2 was not designed to include, as well as ample filler space for future enhancements. Applications that existed prior to the introduction of the long WA2 option for Function 3, and that have no need of any of the fields returned in the last 100 bytes of the long WA2, are able to continue running properly without modification using the regular WA2.","title":"II.10 The Long Work-Area-2 Option"},{"location":"chapters/chapterII/section11/","text":"II.11 The Auxiliary Segment Option (COW Only) Similar to the \u2018long WA2 option\u2019, the \u2018auxiliary segment option\u2019 is available for COW Functions 3 and 3C. This option adds an additional 500 bytes to the COW WA2 output. This option allows the user to request that, in the special case of a record that actually encompasses more than one segment, Geosupport will return the Segment IDs of all the segments (up to 70).","title":"II.11 The Auxiliary Segment Option (COW Only)"},{"location":"chapters/chapterII/section12/","text":"II.12 The Extended Work Area 2 Option- via Mode Switch(COW Only) To accommodate additional information from Geosupport, an Extended version of Work Area 2 has been defined for various functions. Users may request the Extended Work Area 2 by setting the Mode Switch in Work Area 1 to \u2018X\u2019. This option is available only for COW Functions. Users have expressed a desire to receive Street Names along with Street Codes when making Geosupport calls. In previous versions of Geosupport, Street Names (of cross streets, etc.) were not a part of Work Area 2. Users may request an Extended Work Area 2 for Functions 1, 1E, 1A, 3, 3C, BL and BN. These Extended Work Areas contain street names in addition to Street Codes. Users will no longer have to make separate D, DG, or DN Geosupport calls (or use the Cross Street Names Flag) to get the street names. In addition, new data will be returned (e.g. CSCL data) in the Extended Work Area 2, and space is reserved for additional new data as it becomes available. Users who think they may want to use this new data in the future should consider modifying their applications to request the Extended Work Area 2s with the Mode Switch. The street codes and street names that are returned by Extended functions typically are the Principal Street Name and 7-Digit Street Code. This typically gives the user the best name for the location being requested. Users may request an Extended Work Area 2 for Functions 1, 1E, 1A, 3, 3C, BL and BN. The Extended Work Area 2 contains Street Names in addition to Street Codes. New data (e.g. CSCL data) is also contained in the Extended Work Area 2, and space is reserved for additional data as it becomes available. Users who want to use this new data should consider modifying their applications to request the Extended Work Area 2s with the Mode Switch. The street codes and street names that are returned by Extended functions typically are the Principal Street Name and 7-Digit Street Code. This usually gives the user the best name for the location being requested. Some other data that may be included in the Extended Work Areas are: Health Center District, NTA Name (Neighborhood Tabulation Area Name), PUMA Code (Public Use Microdata Area Code) and X-Y coordinates of \u2018From\u2019 Node and \u2018To\u2019 Node.. The Mode Switch is a one-byte field, in column 330 of the COW Work Area 1. The only valid values for the Mode Switch are \u201cX\u201d for Extended, and blank. The Extended Mode cannot be requested when the Long-Work-Area 2 option is requested. The Extended Mode can, however, be requested when the Auxiliary Segments are also requested. The Extended Work Area layouts for the various functions and options may be found in Appendix 13 . Note that when the Mode Switch is set to \u2018X\u201d, for Functions 1, 1E, 1A, 3, 3C, BL, and BN the functions may be referred to as Function 1 Extended, 1E Extended, 1A Extended, 3 Extended, 3C Extended, BL Extended, and BN Extended, respectively. The functions may also be referred to as 1X, 1EX, 1AX, 3X, 3CX, BLX, and BNX respectively. The Mode Switch is supported by GBAT. The COPYLIBs include new Work Area definitions for the Extended versions of WA2. In general, names of existing individual fields remain the same, except for the prefix, e.g. the prefix for COBOL Function 3 is PIWA2-FN3 and the prefix for COBOL Function 3 Extended is PIWA2-3X.","title":"II.12 The Extended Work Area 2 Option (COW Only)"},{"location":"chapters/chapterII/section13/","text":"II.13 The Enhanced Work Area 2 Option - via Mode Switch (NMF Only) A new Mode Switch Option, 'E' (Enhanced), has been implemented for the non-mainframe environment (NMF)., e.g. Desktop Edition, GeoX, .net, and Linux. To enable more processing of B7SCs and to return additional information from Geosupport in the B7SC format, an Enhanced version of Work Area 2 has been defined for Functions 3 and 3C. Users may request the Enhanced Work Area 2 by setting the Mode Switch in Work Area 1 to \u2018E\u2019. This option is available only for COW Functions in a non-mainframe environment. The Enhanced version of the Work Area 2 includes all the information that is returned in the Extended Work Area 2. The layouts have been reorganized and some fields e.g. the street codes for the cross streets at the high and low ends of the segment, are now returned as B7SCs, instead of B5SCs. The B7SC street codes that are returned by the Enhanced functions typically reflect the Principal Street and thus give the user the best name for the location being requested. Users in the non-mainframe environment may request an Enhanced Work Area 2 for Functions 3 and 3C. The Mode Switch is a one-byte field, in column 330 of the COW Work Area 1. The only valid values for the Mode Switch are \u201cX\u201d for Extended, \"E\" for Enhanced, and blank. The Enhanced Mode can be requested when the Auxiliary Segments are also requested. Note that when the Mode Switch is set to \u2018E\u201d for Functions 3 and 3C, the functions may be referred to as Function 3 Enhanced and 3C Enhanced, respectively. The functions may also be referred to as 3E and 3CE respectively.","title":"II.13 The Enhanced Work Area 2 Option (NMF Only)"},{"location":"chapters/chapterIII/chapterIII/","text":"CHAPTER III STREET NAME PROCESSING","title":"Chapter III"},{"location":"chapters/chapterIII/section01/","text":"III.1 Introduction This chapter discusses Geosupport\u2019s street name processing in detail. (In this chapter, unless otherwise noted, the term \u2018street name\u2019 is used generically to encompass not only names of city streets, but also a wide variety of other New York City geographic feature names that Geosupport recognizes, including the names of some tunnels, bridges, rail lines, shorelines and geographic place names of various kinds.) The street name normalizing algorithm is briefly outlined. Two aspects of street name normalizing that are under user control, the selection of a street name normalization format and the Street Name Normalization Length Limit (SNL) parameter, are described. Other street name processing features that are described are partial street names, similar names, street name browsing, and selection of output street names for Character-Only Work Area calls . Certain non-street feature names, place names and \u2018pseudo-street names\u2019 that are recognized by Geosupport are also discussed in this chapter. The related topic of street codes is discussed in detail in Chapter IV . It is important to note that New York City geographic names are meaningful only when the borough is identified, since features in different boroughs can have the same name. For example, all five boroughs have a street named BROADWAY. In general, the borough is identified via a borough code. For Functions 1, 1A, 1B, 1E and AP, the borough may also be identified via a ZIP code. Applications pass up to three input streets to Geosupport in a single call, depending on the function being called. For most of the functions that accept street input, input streets are passed either in the form of street names or in the form of street codes. The exceptions are that Function 1N accepts street name input only, and the display functions, Functions D, DG and DN, accept street code input only. Input streets are passed to Geosupport using as many as necessary of WA1\u2019s three input street name fields or its three input street code fields. Each WA1 input street name field is 32 bytes long. If there is more than one input street in a call, they must all be of the same type, either all names or all codes, not a combination of both types. If both street names and street codes are specified in WA1, for all functions other than D, DG, and DN, Geosupport processes the street names and ignores the street codes. For functions D, DG, and DN, the street names are ignored. When street input is in the form of street names, before attempting to identify which New York City street an input name refers to, Geosupport attempts to \u2018normalize\u2019 the name by executing a systematic algorithm intended to produce a version of the name in a standardized format. If normalization is successful, Geosupport returns the normalized street name(s) to the user in as many as necessary of WA1\u2019s three output normalized street name fields. Geosupport\u2019s normalizing algorithm is designed so that users have considerable leeway in spelling input street names. For example, input names may contain commonly used abbreviations for words like avenue, street, boulevard, east, etc. When Geosupport is able to normalize an input street name successfully, it uses the normalized name to read an internal Geosupport file in order to obtain the street code. Successful normalization followed by successful street code retrieval constitutes Geosupport System validation of the input street name, i.e. its identification or \u2018recognition\u2019 as the name of a specific New York City street. Note that successful normalization alone does not constitute validation of the input street name. Geosupport\u2019s street name normalizing algorithm is highly customized for New York City. The algorithm is complex and a complete description of it is beyond the scope of this document. In any event, the algorithm is performed automatically, and users need to be aware primarily of two aspects that they can control. These are a parameter for controlling the maximum length of normalized street names, called the SNL; and a choice of two formats for normalizing street names, called the compact and sort formats. These features are described in detail in this chapter. For completeness of the discussion, and because some familiarity with the normalizing algorithm may aid the user in understanding possible causes of rejection, a summary description of the normalizing algorithm is also given in this chapter. Function 1N . Function 1N can be used to normalize a street name and retrieve its street code, without having to specify a particular geographic location. Function 1N requires the input only of a borough code and a street name. The SNL parameter and the selection of a street name normalization format can be specified in a Function 1N call. Function 1N is called using Work Area 1 only.","title":"III.1 Introduction"},{"location":"chapters/chapterIII/section02/","text":"III.2 Street Name Normalizing and the SNL Parameter Street name normalizing is governed by a user-controllable parameter called the Street Name Normalization Length Limit (SNL), which sets an upper limit to the lengths of output normalized street names. The SNL feature is particularly useful in applications that have a restricted amount of space for the display of street names, such as when addresses must be visible through transparent envelope windows, or when a screen display or printed report line is crowded. The user specifies an SNL value using the two-byte WA1 input SNL field. The permissible range of SNL values is 4 through 32, inclusive. The setting of an SNL value is optional. If the user specifies no SNL value, the default value of 32 is in effect for that call to Geosupport. Every call to Geosupport is an independent event, even within a single execution of a user program, so if an SNL value other than 32 is desired in a particular call, it must be explicitly specified in that call; Geosupport does not \u2018remember\u2019 an SNL value specified in a previous call. Geosupport attempts to normalize each input street name in such a way that the result has a length in bytes that does not exceed the SNL value in effect. The SNL also governs the length of the normalized street name output returned by the display functions (Functions D, DG and DN). However, the SNL does not limit the lengths of input street names. Regardless of the SNL value, the maximum length of an input street name is 32 bytes, which is the length of the WA1 street name input fields. The smaller the SNL value that the user specifies is, the more difficult it is for Geosupport to normalize input street names within that length limit, and therefore the greater the proportion of input street names that are likely to be rejected as not normalizable. Consequently, users who must limit the lengths of normalized street names should specify the largest possible SNL value that can satisfy the needs of their application. An SNL value of 32 (the default) insures that virtually all New York City street names can be normalized. It is recommended that in the design of new applications, 32 bytes be allocated for street name fields in files, programs, screens, reports and manual forms whenever possible. The following is a simplified description of the street name normalizing algorithm: Parsing the input name: The normalizing algorithm logically separates the input name into \u2018words\u2019 delimited by blanks. Any sequences of consecutive blanks are consolidated to single blanks. If any numeric characters (the digits \u20180\u2019 through \u20189\u2019) and non-numeric characters are adjacent to each other, they are separated by the insertion of blanks. For example, W2PLACE becomes W 2 PLACE. To improve readability, normalization processing deletes any blanks that appear before and/or after a slash (/) or a dash (-) in a street name. The normalization process also does not generate any such blanks. In the case where there is a numeric before or after the slash or dash, the numeric is treated as alphabetic. For example, \u2018I - 25\u2019 becomes \u2018I-25\u2019 and ABC / DEF becomes ABC/DEF. See Chapter III.3 for a discussion of Street Name Sorting and how a numeric is normalized in a street name. Deleting ordinal suffixes: Numeric words in input street names are often expressed as ordinal numbers (integers formatted to specify order, consisting of numeric digits followed by ordinal suffixes, such as \u20181st\u2019, \u20182nd\u2019, \u20183rd\u2019, \u20184th\u2019). The normalizing algorithm deletes the ordinal suffixes (the endings \u2018st\u2019, \u2018nd\u2019, \u2018rd\u2019 and \u2018th\u2019) from such words. For example, WEST 3RD STREET is converted to WEST 3 STREET. Note, however, that numeric words that are expressed alphabetically (such as WEST THIRD STREET) are not modified. Handling special characters: The normalizing algorithm deletes any periods (the character \u2018.\u2019) at the ends of words. For example, ST. MARKS PLACE becomes ST MARKS PLACE. Any periods not at the ends of words are replaced by blanks, which will usually cause rejection. Special characters other than periods are left unaltered, and will cause rejection unless those special character(s) are specifically valid for the given street name. (Currently, the only special characters that appear in specific street names accepted by Geosupport are: \u2018 (apostrophe), ( (open parenthesis) and ) (closed parenthesis), & (ampersand), / (forward slash) and \u2013 (dash or hyphen). . Currently, the only special characters that appear in specific street names accepted by Geosupport are: apostrophes, open and closed parentheses, ampersands, forward slashes, dashes and hyphens, viz, \u2019 ( ) & / -. In general, if Geosupport accepts a street name with a special character, it will also accept that street name without the special character. For example, in Manhattan, both SAINT MARK\u2019S PLACE and SAINT MARKS PLACE are accepted. In the Bronx, O\u2019BRIEN AVENUE, OBRIEN AVENUE and O BRIEN AVENUE are all accepted. In Manhattan, BEN-GURION PLACE, BEN GURION PLACE and BENGURION PLACE are all accepted. Expanding and abbreviating standard words under SNL constraint: There are certain standard words that appear frequently in street names, either fully spelled out, such as EAST, AVENUE and BOULEVARD, or in the form of standard abbreviations, such as E, AV or AVE, and BL or BLVD, respectively. If the input name is shorter than the SNL value in effect, then to the extent permitted by that SNL value, the normalizing algorithm expands standard abbreviations to their full spellings. Conversely, if the input name is longer than the SNL value in effect, then the normalizing algorithm attempts to shorten the name to the extent required by that SNL value, by replacing fully spelled out standard words with standard abbreviations. Suppressing expansion in special cases: The normalizing algorithm recognizes certain special cases in which a character string normally treated as a standard abbreviation is not to be so treated, that is, is not to be expanded under any circumstances. For example, ST is expanded to STREET only when it occurs as the last word of the input name; this prevents the conversion, for example, of ST MARKS PLACE into STREET MARKS PLACE. Certain character strings that are treated as standard abbreviations in most street names are not so treated in specific street names; for example, the \u2018S\u2019 in the Brooklyn street name AVENUE S and in the Bronx street name S STREET is not expanded into SOUTH; the \u2018E\u2019 in the Manhattan street name ABRAHAM E KAZAN STREET is not expanded into EAST; the \u2018DR\u2019 in the Manhattan street name DR MARTIN L KING JR BOULEVARD is not expanded into DRIVE.","title":"III.2 Street Name Normalizing and the SNL Parameter"},{"location":"chapters/chapterIII/section03/","text":"III.3 Street Name Sorting and Normalization Format Options Many applications display addresses or other types of geographic locations in their reports and online screens, including normalized street names obtained from Geosupport. Applications often sort their data by geographic location for display. However, street names that contain numeric characters do not sort appropriately when they have been normalized in the \u2018conventional\u2019 fashion. To solve this problem, Geosupport is able, at the user\u2019s option, to normalize street names either into the conventional format, which is called the compact format , or into a format that is more suitable for sorting, called the sort format . The compact and sort formats differ only for street names that contain numeric characters. Such a street name contains, in the sort format, a number of \u2018alignment\u2019 blanks in front of the numeric digits in the street name, which serve to align the numeric digits for proper sorting. In the compact format, no alignment blanks are present. The presence or absence of the alignment blanks is the sole difference between a name that contains numeric characters normalized in the sort format and the same name normalized in the compact format. We illustrate by displaying, side by side, two sorted lists of a sample of Manhattan street names normalized in the two formats: SORTED LIST IN COMPACT FORMAT SORTED LIST IN SORT FORMAT EAST HOUSTON STREET 5 AVENUE EAST 10 STREET EAST 1 STREET EAST 102 STREET EAST 2 STREET EAST 129 STREET EAST 3 STREET EAST 13 STREET EAST 9 STREET EAST 167 STREET EAST 10 STREET EAST 2 STREET EAST 13 STREET EAST 20 STREET EAST 20 STREET EAST 201 STREET EAST 79 STREET EAST 3 STREET EAST 102 STREET EAST 79 STREET EAST 129 STREET EAST 9 STREET EAST 167 STREET FULTON STREET EAST 201 STREET 10 AVENUE EAST HOUSTON STREET 5 AVENUE FULTON STREET As this example illustrates, in the compact format, normalized street names do not sort appropriately. For example, EAST 10 STREET sorts in front of EAST 9 STREET, and 10 AVENUE sorts in front of 5 Avenue. In contrast, in the sort format, the presence of the alignment blanks causes street names containing numeric characters to sort appropriately. Notice that the presence of the alignment blanks in the sort format, and their absence in the compact format, causes a change to the sort order of numeric street names not only relative to each other, but also relative to non-numeric street names. For example, in the compact format, FULTON STREET sorts in front of street names that begin with a numeric character, such as 10 AVENUE, while in the sort format it sorts behind them. Similarly, in the compact format, EAST HOUSTON STREET sorts in front of the street names that start with the word EAST followed by a numeric word, while in the sort format, it sorts behind those street names. Note that for purposes of this discussion, all samples of sort output assume the EBCDIC collating sequence. The sort format should always be used for street names that are to be sorted. However, the sort format is not as well-suited for display purposes as the compact format, since the alignment blanks give the sort format an awkward appearance. In applications that must display data sorted by geographic location, sorting should be done using street names in the sort format, while street names should be displayed in the compact format. (This would, of course, necessitate the application making a second call to Geosupport for each name, to obtain the alternative format. Function 1N could be used for that purpose.) The sort format is the default format . That is, Geosupport will normalize input street names into the sort format unless the user program specifically requests the compact format by placing a \u2018C\u2019 in the Street Name Normalization Format Flag field in WA1. Note that every Geosupport API call is an independent event: Geosupport does not \u2018remember\u2019 previous calls. Therefore, if repeated calls are being made within a single execution of an application program, and the user wishes all the input street names to be normalized into the compact format, a \u2018C\u2019 must be present in the flag during each call. We now give a precise description of the sort format. First, note that New York City street names have numeric characters (the digits \u20180\u2019 through \u20189\u2019) in at most one word. If a street name has such a \u2018numeric word\u2019, that word consists only of a one-, two- or three-digit number, possibly followed by an ordinal suffix. (If there is an ordinal suffix, it is deleted during normalizing in either format.) For street names that do not have a numeric word, the compact and sort formats are identical. For a street name that does have a numeric word, the two formats differ only in the fact that alignment blanks are present in the sort format and absent in the compact format. In forming the sort format, the normalizer inserts the required number of alignment blanks in front of the numeric characters, to form a four-byte field within which the numeric characters are right-justified and blank-filled. (The rationale for using four bytes for the normalized numeric word is explained below.) Thus, when normalizing street names that have a numeric word into the sort format, the normalizer inserts three blanks in front of a one-digit number, two blanks in front of a two-digit number and one blank in front of a three-digit number. The inserted alignment blanks are additional to the single word-separating blank between the numeric word and the preceding word in the street name, if any. We illustrate with an example, using the dash character to represent blanks for clarity. The street name EAST--129 STREET is in sort format. The first blank between EAST and 129 (represented by the leftmost dash) is the word-separating blank always present (in either format) between any two consecutive words. The second blank is the alignment blank inserted only in the sort format to right-justify the three-digit number \u2018129\u2019 within the four-byte field for the numeric word. EAST-129 STREET is the same street name in compact format; it has the single word-separating blank between the two words, but no blank inserted for alignment. Actual Sort Format With 4-Byte Numeric Word Field Hypothetical Sort Format With 3-Byte Numeric Word Field EAST ---7 STREET EAST --7 STREET EAST --23 STREET EAST -23 STREET EAST -129 STREET EAST HOUSTON STREET EAST -203 STREET EAST 129 STREET EAST HOUSTON STREET EAST 203 STREET In this example, all of the street names are identical in their first five positions, with the fifth position being a word-separating blank. In the four-byte list, all the numeric names have a blank in the sixth position (the first position of the four-byte numeric field), and therefore have sorted ahead of the one non-numeric name, which has an \u2018H\u2019 in that position. In the three-byte list, the numeric names containing fewer than three digits have a blank in the sixth position, the non-numeric name has an \u2018H\u2019 there, and the numeric names containing three digits have a numeric character (a \u20181\u2019 or a \u20182\u2019) in the sixth position. Since the sort sequence of these characters is blank, \u2018H\u2019, \u20181\u2019, \u20182\u2019, the result of sorting with a three-byte numeric field is the undesirable separation of the numeric names by the non-numeric name.","title":"III.3 Street Name Sorting and Normalization Format Options"},{"location":"chapters/chapterIII/section04/","text":"III.4 Partial Street Names It is a common informal practice to refer to streets using partial versions of \u2018full\u2019 street names. For example, the intersection of Nassau Street and Broad Street in Manhattan might be specified as the intersection of \u201c'Nassau Street and Broad\u201d. To accommodate this practice, Geosupport is designed to accept such partial street names as input street names whenever feasible. In this section, a precise definition and some examples of partial street names are given, and the circumstances under which Geosupport accepts a partial street name as an input street name are described. A partial street name is a character string that is not itself a valid \u2018full\u2019 street name, and that is formed from a valid full street name by deleting one or more entire words from the end of the full street name. Note that, according to this definition, forming a partial street name involves the deletion of words only from the end of a full street name, not from the beginning or middle, and the deletion only of entire words, not portions of words. The following examples illustrate the definition. READE is a Manhattan partial street name for the valid Manhattan full street name READE STREET. READE STRE and READ are not partial street names, since they are formed by deleting portions of words rather than entire words. Both KATHARINE and KATHARINE HEPBURN are Manhattan partial street names for the valid Manhattan full street name KATHARINE HEPBURN PLACE, which exists on East 49 Street between Second Avenue and Third Avenue PARK AVENUE is not considered a Manhattan partial street name, because it is a valid Manhattan full street name in its own right, even though it can be formed by deleting the last word from a valid Manhattan full street name, PARK AVENUE SOUTH. PARK is a Manhattan partial street name that can be formed from several valid Manhattan full street names, including PARK AVENUE, PARK AVENUE SOUTH, PARK ROW and PARK PLACE Geosupport accepts a partial street name as an input street name only if it unambiguously represents (i.e., if it can be formed only from) a single valid full street name in the specified input borough. If a partial street name can be formed from more than one full street name in the given borough, it is ambiguous and Geosupport rejects it. A partial street name cannot also be a front-truncated street name. Consider the following examples: Several valid Manhattan full street names begin with the word PARK, as noted above. Therefore PARK is an ambiguous partial street name, and Geosupport does not accept it as an input street name for Manhattan. Similarly, two valid Manhattan full street names begin with the word YORK, namely YORK AVENUE and YORK STREET. Therefore, YORK is an ambiguous partial street name, and Geosupport does not accept it as an input street name for Manhattan. There is only one Manhattan street name that begins with the word READE, namely READE STREET. Therefore, Geosupport accepts the partial street name READE as a Manhattan input street name unambiguously representing the Manhattan full street name READE STREET. Geosupport accepts both KATHARINE and KATHARINE HEPBURN as Manhattan input street names, since they are unambiguous partial street names for the Manhattan full street name KATHARINE HEPBURN PLACE. A partial street name cannot also be a front-truncated street name. For example, 65 STREET in Manhattan would seem to be a partial street name of 65 STREET TRANSVERSE, but it is also a front-truncated street name of EAST 65 STREET and WEST 65 STREET. Geosupport accepts 65 STREET as a front-truncated street name, but not as a partial street name. If 65 STREET is not successful as a front-truncated street name, 65 STREET TRANSVERSE will appear in the list of Similar Names, e.g. Function 1, 80 65 STREET in Manhattan. Some partial street names are accepted as input street names in some boroughs but not in others. For example, Geosupport accepts BROAD as an unambiguous partial street name for BROAD STREET in Manhattan and in Staten Island. However, in Queens, BROAD is rejected as an ambiguous partial street name, since it can be formed from a number of different valid full Queens street names, including BROAD STREET and BROAD CHANNEL. In the Bronx and Brooklyn, BROAD is not a partial street name at all, and is rejected accordingly, since in those boroughs there are no full street names that begin with the word BROAD. Note: Since street names may be added or deleted with each Geosupport release, the acceptability of partial street names may also change. Partial Street names and SNL : If a partial street name is accepted as an input street name, Geosupport returns the normalized version of the corresponding full street name in the WA1 output street name field, provided that the length of the normalized full street name does not exceed the SNL value that is in effect. If the length of the normalized full street name does exceed the SNL value in effect, Geosupport attempts to normalize the partial street name to fit within the SNL value; if that is successful, the normalized partial street name is returned in WA1. If neither the normalized full street name nor the normalized partial street name fits, Geosupport rejects the input as a street name that cannot be normalized within the SNL value in effect. If the SNL value in effect is 32 (the default value), it is certain that the normalized full street name will fit. The following example illustrates the effect that varying the SNL value can have on street name normalizing. Suppose the input street name is CHAMBERS and the borough is specified as Manhattan. In this borough, CHAMBERS is accepted as an unambiguous partial street name for the full street name CHAMBERS STREET. If the SNL value in effect is 15 or greater, the output normalized street name is returned as CHAMBERS STREET. If the SNL is between 11 and 14 inclusive, the output street name is returned as CHAMBERS ST (the result of normalizing the full street name CHAMBERS STREET with an SNL of 11, 12, 13, or 14). If the SNL is between 8 and 10 inclusive, the partial street name CHAMBERS is returned. If the SNL is smaller than 8, the input is rejected as a street name that cannot be normalized within the current SNL value. Optimizing the choice of partial street names : In order to allow users to have partial street names accepted as much as possible, Geosupport will not consider roadbed street names when processing generic calls. Roadbed street names will be considered only when processing roadbed calls. As an example, if a user inputs 1830 \u2018A C P\u2019 for a generic call in Manhattan, \u2018A C P\u2019 will be accepted as a partial street name for A C P Boulevard. However, if the user inputs a Roadbed Request, \u2018A C P\u2019 will not be recognized because of similar roadbed names. In addition, since Non-Addressable Place Names (NAPs) and Addressable Place Names (APs) are not valid for Function 2, 3, 3C or 3S calls, Geosupport does not consider them when attempting to resolve an input partial street name; this too allows more partial street names to be recognized.","title":"III.4 Partial Street Names"},{"location":"chapters/chapterIII/section05/","text":"III.5 The Similar Names Feature Geosupport has a \u2018similar names\u2019 feature that applications can utilize when handling Geosupport rejection of input street names. The feature consists of returning to the application a list of up to ten valid street names from the specified input borough that Geosupport deems to be \u2018similar\u2019 to the rejected input street name. Similar names are always full (not partial) street names, normalized in sort format. Applications can be designed to display the similar names whenever there are any, to aid the data entry operator in correcting rejected input names. Whenever an input street name is rejected, if there is at least one valid full street name in the specified input borough that Geosupport deems to be similar to the rejected name, Geosupport takes the following actions: A list of the similar names, up to a maximum of ten, is returned in the List of Street Names field in WA1. The Geosupport Return Code value is \u2018EE\u2019. The Reason Code value is a number from 1 to 9 or the letter \u2018A\u2019, indicating the number of similar names that are in the List of Street Names. (The value \u2018A\u2019 indicates that there are 10 similar names.) An appropriate message is returned in the WA1 Message field. The number of similar names that are in the list is returned in the WA1 field Number of Street Names in List. If there is exactly one similar name, the message explicitly indicates that name. For example, if the input is the invalid Manhattan name DUFFEY SQUARE, there is a single similar name, DUFFY SQUARE. The message in this case would be: \u2018DUFFEY SQUARE\u2019 NOT RECOGNIZED. IS IT \u2018DUFFY SQUARE\u2019? If there is more than one similar name, then the message indicates the number of similar names but does not contain the similar names themselves. For example, the invalid Staten Island name ABBNER ROAD has three similar names. The message in this case would be: \u2018ABBNER ROAD\u2019 NOT RECOGNIZED. THERE ARE 003 SIMILAR NAMES. To utilize the similar names feature, the user might program the application as follows. Whenever a call to Geosupport generates the GRC value \u2018EE\u2019, indicating rejection of an input street name and the existence of similar names, the application displays the Geosupport message (and/or the application\u2019s own message) and the similar names. (When there is exactly one similar name, the Geosupport message already contains the similar name.) The application then offers the data entry operator an opportunity to correct the input name, either by selecting one of the similar names (for example, by allowing the operator to use the cursor and the Enter key to make the selection) or by keying in a new name. If the operator has selected a similar name, the application moves it to the WA1 input street name field, overlaying the original input name, while leaving the rest of the WA1 input fields unmodified. The application then issues a second Geosupport call. Designing the application to allow the operator to select a similar name from the list lessens the need for the operator to handle street name rejects by key-entering new street name spellings, thus increasing the operator\u2019s productivity and eliminating the possibility of new key-stroke errors. Applications should never be designed to replace a rejected input name with a Geosupport-provided similar name in an automatic fashion, even when there is exactly one similar name . The similar names that Geosupport provides are merely possibilities for the intended input street name, and it may well be that none of them is the intended input street name. Human judgment should always be exercised when deciding whether to use a similar name. To optimize the contents of the similar names list that is returned to the user\u2019s application, Geosupport takes the following steps: Geosupport only returns names that could be used in the specified function call. For example, since Non-Addressable Place Names, Addressable Place Names and Business Improvement Districts (BID) are not valid for Functions 2, 3, 3C and 3S, they will not be included in the similar names list for those functions. Also, roadbed street names are valid only when the Roadbed Request Switch is turned on. Roadbed street names will therefore not be included in the similar names list unless the Roadbed Request Switch is on. For example, in Brooklyn, if the input street name is \u2018OCEAN PARTKAY\u2019 and the Roadbed Request Switch is on, names such as OCEAN PARKWAY NORTHBOUND ROADBED will be included in the similar names list; however, if the Roadbed Request Switch is off, the roadbed street name will not be included. The similar names list will include only one spelling variation per locally valid street name (or 7-digit street code). For example, in Manhattan, if the input street name is \u2018ADAM\u2019, the similar names list will include only \u2018ADAM C POWELL BOULEVARD\u2019 and not the four other valid variations of that street name. The spelling variation selected is the first one encountered based upon sort sequence, which means it may or may not be the principal street name. Although users need not be concerned with the criteria that Geosupport uses to generate similar names, the general criteria are listed here. A valid full street name is deemed \u2018similar\u2019 to an invalid input street name if it is in the specified input borough and any of the following conditions holds: (A) The valid full street name is at least as long as the input street name, and the two names are identical for the length of the input street name. For example, in Manhattan, the valid full street names YORK AVENUE and YORK STREET would be deemed similar to the invalid name YORK. (YORK is invalid because it is an ambiguous partial street name.) or (B) There are no valid full street names in the specified borough that satisfy criterion (A), and the input street name begins with a compass direction word (NORTH, SOUTH, EAST or WEST) followed by a blank, and the input street name and the given valid full street name are identical up to and including the first three bytes following that blank. For example, in Manhattan, consider the invalid input name EAST HOUSTIN STREET, which is 12 bytes long. For this name, there are no valid full Manhattan street names that satisfy criterion (A). That is, there are no valid full Manhattan street names that are longer than 12 bytes such that the first 12 bytes consist of the character string EAST HOUSTIN STREET. However, this input name begins with a compass direction word, EAST, and there is a valid full street name, EAST HOUSTON STREET, that is identical to EAST HOUSTIN STREET through the third byte following the blank after the word EAST (i.e., they are identical in their first eight bytes, consisting of the string \u2018EAST HOU\u2019). Therefore, by criterion (B), EAST HOUSTON STREET is deemed similar to EAST HOUSTIN STREET. or (C) There are no valid full street names in the specified borough that satisfy criterion (A) or criterion (B), and at least the initial three bytes of the input street name and the given valid full street name are identical. The overall process is to keep looking for a match while dropping off characters from the end of the input street name. The streets must match on at least the first three bytes of the input street name to be considered a similar name for this criterion. The actual algorithm is somewhat complex and a complete description of it is beyond the scope of this document. As an example, in Manhattan, if the input street name is BROADWAY TERRACH, then BROADWAY TERRACE will appear first in the list of similar names. Other street names beginning with BROADWAY will also appear in the list. Since BROADWAY TERRACE matches the most letters in the input street name, it appears first. The algorithm will typically insert the name with more matches at the beginning of the list. As another example, in Staten Island, each of the valid street names ABBEY ROAD, ABBOTT STREET and ABBY PLACE will be deemed similar to ABBNER ROAD since they all begin with the same three bytes, namely, ABB. or (D) The input street name contains numeric characters, and the input street name is identical to the valid street name up to and including the first numeric word. For example, in Manhattan, the valid street name 8 AVENUE is deemed similar to the invalid name 8 PLACE. In Brooklyn, the valid street names BRIGHTON 6 COURT and BRIGHTON 6 STREET are both deemed similar to the invalid name BRIGHTON 6 AVENUE. or (E) In the boroughs of the Bronx and Manhattan only, the input street name is a front-truncated street name . A front-truncated street name is one for which all of the following are true: (E1) The input street name can be transformed into the valid street name by adding the word EAST or WEST to the front of the input street name. (E2) The input street name has at least two words. (E3) The first word of the input street name is not END, RIVER, SIDE, ST or STREET. (E4) The last word of the input street name is not EXTENSION. The set of criteria in (E) is designed to reflect the common practice to specify street names of Bronx and Manhattan streets that begin with the word EAST or WEST without that first word. These street names are referred to as front-truncated street names. For example, the intersection of Broadway and West 42 Street in Manhattan is often expressed informally as \u201cthe intersection of Broadway and 42 Street\u201d; pursuant to criteria (E), Geosupport generates EAST 42 STREET and WEST 42 STREET as similar names for the invalid Manhattan street name 42 STREET. Similarly, EAST HOUSTON STREET and WEST HOUSTON STREET are generated as similar names for the invalid Manhattan street name HOUSTON STREET. Criteria (E2) through (E4) filter out certain special cases where it is not customary to drop the first word EAST or WEST. For example, Criterion (E2) prevents the invalid Bronx input street name AVENUE from generating as similar names the valid Bronx street names EAST AVENUE and WEST AVENUE; Criterion (E3) prevents the invalid Manhattan street names END AVENUE, RIVER DRIVE and SIDE HIGHWAY from generating as similar names EAST END AVENUE and WEST END AVENUE, EAST RIVER DRIVE, and WEST SIDE HIGHWAY, respectively. Note that, if the input street name is the invalid Manhattan name 7 STREET, then 7 AVENUE and 7 AVENUE SOUTH are similar names by virtue of criterion (D), and EAST 7 STREET is a similar name by virtue of (E), but WEST 7 STREET is not a similar name, since it is not itself a valid Manhattan street name. The similar names are returned in the List of Street Names sorted in alphabetical order, except that any front-truncated street names (i.e. similar names that satisfy criteria (E)) are listed first.","title":"III.5 The Similar Names Feature"},{"location":"chapters/chapterIII/section06/","text":"III.6 Unconventional Geographic Feature Names In addition to conventional street names, Geosupport recognizes the following other types of geographic names: the names of \u2018paper streets\u2019; the names of some non-street features; addressable and non-addressable place names; pseudo-street names; and intersection names. \u2018Recognizing\u2019 a name means that a street code has been assigned to that name and Geosupport accepts the name as valid input. The various types of unconventional names are discussed below, and there are further details on their processing in subsequent chapters. Paper Streets A paper street is a street that is legally \u2018mapped\u2019 (designated as a street on the official City Map) but that does not exist physically. The city \u2018maps\u2019 paper streets with the intention of constructing them, but there is no certainty that a particular paper street will be built. Indeed, some paper streets have been mapped and then eventually de-mapped without ever having been built. Geosupport recognizes the names of paper streets, but it does not recognize geographic locations (addresses, intersections etc.) along a paper street. In addition to streets that are paper streets in their entirety, there are some streets that have both portions that exist physically and portions that exist only \u2018on paper\u2019; for such a street, Geosupport recognizes geographic locations only within the portion that exists physically. Non-Street Features In the category of non-street features, as of this writing, Geosupport recognizes only the names of some railroad tracks and shorelines. Eventually, Geosupport will be enhanced to recognize the names of other non-street geographic features in New York City, including all railroad tracks and shorelines. Non-street features do not have addresses, but names of non-street features that are recognizable to Geosupport can serve as street name input to describe geographic locations other than addresses, such as intersections, street segments and street stretches. Addressable Place Names Addressable place names are the names of \u2018places\u2019, generally major individual buildings or building complexes, that can be combined with address numbers to form valid New York City addresses. Such places are not streets but their names serve the same role as do ordinary street names in forming addresses that Geosupport will recognize. An example in Manhattan that Geosupport recognizes is PENN PLAZA, a cluster of commercial buildings in the vicinity of Pennsylvania Station. For example, 1 PENN PLAZA, 2 PENN PLAZA and 7 PENN PLAZA are all valid Manhattan addresses, recognized by the U.S. Postal Service and by Geosupport\u2019s address processing functions. Other examples of addressable place names recognized by Geosupport are: in Manhattan, NEW YORK PLAZA, WASHINGTON SQUARE VILLAGE, GOVERNORS ISLAND and CONFUCIUS PLAZA; in Brooklyn, ALBEE SQUARE, METROTECH and FORT HAMILTON MANOR. Non-Addressable Place Names (NAPs) Non-Addressable Place names (NAPs) are names of buildings or other geographic features that typically are not combined with an address number to form a valid address. See discussion of Support of Non-Addressable Place Names (NAPs) with Address Numbers below) Note that a building that has a NAP may or may not also have a conventional street address; it is the place name that is non-addressable, not necessarily the place itself. For example, the EMPIRE STATE BUILDING can be identified both by its name, which is a NAP, and by its conventional street address (i.e. 350 Fifth Avenue). CITY HALL in Manhattan and YANKEE STADIUM in the Bronx are examples of NAPs referring to buildings that do not have conventional street addresses. Typical geographic features that have NAPs include named buildings, stadiums, arenas, hospitals, housing projects, military complexes, museums, universities, theaters, airports, parks, zoos, marinas and islands. Geographic features that have NAPs are classified as either simplexes, complexes or constituent entities of a complex. A simplex is a \u201cstand-alone\u201d named geographic feature, that is, a feature that has a NAP and is not a complex or a constituent entity of a complex. Examples in Manhattan: EMPIRE STATE BUILDING, CARNEGIE HALL, BRYANT PARK A complex is a group of related geographically identifiable features at one site. A geographically identifiable feature is a feature that has an address, a NAP and/or a Building Identification Number (BIN). (BINs are discussed in detail in Chapter VI.3 .) Examples of Manhattan complexes: LINCOLN CENTER, JEFFERSON HOUSES, CITY COLLEGE. A constituent entity of a complex is a building or other geographically identifiable feature that is part of a complex. A constituent entity may be identified by a NAP or by a conventional street address. Examples in Manhattan: AVERY FISHER HALL (a constituent entity of LINCOLN CENTER identified by NAP); CITY COLL SHEPARD HALL (a constituent entity of CITY COLLEGE identified by NAP); 259 CONVENT AVE (a conventional street address which identifies CITY COLL SHEPARD HALL). NAPs are accepted as input data by Function 1N and by the address-processing functions (Functions 1, 1A, 1B and 1E, but not Function AP.). Currently, these functions accept a limited set of NAPs (including only some of the examples in this section). Additional NAPs are being added over time. Support of NAPs that have address numbers is described below. For further details on NAPs, see Chapter IV.7 . Support of Non-Addressable Place Names (NAPs) with address numbers Warning: Some users may need to modify their input NAP data to get expected results (see below). There are some Non-Addressable Place Names (NAPs) in New York City that either actually have addresses associated with them \u2013 often in a location that differs from the NAP itself \u2013 or are commonly treated as addressable. An example in Manhattan is the NAP called \u2018 Bryant Park \u2019. A building exists near Bryant Park with its own NAP of One Bryant Park which is often treated by users as if it had the address \u2018 1 Bryant Park \u2019. Another example, in Brooklyn, is the NAP called \u2018 Grand Army Plaza \u2019. A cooperative now exists near Grand Army Plaza, and its address is \u2018 1 Grand Army Plaza \u2019. Geosupport supports as input the special case of a NAP that has an address number. (Releases of Geosupport prior to Version 13.2 ignored any address number that was entered as input with a NAP.) In order to support this type of address (i.e. a NAP with an address number), Geosupport does not automatically ignore an address number that is submitted as input with a NAP. Geosupport ignores the input address number only if the address does not exist. In general, this does not affect the user\u2019s output since users typically do not enter an address number with a NAP. Note, however, if a user submits an address number (by accident or intentionally), the resulting output may be different from submitting the NAP without the address number, because, for example, \u2018 1 Bryant Park \u2019 will be recognized as a specific building, not as the park called \u2018 Bryant Park \u2019. The results will be identical to a NAP without an address number if the address number submitted does not exist. For example, \u2018 34 Bryant Park \u2019 does not exist; the address number (viz. \u201834\u2019) will be ignored in that situation and the information for \u2018 Bryant Park \u2019 will be returned. Geosupport issues a warning to users that the input address number is ignored.(Though this will not be apparent in GBAT if the option to treat warning messages as rejects is not selected). Note to users who enter a \u2018dummy\u2019 address number with a NAP intentionally: It may be necessary for these users to modify their input data . These users typically run applications that do not allow the data to have a blank address number, even for a NAP. The input is submitted with a \u2018dummy\u2019 address number. To ensure that Geosupport returns information about the NAP (and not a specific building that is now being supported), the users should use \u20189999\u2019 as the dummy address number . In all probability, the \u20189999\u2019 address will not exist. When the \u20189999\u2019 address does not exist, Geosupport will ignore the \u20189999\u2019 and treat it as blanks. Geosupport will then give results as if the NAP was entered without the address number. Pseudo-Street Names Pseudo-street names are special \u2018invented\u2019 names that in certain circumstances Geosupport accepts as valid input street names, as described in Chapters V.2 , VII.2 and VII.3 . Three sets of pseudo-street names are: DEAD END and its aliases DEADEND, DEAD END STREET, CUL DE SAC and CULDESAC CITY LIMIT and its aliases CITY LIMITS and CITY LINE BEND and its alias BENDING POINT DEAD END and BEND, and their aliases, are valid in all five boroughs. CITY LIMIT and its aliases are valid in all boroughs except Brooklyn. These pseudo-street names may not be used to specify addresses, but they may be used to specify street intersections, and to specify the cross streets (but not the \u2018on\u2019 street) in other types of street configurations. Duplicate Address Pseudo-Street Names (DAPSs): Another type of pseudo-street name that Geosupport recognizes, for certain addresses only, is Duplicate Address Pseudo-Street Names (DAPSs). DAPSs are used with Geosupport\u2019s duplicate address processing feature (discussed in detail in Chapter V.6 ). New York City has a small number of duplicate addresses, which are not data errors in Geosupport files, but are situations where an address is valid in reality at two different locations on the same street. DAPSs provide a means for a user to specify unambiguously a particular instance of a duplicate address. The user may also provide ZIP Code input to enable Geosupport to recognize which duplicate street name should be used. An example of a street that has duplicate addresses is Hillside Avenue in Queens. A portion of Hillside Avenue in the Bellerose neighborhood has some of the same addresses as does another portion of Hillside Avenue in the Douglaston neighborhood. To make it possible to process these addresses, the DAPSs HILLSIDE AVENUE BELLEROSE and HILLSIDE AVENUE DOUGLASTON have been created. Similar DAPSs have been created for each city street that has duplicate addresses. In general, DAPSs are formed by augmenting the conventional name of the street with a neighborhood name. An example of using ZIP Code input in a duplicate address situation follows. If 239-02 Hillside Avenue in Queens, with a ZIP Code set to 11426 is provided as input to Function 1, 1A, 1B, 1E or AP, Geosupport will determine that Hillside Avenue Bellerose should be used. If the ZIP Code provided had been 11363, Geosupport would determine that Hillside Avenue Douglaston should be used. This processing will occur even if the borough code has been provided as well. Geosupport accepts DAPSs as valid input only for certain addresses on streets that have duplicate addresses, as explained in Chapter V.6 . If a DAPS is supplied as input to a Function 2, 3, 3C or 3S call, the associated neighborhood name (a.k.a. town name in Queens) will be stripped off to provide a valid street name for these calls. A warning message (Reason Code W) will be issued. For example, if the input to a Function 2 call is \u201cHillside Avenue Douglaston\u201d, the word \u201cDouglaston\u201d will be removed and the street name \u201cHillside Avenue\u201d will be used. Intersection Names Certain street intersections in New York City have intersection names which can serve as an alternative way to identify such locations in addition to the conventional means of reference using the names of two intersecting streets. For example, ISAAC STERN PLACE is an intersection name for the intersection of West 57 Street and 7 Avenue in Manhattan. On the other hand, TIMES SQUARE is not an intersection name, because it refers to an area encompassing several intersections rather than a single street intersection. Official intersection names are designated by the City Council, and informal intersection names develop over time through local customary usage. Geosupport accepts the input of a limited set of intersection names. Intersection names may not be used to specify addresses (Functions 1, 1A, 1B, 1E, or AP), but they may be used to specify street intersections (Function 2), and to specify a cross street (but not the \u2018on\u2019 street) in other types of street configurations (Functions 3, 3C or 3S).","title":"III.6 Unconventional Geographic Feature Names"},{"location":"chapters/chapterIII/section06/#paper-streets","text":"A paper street is a street that is legally \u2018mapped\u2019 (designated as a street on the official City Map) but that does not exist physically. The city \u2018maps\u2019 paper streets with the intention of constructing them, but there is no certainty that a particular paper street will be built. Indeed, some paper streets have been mapped and then eventually de-mapped without ever having been built. Geosupport recognizes the names of paper streets, but it does not recognize geographic locations (addresses, intersections etc.) along a paper street. In addition to streets that are paper streets in their entirety, there are some streets that have both portions that exist physically and portions that exist only \u2018on paper\u2019; for such a street, Geosupport recognizes geographic locations only within the portion that exists physically.","title":"Paper Streets"},{"location":"chapters/chapterIII/section06/#non-street-features","text":"In the category of non-street features, as of this writing, Geosupport recognizes only the names of some railroad tracks and shorelines. Eventually, Geosupport will be enhanced to recognize the names of other non-street geographic features in New York City, including all railroad tracks and shorelines. Non-street features do not have addresses, but names of non-street features that are recognizable to Geosupport can serve as street name input to describe geographic locations other than addresses, such as intersections, street segments and street stretches.","title":"Non-Street Features"},{"location":"chapters/chapterIII/section06/#addressable-place-names","text":"Addressable place names are the names of \u2018places\u2019, generally major individual buildings or building complexes, that can be combined with address numbers to form valid New York City addresses. Such places are not streets but their names serve the same role as do ordinary street names in forming addresses that Geosupport will recognize. An example in Manhattan that Geosupport recognizes is PENN PLAZA, a cluster of commercial buildings in the vicinity of Pennsylvania Station. For example, 1 PENN PLAZA, 2 PENN PLAZA and 7 PENN PLAZA are all valid Manhattan addresses, recognized by the U.S. Postal Service and by Geosupport\u2019s address processing functions. Other examples of addressable place names recognized by Geosupport are: in Manhattan, NEW YORK PLAZA, WASHINGTON SQUARE VILLAGE, GOVERNORS ISLAND and CONFUCIUS PLAZA; in Brooklyn, ALBEE SQUARE, METROTECH and FORT HAMILTON MANOR.","title":"Addressable Place Names"},{"location":"chapters/chapterIII/section06/#non-addressable-place-names-naps","text":"Non-Addressable Place names (NAPs) are names of buildings or other geographic features that typically are not combined with an address number to form a valid address. See discussion of Support of Non-Addressable Place Names (NAPs) with Address Numbers below) Note that a building that has a NAP may or may not also have a conventional street address; it is the place name that is non-addressable, not necessarily the place itself. For example, the EMPIRE STATE BUILDING can be identified both by its name, which is a NAP, and by its conventional street address (i.e. 350 Fifth Avenue). CITY HALL in Manhattan and YANKEE STADIUM in the Bronx are examples of NAPs referring to buildings that do not have conventional street addresses. Typical geographic features that have NAPs include named buildings, stadiums, arenas, hospitals, housing projects, military complexes, museums, universities, theaters, airports, parks, zoos, marinas and islands. Geographic features that have NAPs are classified as either simplexes, complexes or constituent entities of a complex. A simplex is a \u201cstand-alone\u201d named geographic feature, that is, a feature that has a NAP and is not a complex or a constituent entity of a complex. Examples in Manhattan: EMPIRE STATE BUILDING, CARNEGIE HALL, BRYANT PARK A complex is a group of related geographically identifiable features at one site. A geographically identifiable feature is a feature that has an address, a NAP and/or a Building Identification Number (BIN). (BINs are discussed in detail in Chapter VI.3 .) Examples of Manhattan complexes: LINCOLN CENTER, JEFFERSON HOUSES, CITY COLLEGE. A constituent entity of a complex is a building or other geographically identifiable feature that is part of a complex. A constituent entity may be identified by a NAP or by a conventional street address. Examples in Manhattan: AVERY FISHER HALL (a constituent entity of LINCOLN CENTER identified by NAP); CITY COLL SHEPARD HALL (a constituent entity of CITY COLLEGE identified by NAP); 259 CONVENT AVE (a conventional street address which identifies CITY COLL SHEPARD HALL). NAPs are accepted as input data by Function 1N and by the address-processing functions (Functions 1, 1A, 1B and 1E, but not Function AP.). Currently, these functions accept a limited set of NAPs (including only some of the examples in this section). Additional NAPs are being added over time. Support of NAPs that have address numbers is described below. For further details on NAPs, see Chapter IV.7 .","title":"Non-Addressable Place Names (NAPs)"},{"location":"chapters/chapterIII/section06/#support-of-non-addressable-place-names-naps-with-address-numbers","text":"Warning: Some users may need to modify their input NAP data to get expected results (see below). There are some Non-Addressable Place Names (NAPs) in New York City that either actually have addresses associated with them \u2013 often in a location that differs from the NAP itself \u2013 or are commonly treated as addressable. An example in Manhattan is the NAP called \u2018 Bryant Park \u2019. A building exists near Bryant Park with its own NAP of One Bryant Park which is often treated by users as if it had the address \u2018 1 Bryant Park \u2019. Another example, in Brooklyn, is the NAP called \u2018 Grand Army Plaza \u2019. A cooperative now exists near Grand Army Plaza, and its address is \u2018 1 Grand Army Plaza \u2019. Geosupport supports as input the special case of a NAP that has an address number. (Releases of Geosupport prior to Version 13.2 ignored any address number that was entered as input with a NAP.) In order to support this type of address (i.e. a NAP with an address number), Geosupport does not automatically ignore an address number that is submitted as input with a NAP. Geosupport ignores the input address number only if the address does not exist. In general, this does not affect the user\u2019s output since users typically do not enter an address number with a NAP. Note, however, if a user submits an address number (by accident or intentionally), the resulting output may be different from submitting the NAP without the address number, because, for example, \u2018 1 Bryant Park \u2019 will be recognized as a specific building, not as the park called \u2018 Bryant Park \u2019. The results will be identical to a NAP without an address number if the address number submitted does not exist. For example, \u2018 34 Bryant Park \u2019 does not exist; the address number (viz. \u201834\u2019) will be ignored in that situation and the information for \u2018 Bryant Park \u2019 will be returned. Geosupport issues a warning to users that the input address number is ignored.(Though this will not be apparent in GBAT if the option to treat warning messages as rejects is not selected). Note to users who enter a \u2018dummy\u2019 address number with a NAP intentionally: It may be necessary for these users to modify their input data . These users typically run applications that do not allow the data to have a blank address number, even for a NAP. The input is submitted with a \u2018dummy\u2019 address number. To ensure that Geosupport returns information about the NAP (and not a specific building that is now being supported), the users should use \u20189999\u2019 as the dummy address number . In all probability, the \u20189999\u2019 address will not exist. When the \u20189999\u2019 address does not exist, Geosupport will ignore the \u20189999\u2019 and treat it as blanks. Geosupport will then give results as if the NAP was entered without the address number.","title":"Support of Non-Addressable Place Names (NAPs) with address numbers"},{"location":"chapters/chapterIII/section06/#pseudo-street-names","text":"Pseudo-street names are special \u2018invented\u2019 names that in certain circumstances Geosupport accepts as valid input street names, as described in Chapters V.2 , VII.2 and VII.3 . Three sets of pseudo-street names are: DEAD END and its aliases DEADEND, DEAD END STREET, CUL DE SAC and CULDESAC CITY LIMIT and its aliases CITY LIMITS and CITY LINE BEND and its alias BENDING POINT DEAD END and BEND, and their aliases, are valid in all five boroughs. CITY LIMIT and its aliases are valid in all boroughs except Brooklyn. These pseudo-street names may not be used to specify addresses, but they may be used to specify street intersections, and to specify the cross streets (but not the \u2018on\u2019 street) in other types of street configurations.","title":"Pseudo-Street Names"},{"location":"chapters/chapterIII/section06/#duplicate-address-pseudo-street-names-dapss","text":"Another type of pseudo-street name that Geosupport recognizes, for certain addresses only, is Duplicate Address Pseudo-Street Names (DAPSs). DAPSs are used with Geosupport\u2019s duplicate address processing feature (discussed in detail in Chapter V.6 ). New York City has a small number of duplicate addresses, which are not data errors in Geosupport files, but are situations where an address is valid in reality at two different locations on the same street. DAPSs provide a means for a user to specify unambiguously a particular instance of a duplicate address. The user may also provide ZIP Code input to enable Geosupport to recognize which duplicate street name should be used. An example of a street that has duplicate addresses is Hillside Avenue in Queens. A portion of Hillside Avenue in the Bellerose neighborhood has some of the same addresses as does another portion of Hillside Avenue in the Douglaston neighborhood. To make it possible to process these addresses, the DAPSs HILLSIDE AVENUE BELLEROSE and HILLSIDE AVENUE DOUGLASTON have been created. Similar DAPSs have been created for each city street that has duplicate addresses. In general, DAPSs are formed by augmenting the conventional name of the street with a neighborhood name. An example of using ZIP Code input in a duplicate address situation follows. If 239-02 Hillside Avenue in Queens, with a ZIP Code set to 11426 is provided as input to Function 1, 1A, 1B, 1E or AP, Geosupport will determine that Hillside Avenue Bellerose should be used. If the ZIP Code provided had been 11363, Geosupport would determine that Hillside Avenue Douglaston should be used. This processing will occur even if the borough code has been provided as well. Geosupport accepts DAPSs as valid input only for certain addresses on streets that have duplicate addresses, as explained in Chapter V.6 . If a DAPS is supplied as input to a Function 2, 3, 3C or 3S call, the associated neighborhood name (a.k.a. town name in Queens) will be stripped off to provide a valid street name for these calls. A warning message (Reason Code W) will be issued. For example, if the input to a Function 2 call is \u201cHillside Avenue Douglaston\u201d, the word \u201cDouglaston\u201d will be removed and the street name \u201cHillside Avenue\u201d will be used.","title":"Duplicate Address Pseudo-Street Names (DAPSs):"},{"location":"chapters/chapterIII/section06/#intersection-names","text":"Certain street intersections in New York City have intersection names which can serve as an alternative way to identify such locations in addition to the conventional means of reference using the names of two intersecting streets. For example, ISAAC STERN PLACE is an intersection name for the intersection of West 57 Street and 7 Avenue in Manhattan. On the other hand, TIMES SQUARE is not an intersection name, because it refers to an area encompassing several intersections rather than a single street intersection. Official intersection names are designated by the City Council, and informal intersection names develop over time through local customary usage. Geosupport accepts the input of a limited set of intersection names. Intersection names may not be used to specify addresses (Functions 1, 1A, 1B, 1E, or AP), but they may be used to specify street intersections (Function 2), and to specify a cross street (but not the \u2018on\u2019 street) in other types of street configurations (Functions 3, 3C or 3S).","title":"Intersection Names"},{"location":"chapters/chapterIII/section07/","text":"III.7 Street Name Browsing and Functions BB and BF Functions BB (\"browse backward\") and BF (\"browse forward\") enable users to include interactive street name browsing functionality in their CICS applications. These functions may be used to assist data entry staff in determining valid spellings of street names that were rejected or the spelling of which is unknown to the staff. Functions BB and BF are supported in both the CICS and batch environments and are called using one work area. A sequence of repeated calls to Functions BB and/or BF will browse backwards and/or forwards in alphabetical order through a list of all the valid normalized street names in a given borough . Each call to one of these functions returns up to ten names in alphabetical order. A call returns fewer than ten names if there are fewer than ten names remaining in the given borough in the given browse direction. When fewer than ten names are returned, a warning is issued. The starting point of the browse is determined by the value of the input character string. Both Function BB and Function BF process an input borough code and character string, which are passed in the WA1 input Borough Code 1 and Street Name 1 fields, respectively. The input character string can be from one to 32 bytes long. In addition, when issuing a COW Function BB or BF call, a user may request that either all street names, only primary street names, or only principal street names be returned. The request is made via the Browse Flag . If this flag is set to P , then only primary street names are returned. If this flag is set to F, then only principal street names are returned. Any other value causes an error message to be generated. When the principal street names are requested, the primary street names will also be returned since all primary street names are also principal street names. For more information on Primary (P) and Principal (F) street names, please refer to Chapters IV.5 and IV.6 . The list of output normalized street names in alphabetical order is returned in the WA1 output field List of Street Names. The number of names returned is returned in packed decimal format in the MSW WA1 output field Number of Street Names in List. In COW WA1 output, the Number of Street Codes and Street Names in List is returned in character format. The List of Street Names is a 320\u2011byte WA1 output field containing ten 32\u2011byte sub-fields or \u2018slots\u2019 for normalized street names. Let us call these sub-fields Namefield1 through Namefield10. (Do not confuse Namefield1 with the WA1 input street name field called Street Name 1.) Each output normalized street name is returned left-justified and blank-filled within its sub-field. When fewer than ten names are returned, the unused slots are left blank. Function BF returns up to ten names for the given input borough, in alphabetical order, starting with the alphabetically first normalized name that is equal to or greater than the input character string. If the input string itself is a normalized name, it is returned in Namefield1, followed by the other returned names in Namefield2, Namefield3 etc., if any. Otherwise, the first name alphabetically greater than the input string for the given borough, if any, is returned in Namefield1, followed by the other returned names, if any. Function BB works similarly but the list of up to ten names it returns ends with the alphabetically first name greater than or equal to the input string. Notice that, for a given input character string, there is an overlap of one name between the sets of names returned by Functions BB and BF. If Function BB or BF returns ten names (in sub-fields Namefield1 through Namefield10) and the user wishes to continue the browse, additional browse function calls may be issued. For Function BF, prior to the subsequent call, the user primes the WA1 input field called Street Name 1 with the street name that was returned in Namefield10. For Function BB, prior to the subsequent call, the user primes the WA1 input field called Street Name 1 with the street name that was returned in Namefield1.","title":"III.7 Street Name Browsing and Functions BB and BF"},{"location":"chapters/chapterIII/section08/","text":"III.8 Selection of Output Street Names (COW only) For COW Function calls, the Browse Flag allows users to request the return of primary or principal output street names and street codes (for Functions 1, 1A, 1B, 1E, 1N, 2, 3, 3C and AP). The Browse Flag also allows users to request the return of preferred output street names and street codes (for Functions 1, 1A, 1B. 1E, 2, 3, 3C and AP). Setting the Browse Flag to P will cause the output street name(s) and code(s) that are returned to the user to be the primary name of the input street names or codes. Setting the flag to F will cause the principal name and street code of the input street name to be returned to the user. For Functions 1, 1A, 1B, 1E, 2, 3, 3C and AP when the Geosupport call involves two work areas, the Browse Flag may also be set to R . Setting the flag to R will cause the preferred name and street code of the input street name to be returned to the user. For all of these functions except Functions 1E, the principal Department of City Planning (DCP) preferred street name and code will be returned in the output section of Work Area 1. For Function 1E, the principal Board of Elections (BOE) preferred street name and code will be returned to the user. If the user supplies a value of R for Function 1N, it is rejected with a GRC of 79. Preferred Street Names are described in more detail in Chapter IV.6 . Below is a sample where the Browse Flag causes Geosupport to return different street names. The example is in Manhattan, in the portion of 7 AVENUE (north of Central Park) where ADAM C POWELL BOULEVARD is the Principal Street Name. The input address is: 2019 A C POWELL BLVD Function Browse Output Flag Street Name 1 (or 1A or 1B) Blank A C POWELL BOULEVARD 1 (or 1A or 1B) P 7 AVENUE 1 (or 1A or 1B) F ADAM CLAYTON POWELL JR BOULEVARD 1 (or 1A or 1B) R ADAM CLAYTON POWELL JR BOULEVARD 1E BLANK A C POWELL BOULEVARD 1E P 7 AVENUE 1E F ADAM CLAYTON POWELL JR BOULEVARD 1E R 7 AVENUE Note that the Board of Elections (Function 1E) prefers a different street name from the Department of City Planning. The Selection of Output Street Names feature is available only with the Character-Only Work Areas (COWs). For more information on Primary (P) and Principal (F) street names, please refer to Chapters IV.5 and IV.6 .","title":"III.8 Selection of Output Street Names (COW only)"},{"location":"chapters/chapterIV/chapterIV/","text":"CHAPTER IV STREET CODES","title":"Chapter IV"},{"location":"chapters/chapterIV/section01/","text":"IV.1 Introduction: Street Codes and Geographic Retrieval Consistency This chapter discusses street codes , a set of numeric codes assigned in the Geosupport System to the city\u2019s street names and the names of certain non-street geographic features, place names, pseudo-street names and intersection names ( see Chapter III.6 ). (In this chapter, except where otherwise stated, the terms \u2018street\u2019 and \u2018street name\u2019 refer to any geographic feature or feature name that has a Geosupport street code assigned to it.) Geosupport\u2019s street code feature provides critical support for many types of applications. The primary purposes of the street code feature are: \u2022 To enable applications to retrieve or match data from their own files by geographic location in a consistent manner: (See Chapter I.3 for a general discussion of the concept of geographic retrieval consistency.) Some streets have more than one name, and some street names have alternative spellings. Therefore, for applications that must retrieve data by types of geographic locations that are defined in terms of streets, such as addresses and intersections, the consistency of the retrieval is an important design consideration. For example, suppose a record is created in an application file for the Manhattan address 1204 SIXTH AVENUE. It is desirable that the application be able later to retrieve this record whether the user specifies the input address at retrieval time as 1204 SIXTH AVENUE, 1204 6 AVENUE or 1204 AVENUE OF THE AMERICAS. To achieve such consistency, Geosupport five-digit street codes rather than street names should be used in the retrieval key, as explained in this chapter. \u2022 To obtain \u2018preferred\u2019 street names : For streets that have more than one name, the street name that is most appropriate to use for display purposes (such as on application screens, reports and mailing labels) may vary along the street. Street codes can be used to obtain location-specific \u2018preferred\u2019 street names for display, as explained in Chapter IV.6 . Secondary purposes of the street code feature are: \u2022 To improve execution efficiency via street code input : There is an optional feature in which applications can pass input streets to Geosupport in the form of street codes rather than street names. This feature is useful when processing an application file that already contains street codes retained from a previous pass through Geosupport. The use of this feature can increase the execution efficiency of batch applications by sometimes allowing Geosupport to circumvent street name normalization and street code retrieval processing. \u2022 To save application disk storage space : Storing street codes, instead of street names, in an application file saves application disk storage space. In many applications, however, doing so would necessitate increased programming and increased execution time overhead to make additional Geosupport calls to obtain street names for display. Note, however, that with Extended Work Areas, many of the functions return both street codes and street names, thus additional programming is not needed. The use of Geosupport street codes in an application does complicate the design and development of the application. It also adds a maintenance burden to the application, since street codes stored in an application file must be periodically resynchronized to reflect street code assignment changes effectuated in new Geosupport releases. In view of this overhead, the secondary purposes listed above are not likely by themselves to justify incorporating the use of street codes in an application.","title":"IV.1 Introduction: Street Codes and Geographic Retrieval Consistency"},{"location":"chapters/chapterIV/section02/","text":"IV.2 Street Name Relationships: Aliases and Locally Valid Street Names GSS assigns street codes in a way that encodes certain information about street names. Specifically, a portion of the street code signifies whether an alias relationship exists between two street names; and a portion of the street code signifies whether a street name is only locally valid . These aspects of street code assignment can have implications for application design. Two normalized street names are called aliases of each other if they are either alternative names of the same street (such as SIXTH AVENUE and AVENUE OF THE AMERICAS in Manhattan) or any portion thereof, or are spelling variants of the same street name (such as SIXTH AVENUE and 6 AVENUE, or MAC DOUGAL STREET, MACDOUGAL STREET and MCDOUGAL STREET ). Geosupport is designed to recognize all commonly accepted street name aliases, and through the structure of its street code assignments, to identify whether two street names are aliases for the same street. Locally valid street names are street names that are only valid \u2018locally\u2019, that is, for a portion of a street. Almost all streets that have locally valid street names also have at least one name that is valid for the entire street. An example is Seventh Avenue in Manhattan, which has the following names: \u2022 The names 7 AVENUE and SEVENTH AVENUE are valid for the entire street. \u2022 POWELL BOULEVARD and various aliases (ADAM CLAYTON POWELL JR BOULEVARD, A C POWELL BOULEVARD etc.) are valid only for the portion of the street north of Central Park. \u2022 FASHION AVENUE is valid only for a portion of the street in the Garment District. \u2022 SAINT VINCENTS SQUARE and ST VINCENTS SQUARE are valid only for a small stretch of the street in the vicinity of the former Saint Vincent\u2019s Hospital. All of the above names are aliases of each other, since they are all names for the same street or a portion thereof. The names in the first set are valid for the entire length of the street; the other names are only valid locally. Notice that two street names can be considered aliases of each other even if there are no locations at which both names are valid. For example, FASHION AVENUE and SAINT VINCENTS SQUARE are aliases, even though there is no location where both names are valid.","title":"IV.2 Street Name Relationships: Aliases and Locally Valid Street Names"},{"location":"chapters/chapterIV/section03/","text":"IV.3 Five-Digit and Ten-Digit Street Codes To each normalized spelling of a full street name within a borough, a ten-digit number called the ten-digit street code (10SC) is assigned.Partial street names ( see Chapter III.4 ) are assigned the same 10SC values as the full streets names from which they were generated. A 10SC value is meaningful only within a borough, and is generally preceded by a borough code to form an eleven-digit item called the borough and ten-digit street code (B10SC) .If two street names in different boroughs happen to have the same 10SC value, that does not signify any relationship between those streets. Streets in two different boroughs are always considered to be different streets , even if the two streets have the same name, and even if they form a single physically continuous street running across the borough boundary. For example, Atlantic Avenue crosses the Brooklyn-Queens border. Geosupport treats the Brooklyn and Queens portions of Atlantic Avenue as two different streets, each with its own B10SC value (\u201831343001010\u2019 and \u201842889001010\u2019, respectively). The first five digits of the 10SC are called the five-digit street code (5SC). The 5SC has a fundamental significance: the 5SC values of two street names in a borough are identical if and only if those names are aliases for the same street . Positions six through ten of the 10SC are discussed in Chapter IV.5 . Like the 10SC, the 5SC is meaningful only when accompanied by a borough code; when concatenated, the borough code and 5SC form a six-byte item called the borough and five-digit street code (B5SC) . The B5SC simply consists of the first six bytes of the B10SC. For MSWs only, Geosupport sometimes represents the B5SC as a four-byte packed decimal item, referred to as the packed borough and five-digit street code (PB5SC) . Conceptually, a B10SC value represents a particular (normalized) spelling of a particular name for a street within a borough, while a B5SC value represents the street itself and is shared by all the street\u2019s aliases. Consider the following examples of Manhattan street names, grouped by street, i.e. by five-digit street code. (Note: \u20181\u2019 is the borough code for Manhattan.) (Normalized) Street Name B10SC = B + 5SC + Remainder of 10SC 5 AVENUE 11041001010 1 10410 01010 FIFTH AVENUE 11041001010 1 10410 01020 MUSEUM MILE 11041001020 1 10410 02010 6 AVENUE 11051001010 1 10510 01010 SIXTH AVENUE 11051001040 1 10510 01040 AVENUE OF THE AMERICAS 11051001030 1 10510 01030 7 AVENUE 11061004010 1 10610 04010 SEVENTH AVENUE 11061004020 1 10610 04020 FASHION AVENUE 11061002010 1 10610 02010 POWELL BOULEVARD 11061001080 1 10610 01080 A C POWELL BOULEVARD 11061001010 1 10610 01010 7 AVENUE SOUTH 11071001010 1 10710 01010 SEVENTH AVENUE SOUTH 11071001020 1 10710 01020 EAST 21 STREET 11741001010 1 17410 01010 EAST 21 11741001010 1 17410 01010 WEST 21 STREET 13419001010 1 34190 01010 WEST 21 13419001010 1 34190 01010 The above example illustrates several aspects of street code assignment. Notice that alias names of the same street have the same B5SC value. Notice that EAST 21 STREET and WEST 21 STREET have different B5SC values, which amounts to treating them as names of two different streets (as indeed they must be treated, since they have address numbers in common). Similarly, 7 AVENUE and 7 AVENUE SOUTH are treated as two different streets. Notice that partial street names have the same B10SC\u2019s as the full names from which they were generated, such as EAST 21 and EAST 21 STREET. By using B5SC\u2019s in the retrieval key instead of street names, applications can achieve consistent retrieval or matching of application data by types of locations involving streets. We outline below how an application might be designed for consistent retrieval or matching by address, which requires a retrieval key consisting of a B5SC and a normalized address number (discussed in Chapter V.2 ). When the type of location being retrieved involves more than one street, such as intersections, the key would be designed to contain a B5SC field for each street. \u2022 At record creation time : During the initial creation of a record in the application file, the application calls Geosupport to obtain the B5SC corresponding to the input street name, as well as the normalized form of the input address number. The application uses these items to form a geographic retrieval key, which it stores in the new application record. Two files that contain such a key can be matched directly on the key, resulting in a match that will be consistent, i.e. independent of the use of street name aliases. \u2022 At retrieval time : When retrieving data from the application file by address, the application again calls Geosupport, obtaining the B5SC and normalized address number corresponding to the input street name and address number. The application formats these items into a search key, and reads the application file using this key. The use of the B5SC in the key instead of the street name allows the retrieval to be consistent, i.e. independent of which alias for the street is passed as input. Geosupport has three display functions , Functions D, DG and DN, which can be used to obtain street names for display in application screens, reports, mailing labels etc. These functions process five-, seven- and ten-digit street code input, respectively . (Note: seven-digit street codes are discussed in Chapter IV.5 ). Chapter IV.6 discusses the display functions.","title":"IV.3 Five-Digit and Ten-Digit Street Codes"},{"location":"chapters/chapterIV/section04/","text":"IV.4 Resynchronization of Street Codes Stored in User Files When designing an application in which street codes, either B5SCs or Bl0SCs, are stored in an application file, the user must consider the important issue of resynchronizing those street codes with respect to new Geosupport releases. This issue arises because it is sometimes necessary for the GSS staff to change the B5SC value (and therefore also the Bl0SC value) that is assigned to a street name. This would be necessary if they determine that two street names that currently have different B5SC values (signifying that they are names of two different streets) are in reality aliases for the same street and therefore must be made to have the same B5SC value. Conversely, the GSS staff might determine that two names that currently have the same B5SC value are actually names of two different streets, and therefore must be made to have different B5SC values. Both of these types of problems can be rectified only if the B5SC value, and therefore the B10SC value, assigned to one or more street names is changed. Whenever a new Geosupport release is implemented that includes any changes to street codes assigned to street names, it is essential for users to make the corresponding changes to all occurrences of those street codes stored in application files. This street code \u2018resynchronization\u2019 should be timed to be as simultaneous as possible with the implementation of the new Geosupport release. User failure to resynchronize the street codes stored in an application file for each new Geosupport release could have serious negative consequences for the application. Geographic searches in the application file in which the street code is used as part of the retrieval key might fail to retrieve some application records or might retrieve inappropriate ones. Matching of records within an application file or between files by geographic location could fail, or could result in an erroneous match. Also, the display functions D, DG and DN could return inappropriate street names for some street code values. Prior to the implementation of each new Geosupport release, a Street Name/Street Code Change Bulletin is sent to known Geosupport users 3 listing the street code changes being made in the new release. Also, as part of each release, a Geosupport file called the Street Code Change File (SCCF) is created and made accessible to users. If an application file contains B10SCs, the user can utilize the SCCF to develop an automated batch resynchronization procedure. Of course, when the stored B10SCs are updated, that also updates the B5SCs that comprise the first six bytes of the B10SCs. (If for some reason there is a separate B5SC field in the application file in addition to a B10SC field, the B5SC field must be overlaid with the new value using the first six bytes of the new B10SC value.) Resynchronizing stored B10SCs using the SCCF is the optimal resynchronization method. Users are strongly urged, when designing new applications in which street codes are to be stored in application files, to design those files so they contain B10SCs, either in addition to or instead of street names, and to write a batch street code resynchronization program that uses the SCCF . In existing applications in which B10SCs are not currently stored in the application file, we recommend that the file be enhanced to contain B10SCs, enabling a resynchronization procedure that uses the SCCF to be developed. If the file currently contains street names, B10SCs can be inserted into it easily using Function 1N (discussed in Chapter III.2 ). If only B5SCs are currently stored in the file, not street names, a more difficult one-time effort would be required to insert B10SCs into the file; the methodology for doing this would be similar to the resynchronization procedure using B5SCs described below. For application files that do not currently contain B10SCs and cannot be enhanced to contain them, the SCCF cannot be used to resynchronize the B5SCs, and other resynchronization methods must be used. The various methods for resynchronization are discussed below. It is the user\u2019s responsibility to develop a street code resynchronization procedure for each application file in which street codes are stored, and to run that procedure as soon as possible after each new Geosupport release is placed into production . Resynchronization procedure using B5SCs When only B5SCs are stored in the application file, not the original input street names nor B10SCs, it is not possible to develop a fully automated procedure to resynchronize those B5SCs. Instead, records in the application file that are affected by street code changes (as listed in the Street Name/Street Code Change Bulletin) must be found and individually examined and updated. This is because of the inherent ambiguity of a B5SC value, which can be associated with more than one street name. Specifically, it is possible that two or more street names that had the same B5SC value prior to the new Geosupport release no longer have the same value in the new release. When this occurs, the user cannot resynchronize the old B5SC value mechanically, but must determine, for each occurrence of the old B5SC value in the application file, which street name that occurrence represents in order to determine what the new B5SC value should be for that occurrence. In order to make that determination, the user would have to individually research each record containing such a B5SC value, using any information that could help to pinpoint the location and thus to determine whether the B5SC value should be changed and what the new value should be. Such information as an address, cross streets, a ZIP code, a community district or other district identifier, or tax block and tax lot identifiers could be helpful for this purpose. Because this procedure is not automatic, it is the least desirable method. Resynchronization procedure using street names If the application file contains the original input street names in addition to B5SCs, then the user can develop a fully automated batch procedure for resynchronizing the B5SCs, albeit a less than optimal one, as follows. The user can write a batch program that calls Function 1N to obtain, for each original input street name, the B5SC value currently (in the new Geosupport release) assigned to that name. The program would process every record in the application file, automatically replacing the B5SC value already stored in each record with the current B5SC value obtained from Function 1N. The program would have to provide for handling any Function 1N rejects, that is, street names that are no longer valid in the new Geosupport release. Resynchronization procedure using B10SCs Using stored street names to resynchronize B5SCs is preferable to using just the B5SCs themselves, because the former method can be automated while the latter cannot. Nevertheless, the former method is highly inefficient, because it necessitates processing every record in the application file, even though in each Geosupport release only a tiny portion (if any) of the city\u2019s street names have street code assignment changes. Storing B10SCs in the application file, and using the SCCF to resynchronize them, is the optimal approach to street code resynchronization. The ambiguity intrinsic to B5SCs does not exist for B10SCs. Since every B10SC value is assigned to a single street name only, stored B10SCs can be resynchronized by automatically replacing every occurrence of each changed B10SC value with the proper new value, with no research required to determine the latter. GSS creates a new release of the SCCF as part of each new Geosupport release. The following DD statement gives users batch access to the SCCF: //ANYDDNM DD DSN=A030.STREET.SCCF,DISP=SHR The SCCF is a sequential file with 80-byte records. The SCCF has a single header record containing file identification information, followed by a set of data records. The layouts of the header and data records are as follows: Street Code Change File (SCCF) Record Layouts SCCF Header Record Field Size Positions Comments Header constant 42 1 - 42 Literal constant: \u2018GEOSUPPORT SYSTEM FOREGROUND HEADER RECORD\u2019 DDNAME of File 8 43 - 50 Literal constant: \u2018SCCF \u2019 Geosupport Release Identifier 4 51 - 54 e.g. \u201815B **\u2018 (4th byte is generally blank) ** Date of File Creation 6 55 - 60 yymmdd format Filler 20 61 - 80 SCCF Data Records | Field | Size | Positions | |:------ | -----: |-----: | |Old B10SC | 11 | 1 - 11 | |Filler | 5 | 12 - 16 | |New B10SC | 11 | 17 - 27 | |Filler | 5 | 28 - 32 | |Borough Code | 1 | 33 | |Filler | 1 | 34 | |Street Name | 32 | 35 - 66 | |Filler | 14 | 67 - 80 | (The fields Borough Code and Street Name are in the SCCF records for informational purposes only and are not needed for synchronization.) In an application file containing stored B10SCs, the first six bytes of the B10SC field (or fields, if the geographic location represented in the record involves more than one street, such as records for intersections) constitute the B5SC field, which could be defined as part of a key for consistent geographic retrieval; therefore, a separate B5SC field would not be needed for that purpose. The full B10SC field could also itself be defined as a direct access key, for use by the resynchronization program. The resynchronization program would read the SCCF sequentially. For each SCCF record, the program would read the application file directly using the old B10SC value in the SCCF record as the search key. All occurrences of this B10SC value found in the application file would be replaced by the new B10SC value from the SCCF record. (Note: most application files contain multiple records for the same street. Hence, if the application file is a VSAM file, in most applications, the B10SC field(s) must be defined as an alternate key(s), not as the primary key, since several records could have the same key values. In addition, since the resynchronization program modifies a key value, the UPGRADE option should be specified in the DEFINE ALTERNATE INDEX component of the IDCAMS control file. Similar considerations might apply for other types of direct access files.) Summary of Street Code Resynchronization The resynchronization of street codes stored in an application file is an important issue for application design. If the application must retrieve records by geographic location, it is necessary to use B5SCs in the retrieval key in order to make the retrieval geographically consistent, and therefore B5SCs must be stored in the application file. Since the street codes that are assigned to some street names can be changed in new Geosupport releases, these stored B5SCs (and/or stored B10SCs, if any) must be synchronized to reflect these changes. However, as we have seen, the synchronization of B5SCs cannot be fully automated unless either the originally entered street names or the B10SCs corresponding to those names are stored in the record. Resynchronization using street names is inefficient, since every street name in the application file would have to be processed. The best alternative to achieve resynchronization efficiency is to store B10SCs in the application file. In that case, the first six bytes of the B10SC field, which is the B5SC, could be defined as part of a geographic retrieval key. For resynchronization, the full B10SC could be used in conjunction with the Street Code Change File (SCCF). The user could develop a highly efficient procedure in which only those application records containing B10SC values that are in SCCF records, i.e., that have been changed in the new Geosupport release, would be accessed and updated. In view of the above considerations, the following design guidelines are strongly recommended with respect to resynchronizing street codes stored in application files: \u2022 When an application is being designed in which there will be a file to which consistent street-related geographic access is required, then the file should be designed to contain B10SCs obtained from Geosupport. \u2022 Application programs that access the file geographically should be written to use the first six bytes of the B10SC field, which constitute the B5SC, in the geographic retrieval key. In existing application files that contain B5SCs but not B10SCs, the B5SC field should be enhanced into a B10SC field. The B5SC portion of the B10SC should continue to be used for geographic retrieval. The entire B10SC field should be defined as a direct access key, to support efficient automated street code resynchronization. \u2022 The user should develop a batch procedure to resynchronize the B10SCs stored in the file, using the SCCF. An optimal procedure would access directly those records in the application file that contain B10SCs for which there are changes in the new Geosupport release (i.e., for which SCCF records exist). The user should run this procedure routinely whenever a new Geosupport release is implemented. ____________________________ 3 To be added to this list, please send a request to GSS_Feedback.nyc.gov","title":"IV.4 Resynchronization of Street Codes Stored in User Files"},{"location":"chapters/chapterIV/section04/#resynchronization-procedure-using-b5scs","text":"When only B5SCs are stored in the application file, not the original input street names nor B10SCs, it is not possible to develop a fully automated procedure to resynchronize those B5SCs. Instead, records in the application file that are affected by street code changes (as listed in the Street Name/Street Code Change Bulletin) must be found and individually examined and updated. This is because of the inherent ambiguity of a B5SC value, which can be associated with more than one street name. Specifically, it is possible that two or more street names that had the same B5SC value prior to the new Geosupport release no longer have the same value in the new release. When this occurs, the user cannot resynchronize the old B5SC value mechanically, but must determine, for each occurrence of the old B5SC value in the application file, which street name that occurrence represents in order to determine what the new B5SC value should be for that occurrence. In order to make that determination, the user would have to individually research each record containing such a B5SC value, using any information that could help to pinpoint the location and thus to determine whether the B5SC value should be changed and what the new value should be. Such information as an address, cross streets, a ZIP code, a community district or other district identifier, or tax block and tax lot identifiers could be helpful for this purpose. Because this procedure is not automatic, it is the least desirable method.","title":"Resynchronization procedure using B5SCs"},{"location":"chapters/chapterIV/section04/#resynchronization-procedure-using-street-names","text":"If the application file contains the original input street names in addition to B5SCs, then the user can develop a fully automated batch procedure for resynchronizing the B5SCs, albeit a less than optimal one, as follows. The user can write a batch program that calls Function 1N to obtain, for each original input street name, the B5SC value currently (in the new Geosupport release) assigned to that name. The program would process every record in the application file, automatically replacing the B5SC value already stored in each record with the current B5SC value obtained from Function 1N. The program would have to provide for handling any Function 1N rejects, that is, street names that are no longer valid in the new Geosupport release.","title":"Resynchronization procedure using street names"},{"location":"chapters/chapterIV/section04/#resynchronization-procedure-using-b10scs","text":"Using stored street names to resynchronize B5SCs is preferable to using just the B5SCs themselves, because the former method can be automated while the latter cannot. Nevertheless, the former method is highly inefficient, because it necessitates processing every record in the application file, even though in each Geosupport release only a tiny portion (if any) of the city\u2019s street names have street code assignment changes. Storing B10SCs in the application file, and using the SCCF to resynchronize them, is the optimal approach to street code resynchronization. The ambiguity intrinsic to B5SCs does not exist for B10SCs. Since every B10SC value is assigned to a single street name only, stored B10SCs can be resynchronized by automatically replacing every occurrence of each changed B10SC value with the proper new value, with no research required to determine the latter. GSS creates a new release of the SCCF as part of each new Geosupport release. The following DD statement gives users batch access to the SCCF: //ANYDDNM DD DSN=A030.STREET.SCCF,DISP=SHR The SCCF is a sequential file with 80-byte records. The SCCF has a single header record containing file identification information, followed by a set of data records. The layouts of the header and data records are as follows: Street Code Change File (SCCF) Record Layouts SCCF Header Record Field Size Positions Comments Header constant 42 1 - 42 Literal constant: \u2018GEOSUPPORT SYSTEM FOREGROUND HEADER RECORD\u2019 DDNAME of File 8 43 - 50 Literal constant: \u2018SCCF \u2019 Geosupport Release Identifier 4 51 - 54 e.g. \u201815B **\u2018 (4th byte is generally blank) ** Date of File Creation 6 55 - 60 yymmdd format Filler 20 61 - 80 SCCF Data Records | Field | Size | Positions | |:------ | -----: |-----: | |Old B10SC | 11 | 1 - 11 | |Filler | 5 | 12 - 16 | |New B10SC | 11 | 17 - 27 | |Filler | 5 | 28 - 32 | |Borough Code | 1 | 33 | |Filler | 1 | 34 | |Street Name | 32 | 35 - 66 | |Filler | 14 | 67 - 80 | (The fields Borough Code and Street Name are in the SCCF records for informational purposes only and are not needed for synchronization.) In an application file containing stored B10SCs, the first six bytes of the B10SC field (or fields, if the geographic location represented in the record involves more than one street, such as records for intersections) constitute the B5SC field, which could be defined as part of a key for consistent geographic retrieval; therefore, a separate B5SC field would not be needed for that purpose. The full B10SC field could also itself be defined as a direct access key, for use by the resynchronization program. The resynchronization program would read the SCCF sequentially. For each SCCF record, the program would read the application file directly using the old B10SC value in the SCCF record as the search key. All occurrences of this B10SC value found in the application file would be replaced by the new B10SC value from the SCCF record. (Note: most application files contain multiple records for the same street. Hence, if the application file is a VSAM file, in most applications, the B10SC field(s) must be defined as an alternate key(s), not as the primary key, since several records could have the same key values. In addition, since the resynchronization program modifies a key value, the UPGRADE option should be specified in the DEFINE ALTERNATE INDEX component of the IDCAMS control file. Similar considerations might apply for other types of direct access files.)","title":"Resynchronization procedure using B10SCs"},{"location":"chapters/chapterIV/section04/#summary-of-street-code-resynchronization","text":"The resynchronization of street codes stored in an application file is an important issue for application design. If the application must retrieve records by geographic location, it is necessary to use B5SCs in the retrieval key in order to make the retrieval geographically consistent, and therefore B5SCs must be stored in the application file. Since the street codes that are assigned to some street names can be changed in new Geosupport releases, these stored B5SCs (and/or stored B10SCs, if any) must be synchronized to reflect these changes. However, as we have seen, the synchronization of B5SCs cannot be fully automated unless either the originally entered street names or the B10SCs corresponding to those names are stored in the record. Resynchronization using street names is inefficient, since every street name in the application file would have to be processed. The best alternative to achieve resynchronization efficiency is to store B10SCs in the application file. In that case, the first six bytes of the B10SC field, which is the B5SC, could be defined as part of a geographic retrieval key. For resynchronization, the full B10SC could be used in conjunction with the Street Code Change File (SCCF). The user could develop a highly efficient procedure in which only those application records containing B10SC values that are in SCCF records, i.e., that have been changed in the new Geosupport release, would be accessed and updated. In view of the above considerations, the following design guidelines are strongly recommended with respect to resynchronizing street codes stored in application files: \u2022 When an application is being designed in which there will be a file to which consistent street-related geographic access is required, then the file should be designed to contain B10SCs obtained from Geosupport. \u2022 Application programs that access the file geographically should be written to use the first six bytes of the B10SC field, which constitute the B5SC, in the geographic retrieval key. In existing application files that contain B5SCs but not B10SCs, the B5SC field should be enhanced into a B10SC field. The B5SC portion of the B10SC should continue to be used for geographic retrieval. The entire B10SC field should be defined as a direct access key, to support efficient automated street code resynchronization. \u2022 The user should develop a batch procedure to resynchronize the B10SCs stored in the file, using the SCCF. An optimal procedure would access directly those records in the application file that contain B10SCs for which there are changes in the new Geosupport release (i.e., for which SCCF records exist). The user should run this procedure routinely whenever a new Geosupport release is implemented. ____________________________ 3 To be added to this list, please send a request to GSS_Feedback.nyc.gov","title":"Summary of Street Code Resynchronization "},{"location":"chapters/chapterIV/section05/","text":"IV.5 Seven-Digit Street Codes: Local Street Name Validity, Local Group Codes This section discusses local street name validity , the phenomenon that some street names are valid for only a portion of the street. (In fact, there are even a few New York City streets that do not have a single street name that is valid for the street\u2019s full length.) A street that illustrates the phenomenon of local street name validity is Seventh Avenue in Manhattan. The names 7 AVENUE and SEVENTH AVENUE are valid for the full length of the street. The name ADAM C POWELL BOULEVARD and its various spelling variants (POWELL BOULEVARD, A C POWELL BOULEVARD etc.) are valid only for the portion of the street north of Central Park. The name FASHION AVENUE is valid in the Garment District. The names SAINT VINCENTS SQUARE and ST VINCENTS SQUARE are valid for a portion of the street in the vicinity of the former Saint Vincent\u2019s Hospital. All of the Geosupport functions that accept street name input, except for Function 1N, perform local street name validation , which verifies whether the input street name is specifically valid for the input location, and if it is not valid, returns up to four aliases of the invalid name that are valid for the given location. Local street name validation is performed automatically when a two-work-area call is made, with no special user action required to invoke it. If, in a two-work-area call, the input street name is not valid for the given input location, Geosupport takes the following actions: \u2022 The call is rejected with a Geosupport Return Code of \u201850\u2019 and an appropriate Message. \u2022 Up to four locally valid street name aliases of the invalid street name are returned in the WA1 List of Street Names field. (Specifically, the names that are returned are the principal street name of each local street name group that is valid for the given location. The concepts of \u2018principal street name\u2019 and \u2018local street name group\u2019 are discussed below and in the next Chapter .) \u2022 The Reason Code contains the number of names returned in the List of Street Names. \u2022 For MSW: the WA1 Number of Street Names Field contains the number of names returned in the List of Street Names, in packed decimal format. For COW: the WA1 Number of Street Codes and Names Field contains the number of names returned in character decimal format. For example, the address 375 7 AVENUE in Manhattan is located south of Central Park, so the street name ADAM C POWELL BOULEVARD is invalid for this address. Therefore, a two-work-area call to Function 1E (for example) with the input address as 375 ADAM C POWELL BOULEVARD would result in a GRC \u201850\u2019 rejection and the return of the locally valid alias street name 7 AVENUE in the List of Street Names. On the other hand, 2019 7 AVENUE is north of Central Park, so 2019 ADAM C POWELL BOULEVARD is a valid address, and is accepted by Function 1E. Similarly, a two-work-area call to Function 2 would reject the intersection of ADAM C POWELL BOULEVARD and WEST 56 STREET with a GRC of \u201850\u2019 and the return of the locally valid alias street name 7 AVENUE in the List of Street Names. Local Group Codes (LGCs) Local street name validity is reflected in the sixth and seventh digits of the 10SC, which constitute the Local Group Code (LGC) . Street codes are assigned in such a way that two names for a street have the same LGC value if and only if those names are valid for the same portion (possibly all) of the street . Note that if two names are valid for overlapping portions of a street, or one is valid for a subset of the portion where the other is valid, then those names are in different local groups. In order to be in the same local group, names must be valid for exactly the same portion of the street. Conceptually, the set of all street names for a given street can be viewed as being partitioned into subsets called \u2018local street name group\u2019 each group identified by its LGC value and consisting of all the names that are valid for a particular portion (possibly all) of the street. (Most New York City streets only have one local street name group.) A LGC value is meaningful only relative to its B5SC value. The B5SC identifies the street, and the LGC identifies a local street name group for the given street, that is, the group of all names for the given street that are valid for a particular portion (possibly all) of the street. The B5SC concatenated with the LGC, that is, the first eight bytes of the B10SC, constitute the Borough and Seven-Digit Street Code (B7SC) . Two street names have the same B7SC value if and only if they are names for the same street (same B5SC value) and are valid for the same portion of the street (same LGC value relative to the given B5SC value). Street Name Codes (SNCs) The final three digits of the B10SC are called the Street Name Code (SNC) . Thus, the B10SC consists of the concatenation of the borough code, 5SC, LGC and SNC. The SNC serves simply to serialize the street names within a local group, so that the full B10SC is unique to a specific spelling of a specific street name. Consider the example of Seventh Avenue in Manhattan. The following is a list of many of Geosupport\u2019s normalized aliases for this street, sorted by B10SC. The dashed lines highlight the four local street name groups. STREET NAME B10SC = BORO + 5SC + 5SC + 5SC + A C POWELL BOULEVARD 11061001010 1 10610 01 010 AC POWELL BOULEVARD 11061001020 1 10610 01 020 ADAM C POWELL BOULEVARD 11061001030 1 10610 01 030 ADAM POWELL BOULEVARD 11061001040 1 10610 01 040 ADAM POWELL JR BOULEVARD 11061001050 1 10610 01 050 ACP BOULEVARD 11061001060 1 10610 01 060 A C P BOULEVARD 11061001070 1 10610 01 070 POWELL BOULEVARD 11061001080 1 10610 01 080 ADAM CLAYTON POWELL BOULEVARD 11061001090 1 10610 01 090 ADAM CLAYTON POWELL JR BOULEVARD 11061001100 1 10610 01 100 FASHION AVENUE 11061002010 1 10610 02 010 SAINT VINCENTS SQUARE 11061003010 1 10610 03 010 ST VINCENTS SQUARE 11061003020 1 10610 03 020 7 AVENUE 11061004010 1 10610 04 010 SEVENTH AVENUE 11061004020 1 10610 04 020 All of the names in the above list are aliases of each other, and therefore their B10SCs have the same B5SC value, \u2018110610\u2019. The first ten names in the list, A C POWELL BOULEVARD and its nine spelling variants, constitute the group of names valid only for the part of the street north of Central Park; this local group is identified by LGC value \u201801\u2019 and B7SC value \u201811061001\u2019. The name FASHION AVENUE is valid only for the portion of the street in the Garment District, and constitutes the sole member of local group \u201802\u2019. Local group \u201803\u2019 consists of the names SAINT VINCENTS SQUARE and ST VINCENTS SQUARE, which are valid only for a small portion of the street in the vicinity of the former Saint Vincent\u2019s hospital. Finally, the names 7 AVENUE and SEVENTH AVENUE are valid for the entire street and constitute local group \u201804\u2019.","title":"IV.5 Seven-Digit Street Codes: Local Street Name Validity, Local Group Codes"},{"location":"chapters/chapterIV/section05/#local-group-codes-lgcs","text":"Local street name validity is reflected in the sixth and seventh digits of the 10SC, which constitute the Local Group Code (LGC) . Street codes are assigned in such a way that two names for a street have the same LGC value if and only if those names are valid for the same portion (possibly all) of the street . Note that if two names are valid for overlapping portions of a street, or one is valid for a subset of the portion where the other is valid, then those names are in different local groups. In order to be in the same local group, names must be valid for exactly the same portion of the street. Conceptually, the set of all street names for a given street can be viewed as being partitioned into subsets called \u2018local street name group\u2019 each group identified by its LGC value and consisting of all the names that are valid for a particular portion (possibly all) of the street. (Most New York City streets only have one local street name group.) A LGC value is meaningful only relative to its B5SC value. The B5SC identifies the street, and the LGC identifies a local street name group for the given street, that is, the group of all names for the given street that are valid for a particular portion (possibly all) of the street. The B5SC concatenated with the LGC, that is, the first eight bytes of the B10SC, constitute the Borough and Seven-Digit Street Code (B7SC) . Two street names have the same B7SC value if and only if they are names for the same street (same B5SC value) and are valid for the same portion of the street (same LGC value relative to the given B5SC value).","title":"Local Group Codes (LGCs)"},{"location":"chapters/chapterIV/section05/#street-name-codes-sncs","text":"The final three digits of the B10SC are called the Street Name Code (SNC) . Thus, the B10SC consists of the concatenation of the borough code, 5SC, LGC and SNC. The SNC serves simply to serialize the street names within a local group, so that the full B10SC is unique to a specific spelling of a specific street name. Consider the example of Seventh Avenue in Manhattan. The following is a list of many of Geosupport\u2019s normalized aliases for this street, sorted by B10SC. The dashed lines highlight the four local street name groups. STREET NAME B10SC = BORO + 5SC + 5SC + 5SC + A C POWELL BOULEVARD 11061001010 1 10610 01 010 AC POWELL BOULEVARD 11061001020 1 10610 01 020 ADAM C POWELL BOULEVARD 11061001030 1 10610 01 030 ADAM POWELL BOULEVARD 11061001040 1 10610 01 040 ADAM POWELL JR BOULEVARD 11061001050 1 10610 01 050 ACP BOULEVARD 11061001060 1 10610 01 060 A C P BOULEVARD 11061001070 1 10610 01 070 POWELL BOULEVARD 11061001080 1 10610 01 080 ADAM CLAYTON POWELL BOULEVARD 11061001090 1 10610 01 090 ADAM CLAYTON POWELL JR BOULEVARD 11061001100 1 10610 01 100 FASHION AVENUE 11061002010 1 10610 02 010 SAINT VINCENTS SQUARE 11061003010 1 10610 03 010 ST VINCENTS SQUARE 11061003020 1 10610 03 020 7 AVENUE 11061004010 1 10610 04 010 SEVENTH AVENUE 11061004020 1 10610 04 020 All of the names in the above list are aliases of each other, and therefore their B10SCs have the same B5SC value, \u2018110610\u2019. The first ten names in the list, A C POWELL BOULEVARD and its nine spelling variants, constitute the group of names valid only for the part of the street north of Central Park; this local group is identified by LGC value \u201801\u2019 and B7SC value \u201811061001\u2019. The name FASHION AVENUE is valid only for the portion of the street in the Garment District, and constitutes the sole member of local group \u201802\u2019. Local group \u201803\u2019 consists of the names SAINT VINCENTS SQUARE and ST VINCENTS SQUARE, which are valid only for a small portion of the street in the vicinity of the former Saint Vincent\u2019s hospital. Finally, the names 7 AVENUE and SEVENTH AVENUE are valid for the entire street and constitute local group \u201804\u2019.","title":"Street Name Codes (SNCs)"},{"location":"chapters/chapterIV/section06/","text":"IV.6 Functions D, DG and DN; Primary, Principal and Preferred Street Names This section discusses Functions D, DG and DN. These functions are referred to as the Geosupport \u2018display functions\u2019 because, although they do not actually display anything themselves, they return street names that applications can use to format geographic locations for display on reports, screens, mailing labels, work orders for field work, etc. Functions D, DG and DN process input five-, seven- and ten-digit street codes (accompanied by borough codes), respectively. (The display functions can also be used to obtain address numbers in display format. This is discussed in Chapter V.2 ) The selection of street names for display is a significant consideration for any street that has more than one local street name group. Given a specific location (i.e., an address, intersection, street segment or blockface) on a street, applications can use a simple procedure involving a call to Function DG to obtain a street name that is considered \u2018optimal\u2019 to display for that location, called the \u2018preferred street name\u2019. Functions D and DN return street names that are of more specialized and limited use. The display functions do not have a Work Area 2, and are accessed via one-work-area calls only. (If a second work area is mistakenly supplied, it is ignored.) Work Area 1 contains fields for the input street codes and for the output street names. The street names that the display functions return are full street names (never partial street names), normalized in accordance with the SNL and Street Name Normalization Format Flag values that are in effect for the given call. Input Data For the convenience of applications, each of the display functions can process up to three input street codes in a single call. If there are multiple input street codes, they are processed independently of each other and are not treated as though they were specifying a geographic location such as an intersection. (Similarly, if there is both an input street code and an input address number, they are not treated as though they were specifying an address.) In particular, a successful call to a display function does not imply the validation of the input data as a geographic location. Furthermore, the output street names returned by the display functions are not by themselves customized to be location-specific. Function DG must be used in conjunction with a call to another function to obtain a location-customized preferred street name. For Function D, there are two different sets of fields in Work Area 1 that applications can use to pass input street code values, as follows. \u2022 For MSW calls, if the input street codes are in the form of PB5SCs, the 4-byte input fields that are labeled PB5SC-1, PB5SC-2 and PB5SC-3 in the Work Area 1 layout in Appendix 2 are used. \u2022 For MSW or COW calls, if the input street codes are in the form of B5SCs, the 11-byte input fields labeled B10SC-1, B10SC-2 and B10SC-3 are used. The input B5SC values, which are 6 bytes long, must be passed in these fields left-justified, and the contents of these fields beyond the first six bytes are ignored. If an MSW application passes values to Function D in both sets of input street code fields (presumably inadvertently), the PB5SC fields are processed, and the B10SC fields are ignored. For Function DG and DN, only the fields B10SC-1, B10SC-2 and B10SC-3 are used. In the case of Function DG, input 8-byte B7SC values must be passed in these fields left-justified, and the contents of these fields beyond the first eight bytes are ignored. In a call to any of the display functions, Geosupport will process all three of the input street code fields, even if some of the fields are blank. If a street code field is blank, Geosupport will simply skip it and process the next field. For example. if B10SC-1 is blank, but B10SC-2 and B10SC-3 are not blank, they will be processed. The output street names will appear in the corresponding street names fields, viz. Street Name-2 and Street Name-3. Similarly, if B10SC-1 is not blank but B10SC-2 is blank, B10SC-3 will still be processed and the output street names will appear in Street Name-1 and Street Name-3. An error message is generated only if all the input street code fields are blank. Similar conditions hold for the PB5SC fields. Output Data The output street names that the display functions return are as follows: \u2022 Function D is used to obtain, for an input B5SC value, or PB5SC value (MSW only), the primary street name for the given street. The primary street name is one alias, that is, one spelling of one street name, that GSS has designated, from among all the aliases for the street, as \u2018best\u2019 representing the street as a whole. ( Note : The designation of primary street names has no \u2018official\u2019 status, and of necessity sometimes involves an element of arbitrariness.) The primary street name is not customized to be the \u2018best\u2019 name for any particular location along the street; it is simply the street name deemed most suitable to display if a single street name must be used to represent the entire street. Most applications do not require the services of Function D. However, some applications may, for example, have a requirement to display a consistent street name for all locations that are on the same street, so that it will be clear to users that all the displayed locations do refer to the same street. When possible, GSS designates as primary a street name that is valid for the entire length of the street. However, it is important to note that there are a few streets that do not have any such names. On such streets, there are locations where the street\u2019s primary street name is invalid. An example exists in Queens. 103 Street and William Clarke Place share the same B5SC viz.419690, and 103 Street is the primary street name. However, 700 William Clarke Place is a valid address and 700 103 Street is invalid because 103 Street is not valid at that location. \u2022 Function DG is used to obtain, for an input B7SC value, the principal street name of the corresponding local street name group. This is a street name belonging to the given local street name group that GSS has designated as \u2018best\u2019 representing that group of street names, that is, the name that has been deemed to have the most \u2018standard\u2019 spelling. (As with primary street names, the designation of principal street names has no \u2018official\u2019 status, and of necessity sometimes involves an element of arbitrariness.) The most important use of Function DG is to retrieve preferred street names, as discussed below. \u2022 Function DG is used to obtain, for an input B10SC value, the full street name spelling to which that B10SC value uniquely corresponds. Function DN is useful mainly in certain atypical applications that store ten-digit street codes in an application file, but do not store the input street names from which the street codes were originally obtained, and the application has a requirement (for legal purposes, for example) to display those originally-entered street names. Such applications can use Function DN to obtain the original name from the corresponding stored B10SC value (although the name will be provided in normalized form.) Application designers can obviate the need to make Function DN calls by retaining in the application file either the original input street name or that name in normalized form. The display functions return one output street name for each valid input street code. For each input street code that is invalid, the display functions return all question marks (the character \u2018?\u2019) in the corresponding output street name field. In addition, if at least one input street code is invalid, the GRC value \u201864\u2019 is issued along with an appropriate Message. Preferred Street Names As explained above, the primary street name is not necessarily the \u2018best\u2019 name to use to express any particular location along a street. Furthermore, although each principal street name is the \u2018best\u2019 representative of its local group of street names, there may be more than one local group valid at a particular location. COW applications can retrieve preferred street names easily. Given a specific address, street intersection, street segment or blockface along a street, COW applications can use Function 1, 1A, 1B, 2, 3 or 3C, respectively, with the Work Area 1 Browse Flag set to \u2018R\u2019 to obtain the DCP-preferred street name(s) specific to that location. For a description of the Browse Flag, see Section III.8 Selection of Output Street Names (COW only) . Note: In support of the unique requirements of the New York City Board of Elections\u2019 voter registration application, COW Function 1E with Browse Flag set to \u2018R\u2019 will return the BOE-preferred street. For most addresses, the DCP-preferred LGC and the BOE-preferred LGC are identical. MSW application may also obtain preferred street names corresponding to the input. Given a specific address, street intersection, street segment or blockface along a street, MSW applications can use Function 1, 1A, 1B, 2, 3 or 3C, respectively, in conjunction with Function DG, to obtain the DCP preferred street name specific to that location, as follows: Issue a two-work-area call to the appropriate location-processing function (Function 1, 2, 3 or 3C), to obtain an item called the \u2018DCP-preferred LGC\u2019, which all of these functions return in WA2. The DCP-preferred LGC represents the blockface-specific local street name group that GSS has designated from among those local groups that are valid for the given blockface as being the \u2018best\u2019 group of street names to display for that blockface. (Note: In support of unique requirements of the New York City Board of Elections\u2019 voter registration application, Function 1E returns an item called the BOE-preferred LGC in place of the DCP-preferred LGC. For most addresses, the DCP-preferred LGC and the BOE-preferred LGC are identical.) Concatenate the DCP-preferred LGC to the B5SC to form a B7SC. Call Function DG with the above B7SC as input to obtain the preferred street name. The principal street name of the DCP-preferred local group is the preferred street name for the given location . For example, suppose the original user input address to an application is 2019 SEVENTH AVENUE in Manhattan. This address is within the portion of the street north of Central Park, where two local groups are valid: local group 1 (LGC = \u201801\u2019), which consists of the name POWELL BOULEVARD and its spelling variants, and local group 4 (LGC = \u201804\u2019), which consists of the names 7 AVENUE and SEVENTH AVENUE. GSS has designated local group 1 as the DCP-preferred LGC for the portion of the street north of Central Park, and has also designated ADAM C POWELL BOULEVARD as the principal name of this local group. A COW application obtains the preferred street name for the address 2019 SEVENTH AVENUE in Manhattan by issuing a Function 1 call with the Work Area 1 Browse Flag set to \u2018R\u2019. Geosupport returns the DCP-preferred street name, ADAM CLAYTON POWELL JR BOULEVARD. The associated B10SC, 11061001100, will also be returned. (Function 1E will return 7 AVENUE and 11061004010 correspondingly, since BOE chose 7 Avenue as the preferred street name.). An MSW application can obtain the preferred street name for the address 2019 SEVENTH AVENUE in Manhattan, by performing the procedure outlined above, as follows: \u2022 Function 1 is called with the input address 2019 SEVENTH AVENUE. Function 1 returns in WA1 the B10SC value of the input street name, SEVENTH AVENUE, namely, the value \u201811061004020\u2019. The first six positions, \u2018110610\u2019, constitute the street\u2019s B5SC value. Function 1 also returns, in WA2, the DCP-preferred LGC value for this address, which is \u201801\u2019. \u2022 The application concatenates the B5SC value with the DCP-preferred LGC value, forming the B7SC value \u201811061001\u2019. \u2022 The application calls Function DG using this B7SC value as input, obtaining ADAM C POWELL BOULEVARD as the preferred street name corresponding to the address 2019 SEVENTH AVENUE. The application may now display the address as 2019 ADAM C POWELL BOULEVARD. In summary, the MSW application began with the address 2019 SEVENTH AVENUE, and by following the outlined procedure, in which first Function 1 and then Function DG was called, the application formed the \u2018preferred\u2019 address 2109 ADAM C POWELL BOULEVARD for display. If either the COW or MSW application had started with the address 375 SEVENTH AVENUE, which is located south of Central Park, then either procedure would have resulted in the address 375 7 AVENUE, since 7 AVENUE is the principal name of the DCP-preferred local group for all locations on Seventh Avenue south of Central Park. ** Please note: ** There is a new switch defined in COW Work Area 1 that will allow a user to call Geosupport and get a new, extended Work Area 2 for various functions. Functions 1, 1E, 1A, 3, 3C, BL and BN have extended work areas. These extended Work Areas contain Street Names of cross streets, etc. in addition to Street Codes. Users will rarely have to make separate D, DG, or DN calls (as explained above) to get the street names.","title":"IV.6 Functions D, DG and DN; Primary, Principal and Preferred Street Names"},{"location":"chapters/chapterIV/section06/#input-data","text":"For the convenience of applications, each of the display functions can process up to three input street codes in a single call. If there are multiple input street codes, they are processed independently of each other and are not treated as though they were specifying a geographic location such as an intersection. (Similarly, if there is both an input street code and an input address number, they are not treated as though they were specifying an address.) In particular, a successful call to a display function does not imply the validation of the input data as a geographic location. Furthermore, the output street names returned by the display functions are not by themselves customized to be location-specific. Function DG must be used in conjunction with a call to another function to obtain a location-customized preferred street name. For Function D, there are two different sets of fields in Work Area 1 that applications can use to pass input street code values, as follows. \u2022 For MSW calls, if the input street codes are in the form of PB5SCs, the 4-byte input fields that are labeled PB5SC-1, PB5SC-2 and PB5SC-3 in the Work Area 1 layout in Appendix 2 are used. \u2022 For MSW or COW calls, if the input street codes are in the form of B5SCs, the 11-byte input fields labeled B10SC-1, B10SC-2 and B10SC-3 are used. The input B5SC values, which are 6 bytes long, must be passed in these fields left-justified, and the contents of these fields beyond the first six bytes are ignored. If an MSW application passes values to Function D in both sets of input street code fields (presumably inadvertently), the PB5SC fields are processed, and the B10SC fields are ignored. For Function DG and DN, only the fields B10SC-1, B10SC-2 and B10SC-3 are used. In the case of Function DG, input 8-byte B7SC values must be passed in these fields left-justified, and the contents of these fields beyond the first eight bytes are ignored. In a call to any of the display functions, Geosupport will process all three of the input street code fields, even if some of the fields are blank. If a street code field is blank, Geosupport will simply skip it and process the next field. For example. if B10SC-1 is blank, but B10SC-2 and B10SC-3 are not blank, they will be processed. The output street names will appear in the corresponding street names fields, viz. Street Name-2 and Street Name-3. Similarly, if B10SC-1 is not blank but B10SC-2 is blank, B10SC-3 will still be processed and the output street names will appear in Street Name-1 and Street Name-3. An error message is generated only if all the input street code fields are blank. Similar conditions hold for the PB5SC fields.","title":"Input Data"},{"location":"chapters/chapterIV/section06/#output-data","text":"The output street names that the display functions return are as follows: \u2022 Function D is used to obtain, for an input B5SC value, or PB5SC value (MSW only), the primary street name for the given street. The primary street name is one alias, that is, one spelling of one street name, that GSS has designated, from among all the aliases for the street, as \u2018best\u2019 representing the street as a whole. ( Note : The designation of primary street names has no \u2018official\u2019 status, and of necessity sometimes involves an element of arbitrariness.) The primary street name is not customized to be the \u2018best\u2019 name for any particular location along the street; it is simply the street name deemed most suitable to display if a single street name must be used to represent the entire street. Most applications do not require the services of Function D. However, some applications may, for example, have a requirement to display a consistent street name for all locations that are on the same street, so that it will be clear to users that all the displayed locations do refer to the same street. When possible, GSS designates as primary a street name that is valid for the entire length of the street. However, it is important to note that there are a few streets that do not have any such names. On such streets, there are locations where the street\u2019s primary street name is invalid. An example exists in Queens. 103 Street and William Clarke Place share the same B5SC viz.419690, and 103 Street is the primary street name. However, 700 William Clarke Place is a valid address and 700 103 Street is invalid because 103 Street is not valid at that location. \u2022 Function DG is used to obtain, for an input B7SC value, the principal street name of the corresponding local street name group. This is a street name belonging to the given local street name group that GSS has designated as \u2018best\u2019 representing that group of street names, that is, the name that has been deemed to have the most \u2018standard\u2019 spelling. (As with primary street names, the designation of principal street names has no \u2018official\u2019 status, and of necessity sometimes involves an element of arbitrariness.) The most important use of Function DG is to retrieve preferred street names, as discussed below. \u2022 Function DG is used to obtain, for an input B10SC value, the full street name spelling to which that B10SC value uniquely corresponds. Function DN is useful mainly in certain atypical applications that store ten-digit street codes in an application file, but do not store the input street names from which the street codes were originally obtained, and the application has a requirement (for legal purposes, for example) to display those originally-entered street names. Such applications can use Function DN to obtain the original name from the corresponding stored B10SC value (although the name will be provided in normalized form.) Application designers can obviate the need to make Function DN calls by retaining in the application file either the original input street name or that name in normalized form. The display functions return one output street name for each valid input street code. For each input street code that is invalid, the display functions return all question marks (the character \u2018?\u2019) in the corresponding output street name field. In addition, if at least one input street code is invalid, the GRC value \u201864\u2019 is issued along with an appropriate Message.","title":"Output Data"},{"location":"chapters/chapterIV/section06/#preferred-street-names","text":"As explained above, the primary street name is not necessarily the \u2018best\u2019 name to use to express any particular location along a street. Furthermore, although each principal street name is the \u2018best\u2019 representative of its local group of street names, there may be more than one local group valid at a particular location. COW applications can retrieve preferred street names easily. Given a specific address, street intersection, street segment or blockface along a street, COW applications can use Function 1, 1A, 1B, 2, 3 or 3C, respectively, with the Work Area 1 Browse Flag set to \u2018R\u2019 to obtain the DCP-preferred street name(s) specific to that location. For a description of the Browse Flag, see Section III.8 Selection of Output Street Names (COW only) . Note: In support of the unique requirements of the New York City Board of Elections\u2019 voter registration application, COW Function 1E with Browse Flag set to \u2018R\u2019 will return the BOE-preferred street. For most addresses, the DCP-preferred LGC and the BOE-preferred LGC are identical. MSW application may also obtain preferred street names corresponding to the input. Given a specific address, street intersection, street segment or blockface along a street, MSW applications can use Function 1, 1A, 1B, 2, 3 or 3C, respectively, in conjunction with Function DG, to obtain the DCP preferred street name specific to that location, as follows: Issue a two-work-area call to the appropriate location-processing function (Function 1, 2, 3 or 3C), to obtain an item called the \u2018DCP-preferred LGC\u2019, which all of these functions return in WA2. The DCP-preferred LGC represents the blockface-specific local street name group that GSS has designated from among those local groups that are valid for the given blockface as being the \u2018best\u2019 group of street names to display for that blockface. (Note: In support of unique requirements of the New York City Board of Elections\u2019 voter registration application, Function 1E returns an item called the BOE-preferred LGC in place of the DCP-preferred LGC. For most addresses, the DCP-preferred LGC and the BOE-preferred LGC are identical.) Concatenate the DCP-preferred LGC to the B5SC to form a B7SC. Call Function DG with the above B7SC as input to obtain the preferred street name. The principal street name of the DCP-preferred local group is the preferred street name for the given location . For example, suppose the original user input address to an application is 2019 SEVENTH AVENUE in Manhattan. This address is within the portion of the street north of Central Park, where two local groups are valid: local group 1 (LGC = \u201801\u2019), which consists of the name POWELL BOULEVARD and its spelling variants, and local group 4 (LGC = \u201804\u2019), which consists of the names 7 AVENUE and SEVENTH AVENUE. GSS has designated local group 1 as the DCP-preferred LGC for the portion of the street north of Central Park, and has also designated ADAM C POWELL BOULEVARD as the principal name of this local group. A COW application obtains the preferred street name for the address 2019 SEVENTH AVENUE in Manhattan by issuing a Function 1 call with the Work Area 1 Browse Flag set to \u2018R\u2019. Geosupport returns the DCP-preferred street name, ADAM CLAYTON POWELL JR BOULEVARD. The associated B10SC, 11061001100, will also be returned. (Function 1E will return 7 AVENUE and 11061004010 correspondingly, since BOE chose 7 Avenue as the preferred street name.). An MSW application can obtain the preferred street name for the address 2019 SEVENTH AVENUE in Manhattan, by performing the procedure outlined above, as follows: \u2022 Function 1 is called with the input address 2019 SEVENTH AVENUE. Function 1 returns in WA1 the B10SC value of the input street name, SEVENTH AVENUE, namely, the value \u201811061004020\u2019. The first six positions, \u2018110610\u2019, constitute the street\u2019s B5SC value. Function 1 also returns, in WA2, the DCP-preferred LGC value for this address, which is \u201801\u2019. \u2022 The application concatenates the B5SC value with the DCP-preferred LGC value, forming the B7SC value \u201811061001\u2019. \u2022 The application calls Function DG using this B7SC value as input, obtaining ADAM C POWELL BOULEVARD as the preferred street name corresponding to the address 2019 SEVENTH AVENUE. The application may now display the address as 2019 ADAM C POWELL BOULEVARD. In summary, the MSW application began with the address 2019 SEVENTH AVENUE, and by following the outlined procedure, in which first Function 1 and then Function DG was called, the application formed the \u2018preferred\u2019 address 2109 ADAM C POWELL BOULEVARD for display. If either the COW or MSW application had started with the address 375 SEVENTH AVENUE, which is located south of Central Park, then either procedure would have resulted in the address 375 7 AVENUE, since 7 AVENUE is the principal name of the DCP-preferred local group for all locations on Seventh Avenue south of Central Park. ** Please note: ** There is a new switch defined in COW Work Area 1 that will allow a user to call Geosupport and get a new, extended Work Area 2 for various functions. Functions 1, 1E, 1A, 3, 3C, BL and BN have extended work areas. These extended Work Areas contain Street Names of cross streets, etc. in addition to Street Codes. Users will rarely have to make separate D, DG, or DN calls (as explained above) to get the street names.","title":"Preferred Street Names"},{"location":"chapters/chapterIV/section07/","text":"IV.7 Street Codes and Non-Addressable Place Names This section discusses the manner in which street codes are assigned to Non-Addressable Place names (NAPs). Every NAP is a name of a simplex, a complex or a constituent entity of a complex ( see Chapter III.6 ). By definition, every simplex and every complex has a NAP. A constituent entity of a complex may or may not have a NAP, and may or may not have one or more addresses. (A building that has neither an address nor a NAP is called a Non-Addressable Un-named Building (NAUB). NAUBs can be identified only by their Building Identification Numbers (BINs). NAUBs and BINs are discussed in detail in Chapter VI.) Like conventional street names, some NAPs have aliases (alternative names and spelling variants). For example, CABRINI MEDICAL CENTER and CABRINI MED CENTER are spelling variants of the same name; AVERY FISHER HALL and PHILHARMONIC HALL are alternative names of the same geographic feature. As with conventional street names, the B10SC values assigned to NAP aliases have the same B5SC value. In the case of a complex and its constituent entities, the assignment of street codes is analogous to the methodology used for streets. In general (the exceptional case is described below), the names of the entire complex and the names of its constituent entities are all treated as aliases of each other (that is, their B10SCs have the same B5SC value), since they are all names of the same geographic feature (the entire complex) or parts thereof (the constituent entities of the complex). Within the umbrella of this B5SC value, the NAPs that are valid for each portion of the complex, namely, either the entire complex or a particular constituent entity, are assigned to a different local group. Thus, the entire complex has its own distinct B7SC value, and each constituent entity has its own distinct B7SC value. The following NAPs associated with Manhattan\u2019s Lincoln Center complex illustrate the assignment of street codes to NAPs associated with a complex. NAP B 10SC LINCOLN CENTER 1 25006 01 010 LINCOLN CTR FOR THE PERFRMG ARTS 1 25006 01 030 NY STATE THEATER 1 25006 02 020 NEW YORK STATE THEATER 1 25006 02 040 N Y STATE THEATER 1 25006 02 060 AVERY FISHER HALL 1 25006 03 010 PHILHARMONIC HALL 1 25006 03 030 All of the NAPs associated with Lincoln Center (of which only a sample is listed above) have the same B5SC value, 125006. Within this B5SC value, the LGC value 01 is assigned to the NAPs of the complex as a whole, LINCOLN CENTER and LINCOLN CTR FOR THE PERFRMG ARTS (and other variants not listed). The LGC value 02 is assigned to NY STATE THEATER and variants thereof, and so on. An application can use the B5SC value, 125006, as the retrieval key to retrieve all the records in an application file for the NAPs associated with Lincoln Center, both records for the complex as a whole and records for its constituent entities. If only the records for the complex as a whole are to be retrieved, the application would use the B7SC value 12500601. If only the records for the New York State Theater are to be retrieved, the application would use the B7SC value 12500602, and so on. (Note that none of these retrievals would retrieve any records stored by address, since the street name or addressable place name in an address would have a different B5SC value than the one assigned to the NAPs.)","title":"IV.7 Street Codes and Non-Addressable Place Names"},{"location":"chapters/chapterIV/section08/","text":"IV.8 Street Code Input Feature For most functions involving street input, applications have the option to pass the input streets to Geosupport in the form of either street names or street codes. The exceptions are Function 1N and the display functions. Function 1N requires input streets to be passed in the form of street names, since that function\u2019s sole purpose is to normalize input street names and provide their street codes. The display functions require input streets to be passed in the form of street codes, since those functions are designed to provide street names corresponding to input street codes. The street code input feature is useful in an application that stores street codes but not street names in an application file (presumably to save disk storage space), since it enables the application to process records from that file directly through a Geosupport location-processing function, without first having to call a display function to obtain street names. Applications can provide input street codes to any of the functions that can accept them in any of the following forms (the field names used below are the same as those used in the WA1 layouts in Appendix 2 for MSWs and Appendix 13 for COWs.): PB5SCs (MSW only), passed in as many as necessary of the WA1 input fields PB5SC-1, PB5SC-2 and PB5SC-3. B5SCs, passed left-justified and space-filled in as many as necessary of the WA1 input fields B10SC-1, B10SC-2 and B10SC-3. \u2022 B7SCs, passed left-justified and space-filled in as many as necessary of the WA1 input fields B10SC-1, B10SC-2 and B10SC-3. \u2022 B10SCs, passed in as many as necessary of the WA1 input fields B10SC-1, B10SC-2 and B10SC-3. For functions that involve multiple input streets, the input streets specified in a call must all be in the same form, either all street names, or all PB5SCs (MSW only), or all B5SCs, or all B7SCs, or all B10SCs. Note that the first byte of all input street code fields is a borough code. When input streets are specified using street code input, the contents of the separate WA1 input borough code field (MSW only) is ignored. Local street name validation ( see Chapter IV.5 ) is not performed when the street input is in the form of five-digit street codes, but it is performed with seven-digit and ten-digit street code input. Functions 1, 1A, 1B, 1E, and AP and Street Code Input When a user supplies a borough and 5-digit street code as input to Functions 1, 1A, 1B and AP, Geosupport returns the DCP-preferred street name and its corresponding B10SC. For Function 1E, Geosupport returns the BOE-preferred street name and its corresponding B10SC. Primary street names are not returned, because primary street names do not always apply to the entire street stretch, and may produce an error when used as input for a subsequent call for that location. Preferred street names are also often the more widely used name and therefore a better choice. The street names returned by Functions 1, 1A, 1B, AP and Function 1E are usually the same. An example where the street names are not the same is for Functions 1 and 1A calls for address numbers (e.g. 2019) on 7 Avenue in Manhattan north of West 110th Street. If the user supplies the B5SC of 110610, the street name ADAM C. POWELL BOULEVARD, the DCP-preferred name, will be returned. Since ADAM C. POWELL BOULEVARD is the street name most commonly used in this location, it is a better choice than the primary street name (7 AVENUE). However, Function 1E will return 7 AVENUE since this is the BOE-preferred street name. The technique of returning the preferred street name instead of the primary street name helps to insure that if the street name is used as input to Geosupport with the address number, it will be a successful call. NAPs and Street Code Input With respect to a NAP of a simplex, as with conventional street input, the user has the option to specify the input datum either in the form of the name (in this case, the NAP) or its B5SC. However, five-digit street code input is prohibited for a NAP of a complex or a constituent entity of a complex (it is rejected with a GRC value of \u201807\u2019); instead, 7-digit or 10-digit street code input (B7SC or B10SC) is accepted. The reason for this restriction is that different entities of the same complex may be located within different blockfaces, tax lots, census blocks, administrative or political districts etc., so that the B5SC may not be specific enough to enable Geosupport to determine the proper set of output data to return.","title":"IV.8 Street Code Input Feature"},{"location":"chapters/chapterIV/section08/#functions-1-1a-1b-1e-and-ap-and-street-code-input","text":"When a user supplies a borough and 5-digit street code as input to Functions 1, 1A, 1B and AP, Geosupport returns the DCP-preferred street name and its corresponding B10SC. For Function 1E, Geosupport returns the BOE-preferred street name and its corresponding B10SC. Primary street names are not returned, because primary street names do not always apply to the entire street stretch, and may produce an error when used as input for a subsequent call for that location. Preferred street names are also often the more widely used name and therefore a better choice. The street names returned by Functions 1, 1A, 1B, AP and Function 1E are usually the same. An example where the street names are not the same is for Functions 1 and 1A calls for address numbers (e.g. 2019) on 7 Avenue in Manhattan north of West 110th Street. If the user supplies the B5SC of 110610, the street name ADAM C. POWELL BOULEVARD, the DCP-preferred name, will be returned. Since ADAM C. POWELL BOULEVARD is the street name most commonly used in this location, it is a better choice than the primary street name (7 AVENUE). However, Function 1E will return 7 AVENUE since this is the BOE-preferred street name. The technique of returning the preferred street name instead of the primary street name helps to insure that if the street name is used as input to Geosupport with the address number, it will be a successful call.","title":"Functions 1, 1A, 1B, 1E, and AP and Street Code Input"},{"location":"chapters/chapterIV/section08/#naps-and-street-code-input","text":"With respect to a NAP of a simplex, as with conventional street input, the user has the option to specify the input datum either in the form of the name (in this case, the NAP) or its B5SC. However, five-digit street code input is prohibited for a NAP of a complex or a constituent entity of a complex (it is rejected with a GRC value of \u201807\u2019); instead, 7-digit or 10-digit street code input (B7SC or B10SC) is accepted. The reason for this restriction is that different entities of the same complex may be located within different blockfaces, tax lots, census blocks, administrative or political districts etc., so that the B5SC may not be specific enough to enable Geosupport to determine the proper set of output data to return.","title":"NAPs and Street Code Input"},{"location":"chapters/chapterIV/section09/","text":"IV.9 Summary of Street Codes This section recapitulates the discussion of street codes. A B5SC value represents a New York City street (or a pseudo-street, non-street feature, place name or intersection name) and is assigned to all of the street\u2019s aliases, that is, to all of the names by which that street, or any part of it, is known to Geosupport. Therefore, the B5SC is a suitable item to use as an access key for street-related geographic retrieval, since then retrieval will be consistent with respect to street name aliases. That is, retrieval will succeed regardless of which alias is used at the time of record creation and which is used at retrieval time. A B10SC value represents a particular spelling of a particular name for a street (along with all of that name\u2019s partial street names, if any). Two B10SC values are identical in their first six bytes (the B5SC values) if and only if the street names to which those B10SC values correspond are aliases (names for the same street). Since B10SC values correspond uniquely to a single spelling of a single name for a street, they can be used to automatically resynchronize the B5SCs stored in an application file to reflect street code assignment changes made in new Geosupport releases. Such resynchronization is essential, and is the user\u2019s responsibility. A Street Name/Street Code Change Bulletin and a Geosupport file called the Street Code Change File (SCCF) are made available in each new Geosupport release to facilitate user-developed procedures for street code resynchronization. If an application file contains stored B10SCs, the SCCF can be used to develop a fully automated street code resynchronization procedure that directly accesses only those records in the application file containing B10SC values that must be updated, and that updates those B10SCs; this is the optimal resynchronization method. If street names and B5SCs are stored in the file, but not B10SCs, then the B5SCs can be resynchronized by using Function 1N and processing every record in the file. If only B5SCs are stored in the file, then the change bulletin must be used, and records containing B5SCs involved in changes must be individually researched. Some streets in the city have certain names that are only locally valid, that is, valid only for a portion of the street. The set of all names for a given street is partitioned into \u2019local street name groups\u2019 corresponding to portions of the street where various street names are valid. Two names for a street are in the same local group if and only if they are valid for exactly the same portion of the street. Each local group is assigned a Local Group Code (LGC) value, which is a number from \u201801\u2019 to \u201899\u2019 that labels the group relative to all of the local groups for that street. The B5SC value and LGC value are concatenated to form the B7SC value, which is assigned to every name belonging to the corresponding local group, and only to those names. Each local group has a single member designated as the principal street name for that group. Each portion of a street has one local group designated as the preferred local group for that portion. The principal name of the preferred local group is called the preferred street name for that portion of the street. The preferred street name is obtainable for any specific location on a street. For example, for an address, the preferred street name is obtained by calling Function 1 to obtain both the B5SC and the preferred LGC, concatenating these to form a B7SC, and using the latter as input to a call to Function DG. For an intersection, street segment or blockface, Function 2, 3 or 3C is called, respectively, instead of Function 1. The B5SC, B7SC and B10SC can be viewed as forming a hierarchy in which the greater the length of the item, the more the more restricted the set of street names represented. The B5SC represents all the names for the street. The B7SC represents all the names that are valid for a particular portion (possibly all) of the street. The B10SC represents a particular name (and any unambiguous partial street names generated from it). The methodology that is used to assign street codes to the Non-addressable Place Names (NAPs) of a complex and its constituent entities is analogous to the methodology used with street names. The B5SC represents all the NAPs of both the complex as a whole and all of its constituent entities. A distinct B7SC represents all the NAPs that are valid for a particular portion (possibly all) of the complex, that is, all the NAPs that are valid either for the complex as a whole or for a particular constituent entity. A distinct B10SC represents each individual normalized spelling of a specific NAP (and any unambiguous partial names generated from it). For the reader\u2019s convenience, two reference tables summarizing street codes are below. Table IV-1 is a summary of the various street code items used by Geosupport, conventional abbreviations for them, and their lengths in bytes. The abbreviations listed in Table IV-1 are used throughout the remainder of the UPG. In these abbreviations, \u2018B\u2019 represents the standard Geosupport one-byte Borough Code, as described in Appendix 3 , and \u2018P\u2019 means that the item is packed. (Note: Packed applies to MSW only.) Table IV-2 is a summary of the three main types of street code items, indicating the display function that accepts each as input, and what street name that display function returns as output. Table IV-2 is written to describe the assignment of street codes to street names, but it applies analogously as well to the NAPs of a complex and its constituent entities. Table IV-1: Notation for Street Code Items Item Abbreviation Item Name Length (Bytes) 5SC Five-digit Street Code 5 P5SC (MSW only) Packed Five\u2011digit Street Code 3 B5SC Borough and Five\u2011digit Street Code 6 PB5SC (MSW only) Packed Borough and Five\u2011digit Street Code 4 7SC Seven\u2011digit Street Code 7 B7SC Borough and Seven\u2011digit Street Code 8 10SC Ten\u2011digit Street Code 10 B10SC Borough and Ten\u2011digit Street Code 11 LGC Local Group Code (6th and 7th digits of 10SC) 2 SNC Street Name Code (8th, 9th and 10th digits of 10SC) 3 5SC + LGC = 7SC B5SC + LGC = B7SC B5SC + LGC + SNC = B7SC + SNC = B10SC Table IV-2: Summary of Street Code Items Type of Street Code Geography Represented Corresponding Street Name(s) Applicable Display Function and Its Output Datum B5SC A street for all or any portion of the given street All names valid D - returns primary name B7SC The portion (possibly all) of a street where a group of names is valid All the names in the given local street name group DG - returns principal name of local group B10SC The portion (possibly all) of a street where a specific name is valid One spelling of one name (and any unambiguous partial names generated from it) DN - returns the unique name to which the given B10SC corresponds","title":"IV.9 Summary of Street Codes"},{"location":"chapters/chapterIV/section09/#table-iv-1-notation-for-street-code-items","text":"Item Abbreviation Item Name Length (Bytes) 5SC Five-digit Street Code 5 P5SC (MSW only) Packed Five\u2011digit Street Code 3 B5SC Borough and Five\u2011digit Street Code 6 PB5SC (MSW only) Packed Borough and Five\u2011digit Street Code 4 7SC Seven\u2011digit Street Code 7 B7SC Borough and Seven\u2011digit Street Code 8 10SC Ten\u2011digit Street Code 10 B10SC Borough and Ten\u2011digit Street Code 11 LGC Local Group Code (6th and 7th digits of 10SC) 2 SNC Street Name Code (8th, 9th and 10th digits of 10SC) 3 5SC + LGC = 7SC B5SC + LGC = B7SC B5SC + LGC + SNC = B7SC + SNC = B10SC","title":"Table IV-1: Notation for Street Code Items"},{"location":"chapters/chapterIV/section09/#table-iv-2-summary-of-street-code-items","text":"Type of Street Code Geography Represented Corresponding Street Name(s) Applicable Display Function and Its Output Datum B5SC A street for all or any portion of the given street All names valid D - returns primary name B7SC The portion (possibly all) of a street where a group of names is valid All the names in the given local street name group DG - returns principal name of local group B10SC The portion (possibly all) of a street where a specific name is valid One spelling of one name (and any unambiguous partial names generated from it) DN - returns the unique name to which the given B10SC corresponds","title":"Table IV-2: Summary of Street Code Items"},{"location":"chapters/chapterIX/chapterIX/","text":"CHAPTER IX GEOSUPPORT BATCH ADDRESS TRANSLATOR (GBAT)","title":"Chapter IX"},{"location":"chapters/chapterIX/section01/","text":"IX.1 Introduction This chapter describes the Geosupport Batch Address Translator (GBAT), the Geosupport System\u2019s batch utility program. Users can often satisfy their requirements for batch Geosupport processing without having to write custom programs by processing their files through GBAT. GBAT can process any user file that meets certain easily satisfied requirements (described in Chapter IX.4 ). It can be used to execute any of the Geosupport functions that are available in the batch environment. It can be used to normalize house numbers and street names, to obtain street codes, to validate geographic locations such as addresses and intersections, and to obtain geographic information about such locations such as cross streets, community district, ZIP code, tax block and tax lot, spatial coordinates or any of the other information that Geosupport provides. To run GBAT, the user must set up a batch job, and must create a small \u2018control file\u2019 that controls the GBAT execution. Chapter IX.2 discusses JCL considerations for setting up the batch job. Chapter IX.3 outlines the processing that GBAT performs and discusses programmed abnormal terminations. The remaining sections of this chapter discuss each of GBAT\u2019s input and output files. Appendices 9, 10, and 12 also pertain to GBAT. Appendices 9 and 12 contain several GBAT tables that are indispensable references for setting up the control file (Tables A9-1, A9-2 and A9-3), interpreting the MSW GBAT output data (Table A9-4), interpreting the COW GBAT output data (Table A12-2), and setting up the JCL (Table A9-5 for MSW format, Table A12-3 for COW format). Appendix 10 contains annotated sample GBAT jobs, including JCL, control files and output listings.","title":"IX.1 Introduction"},{"location":"chapters/chapterIX/section02/","text":"IX.2 JCL Considerations GBAT makes calls to the Geosupport System via Geosupport\u2019s standard API in the same manner as is done by any user-written batch Geosupport application program. To execute GBAT, the user sets up a batch job that invokes a catalogued procedure called GBAT2, which contains all the JCL necessary to support the Geosupport calls. This \u2018proc\u2019 consists of a single step, the stepname of which is also GBAT2. It contains an EXEC statement that executes the GBAT program and a STEPLIB DD statement specifying the program library containing the GBAT and Geosupport load modules. The user must add DD statements to the GBAT execution step for GBAT\u2019s own input and output files. Those files, and their required DDnames, are as follows: Input data file, DDname INFILE or INVSAM . Mandatory. Contains the user\u2019s geographic information to be processed. Discussed in Chapter IX.4 . Input control file, DDname CARDIN . Mandatory. Contains encoded information that describes the use\u2019s input data file and specifies GBAT processing options. Discussed in Chapter IX.5 . Input alias file, DDname ALIASES . Optional. Allowable if the function being executed accepts street name input. Contains user-defined street name aliases (alternative names and spelling variants) that GBAT is to use to supplement the street names recognized by Geosupport. Discussed in Chapter IX.6 . Output file of accepted data, DDname OUTFILE . Optional. Contains one record corresponding to each input data record that is accepted by Geosupport. The record consists of an exact copy of the input data record, followed by data obtained from Geosupport. Discussed in Chapter IX.7 . Output file of rejected data, DDname ERRFILE . Mandatory (except when WORKAREA1=YES). Contains one record corresponding to each input data record that is rejected by Geosupport. The record consists of the Geosupport Return Code and Reason Code, followed by an exact copy of the input data record. Discussed in Chapter IX.8 . Output file of rejected data, DDname ERRFIL2 . Mandatory when RECTYPE=1B and WORKAREA1=NO. Contains one record corresponding to each input data record that is rejected (or partially rejected) by Geosupport Function 1B. The record consists of the Geosupport Return Code and Reason Code for the Function 1E Extended portion of Function 1B, followed by the Geosupport Return Code and Reason Code from the 1A Extended portion of Function 1B, followed by an exact copy of the input data record. Discussed in Chapter IX.8 . Output file of rejected data, DDname ERRFIL3 . Mandatory when RECTYPE=2 and RELATEDNODES=YES. Contains one record corresponding to each input data record that is rejected by Geosupport with GRC 03 Reason Code B (many-node case). The record consists of the Geosupport Return Code and Reason Code, followed by an exact copy of the input data record, followed by the information needed to choose a node. Discussed in Chapter IX.8 . Output file of rejected data, DDname ERRFIL4 . Mandatory when WORKAREA1=YES. Contains one record corresponding to each input data record that is rejected by Geosupport. The record consists of the Geosupport Return Code and Reason Code, followed by an exact copy of the input data record, followed by a copy of Work Area 1. Discussed in Chapter IX.8 . Output file of rejected data, DDname ERRFIL5 . Mandatory when RECTYPE=1B and WORKAREA1=YES. Contains one record corresponding to each input data record that is rejected (or partially rejected) by Geosupport Function 1B. The record consists of the Geosupport Return Code and Reason Code for the Function 1E Extended portion of Function 1B, followed by the Geosupport Return Code and Reason Code from the 1A Extended portion of Function 1B, followed by an exact copy of the input data record, followed by a copy of Work Area 1. Discussed in Chapter IX.8 . Output print file, DDname SYSPRINT . Mandatory. Contains GBAT messages and summary run statistics. Discussed in Chapter IX.9 . Some of the GBAT files, e.g. the input alias file and the output file of accepted data, are optional. GBAT opens these files only if there are certain entries in the control file specifying their use. If an optional file is not used, a DD statement for that file need not be included in the JCL. However, including such a DD statement causes no harm, unless the file it refers to does not exist, which would cause a JCL error. In the course of execution, certain conditions (described in Chapter IX.3 ) may arise that cause GBAT to terminate abnormally. In all cases in which GBAT exits via a programmed abnormal termination, it issues a Condition Code 11 of 12 or greater, and it produces incomplete or no output files. If the user\u2019s job contains any steps following the GBAT execution step (the step that invokes the GBAT2 proc) that are dependent on the existence of the output files that GBAT is expected to create, it is advisable to code the COND parameter in the EXEC statements of those steps so that those steps are bypassed if the Condition Code issued by the GBAT execution step is 12 or greater. For example, if GBATSTEP is the stepname of the GBAT execution step, then coding COND=(12,LE,GBATSTEP.GBAT2) in the EXEC statement of a subsequent step will cause that step to be bypassed if 12 is less than or equal to the Condition Code of GBATSTEP. _________________________ 11 Each step of a batch job running on an IBM mainframe can issue a Condition Code upon termination of the step. By convention, a Condition Code of \u201800\u2019 indicates normal completion of the step, \u201804\u2019 indicates generally normal completion but with a minor condition warranting a warning and higher values indicate severe problems or errors causing abnormal termination. Condition Codes appear in the SYSPRINT output job log. A JCL parameter, COND, can be coded in the EXEC statement of any job step to cause that step to be bypassed if the Condition Code of a specified previous step satisfies a specified condition. Note: Condition Codes are sometimes called \u2018Return Codes\u2019, in IBM documentation and elsewhere. Condition Codes are not to be confused with Geosupport Return Codes (GRCs). The Condition Codes discussed in this chapter are issued by the GBAT program, appear in the output job log and can be tested by the COND JCL parameter. GRCs are issued by the Geosupport System and are returned to the calling application (including to GBAT) in Work Area 1; they do not appear in the output job log and are not accessible to COND. GBAT does include the GRC in each record it writes into the output file of rejected data (discussed in Chapter IX.8 ).","title":"IX.2 JCL Considerations"},{"location":"chapters/chapterIX/section03/","text":"IX.3 GBAT Processing and Programmed Abnormal Terminations Before GBAT begins processing the input data file, it first validates the control file and, if appropriate, the alias file. The entire control file is validated for syntax and content, as described in Section IX.5 . Regardless of the outcome of that validation, if the function being executed accepts street name input, and the user has provided an alias file, and the user has specified either ALIASES=VAL or ALIASES=YES in the control file, then the contents of the entire alias file are also validated, as described in Section IX.6 . For each error encountered during these validations, GBAT issues an appropriate error message but continues the validation processing. Informational and warning messages may also be issued during the control file and alias file validation processing. After the control file and alias file validation processing is completed, GBAT determines whether to terminate abnormally or to commence processing the input data file. GBAT terminates abnormally at this point if there has been at least one control file error or, when an alias file has been provided, if there has been at least one alias file error and ALIASES=VAL has been specified. (In contrast, when ALIASES=YES is specified, the alias file is validated and error messages are issued as appropriate, but alias file errors do not cause GBAT to terminate abnormally.) Conditions that cause GBAT to issue informational or warning messages do not trigger abnormal termination. The Condition Codes issued for programmed abnormal terminations triggered by control file and alias file errors are as follows: Condition Code 12: only the control file had errors (or both the control file and the alias file had errors, but ALIASES=YES was specified, so that any alias file errors do not affect the manner in which GBAT terminates). Condition Code 13: only the alias file had errors, and ALIASES=VAL was specified. Condition Code 14: both files had errors, and ALIASES=VAL was specified. When no alias file is provided, Condition Code 12 can occur, but not Condition Codes 13 and 14. If the control file and alias file validation processing is completed normally, GBAT processes the input data file and writes data to the output files. Specifically, GBAT reads each record from the input data file, and uses the geographic information obtained there from as the input data for a standard API call to the Geosupport System. If the information is accepted by Geosupport, GBAT writes a record into the output file of accepted data (unless the user has chosen not to create this optional file). If the information is rejected by Geosupport, GBAT writes a record into the output file of rejected data. Both types of output records consist of exact copies of the input data record together with data that GBAT has obtained from Geosupport. At the completion of execution, GBAT writes out a small report (usually less than one page long) of summary run statistics. Condition Code 15: GBAT sets the Condition Code to 15 when GBAT execution is terminated because of a record length error for the following files: ERRFILE (COW and MSW), ERRFIL2 (COW only), ERRFIL3 (COW only), ERRFIL4 (COW only) and ERRFIL5 (COW only). If there is a record length error for other files, e.g. OUTFILE, GBAT may ABEND with U4038. In addition to the ABEND, other messages are generated, e.g. IBM0122S ONCODE=22 The RECORD condition was raised because the length of the record variable was greater than the record length (ONFILE = OUTFILE) Condition Code 20: In the course of processing the input data file, a condition called a MAXREJECTS violation, discussed in detail below, may arise. If so, GBAT ceases processing the input data, writes out the report of run statistics reflecting the processing that has occurred up to that point, and terminates abnormally with Condition Code 20. Otherwise, GBAT continues processing until all input data records have been processed, writes out the report of run statistics, and then terminates normally with Condition Code 00. The MAXREJECTS Feature: When coding the control file, if the user specifies incorrect record positions for an input data field, it is likely that Geosupport will reject most or all of the input data records. An optional control entry called MAXREJECTS is designed to prevent GBAT, to the extent possible, from wastefully processing an input data file in its entirety when incorrect record positions have been specified in the control file for an input field. The MAXREJECTS feature does this by causing execution to terminate abnormally with Condition Code 20 if a certain number of records at the beginning of the input data file are all rejected by Geosupport for any reason other than an invalid borough code. (The latter exception is designed to prevent a MAXREJECTS termination from occurring inappropriately when a user file has records that intentionally contain blank or otherwise invalid borough codes because those records represent locations outside of New York City.) The MAXREJECTS control entry is used to specify the number of consecutive rejected records at the beginning of the input data file (ignoring any records rejected for an invalid borough code) that are to trigger a MAXREJECTS termination. For example, the control entry MAXREJECTS=50 directs GBAT to terminate abnormally with Condition Code 20 if every one of the first 50 input data records that are not rejected because of an invalid borough code is rejected for any other reason. At the user\u2019s discretion, warnings can be treated as if they were rejects for the purpose of triggering a MAXREJECTS abnormal termination; see the discussion of the REJECTWARNINGS control entry in Section IX.7 . The MAXREJECTS control entry is optional. If the user does not code a MAXREJECTS control entry, then the value in effect defaults to MAXREJECTS=200. If the user codes MAXREJECTS=NOMAX, the MAXREJECTS feature is turned off; that is, the entire input data file is processed, regardless of how many records at the beginning of the file are rejected. Coding incorrect input field specifications in the control file tends to make a MAXREJECTS termination likely, but it does not guarantee it. That is because some input data records may contain values in the incorrectly specified field positions that, purely by coincidence, are valid for the intended data item. If there happened to be such a record near the beginning of the input data file, and that record happened to be accepted by Geosupport, that would preclude a MAXREJECTS termination. Conversely, a MAXREJECTS termination can occur even when there are no control file errors. That is because Geosupport may reject all of the input data records that are within the scope of the MAXREJECTS triggering set simply because those particular records happen to contain geographically invalid data. Note that the completion of a GBAT execution with Condition Code 00 does not by itself signify that no input data records were rejected by Geosupport. It signifies only that no errors were found in the control file nor (if ALIASES=VAL was coded) in the alias file; that a MAXREJECTS violation did not occur; and therefore that all input data records were processed (but not necessarily accepted) by Geosupport.","title":"IX.3 GBAT Processing and Programmed Abnormal Terminations"},{"location":"chapters/chapterIX/section04/","text":"IX.4 The Input Data File (DDNAME=INFILE or INVSAM) This mandatory input file contains the user geographic data to be processed by GBAT. In order for GBAT to be able to process a data file, it must satisfy the following requirements: The file must be either a sequential file or a VSAM file accessed sequentially. The DDname INFILE is used for sequential files; INVSAM is used for VSAM files. The file can have either fixed or variable length records, but the maximum permissible record length is 32,000 bytes. The file must be geographically homogeneous; that is, all of its records must contain the same type of geographic location to be processed. Heterogeneous files, such as a file in which some records contain addresses and others contain intersections, cannot be processed by GBAT. This restriction follows from the fact that, during one execution, GBAT calls the same Geosupport function to process every input record. Each data item that serves as an input item must occupy the same field position(s) within every INFILE (INVSAM) record. These field positions are specified in the control file.","title":"IX.4 The Input Data File (DDNAME=INFILE or INVSAM)"},{"location":"chapters/chapterIX/section05/","text":"IX.5 The Input Control File (DDNAME=CARDIN) This mandatory input file contains encoded information that controls the GBAT execution, including the Geosupport function being requested, processing options, and the positions of input fields in the input data records. The control file must be provided as a fixed-length file with an LRECL of 80. Users often provide the control file as an in stream file embedded in the JCL. Control File Syntactic Rules The information in the control file is coded in the form of control entries , which must conform to the following syntactic rules: Control entries may be coded in any order. Each record in the control file may contain one or more control entries. If more than one control entry is coded within the same record, those entries must be separated from each other by at least one blank, and they may be separated by any number of blanks. A control entry must not span two records. No blanks are permitted within a control entry. A control entry consists of a keyword, followed by an equals sign, followed by either a single variable value or a pair of variable values separated by a comma, depending on the keyword, as follows: Keywords other than those specifying the location of a field within the input data records require one variable, and are of the form KEYWORD=V, where V is a variable value specified by the user. For example, the control entry RECTYPE=1E specifies that Function 1E is to be executed during this GBAT run; \u2018RECTYPE\u2019 is the keyword in this control entry, and \u20181E\u2019 is the variable value. Most keywords that specify the locations of input data fields require two variables. Such a control entry is of the form KEYWORD=S,L where S and L specify the starting position and length of the input field, respectively. The two variable values must be separated by a comma. For example, the control entry ONSTREET=58,32 specifies that the input street name field starts in position 58 of the input data record and is 32 bytes long. For keywords that specify the locations of input fields for data items of invariant length, coding the length variable is usually optional. For example, a BIN is always a seven-byte item; therefore, if an input BIN field starts in, say, position 29, the control entry specifying that field may be coded as either BIN=29 or BIN=29,7. However, a BBL is always a ten-byte item, but must be explicitly coded as such. See Table A9-2 for default information. Many of the control entries are optional. GBAT assigns predetermined default values to the variables of all relevant optional control entries that the user has not coded. The default values are suitable for most applications. GBAT issues messages in SYSPRINT informing the user of all such default assignments. Control File Validation Processing GBAT validates the control file for syntax and, to a certain extent, for content, as described below. GBAT issues an error message in SYSPRINT for each control file error encountered. After completing the validation of the control file, if there have been any errors, GBAT terminates abnormally without processing the input data file and exits with a Condition Code of either 12 or 14 as described in Chapter IX.3 . Certain conditions encountered during control file validation cause warning messages to be issued, but are otherwise ignored and do not cause GBAT to terminate abnormally. The control file validations include verifying that all of the control entries that are mandatory for the specified Geosupport function have indeed been coded; that the variable values that have been coded in each control entry are valid values for the given keyword; and that the starting position and length that have been specified for each input data field are consistent with the input data file\u2019s record length (that is, they do not in combination specify positions beyond the end of the input data record). To do so, GBAT opens the input data file and obtains its LRECL from its Data Set Control Block (DSCB). In the case of a variable length file, the LRECL in the DSCB is the maximum allowable LRECL of the file, as specified by the user when the file was catalogued. Therefore, for a variable length input data file, GBAT can validate only that the starting positions and lengths of input fields coded in the control file are consistent with the longest possible input data file record. For a variable length file, it is the user\u2019s responsibility to insure that all starting positions and lengths specified in the control file are valid for the shortest actual input data file record. If they are not, unpredictable results may ensue. If the control file contains more than one control entry for the same keyword, the last such control entry is effective and the others are ignored. However, no warning messages are issued indicating the presence of such duplicate keyword entries. Appendix 9 contains three reference tables that document the full set of control entries. These tables are indispensable references for setting up control files. Tables A9-1 and A9-2 are organized by keyword, and Table A9-3 is organized by Geosupport function. Table A9-1 lists all the control entries along with narrative descriptions of their formats, purposes and usages, and for most of the control entries, citations to sections of the UPG where pertinent topics are discussed in detail. Table A9-2 indicates, for every control entry, the permissible values and the default values of its variables, and the functions for which that control entry may be used. Table A9-3 indicates, for every function, which control entries and combinations of control entries are permissible, mandatory and optional. See also the sample GBAT jobs in Appendix 10 for examples of control files. An expeditious approach for creating a new GBAT control file is first to ascertain from Table A9-3 which control entries are mandatory and optional for the function to be executed. Tables A9-1 and A9-2 can then be consulted to review those of the control entries with which the user is unfamiliar.","title":"IX.5 The Input Control File (DDNAME=CARDIN)"},{"location":"chapters/chapterIX/section06/","text":"IX.6 The Input Alias File (DDNAME=ALIASES) For all Geosupport functions that accept street name input, GBAT users have the option to provide a set of user-defined street name aliases (alternative street names and street name spelling variants) in an input alias file. These aliases supplement the set of street names that Geosupport recognizes of its own accord. It is important to note that the user\u2019s aliases supplement Geosupport\u2019s street names; they do not supersede them. Also, the aliases in an alias file supplement the Geosupport names only temporarily , that is, only during a GBAT execution in which that particular alias file is provided; GBAT does not \u2018remember\u2019 any user-defined aliases that have been supplied in prior GBAT executions. The alias feature is intended to enable users to customize GBAT execution for a particular data file. This feature is particularly useful for processing a data file that contains a few street names that are misspelled in a consistent manner in many records. By providing just a few entries in an alias file to identify those misspellings with corresponding \u2018correct\u2019 (Geosupport-recognized) spellings, the user may greatly improve the \u2018hit\u2019 rate without having to modify the data file itself. This could be beneficial, for example, if the data file being processed was obtained from an outside source and the user has no software at hand to modify the contents of the file to correct street name misspellings. To use the alias feature, a control entry containing the keyword ALIASES must be coded as follows: ALIASES=VAL directs GBAT to validate the alias file (as described below), and then to process the input data file only if the alias file had no invalid records. If so, then during the processing of the input data file, the user-defined aliases supplement the set of street names that Geosupport recognizes. Records that result in warnings are not considered invalid in this context, and do not prevent the processing of the input data file. ALIASES=YES directs GBAT to validate the alias file, and then to process the input data file regardless of whether there were any invalid alias records. During the processing of the input data file, the user-defined aliases that are in the valid alias records supplement the set of street names that Geosupport recognizes, while those in invalid alias records are not used. If no ALIASES control entry is coded, or if ALIASES=NO is specified, then GBAT performs no alias file processing, even if an ALIASES DD statement appears in the JCL. If ALIASES=VAL or ALIASES=YES is specified, except for the circumstance discussed in the next paragraph, the user must add a DD statement to the JCL of the GBAT execution step containing the DDname ALIASES, referencing the file that the user wishes to use as the alias file during this GBAT execution. If ALIASES=VAL or ALIASES=YES is specified, but the function being executed does not accept street name input, then a warning message is issued during control file validation, and the ALIASES control entry, as well as the ALIASES DD statement in the JCL (if any), are otherwise ignored; in particular, no alias file validating is performed in this circumstance. The alias file must be a sequential file. Although it is expected that most alias files will have at most a few dozen records, GBAT is designed to accommodate alias files of up to 5,000 records. The alias file must have a record length of 80 and must conform to the following layout: Record Layout of Alias File Field Size Positions Comments Borough Code 1 1 Standard Geosupport borough codes User\u2019s Alias Street Name 32 34-65 Need not be in normalized format Filler 15 66-80 Blanks Alias File Validation Processing GBAT validates each record in the alias file, and writes an appropriate message to SYSPRINT for each error or warning condition encountered. A basis of the validation processing is that the alias street name is supposed to be a name that is not already recognized by Geosupport, whereas the street name in the field labeled \u2018Street Name Recognized by Geosupport\u2019 is supposed to be recognized. The alias file validation processing is as follows: \u2018Normal\u2019 case: if the alias name is not recognized, and the putative Geosupport-recognized name is in fact recognized, the alias file record is valid . Error: If the alias name and the putative Geosupport-recognized name are identical, the alias record is invalid . This condition tends to indicate that the user inadvertently entered the alias name incorrectly when creating this record. Warning: If the two names are different, and they are both recognized by Geosupport, and they have the same seven-digit street code (B7SC), then the alias record is superfluous but harmless. A warning message is issued, and the alias name is used. Error: If both names are recognized, but they have different B7SC values, the alias record is invalid. Error: If the putative Geosupport-recognized name is not in fact recognized, the alias record is invalid . Note: GBAT does not check whether there is more than one record in the alias file containing the same alias name. If there is more than one, only the first valid record (if any) is used during the processing of the input data file; the other records containing that alias name are validated but are otherwise ignored. It is the user\u2019s responsibility to insure that the alias file does not have multiple records containing the same alias name. GBAT issues no warning message indicating the existence of such records.","title":"IX.6 The Input Alias File (DDNAME=ALIASES)"},{"location":"chapters/chapterIX/section07/","text":"IX.7 The Output File of Accepted Records (DDNAME=OUTFILE) This optional output file contains a record corresponding to each input data record accepted by Geosupport. The user can specify whether OUTFILE is to be created, and if so, how its records are to be constituted, using the GEOCODE control entry. (The GEOUNIT control entry also plays a role in determining how the OUTFILE records are constituted. GEOUNIT is discussed later in this section.) The user can specify whether warnings are to be treated as accepted records or as rejects using the REJECTWARNINGS control entry. These control entries are discussed in detail below. Controlling the Creation and Contents of OUTFILE with GEOCODE (and GEOUNIT) GBAT creates either two or three output files, depending on the (coded or default) value in effect for the GEOCODE control entry. If GEOCODE=VAL is explicitly coded (it is never the default), only ERRFILE and SYSPRINT are created. If the value in effect for GEOCODE is other than VAL, then OUTFILE, the file of accepted records, is also created. When GEOCODE=YES or ALL, then ERRFIL2 or ERRFIL3 may also be created. The purpose of the option GEOCODE=VAL is to enable the user to validate the input data file while avoiding the execution-time overhead that would be incurred to create OUTFILE. The user can execute GBAT repeatedly with GEOCODE=VAL, each time correcting as many rejected input data records as possible, until the rejection rate is acceptable to the user. At that point, a final execution with GEOCODE=NO, YES or ALL can be run to obtain OUTFILE. In all cases in which OUTFILE is created, its records are formed by appending data obtained from Geosupport to exact copies of the accepted input data records. The length and layout of the appended Geosupport data depend on the function requested and on the GEOCODE option that is in effect (and, for COW Functions 1, 1E, 1A and 1B, the GEOUNIT option that is in effect) as described below. For GEOCODE=NO , the appended items consist generally of output items from Work Area 1 appropriate to the given function. For MSW format, Table A9-4 in Appendix 9 lists, by function, the precise layout of the data appended for GEOCODE=NO. For the COW format, see Table A12-2 in Appendix 12. For GEOUNIT=YES (which is a COW only option) , the additional appended items consist of one output item from COW Work Area 1 appropriate to the Unit input for Functions 1, 1E, 1A and 1B. Table A12-2A in Appendix 12 shows the format of the appended data. In general terms, the items that are appended for GEOCODE=NO (and GEOUNIT=YES) are as follows: For functions involving street names, the appended information includes normalized street name(s) and Geosupport street code(s). All normalized street names are provided as 32 byte items, blank filled on the right as necessary. All MSW street codes are provided as ten digit street codes without a borough code (10SCs); all COW street codes are provided as eleven digit street codes with a borough code (B10SCs). For functions involving house numbers, normalized house numbers are appended. For Functions 1, 1A, 1E, and 1B each normalized house number is returned as follows: the normalized House Number in Display format (HND) which will be either a 12 byte item in MSW format or a 16-byte item in COW format. Also, for MSW format only, the normalized House Number is returned in a special format for the Department of Housing Preservation and Development (HNHPD), an 8 byte item. For Functions D, DG and DN, the HNHPD is not returned. In addition, for COW Functions 1, 1E, 1A and 1B, if GEOUNIT=YES is in effect, the 14-byte Normalized Display Format Unit Output field is also appended. Table A12-2A in Appendix 12 shows the format of the appended data For Function BL, the 10-byte BBL in standard format is appended. (The standard BBL consists of the borough code, the 5-byte tax block and the 4-byte tax lot.) For Function BN, the 7-byte BIN is appended. For GEOCODE=YES , each OUTFILE record is formed by appending to a copy of the input record the entire Work Area 2. (See Appendix 2 and Appendix 13 for Geosupport work area layouts, MSW and COW respectively.) GEOCODE=YES is invalid for functions that do not have a WA2. For functions that have the long WA2 option, the long WA2 is appended only if the user has explicitly specified LONGWA2=YES in the GBAT control file; if the user specifies LONGWA2=NO, or does not specify a LONGWA2 control entry, then the regular WA2 is appended. Similarly for COW functions that have the Extended Mode option (MODE=X) and/or the Auxiliary Segment option (AUXSEG=YES) the larger WA2 will be appended only if the option is specifically requested. For GEOCODE=ALL , each OUTFILE record is formed by concatenating an exact copy of the input record, followed by the data appended for the given function when GEOCODE=NO is specified (as listed in Table A9-4 in Appendix 9 for MSW and Table A12-2 in Appendix 12 for COW), followed by the data appended when GEOCODE=YES is specified. Note, for COW Functions 1, 1E, 1A and 1B when GEOUNIT=YES is specified, the GEOUNIT=YES data appears between the GEOCODE=NO data and the GEOCODE=YES data. GEOCODE=ALL is invalid for functions that do not have a WA2. For MSW, Table A9-5 in Appendix 9 lists the length of the appended data by function and GEOCODE value. For COW, see Table A12-3 in Appendix 12. When setting up the JCL, the user must specify the LRECL parameter in the OUTFILE DD statement to equal the sum of the LRECL of the input data file and the length of the appended data as indicated in Table A9-5 for MSW, and Table A12-3 for COW. Controlling the Treatment of Warnings with REJECTWARNINGS Every input data record that produces a Geosupport Return Code (GRC) of \u201800\u2019 is treated as an accepted record; that is, the following actions are taken: If OUTFILE is being created, GBAT writes a corresponding output record into OUTFILE. Regardless of whether or not OUTFILE is being created, the record contributes to the count of accepted records that appears in the SYSPRINT report of run statistics (see Chapter IX.9 ) If the record is within the scope of the MAXREJECTS triggering set (see Chapter IX.3 ), it precludes a MAXREJECTS abnormal termination. Every input data record that produces a GRC of greater than \u201801\u2019 is treated as a reject; that is, the following actions are taken: GBAT writes a corresponding output record into ERRFILE (and ERRFIL2 and ERRFIL3 as needed), the output file of rejected records. The record contributes to the count of rejected records that appears in the SYSPRINT report of run statistics (see Chapter IX.9 ) Unless the record is rejected for an invalid borough code, it is counted as a rejected record for the purpose of determining whether a MAXREJECTS abnormal termination is to be triggered. At the user\u2019s discretion, input data records that produce warnings (GRC = \u201801\u2019) either can all be treated as accepted records or they can all be treated as rejects. This choice is specified using the optional REJECTWARNINGS control entry, as follows: If REJECTWARNINGS=YES is specified, only the GRC \u201800\u2019 records are treated as accepted records; GRC \u201801\u2019 records are treated as rejects. If REJECTWARNINGS=NO is specified, then the GRC \u201801\u2019 records as well as the GRC \u201800\u2019 records are treated as accepted records. (Default) If no REJECTWARNINGS control entry is supplied, then the default value is NO; that is, the GRC \u201801\u2019 records as well as the GRC \u201800\u2019 records are treated as accepted records.","title":"IX.7 The Output File of Accepted Records (DDNAME=OUTFILE)"},{"location":"chapters/chapterIX/section08/","text":"IX.8 The Output Files of Rejected Records (DDNAME=ERRFILx) Each record in the Output Files of Rejected Records typically contains a Geosupport Return Code (GRC), a Reason Code and a copy of the user's input data record. The user may optionally request (via the WORKAREA1 control entry) that Work Area 1 should also be included in the output record. Work Area 1 contains the Geosupport Error Message(s) which may help the user to correct the input data. ERRFILE and ERRFIL2 are created when Work Area 1 is not requested. When Work Area 1 is requested, ERRFIL4 and ERRFIL5 are created instead of ERRFILE and ERRFIL2. See more detail below on all the Output Files of Rejected Records, viz. ERRFILE, ERRFIL2, ERRFIL3, ERRFIL4 and ERRFIL5. IX.8.1 ERRFILE ERRFILE is mandatory when WORKAREA1=NO (which is the GBAT default). This output file contains a record for each \u2018rejected\u2019 input data record. The value of the REJECTWARNINGS option that is in effect determines which input data records are treated as rejects, as explained in Chapter IX.7 . Each ERRFILE record consists of four bytes, followed by an exact copy of the input data record. The four bytes consist of the two-byte GRC, followed by a one-byte filler containing a \u2018-\u2018(dash character) for display readability, followed by the one-byte Reason Code. The LRECL of ERRFILE must always be four (4) greater than that of the input data file. It is the user\u2019s responsibility to specify the LRECL of ERRFILE correctly in the JCL. IX.8.2 ERRFIL2 (for use by Function 1B only) ERRFIL2 is mandatory with RECTYPE=1B together with WORKAREA1=NO. It contains a record for each \u2018rejected\u2019 input data record. The value of the REJECTWARNINGS option that is in effect determines which input data records are treated as rejects, as explained in Chapter IX.7 . The contents of each ERRFIL2 record is as follows: The first 4 bytes contain the 2-byte GRC, followed by a dash, followed by the Reason Code for the Block Face level (Function 1E Extended) information. This is followed by 6 bytes of filler. Byte 11 contains the 2-byte GRC, followed by a dash, followed by the Reason Code for the Property level (Function 1A Extended) information. This is followed by 6 bytes of filler. The input record begins in byte 21. The LRECL of ERRFIL2 must always be 20 greater than that of the input data file. It is the user\u2019s responsibility to specify the LRECL of ERRFIL2 correctly in the JCL. The remainder of this section describes ERRFILE / ERRFIL2 processing. It also applies to ERRFIL4 / ERRFIL5 processing correspondingly . The GBAT output ERRFIL2 will contain all Function 1B records that were rejected for any reason. It will contain records that were rejected for: The Block level but not the Property level call The Property level but not for the Block level call Both the Block and Property level calls (These rejects will also be in the ERRFILE) If the input record has been rejected for both Block and Property level information, the output error record will be found both in the ERRFILE output error file, as well as the ERRFIL2 error file. The ERRFILE output record will have the GRC of the results of the Block level call (i.e. Function 1E), and corresponds to the GRC and Reason Code in Work Area 1. ERRFIL2 will have the same output error record and will contain both the GRC and Reason code and the newly defined GRC2 and its corresponding Reason Code. (There will be no Work Area 2 returned by GBAT when the record is rejected for both Block an Property level information.) Note: If you are not using Function 1B, you do not have to add ERRFIL2 to your GBAT JCL. The file is not opened. No changes have to be made. However, if you are using GBAT for a Function 1B call, GBAT will abend if you do not add a DD card for ERRFIL2 to your JCL. IX.8.3 ERRFIL3 (for use by Function 2 with RELATEDNODES=YES) ERRFIL3 is mandatory with RECTYPE=2 and RELATEDNODES=YES. It contains a record for each input data record that is rejected with GRC 03 and Reason Code B (\u2018many-node case\u2019). When the requested streets intersect more than twice (GRC 03), if the user has set RELATEDNODES to YES s/he will get a special error file, ERRFIL3, with a logical record length of 3352 + length of the user\u2019s input. The ERRFIL3 record will include for each of the many nodes, the Node ID and the streets (as B7SCs) at the nodes. Therefore, to process streets that intersect more than twice, the GBAT user need only add the RELATEDNODES=YES option to get the information needed. S/He does not have to run a Function 2W GBAT run. The contents of each ERRFIL3 record is as follows: The first 4 bytes contain the 2-byte GRC (\u201803\u2019), followed by a dash, followed by the 1-byte Reason Code (\u2018B\u2019). This is followed by 6 bytes of filler. A copy of the input record begins in byte 11. The input record is followed by the list of nodes and the B7SCs at the nodes. The LRECL of ERRFIL3 must always be 3352 greater than that of the input data file. It is the user\u2019s responsibility to specify the LRECL of ERRFIL3 correctly in the JCL. GBAT - ERRFIL3 Record Layout Length Positions Contents 4 1-4 \u201903-B\u2019 (which is the GRC-Reason Code) 6 5-10 Blanks Length of I/P record 11-nn User\u2019s input record 2 After input record True Replication Counter (maximum of 20) (matches bytes 259-260 of Function 2W\u2019s Work Area 2) 140 After input record + 2 List of up to 20 Node ID (7 bytes each) (matches bytes 261-400 of Function 2W\u2019s Work Area 2) 3200 After input record + 142 List of B7SCs for Nodes. (matches bytes 401-3600 of Function 2W\u2019s Work Area 2) ([See Appendix 13](../../../appendices/appendix13/) - layout of Function 2W\u2019s Work Area 2) Total length: 3352 + Length of user\u2019s input record The count of the records in the new ERRFIL3 file will match the statistics for: 03 \u2013 STREETS INTERSECT MORE THAN TWICE \u2013 USE NODE AS INPUT. Note that the rejected input records will also still appear in the regular reject file (ERRFILE) in the standard ERRFILE format. Important JCL Note: ERRFIL3 must be defined in the user\u2019s JCL for RELATEDNODES to take effect. If DDname ERRFIL3 is undefined in the user\u2019s JCL, the file will default to DD DUMMY which will not give an appropriate length. The execution will fail with a programmed abnormal termination and a Condition Code of 15. See the following error message which will appear in the output. Condition Code: 15 GBAT Error Message: ERROR: THE RECORD LENGTH OF ERRFIL3 MUST EQUAL THE RECORD LENGTH OF THE INPUT FILE PLUS 3352. RECORD LENGTH OF THE INPUT FILE = xxx RECORD LENGTH OF ERRFIL3 = yyy Note: If you are not using RELATEDNODES, you do not have to add ERRFIL3 to your GBAT JCL. The file is not opened. No changes have to be made. IX.8.4 ERRFIL4 (for use with WORKAREA1=YES) ERRFIL4 is mandatory when WORKAREA1=YES. This output file contains a record for each \u2018rejected\u2019 input data record. The value of the REJECTWARNINGS option that is in effect determines which input data records are treated as rejects, as explained in Chapter IX.7 . The ERRFIL4 record is the same as the ERRFILE record, except that it also includes a copy of Work Area 1. Each ERRFIL4 record consists of four bytes, followed by an exact copy of the input data record, followed by a copy of Work Area 1. The four bytes consist of the two-byte GRC, followed by a one-byte filler containing a \u2018-\u2018(dash character) for display readability, followed by the one-byte Reason Code. The Work Area 1 is 1,200 bytes long. The LRECL of ERRFIL4 must always be 1,204 greater than that of the input data file. It is the user\u2019s responsibility to specify the LRECL of ERRFIL4 correctly in the JCL. IX.8.5 ERRFIL5 (for use by Function 1B only - with WORKAREA1=YES) ERRFIL5 is mandatory when RECTYPE=1B together with WORKAREA1=YES. It contains a record for each \u2018rejected\u2019 input data record. The value of the REJECTWARNINGS option that is in effect determines which input data records are treated as rejects, as explained in Chapter IX.7 . The ERRFIL5 record is the same as the ERRFIL2 record, except that it also includes a copy of Work Area 1. The contents of each ERRFIL5 record is as follows: The first 4 bytes contain the 2-byte GRC, followed by a dash, followed by the Reason Code for the Block Face level (Function 1E Extended) information. This is followed by 6 bytes of filler. Byte 11 contains the 2-byte GRC, followed by a dash, followed by the Reason Code for the Property level (Function 1A Extended) information. This is followed by 6 bytes of filler. The input record begins in byte 21. The 1,200-byte Work Area 1 follows the input record. The LRECL of ERRFIL5 must always be 1,220 greater than that of the input data file. It is the user\u2019s responsibility to specify the LRECL of ERRFIL5 correctly in the JCL. ERRFIL5 processing is identical to ERRFIL2 processing (except for the Work Area 1 which appears in the ERRFIL5 record). See the description in IX.8.2 above for further information.","title":"IX.8 The Output Files of Rejected Records (DDNAME=ERRFILx)"},{"location":"chapters/chapterIX/section08/#ix81-errfile","text":"ERRFILE is mandatory when WORKAREA1=NO (which is the GBAT default). This output file contains a record for each \u2018rejected\u2019 input data record. The value of the REJECTWARNINGS option that is in effect determines which input data records are treated as rejects, as explained in Chapter IX.7 . Each ERRFILE record consists of four bytes, followed by an exact copy of the input data record. The four bytes consist of the two-byte GRC, followed by a one-byte filler containing a \u2018-\u2018(dash character) for display readability, followed by the one-byte Reason Code. The LRECL of ERRFILE must always be four (4) greater than that of the input data file. It is the user\u2019s responsibility to specify the LRECL of ERRFILE correctly in the JCL.","title":"IX.8.1 ERRFILE "},{"location":"chapters/chapterIX/section08/#ix82-errfil2-for-use-by-function-1b-only","text":"ERRFIL2 is mandatory with RECTYPE=1B together with WORKAREA1=NO. It contains a record for each \u2018rejected\u2019 input data record. The value of the REJECTWARNINGS option that is in effect determines which input data records are treated as rejects, as explained in Chapter IX.7 . The contents of each ERRFIL2 record is as follows: The first 4 bytes contain the 2-byte GRC, followed by a dash, followed by the Reason Code for the Block Face level (Function 1E Extended) information. This is followed by 6 bytes of filler. Byte 11 contains the 2-byte GRC, followed by a dash, followed by the Reason Code for the Property level (Function 1A Extended) information. This is followed by 6 bytes of filler. The input record begins in byte 21. The LRECL of ERRFIL2 must always be 20 greater than that of the input data file. It is the user\u2019s responsibility to specify the LRECL of ERRFIL2 correctly in the JCL. The remainder of this section describes ERRFILE / ERRFIL2 processing. It also applies to ERRFIL4 / ERRFIL5 processing correspondingly . The GBAT output ERRFIL2 will contain all Function 1B records that were rejected for any reason. It will contain records that were rejected for: The Block level but not the Property level call The Property level but not for the Block level call Both the Block and Property level calls (These rejects will also be in the ERRFILE) If the input record has been rejected for both Block and Property level information, the output error record will be found both in the ERRFILE output error file, as well as the ERRFIL2 error file. The ERRFILE output record will have the GRC of the results of the Block level call (i.e. Function 1E), and corresponds to the GRC and Reason Code in Work Area 1. ERRFIL2 will have the same output error record and will contain both the GRC and Reason code and the newly defined GRC2 and its corresponding Reason Code. (There will be no Work Area 2 returned by GBAT when the record is rejected for both Block an Property level information.) Note: If you are not using Function 1B, you do not have to add ERRFIL2 to your GBAT JCL. The file is not opened. No changes have to be made. However, if you are using GBAT for a Function 1B call, GBAT will abend if you do not add a DD card for ERRFIL2 to your JCL.","title":"IX.8.2 ERRFIL2 (for use by Function 1B only)"},{"location":"chapters/chapterIX/section08/#ix83-errfil3-for-use-by-function-2-with-relatednodesyes","text":"ERRFIL3 is mandatory with RECTYPE=2 and RELATEDNODES=YES. It contains a record for each input data record that is rejected with GRC 03 and Reason Code B (\u2018many-node case\u2019). When the requested streets intersect more than twice (GRC 03), if the user has set RELATEDNODES to YES s/he will get a special error file, ERRFIL3, with a logical record length of 3352 + length of the user\u2019s input. The ERRFIL3 record will include for each of the many nodes, the Node ID and the streets (as B7SCs) at the nodes. Therefore, to process streets that intersect more than twice, the GBAT user need only add the RELATEDNODES=YES option to get the information needed. S/He does not have to run a Function 2W GBAT run. The contents of each ERRFIL3 record is as follows: The first 4 bytes contain the 2-byte GRC (\u201803\u2019), followed by a dash, followed by the 1-byte Reason Code (\u2018B\u2019). This is followed by 6 bytes of filler. A copy of the input record begins in byte 11. The input record is followed by the list of nodes and the B7SCs at the nodes. The LRECL of ERRFIL3 must always be 3352 greater than that of the input data file. It is the user\u2019s responsibility to specify the LRECL of ERRFIL3 correctly in the JCL. GBAT - ERRFIL3 Record Layout Length Positions Contents 4 1-4 \u201903-B\u2019 (which is the GRC-Reason Code) 6 5-10 Blanks Length of I/P record 11-nn User\u2019s input record 2 After input record True Replication Counter (maximum of 20) (matches bytes 259-260 of Function 2W\u2019s Work Area 2) 140 After input record + 2 List of up to 20 Node ID (7 bytes each) (matches bytes 261-400 of Function 2W\u2019s Work Area 2) 3200 After input record + 142 List of B7SCs for Nodes. (matches bytes 401-3600 of Function 2W\u2019s Work Area 2) ([See Appendix 13](../../../appendices/appendix13/) - layout of Function 2W\u2019s Work Area 2) Total length: 3352 + Length of user\u2019s input record The count of the records in the new ERRFIL3 file will match the statistics for: 03 \u2013 STREETS INTERSECT MORE THAN TWICE \u2013 USE NODE AS INPUT. Note that the rejected input records will also still appear in the regular reject file (ERRFILE) in the standard ERRFILE format. Important JCL Note: ERRFIL3 must be defined in the user\u2019s JCL for RELATEDNODES to take effect. If DDname ERRFIL3 is undefined in the user\u2019s JCL, the file will default to DD DUMMY which will not give an appropriate length. The execution will fail with a programmed abnormal termination and a Condition Code of 15. See the following error message which will appear in the output. Condition Code: 15 GBAT Error Message: ERROR: THE RECORD LENGTH OF ERRFIL3 MUST EQUAL THE RECORD LENGTH OF THE INPUT FILE PLUS 3352. RECORD LENGTH OF THE INPUT FILE = xxx RECORD LENGTH OF ERRFIL3 = yyy Note: If you are not using RELATEDNODES, you do not have to add ERRFIL3 to your GBAT JCL. The file is not opened. No changes have to be made.","title":"IX.8.3 ERRFIL3 (for use by Function 2 with RELATEDNODES=YES)"},{"location":"chapters/chapterIX/section08/#ix84-errfil4-for-use-with-workarea1yes","text":"ERRFIL4 is mandatory when WORKAREA1=YES. This output file contains a record for each \u2018rejected\u2019 input data record. The value of the REJECTWARNINGS option that is in effect determines which input data records are treated as rejects, as explained in Chapter IX.7 . The ERRFIL4 record is the same as the ERRFILE record, except that it also includes a copy of Work Area 1. Each ERRFIL4 record consists of four bytes, followed by an exact copy of the input data record, followed by a copy of Work Area 1. The four bytes consist of the two-byte GRC, followed by a one-byte filler containing a \u2018-\u2018(dash character) for display readability, followed by the one-byte Reason Code. The Work Area 1 is 1,200 bytes long. The LRECL of ERRFIL4 must always be 1,204 greater than that of the input data file. It is the user\u2019s responsibility to specify the LRECL of ERRFIL4 correctly in the JCL.","title":"IX.8.4 ERRFIL4 (for use with WORKAREA1=YES)"},{"location":"chapters/chapterIX/section08/#ix85-errfil5-for-use-by-function-1b-only-with-workarea1yes","text":"ERRFIL5 is mandatory when RECTYPE=1B together with WORKAREA1=YES. It contains a record for each \u2018rejected\u2019 input data record. The value of the REJECTWARNINGS option that is in effect determines which input data records are treated as rejects, as explained in Chapter IX.7 . The ERRFIL5 record is the same as the ERRFIL2 record, except that it also includes a copy of Work Area 1. The contents of each ERRFIL5 record is as follows: The first 4 bytes contain the 2-byte GRC, followed by a dash, followed by the Reason Code for the Block Face level (Function 1E Extended) information. This is followed by 6 bytes of filler. Byte 11 contains the 2-byte GRC, followed by a dash, followed by the Reason Code for the Property level (Function 1A Extended) information. This is followed by 6 bytes of filler. The input record begins in byte 21. The 1,200-byte Work Area 1 follows the input record. The LRECL of ERRFIL5 must always be 1,220 greater than that of the input data file. It is the user\u2019s responsibility to specify the LRECL of ERRFIL5 correctly in the JCL. ERRFIL5 processing is identical to ERRFIL2 processing (except for the Work Area 1 which appears in the ERRFIL5 record). See the description in IX.8.2 above for further information.","title":"IX.8.5 ERRFIL5 (for use by Function 1B only - with WORKAREA1=YES)"},{"location":"chapters/chapterIX/section09/","text":"IX.9 The Output Print File (DDNAME=SYSPRINT) This mandatory output file contains all GBAT messages, including routine informational messages, abnormal termination messages, control file and alias file validation error messages, and control file default assignment informational messages. If GBAT terminates normally, or if it terminates abnormally with a MAXREJECTS violation, SYSPRINT also contains a report of run statistics, which is usually less than one page long. The user can specify a title line for the report, consisting of any character string of up to 73 bytes, by using the TITLE control entry. The report of run statistics indicates the number of input records processed, the number accepted by Geosupport and the number rejected, all itemized by borough. The rejected record statistics are also itemized by GRC. Input data records that result in Geosupport warnings are counted in the report of run statistics either as accepted records or as rejects, depending on the value of the REJECTWARNINGS option that is in effect, as described in Chapter IX.7 . In addition, the report contains a summary list of all the GRCs that have occurred during the given GBAT execution along with their corresponding Geosupport messages. Statistics for RECTYPE=1B: GBAT run statistics for Function 1B are slightly different. The GBAT statistics for Function 1B are based on what is in the ERRFILE output error file. Since only records that are rejected for both the Blockface (Function 1E) and the Property Level (Function 1A) calls are in the ERRFILE, the output statistics are based on these records. The errors indicated in the statistics are based on the GRC from the Function 1E call. The report also displays totals for the 1B records that were accepted for the 1A portion but rejected for the 1E portion, and totals for the 1B records that were accepted for the 1E portion but rejected for the 1A portion.","title":"IX.9 The Output Print File (DDNAME=SYSPRINT)"},{"location":"chapters/chapterV/chapterV/","text":"CHAPTER V ADDRESS PROCESSING - FUNCTIONS 1, 1A, 1B, 1E, AP","title":"Chapter V"},{"location":"chapters/chapterV/section01/","text":"V.1 Introduction This chapter and the following two chapters discuss in detail the various types of geographic locations that Geosupport can accept as input, and the Geosupport functions that process them. This chapter, Chapter V, discusses addresses and Functions 1, 1A, 1B, 1E, and AP . Chapter VI discusses properties (tax lots) and buildings and Functions 1A (covering aspects not discussed in Chapter V ), BL and BN. Chapter VII discusses \u2018street configurations\u2019 (geographic locations that are specified in terms of combinations of streets) and Functions 2, 3, 3C and 3S.","title":"V.1 Introduction"},{"location":"chapters/chapterV/section02/","text":"V.2 Address Numbers (\u2018House\u2019 Numbers), Normalization and Formats: HNI, HNS and HND Address numbers identify buildings, and are combined with street names and addressable place names ( see Chapter III.6 ) or with street codes (as surrogates of street names or place names) to form addresses. Address numbers are commonly called \u2018house\u2019 numbers (although this term is a misnomer, since many addresses refer to buildings other than houses). To be consistent with common parlance and with other Geosupport documentation, the term \u2018house number\u2019 will be used instead of \u2018address number\u2019 in the remainder of this document, except in literal citations of Geosupport reject messages, since those messages use the term \u2018address number\u2019. Applications can pass a house number to any of the address-processing functions in character form, in the 12-byte WA1 input House Number field for MSW and the 16-byte WA1 input House Number field for COW. A house number passed in this manner need not be in any particular format, but could be a \u2018raw\u2019, un-formatted house number. Alternatively, house numbers can be passed in a 6-byte WA1 input field in a special Geosupport format called the House Number in Internal format (HNI), which presumes, the application will have obtained the HNI from a previous Geosupport call. HNIs are only used with MSW. A newer Geosupport format called House Number in Sort Format (HNS) is used for COWs. When a house number is passed to Geosupport in the 12-byte WA1 for MSW or the 16-byte WA1 for COW input House Number field, Geosupport normalizes it. The house number normalization algorithm is complex, and a full description of it is beyond the scope of this document, but some aspects are discussed below. If normalization is successful, an output normalized house number is produced in two standard formats, the 12-byte or 16-byte output House Number in Display format (HND) and the 6-byte output House Number in Internal format (HNI) or the 11-byte House Number in Sort format (HNS), and both of these are returned to the application in WA1. The HND is in character form and is suitable for display, for example, on application screens, reports and mailing labels. While the HNS format contains character data, it is intended for Geosupport internal use. To conserve space, users may store this value in their files. The HNI format contains packed decimal data, and is the format that Geosupport uses internally to perform its address-matching routines. The HNI is not documented in detail herein, and is of little direct relevance to most users. However, to conserve disk space in application files in which house numbers must be stored in some form, users can store the 6-byte HNI in their files rather than the 12-byte HND for MSW or the 11-byte HNS in their files rather than the 16-byte HND for COW, and then use any of the display functions, Functions D, DG and DN, to obtain the house number in HND format for display, as described below. Processing of HNIs or HNSs by the Display Functions The processing of an input HNI or HNS by a display function consists only of forming and outputting the HND. The successful processing of an input HNI or HNS by a display function implies that the HNI or HNS conforms to Geosupport\u2019s format requirements for HNIs or HNSs, but does not imply that the HNI or the HNS forms part of a valid address. The display functions can process up to two input HNI or HNS values in a single call, using the two input HNI or HNS fields and two output HND fields in WA1. If two input HNIs or HNSs are supplied, they are processed independently of each other and are not treated as forming an address range. If only one input HNI or HNS is supplied, it may be passed in either of the input HNI or HNS fields. The display functions return one output HND for each validly formatted input HNI or HNS. For each input HNI or HNS that is invalid, the display functions return all question marks (the character \u2018?\u2019) in the corresponding output HND field. In addition, if at least one input HNI or HNS is invalid, the GRC value \u201813\u2019, Reason Code value \u20189\u2019 and corresponding Message are issued. The display functions can also be used to obtain street names corresponding to input street codes. (The processing of street codes by the display functions is discussed in detail in Chapter IV.6 .) In a single call, the display functions can process input HNIs or HNSs without input street codes, input street codes without HNIs or HNSs or both types of input. If both HNIs or HNSs and street codes are provided as input data to a display function call, they are processed independently of each other and are not treated as forming an address. In particular, the display functions perform no address validation. HNIs or HNSs as Input to the Address-Processing Functions The user has the option of providing input house numbers to the address-processing functions in the form of an HNI or HNS instead of a \u2018raw\u2019 unprocessed house number. This feature is useful for processing an application file that already contains house numbers in HNI or HNS format from a previous pass through Geosupport. The use of this feature slightly improves execution efficiency by allowing Geosupport to circumvent the house number normalization routine. House Number Format Standards 'Raw' (un-normalized) input house numbers must conform to certain Geosupport standards, which are based on the characteristics of New York City\u2019s addresses. If an input house number does not satisfy these standards, Geosupport is unable to normalize it and rejects the call. The house number standards include the following, among others: \u2022 Conformance to a set of allowable characters \u2022 A limitation on the total length of the \u2018basic house number\u2019 (this term and the term \u2018house number suffix\u2019 are defined below) \u2022 Limitations on the number of digits and maximum numeric values of the basic house number, if it does not contain a hyphen; or such limitations on the portions of the basic house number preceding and following the hyphen, if a hyphen is present \u2022 Validity of the house number suffix (discussed below), if one is present Every valid New York City house number conforms to the above standards. The ability of Geosupport to normalize an input house number does not by itself signify that that house number, together with the input borough and street, form in combination a valid New York City address. Successful normalization signifies only that the input house number conforms to Geosupport\u2019s house number format criteria. Only the successful completion of a two-work-area call to one of the address-processing functions has significance with respect to the geographic validity of the input address. ( See Chapter II.4 for a discussion of the distinction between the validations performed by one- and two-work-area calls.) New York City house numbers consist of a \u2018basic house number\u2019, possibly followed by a \u2018house number suffix\u2019. (Note: the basic house number and house number suffix are not to be confused with the digits to the left and right of the hyphen in a hyphenated house number. For example, in the Queens address \u2018240-55 1/3 DEPEW AVENUE\u2019, \u2018240-55\u2019 is the basic house number, and is hyphenated; \u20181/3\u2019 is the house number suffix.) A dash character may appear in the input house number field between the basic house number and the house number suffix, e.g. 22-GARAGE. Geosupport replaces the dash with a blank and processing continues. No message is generated for this situation. Only a small percentage of New York City addresses have house number suffixes. The following are some examples of valid New York City addresses containing house number suffixes (highlighted in bold type): 519 Front East 12th Street (Manhattan) 625 Rear Smith Street (Brooklyn) 120 1/2 First Avenue (Manhattan) 240-55 1/3 Depew Avenue (Queens) 469 1/4 Father Capodanno Boulevard (Staten Island) 470 A West 43rd Street (Manhattan) 171C Auburn Avenue (Staten Island) 20-29 Garage 120th Street (Queens) Input basic house numbers may contain a dash(the character \u2018-\u2018), which can serve either as a hyphen , as with most house numbers in Queens and some house numbers in other boroughs, or as a range separator . \u2022 House Number Ranges : Addresses in New York City are often expressed in ranges, using a dash to separate the low and high house numbers of the range. For example, 22-28 Reade Street in Manhattan represents the range of even addresses consisting of 22 Reade Street, 24 Reade Street, 26 Reade Street and 28 Reade Street, all of which are valid individual addresses for the same building. In other words, in this example, the character string \u201822-28\u2019 is not an individual house number, but represents a range of house numbers, in which the dash serves as a range separator, and the number to the left of the dash, 22, as well as that to the right of the dash, 28, constitute by themselves valid individual house numbers for Reade Street. \u2022 Hyphenated House Numbers : Consider the Queens address 22-28 36th Street. The house number portion of the address, 22-28, consists of the same character string as the above Reade Street example, but it has a very different meaning in the two cases. In the Reade Street case, 22-28 represents a range of even house numbers; in the 36th Street case, 22-28 is a single hyphenated house number, not a range of several unhyphenated house numbers. In a hyphenated house number, the digits to the left and to the right of the hyphen in combination form a single house number; the digits on one side of the hyphen are not by themselves geographically meaningful. For example, 22 36th Street and 28 36th Street are not valid Queens addresses. In addition, the position of the hyphen within a hyphenated house number is significant. For example, consider the addresses 13-103 41st Avenue and 131-03 41st Avenue. These are two distinct addresses on the same Queens street, even though the house numbers consist of the same sequence of digits and differ only in the position of the hyphen. Geosupport\u2019s house number normalization algorithm interprets a dash encountered in an input house number either as a hyphen or as a range separation character, depending on the borough, the street (some streets do not conform to the norm for their borough with respect to house number hyphenation) and other criteria. \u2022 When Geosupport interprets the dash as a range separation character : In normalizing the input house number, both the dash itself and the portion of the basic house number to the right of the dash are deleted. As one consequence of this, when the input to a two-work-area call is an address range, only the address formed from the house number to the left of the dash is validated; the house number to the right of the dash is ignored and no conclusion can be drawn about its validity from the success or failure of the call. For example, 22-28 Reade St in Manhattan is normalized as 22 READE STREET; the \u201828\u2019 is ignored during normalization, and is not validated as an individual house number in a two-work-area call. \u2022 When Geosupport interprets the dash as a hyphen : In normalizing the input house number, the digits on both sides of the hyphen are retained, as is the hyphen itself. If Geosupport determines that an input house number in character form has a missing or inappropriately present dash, then whenever it is feasible, Geosupport modifies the house number to correct the error before normalizing it. (Geosupport never modifies input HNIs or HNSs.) Geosupport will make such a modification automatically (without user request), but only if the intended address is clear and unambiguous and is valid for the function being called, and a valid address could not be formed by normalizing the input house number in a different fashion. Two types of such dash-related modifications are as follows: \u2022 When an input house number does not contain a dash, but Geosupport determines that the house number should be hyphenated : Geosupport inserts a hyphen, provided it can determine the proper position of the hyphen unambiguously so that a valid address results. For example, the input address 6603 Booth Street in Queens is normalized as 66-03 BOOTH STREET; the input address 63101 Alderton Street in Queens is normalized as 63-101 ALDERTON STREET. \u2022 When an input house number contains a dash, but Geosupport determines that the presence of the dash is erroneous (i.e., the house number is invalid whether the dash is interpreted as a hyphen or as a range separator) : Geosupport concatenates the digits to the left and right of the dash without retaining the dash itself, provided that this results in a valid address. For example, 10-22 38th Street in Brooklyn is normalized as 1022 38 STREET. Whenever the house number normalizer makes an assumption about, or a dash-related modification to, an input house number, Geosupport informs the calling application by issuing a warning condition. A warning is issued, for example, when Geosupport assumes that an input dash is a range separator and then normalizes the house number by deleting the dash and digits following it, or when it assumes that a required hyphen is missing and inserts one. When Geosupport is unable to normalize an input house number without making a dash-related modification so that a valid address results, and there is more than one type of dash-related modification that would result in a valid address, the input is considered ambiguous. For such a rejection, the Message would list the possible valid forms of the input address. This assists the user to determine how the input house number should be modified to make it valid. For example, consider the input 10-14 Lexington Avenue in Manhattan. Lexington Avenue has unhyphenated addresses only. There are two reasonable interpretations of the user\u2019s intended input in this example. These are 10 Lexington Avenue, which assumes the input is an address range, and 1014 Lexington Avenue, which assumes the dash is an inappropriately present hyphen. All of the address-processing functions consider both of these to be valid addresses. Initially, 10-14 Lexington Avenue in Manhattan was rejected as ambiguous, but, at user request, the first successful house number is accepted; i.e. 10 Lexington Avenue in Manhattan. In the borough of Queens, the great majority of streets have hyphenated house numbers only; a few streets have unhyphenated house numbers only, and a few streets have \u2018mixed hyphenation\u2019(i.e., both hyphenated and unhyphenated house numbers). In the other four boroughs, all but a few streets have unhyphenated house numbers only, a few streets have hyphenated house numbers only, and a few streets have mixed hyphenation. Riverside Drive in Manhattan is an example of a mixed-hyphenation street. A small stretch of Riverside Drive running north from West 156th Street has hyphenated even addresses ranging from 156-00 to 159- 34 (with some gaps). The remainder of Riverside Drive has unhyphenated addresses only. Information on the address hyphenation status of each of the city\u2019s streets is maintained internally within Geosupport. The house number normalizer makes use of this information when analyzing an input house number that contains a dash character. Dash analysis is particularly complex for mixed-hyphenation streets, for which a dash could be either a hyphen or a range separator. For example, 156-158 Riverside Drive is a valid range of unhyphenated addresses assigned to a building located near West 88th Street, while 156-10 Riverside Drive is a valid single hyphenated address assigned to a building located near West 156th Street. When there are more than 3 digits following the dash in an input address number on a street having unhyphenated or mixed hyphenated house numbers, Geosupport treats the dash as a range separation character and issues a warning message that the address number has been altered (GRC 01 / Reason 1). When this input occurs on a street having only hyphenated house numbers, the call is rejected and Geosupport issues an error message (GRC 13 / Reason 2).","title":"V.2 Address Numbers (\u2018House\u2019 Numbers), Normalization and Formats: HNI, HNS and HND"},{"location":"chapters/chapterV/section02/#processing-of-hnis-or-hnss-by-the-display-functions","text":"The processing of an input HNI or HNS by a display function consists only of forming and outputting the HND. The successful processing of an input HNI or HNS by a display function implies that the HNI or HNS conforms to Geosupport\u2019s format requirements for HNIs or HNSs, but does not imply that the HNI or the HNS forms part of a valid address. The display functions can process up to two input HNI or HNS values in a single call, using the two input HNI or HNS fields and two output HND fields in WA1. If two input HNIs or HNSs are supplied, they are processed independently of each other and are not treated as forming an address range. If only one input HNI or HNS is supplied, it may be passed in either of the input HNI or HNS fields. The display functions return one output HND for each validly formatted input HNI or HNS. For each input HNI or HNS that is invalid, the display functions return all question marks (the character \u2018?\u2019) in the corresponding output HND field. In addition, if at least one input HNI or HNS is invalid, the GRC value \u201813\u2019, Reason Code value \u20189\u2019 and corresponding Message are issued. The display functions can also be used to obtain street names corresponding to input street codes. (The processing of street codes by the display functions is discussed in detail in Chapter IV.6 .) In a single call, the display functions can process input HNIs or HNSs without input street codes, input street codes without HNIs or HNSs or both types of input. If both HNIs or HNSs and street codes are provided as input data to a display function call, they are processed independently of each other and are not treated as forming an address. In particular, the display functions perform no address validation.","title":"Processing of HNIs or HNSs by the Display Functions"},{"location":"chapters/chapterV/section02/#hnis-or-hnss-as-input-to-the-address-processing-functions","text":"The user has the option of providing input house numbers to the address-processing functions in the form of an HNI or HNS instead of a \u2018raw\u2019 unprocessed house number. This feature is useful for processing an application file that already contains house numbers in HNI or HNS format from a previous pass through Geosupport. The use of this feature slightly improves execution efficiency by allowing Geosupport to circumvent the house number normalization routine.","title":"HNIs or HNSs as Input to the Address-Processing Functions"},{"location":"chapters/chapterV/section02/#house-number-format-standards","text":"'Raw' (un-normalized) input house numbers must conform to certain Geosupport standards, which are based on the characteristics of New York City\u2019s addresses. If an input house number does not satisfy these standards, Geosupport is unable to normalize it and rejects the call. The house number standards include the following, among others: \u2022 Conformance to a set of allowable characters \u2022 A limitation on the total length of the \u2018basic house number\u2019 (this term and the term \u2018house number suffix\u2019 are defined below) \u2022 Limitations on the number of digits and maximum numeric values of the basic house number, if it does not contain a hyphen; or such limitations on the portions of the basic house number preceding and following the hyphen, if a hyphen is present \u2022 Validity of the house number suffix (discussed below), if one is present Every valid New York City house number conforms to the above standards. The ability of Geosupport to normalize an input house number does not by itself signify that that house number, together with the input borough and street, form in combination a valid New York City address. Successful normalization signifies only that the input house number conforms to Geosupport\u2019s house number format criteria. Only the successful completion of a two-work-area call to one of the address-processing functions has significance with respect to the geographic validity of the input address. ( See Chapter II.4 for a discussion of the distinction between the validations performed by one- and two-work-area calls.) New York City house numbers consist of a \u2018basic house number\u2019, possibly followed by a \u2018house number suffix\u2019. (Note: the basic house number and house number suffix are not to be confused with the digits to the left and right of the hyphen in a hyphenated house number. For example, in the Queens address \u2018240-55 1/3 DEPEW AVENUE\u2019, \u2018240-55\u2019 is the basic house number, and is hyphenated; \u20181/3\u2019 is the house number suffix.) A dash character may appear in the input house number field between the basic house number and the house number suffix, e.g. 22-GARAGE. Geosupport replaces the dash with a blank and processing continues. No message is generated for this situation. Only a small percentage of New York City addresses have house number suffixes. The following are some examples of valid New York City addresses containing house number suffixes (highlighted in bold type): 519 Front East 12th Street (Manhattan) 625 Rear Smith Street (Brooklyn) 120 1/2 First Avenue (Manhattan) 240-55 1/3 Depew Avenue (Queens) 469 1/4 Father Capodanno Boulevard (Staten Island) 470 A West 43rd Street (Manhattan) 171C Auburn Avenue (Staten Island) 20-29 Garage 120th Street (Queens) Input basic house numbers may contain a dash(the character \u2018-\u2018), which can serve either as a hyphen , as with most house numbers in Queens and some house numbers in other boroughs, or as a range separator . \u2022 House Number Ranges : Addresses in New York City are often expressed in ranges, using a dash to separate the low and high house numbers of the range. For example, 22-28 Reade Street in Manhattan represents the range of even addresses consisting of 22 Reade Street, 24 Reade Street, 26 Reade Street and 28 Reade Street, all of which are valid individual addresses for the same building. In other words, in this example, the character string \u201822-28\u2019 is not an individual house number, but represents a range of house numbers, in which the dash serves as a range separator, and the number to the left of the dash, 22, as well as that to the right of the dash, 28, constitute by themselves valid individual house numbers for Reade Street. \u2022 Hyphenated House Numbers : Consider the Queens address 22-28 36th Street. The house number portion of the address, 22-28, consists of the same character string as the above Reade Street example, but it has a very different meaning in the two cases. In the Reade Street case, 22-28 represents a range of even house numbers; in the 36th Street case, 22-28 is a single hyphenated house number, not a range of several unhyphenated house numbers. In a hyphenated house number, the digits to the left and to the right of the hyphen in combination form a single house number; the digits on one side of the hyphen are not by themselves geographically meaningful. For example, 22 36th Street and 28 36th Street are not valid Queens addresses. In addition, the position of the hyphen within a hyphenated house number is significant. For example, consider the addresses 13-103 41st Avenue and 131-03 41st Avenue. These are two distinct addresses on the same Queens street, even though the house numbers consist of the same sequence of digits and differ only in the position of the hyphen. Geosupport\u2019s house number normalization algorithm interprets a dash encountered in an input house number either as a hyphen or as a range separation character, depending on the borough, the street (some streets do not conform to the norm for their borough with respect to house number hyphenation) and other criteria. \u2022 When Geosupport interprets the dash as a range separation character : In normalizing the input house number, both the dash itself and the portion of the basic house number to the right of the dash are deleted. As one consequence of this, when the input to a two-work-area call is an address range, only the address formed from the house number to the left of the dash is validated; the house number to the right of the dash is ignored and no conclusion can be drawn about its validity from the success or failure of the call. For example, 22-28 Reade St in Manhattan is normalized as 22 READE STREET; the \u201828\u2019 is ignored during normalization, and is not validated as an individual house number in a two-work-area call. \u2022 When Geosupport interprets the dash as a hyphen : In normalizing the input house number, the digits on both sides of the hyphen are retained, as is the hyphen itself. If Geosupport determines that an input house number in character form has a missing or inappropriately present dash, then whenever it is feasible, Geosupport modifies the house number to correct the error before normalizing it. (Geosupport never modifies input HNIs or HNSs.) Geosupport will make such a modification automatically (without user request), but only if the intended address is clear and unambiguous and is valid for the function being called, and a valid address could not be formed by normalizing the input house number in a different fashion. Two types of such dash-related modifications are as follows: \u2022 When an input house number does not contain a dash, but Geosupport determines that the house number should be hyphenated : Geosupport inserts a hyphen, provided it can determine the proper position of the hyphen unambiguously so that a valid address results. For example, the input address 6603 Booth Street in Queens is normalized as 66-03 BOOTH STREET; the input address 63101 Alderton Street in Queens is normalized as 63-101 ALDERTON STREET. \u2022 When an input house number contains a dash, but Geosupport determines that the presence of the dash is erroneous (i.e., the house number is invalid whether the dash is interpreted as a hyphen or as a range separator) : Geosupport concatenates the digits to the left and right of the dash without retaining the dash itself, provided that this results in a valid address. For example, 10-22 38th Street in Brooklyn is normalized as 1022 38 STREET. Whenever the house number normalizer makes an assumption about, or a dash-related modification to, an input house number, Geosupport informs the calling application by issuing a warning condition. A warning is issued, for example, when Geosupport assumes that an input dash is a range separator and then normalizes the house number by deleting the dash and digits following it, or when it assumes that a required hyphen is missing and inserts one. When Geosupport is unable to normalize an input house number without making a dash-related modification so that a valid address results, and there is more than one type of dash-related modification that would result in a valid address, the input is considered ambiguous. For such a rejection, the Message would list the possible valid forms of the input address. This assists the user to determine how the input house number should be modified to make it valid. For example, consider the input 10-14 Lexington Avenue in Manhattan. Lexington Avenue has unhyphenated addresses only. There are two reasonable interpretations of the user\u2019s intended input in this example. These are 10 Lexington Avenue, which assumes the input is an address range, and 1014 Lexington Avenue, which assumes the dash is an inappropriately present hyphen. All of the address-processing functions consider both of these to be valid addresses. Initially, 10-14 Lexington Avenue in Manhattan was rejected as ambiguous, but, at user request, the first successful house number is accepted; i.e. 10 Lexington Avenue in Manhattan. In the borough of Queens, the great majority of streets have hyphenated house numbers only; a few streets have unhyphenated house numbers only, and a few streets have \u2018mixed hyphenation\u2019(i.e., both hyphenated and unhyphenated house numbers). In the other four boroughs, all but a few streets have unhyphenated house numbers only, a few streets have hyphenated house numbers only, and a few streets have mixed hyphenation. Riverside Drive in Manhattan is an example of a mixed-hyphenation street. A small stretch of Riverside Drive running north from West 156th Street has hyphenated even addresses ranging from 156-00 to 159- 34 (with some gaps). The remainder of Riverside Drive has unhyphenated addresses only. Information on the address hyphenation status of each of the city\u2019s streets is maintained internally within Geosupport. The house number normalizer makes use of this information when analyzing an input house number that contains a dash character. Dash analysis is particularly complex for mixed-hyphenation streets, for which a dash could be either a hyphen or a range separator. For example, 156-158 Riverside Drive is a valid range of unhyphenated addresses assigned to a building located near West 88th Street, while 156-10 Riverside Drive is a valid single hyphenated address assigned to a building located near West 156th Street. When there are more than 3 digits following the dash in an input address number on a street having unhyphenated or mixed hyphenated house numbers, Geosupport treats the dash as a range separation character and issues a warning message that the address number has been altered (GRC 01 / Reason 1). When this input occurs on a street having only hyphenated house numbers, the call is rejected and Geosupport issues an error message (GRC 13 / Reason 2).","title":"House Number Format Standards"},{"location":"chapters/chapterV/section03/","text":"V.3 Specifying Input Data to the Address-Processing Functions: NAPs, Parsed-Form Addresses, Free-Form Addresses and Unit Information Functions 1, 1A, 1B, 1E and AP are Geosupport\u2019s address-processing functions. In general, they accept as input conventional street addresses, Addressable Place names, and certain Non-Addressable Place names (NAPs) (described in Chapter III.6 and further discussed in Chapter IV.7 ). Note, however, that Function AP does not accept Non-Addressable Place names as input. Addresses can be specified in parsed form , that is, with the house number and street specified in separate WA1 input fields. The street can be specified either as a street name or a street code. Non-street feature names, pseudo-street names and intersection names may not be used. There are two options for specifying an address in parsed form: Parsed-form addresses using street name Specify a borough code (or ZIP code), street name and house number (using the WA1 input borough code (or ZIP code) and street name-1 field and either the MSW 12-byte or COW 16-byte WA1 input house number field or the MSW 6-byte WA1 input HNI field or the COW 11-byte HNS field). Parsed-form addresses using street code : Specify a borough code (or ZIP code), street code and house number. The borough code and street code may be specified using any of the WA1 input combined borough code and street code fields (the B5SC, PB5SC, B7SC or B10SC) for MSW. For COW, there is only one borough code/street code field. The house number may be specified using either the MSW 12-byte or COW 16-byte WA1 input house number field or the MSW 6-byte WA1 input HNI field or the COW 11-byte HNS field. Alternatively, addresses can be specified in free-form , that is, with the house number specified together with the street name in the WA1 input Street Name field, as described below. Non-street feature names, pseudo-street names, intersection names and partial street names ( see Chapter III.4 ) may not be used. When addresses are specified in free-form, the input house number and HNI or HNS fields are not used. NAPs are specified in the same fashion as addresses, as described above, except that typically no house number is supplied. If a house number is supplied with a NAP, Geosupport typically ignores the house number and issues a warning. If the NAP is one that actually has house numbers associated with it, then if the address exists the house number will not be ignored. ( See Chapter III.6 for more information.) Free-form addresses are addresses in which the house number and street name are stored together in a single field, as they might appear in the address line of a mailing address. When an application passes all blanks in the WA1 input house number, HNI and HNS fields, and Geosupport determines that the WA1 input Street Name field does not contain a NAP, Geosupport assumes that the latter contains a free\u2011form address, and attempts to parse the contents into a house number followed by a street name. Since both house numbers and street names vary in length, and may be separated by a varying number of blanks, these items will not be in predictable positions within a free-form address. Therefore, when processing a free-form address, Geosupport must parse the contents of the input street name field to attempt to identify and logically separate the house number and the street name. If this is successful, the processing proceeds as with parsed-form address input. If an input free\u2011form address contains any extraneous data following the house number and street name, such as an apartment number, neighborhood name, borough name or ZIP code, Geosupport attempts to recognize those data as extraneous information, in which case it ignores them, or in the case of COW function calls, Geosupport will also attempt to process the extraneous data as Unit input. (See Chapter V.15 for more discussion of the UNIT feature.) Geosupport\u2019s processing of free-form addresses is complex and is not as reliable as that for parsed-form address input. It is strongly recommended that, whenever possible, applications be designed to pass input addresses to Geosupport in parsed form, that is, to pass input house numbers and input street names in separate fields . In order to give users the ability to describe addresses in more detail, Geosupport now allows users to specify UNIT information , e.g. APT 5, on address-processing functions. This feature is described more fully in Chapter V.15 .","title":"V.3 Specifying Input Data to the Address-Processing Functions: NAPs, Parsed-Form Addresses, Free-Form Addresses and Unit Information"},{"location":"chapters/chapterV/section04/","text":"V.4 Input Address Acceptance/Rejection and its Validation Significance The address-processing functions differ significantly among themselves with respect to which input addresses they accept and reject, and with respect to the significance of the validation of an input address implied by acceptance or rejection. These distinctions are discussed below. ** Function 1. ** Function 1 accepts an input address if and only if it falls within the administrative address range allocated to some blockface (described below). Thus, Function 1\u2019s acceptance of an input address does not by itself validate whether the input address is the actual address of a building, but only whether it falls within an administrative address range. The administrative address range allocated to a blockface is the set of addresses that actually are, or potentially may be, assigned to buildings on that blockface. Administrative address ranges are allocated to blockfaces by the offices of the Borough Presidents. In many cases, the administrative address range allocated to a blockface is broader than its current \u2018actual\u2019 address range (i.e., the range encompassed by the lowest and highest actual addresses of existing buildings on the blockface). This reserves addresses for new buildings that might be built on that blockface in the future. (To \u2018shoehorn\u2019 new buildings between existing buildings, it is sometimes necessary to assign house numbers with suffixes like A, B, 1/2 and 1/3.) In theory, an administrative address range encompasses all of the actual addresses of existing buildings on the blockface. However, there are discrepancies from this in reality for a relatively small number of blockfaces, as well as temporary discrepancies caused by Geosupport data errors. An administrative address range may also encompass nonexistent addresses, either between the low and high actual addresses of the blockface or beyond them. For example, consider the blockface on the east side of East 28 Street between Avenues I and J in Brooklyn. The administrative address range allocated to this blockface is 901-999. Function 1 would accept any odd address between 901 and 999 on E 28 Street in Brooklyn as input, whether or not that input address is a valid address of an existing building. In reality, the lowest and highest actual house numbers of existing buildings on this blockface (as of the writing of this document) are 901 and 985, and within this range there are gaps in actual addresses. For example, there are buildings on East 28 Street with the house numbers 925 and 929, but there is not currently a building with the house number 927, nor are there buildings with any of the odd house numbers from 987 through 999. Nevertheless, all of these house numbers will result in successful Function 1 calls, since they all fall within the administrative address range. Function 1E With the exception of a rare case discussed below, Functions 1 and 1E accept the same addresses and reject the same addresses, and the validation significance of acceptance and rejection is the same for both functions. The exceptional case is that of an address that is split among more than one Election District (ED). As of this writing, there is only one instance of this case, 3333 Broadway in Manhattan; it is split among three EDs. Therefore, for this address, Function 1E is unable to determine an ED (or any of the higher-level political districts). Since the primary purpose of Function 1E is to provide the political geography for an address, Function 1E rejects this address with a GRC value of \u201856\u2019. However, portions of this building in specific EDs can be identified using house number suffixes, \u2018A\u2019 through \u2018E\u2019: 3333A through 3333C Broadway are in ED 94 of Assembly District (AD) 70; 3333D Broadway is in ED 82 of AD 70; and 3333E Broadway is in ED 83 of AD 70. Function 1E accepts these addresses as input, and returns the political districts specific to the input. Functions 1 and 1A accept both the un-suffixed and suffixed addresses. Function 1A Function 1A accepts an input address if and only if the address falls within one of the following two cases: Valid actual address . If the input address is a valid address of an existing building on a property, there is a normal completion (Geosupport Return Code = \u201800\u2019). Pseudo-address . If the input address is a \u2018pseudo-address\u2019 , a warning is issued (GRC = \u201801\u2019, Reason Code = \u20188\u2019 or \u20189\u2019). Pseudo-addresses (not to be confused with pseudo-street names) are discussed in Chapter VI.5 . If the input address is neither a valid address of an existing building nor a pseudo-address, Function 1A rejects that input address. This is true even if the input address falls within an administrative address range allocated to a blockface and is therefore accepted by Functions 1 and 1E. Thus, Function 1A\u2019s criterion for accepting an input address is typically more stringent than those of Functions 1 and 1E, and the validation significance of acceptance differs accordingly. Function AP Function AP accepts an input address if and only if the address falls within the following case: Valid actual address. If the input address is a valid address of an existing building on a property, there is a normal completion (Geosupport Return Code = \u201800\u2019). Function AP\u2019s criterion is very similar to Function 1A\u2019s. If the input address is not a valid address of an existing building, Function AP rejects that input address. This is true even if the input address falls within an administrative address range allocated to a blockface and is therefore accepted by Functions 1 and 1E. Thus, Function AP\u2019s criterion for accepting an input address is typically more stringent than those of Functions 1 and 1E, and the validation significance of acceptance differs accordingly. Function 1B Input Address Processing and Return Code Processing Function 1B makes an internal combined call to Extended Function 1A and Extended Function 1E (see descriptions of 1E and 1A above). Extended Functions 1A and 1E return more information than the regular Functions 1A and 1E. This is described in Chapter V.5 (Output Data Returned) below. Function 1B invokes Function 1A Extended processing first. If the input address number is altered by the Function 1A Extended processing (e.g. deleting a hyphen) the altered version of the address number is passed as input to the Function 1E Extended processing. Also, since Function 1A is more stringent than Function 1E, it is possible that the address will be rejected by the Function 1A portion of 1B and then successfully processed by the Function 1E portion of 1B. There can be rare cases where the input address is processed successfully by the Function 1A portion and rejected by the Function 1E portion. In Work Area 1, there are two sets of GRC, Reason Code and Message fields to accommodate the Function 1E and Function 1A processing included in Function 1B. The original set of GRC, Reason Code and Message fields in Work Area 1 contain the GRC, Reason Code and Message from the Function 1E Extended portion of the Function 1B call. This second set contains the GRC, Reason Code and Message for the Function 1A Extended portion of the Function 1B call. (As described above, it is entirely possible that Geosupport will find one set of information and not find the other. There can be an error code and message in the new GRC and Message fields indicating property data (Function 1A) has not been found, and a 00 or 01 GRC in the original Return Code field indicating Blockface (Function 1E) information has been found, or just the opposite.)","title":"V.4 Input Address Acceptance/Rejection and its Validation Significance"},{"location":"chapters/chapterV/section04/#function-1e","text":"With the exception of a rare case discussed below, Functions 1 and 1E accept the same addresses and reject the same addresses, and the validation significance of acceptance and rejection is the same for both functions. The exceptional case is that of an address that is split among more than one Election District (ED). As of this writing, there is only one instance of this case, 3333 Broadway in Manhattan; it is split among three EDs. Therefore, for this address, Function 1E is unable to determine an ED (or any of the higher-level political districts). Since the primary purpose of Function 1E is to provide the political geography for an address, Function 1E rejects this address with a GRC value of \u201856\u2019. However, portions of this building in specific EDs can be identified using house number suffixes, \u2018A\u2019 through \u2018E\u2019: 3333A through 3333C Broadway are in ED 94 of Assembly District (AD) 70; 3333D Broadway is in ED 82 of AD 70; and 3333E Broadway is in ED 83 of AD 70. Function 1E accepts these addresses as input, and returns the political districts specific to the input. Functions 1 and 1A accept both the un-suffixed and suffixed addresses.","title":"Function 1E"},{"location":"chapters/chapterV/section04/#function-1a","text":"Function 1A accepts an input address if and only if the address falls within one of the following two cases: Valid actual address . If the input address is a valid address of an existing building on a property, there is a normal completion (Geosupport Return Code = \u201800\u2019). Pseudo-address . If the input address is a \u2018pseudo-address\u2019 , a warning is issued (GRC = \u201801\u2019, Reason Code = \u20188\u2019 or \u20189\u2019). Pseudo-addresses (not to be confused with pseudo-street names) are discussed in Chapter VI.5 . If the input address is neither a valid address of an existing building nor a pseudo-address, Function 1A rejects that input address. This is true even if the input address falls within an administrative address range allocated to a blockface and is therefore accepted by Functions 1 and 1E. Thus, Function 1A\u2019s criterion for accepting an input address is typically more stringent than those of Functions 1 and 1E, and the validation significance of acceptance differs accordingly.","title":"Function 1A"},{"location":"chapters/chapterV/section04/#function-ap","text":"Function AP accepts an input address if and only if the address falls within the following case: Valid actual address. If the input address is a valid address of an existing building on a property, there is a normal completion (Geosupport Return Code = \u201800\u2019). Function AP\u2019s criterion is very similar to Function 1A\u2019s. If the input address is not a valid address of an existing building, Function AP rejects that input address. This is true even if the input address falls within an administrative address range allocated to a blockface and is therefore accepted by Functions 1 and 1E. Thus, Function AP\u2019s criterion for accepting an input address is typically more stringent than those of Functions 1 and 1E, and the validation significance of acceptance differs accordingly.","title":"Function AP"},{"location":"chapters/chapterV/section04/#function-1b-input-address-processing-and-return-code-processing","text":"Function 1B makes an internal combined call to Extended Function 1A and Extended Function 1E (see descriptions of 1E and 1A above). Extended Functions 1A and 1E return more information than the regular Functions 1A and 1E. This is described in Chapter V.5 (Output Data Returned) below. Function 1B invokes Function 1A Extended processing first. If the input address number is altered by the Function 1A Extended processing (e.g. deleting a hyphen) the altered version of the address number is passed as input to the Function 1E Extended processing. Also, since Function 1A is more stringent than Function 1E, it is possible that the address will be rejected by the Function 1A portion of 1B and then successfully processed by the Function 1E portion of 1B. There can be rare cases where the input address is processed successfully by the Function 1A portion and rejected by the Function 1E portion. In Work Area 1, there are two sets of GRC, Reason Code and Message fields to accommodate the Function 1E and Function 1A processing included in Function 1B. The original set of GRC, Reason Code and Message fields in Work Area 1 contain the GRC, Reason Code and Message from the Function 1E Extended portion of the Function 1B call. This second set contains the GRC, Reason Code and Message for the Function 1A Extended portion of the Function 1B call. (As described above, it is entirely possible that Geosupport will find one set of information and not find the other. There can be an error code and message in the new GRC and Message fields indicating property data (Function 1A) has not been found, and a 00 or 01 GRC in the original Return Code field indicating Blockface (Function 1E) information has been found, or just the opposite.)","title":"Function 1B Input Address Processing and Return Code Processing"},{"location":"chapters/chapterV/section05/","text":"V.5 Output Data Returned in Work Area 2 of Address Processing Functions The address-processing functions differ significantly with respect to the output data they return. Function 1 Function 1, when called using two work areas, performs blockface-level processing. Almost all of the items that Function 1 returns in WA2 are associated with the entire blockface, and do not vary with the specific input address within that blockface. Among these items is a set of geographic district identifiers, such as Census Tract and Block, Police Precinct and Community District. One piece of information returned by Function 1 that does vary with the specific input address is a pair of spatial coordinates . This identifies the approximate location of the given address on the earth\u2019s surface. School District (SD) boundaries split some blockfaces , and in those cases, Function 1 returns the SD value that is appropriate for the specific input address. However, the high and low house numbers returned in WA2 always correspond to the entire blockface, not to the portion of the blockface within the given SD. When the blockface is split by a SD boundary, no indication is provided that the blockface is split. An example of a blockface that is split by a SD boundary is the odd-address side of FARRAGUT ROAD in Brooklyn between EAST 105 STREET and EAST 108 STREET. The address range for the entire blockface is 10501 to 10799. The subrange from 10501 to 10599 is in SD 18; and the subrange from 10601 to 10799 is in SD 19. If the input to a Function 1 call is 10559 FARRAGUT ROAD, \u201818\u2019 is returned in the WA2 SD field, but 10501 and 10799 are returned as the address range for the blockface. If the input to a Function 1 call is 10611 FARRAGUT ROAD, \u201819\u2019 is returned in the WA2 SD field, but, again, 10501 and 10799 are returned as the address range for the blockface. The information that regular Function 1 returns in WA2 also includes two lists of street codes for the cross streets at both ends of the blockface. These cross street codes are B5SCs thus reflecting the primary street names. The Extended WA2 (MODE=X) also returns B7SC lists of cross streets and their street names thus reflecting the principal street names. Applications can use these cross streets to identify address-based data to blockfaces or street segments. In many applications, the consolidation of data for individual locations to the level of the blockface or street segment can significantly improve the efficiency of a municipal operation. The conversion of address-based data to segment-based data is further discussed in Chapter VII.3 . If a COW application has a need to display the street names of the cross streets ,aside from calling Function D or DG, the user can employ one of the following options: a. The Mode Switch in WA1 can be set to \u2018X\u2019 and the Extended function will return cross street codes as B7SCs and their corresponding principal street names in the extended portion of WA2. This is done with no processing overhead. This can be helpful to the user since the Primary Name is not always the best name for a particular cross street. See description of Extended Mode in Chapter II.7 ) b. The Cross Street Names Flag in WA1 can be set to \u2018E\u2019 and the cross street names will be returned in the List of Street Names in WA1 (see entries for Cross Street Names Flag and List of Street Names in Appendix 3 ). The Cross Street Names will be the primary street names since they are based on B5SCs. Note that the cross street names feature incurs processing overhead, and should only be used when necessary,. It is recommended that the Extended Mode option, mentioned above, be used. ** NOTE: There is no longer a need to set the Cross Street Names Flag to \u201cE\u201d when using Function 1 and 1E with Mode Switch of \u201cX\u201d, since the Cross Street Names are in the Extended part of the work area, ** although this will not create an error if the Cross Street Names flag is set to \u201cE\u201d. However, the Street Names returned in Work Area 1 with the Cross Street Name flag are based on the B5SCs and not the updated B7SCs. Function 1 and 1E Extended Work Areas - MODE=X (COW Only) In the Extended Function 1 and 1E work area 2, the BOE Preferred LGC and associated street name will be returned in new fields that are defined in the \u201cExtended\u201d portion of Work Area 2. The Extended Function 1 and 1E work area 2 includes additional fields such as USPS Preferred City Name, Latitude and Longitude, Neighborhood Tabulation Area (NTA) Name, PUMA Code, Bike Lane 2, Bike Traffic Direction, Street Width, Street Width Maximum, Speed Limit, etc. For a complete list, see the Work Area layout in Appendix 13 . ** Underlying Street Name or Street Address ** For NAPs and Addressable Place Names , the underlying street name or street address is returned as part of a warning message (reason code V). The street code of the underlying true street is not included in the list of cross streets. For example, Fifth Avenue is an underlying street of the Empire State Building; it will not be included in the list of cross streets for the Empire State Building. Information on the underlying true street appears in COW WA2 and MSW Long WA2. ** Additional data in COW regular WA2 and in long WA2 for MSW Functions 1 and 1E ** The long WA2 option is available for the MSW Functions 1 and 1E. Since all the additional data in the long WA2 for MSW Functions 1 and 1E are included in the regular WA2 for COW Functions 1 and 1E, there is no long WA2 option for COW. (There are extended work areas for COW Function 1/1E which are discussed below.) The additional data in COW regular WA2 and long MSW WA2 includes the following: Segment ID Borough and 7-digit street code for the underlying true street of a NAP or Addressable Place Name Underlying house number 2000 Census tract, block, and block suffix. (The 2010 fields are in the regular portion of the work area.) (COW only) Hurricane Evacuation Zone (COW Only) Organics Recycling Schedule (COW Only) Bulk Items Pickup Schedule Functions 1, 1B, and 1E allow a user to receive roadbed-specific information in place of information based upon the generic center line of a multi-roadbed street. A user requests roadbed-specific information via the \u2018Roadbed Request Switch\u2019. This means that a Function 1, 1B, or 1E call with this switch set will return the roadbed-specific geocodes, assuming that the input street has multiple roadbeds. Examples of geocodes that would be different include Segment ID, Segment Type Code, X-Y coordinates, LION Key and possibly cross streets and Census Tracts / Blocks. An additional file has been added to the Geosupport system to handle this data. Users who prefer non-roadbed-specific information, which assumes a single roadbed for all roads, are not required to make any changes. Function 1E Function 1E, when called using two work areas, returns all of the WA2 data items that Function 1 returns. In addition, Function 1E returns the following political district identifiers in WA2: Election District, State Assembly and Senate Districts, City Council District, Congressional District and Municipal Court District. Function 1E handles cases where a School District boundary splits a blockface in the same manner as Function 1 does. In addition, Election District boundaries can also split blockfaces, and Function 1E handles those cases similarly. This includes the special case of the addresses 3333A through 3333E Broadway discussed in Chapter V.6 . As indicated above, Function 1E permits roadbed-specific information to be returned to the user. For more information, refer to the description as part of Function 1. COW Function 1/1E Extended Mode - Mode Switch set to \u201cX\u201d. Geosupport has an Extended Work Area 2 for COW Functions 1 and 1E called Function 1 and 1E Extended. The first 300 bytes of Function 1 and 1E with the Mode Switch set to \u201cX\u201d will be the same as regular Function 1 and 1E calls. Note: Please see Appendix 13 for the Extended Work Area 2 layout. Some of the fields in the extended portion of the Function 1/1E Work Areas include: USPS Preferred City Name, NTA Name, PUMA Code, Latitude, and Longitude. Note: There is no longer a need to set the Cross Street Names Flag to \u201cE\u201d when using Function 1 and 1E with Mode Switch \u201cX\u201d, since the Cross Street Names are in the Extended part of Work Area 2, although this will not create an error if the field is set to \u201cE\u201d. However, the Street Names returned in Work Area 1 with the Cross Street Names flag are based on the B5SCs (thus returning the primary street names) and not based on the updated B7SCs which allow the Extended Work Area 2 to return the principal street names. Function 1A Function 1A, when called using two work areas, performs property (i.e., tax lot) and building-level processing. Function 1A returns information in WA2 associated with the specific property and building (if any) containing the input address. This information includes the property identifiers (tax block and tax lot numbers), and a list of all addresses of all buildings on the property (or as many as will fit in WA2) as well as the Building Identification Numbers (BINs) if any. Function 1A\u2019s output information is discussed in detail in Chapter VI.6 . Function 1A Extended Work Area 2 (Mode Switch set to \u2018X\u2019) \u2013 COW Only. ** The first 246 bytes of the Extended Work Area 2 for Function 1A, up to the \u201cNumber of Entries in List of Geographic Identifiers\u201d field, are the same as with regular Work Area 2. Aside from adding the new Function 1A Reason Code, Warning Code, GRC and filler to the work area for Function 1A Extended, the only change is in the address list. The Principal Street Name (based on the B7SC in the address list) has been added to each element in the address list for the user\u2019s convenience.** Note that Mode Switch of \u2018X\u2019 is not valid with the Long Work Area 2 Flag set to Y, since the Function 1A Long Work Area 2 primarily returns BINs, not street codes. Function AP (COW Only) Function AP, when called using two work areas, performs Address Point processing and some property-level and building-level processing. Function AP returns the Address Point ID and the X,Y spatial coordinates of the Address Point. In addition, Function AP returns the Borough-Block-Lot of the Address Point and its BIN. The tax-lot information in WA2 lists only one address in the lot, namely, the input address with the BIN number (if an) of the building at that address. Function AP\u2019s property output information is very similar to Function 1A\u2019s output. Function AP and Function 1A\u2019s output information is discussed in detail in Chapter VI.10 and Chapter VI.6 . Function AP Extended Work Area 2 (Mode Switch set to \u2018X\u2019) \u2013 COW Only. ** The first 246 bytes of the Extended Work Area 2 for Function AP, up to the \u201cNumber of Entries in List of Geographic Identifiers\u201d field, are the same as with regular Work Area 2. Aside from adding Function AP Reason Code, Warning Code, GRC and filler to the work area 2 for Function AP Extended, the only change is in the address list. The Principal Street Name (based on the B7SC in the address list) has been added to each element in the address list for the user\u2019s convenience.** Function 1B (COW Only) Function 1B returns Blockface-level information and political geography, followed by property-level information for a given input. Work Area 2 consists of the output of a Function 1E call with Mode Switch = \u201cX\u201d followed by the output of a Function 1A call with Mode Switch = \u201cX\u201d. The input requires borough or zip code, address number if needed, and street name or street code. Function 1B processing first retrieves the property-level information (Function 1A Extended- tax lot and building) based on the input. The Function 1A Extended processing may modify the input address (e.g. a hyphen is inserted into the address number). In any case, the input address used by Function 1A Extended is then used to retrieve the blockface and political data (Function 1E Extended). Function 1B (combined Function 1E Extended and 1A Extended) returns a total of 4300 bytes in Work Area 2. The first 1500 are for the Blockface portion (Function 1E, see description above) of the call. The next 2800 bytes are for the Property Level portion (Function 1A, see description above and Chapter VI.6 ) of the call. A second set of Geosupport Return Code (GRC), Reason Code and Error/Warning Message fields is defined in Work Area 1 to be used for Function 1B. This new set contains the GRC, Reason Code and Error or Warning Message for the Function 1A Extended portion of the Function 1B call. The original GRC, Reason Code and Message fields in Work Area 1 contain the Return Code, Reason Code and Error or Warning Message from the Function 1E Extended portion of the Function 1B call. It is entirely possible that Geosupport will find one set of information and not find the other. There can be an error code and message in the new GRC and Message fields indicating property data (Function 1A) has not been found, and a 00 or 01 GRC in the original Return Code field indicating Blockface (Function 1E) information has been found or just the opposite. Work Area 2 for Function 1B Function 1B returns a total of 4300 bytes in Work Area 2. The first 1500 are for the Blockface (Function 1E Extended) portion of the call. The next 2800 bytes are for the Property Level (1A Extended) portion of the call. In the Function 1B Work Area 2, the Function 1E Extended WA2 output portion includes all the Function 1E Extended fields. There is one difference, namely that the preferred LGC that is returned in the Function 1B Work Area 2 is the DCP preferred LGC , not the Board of Elections preferred LGC. A new Return Code and Reason Code field are defined in Work Area 2 for each of the 1E Extended and 1A Extended portions of the 1B call. This information duplicates the original and secondary Return Code and Reason Codes in Work Area 1. GBAT does not return a Work Area 1 and therefore does not return both Return Code fields. In order to make it easier for the GBAT user to see the results for both components of the 1B call, Work Area 2 contains a Return Code and Reason Code for each portion (1E and 1A). If data is found, either in the Blockface (Function 1E) call or the Property Level (Function 1A) call, that data will be returned to the user along with both Return Codes and Reason Codes. If data has been found for the Blockface (1E) portion of the call, there will be data in columns 1 through 1500 of Work Area 2 returned to the user. Columns 1005-1006 will contain the GRC for the 1E portion of the call (which will be either a \u201c00\u201d or \u201c01\u201d indicating a warning) and column 1001 will contain the Reason Code if there is a warning. If data has not been found for the Blockface (1E) portion of the call, columns 1 through 1500 will be blank aside from the Error GRC in column 1005-1006 and the Error Reason Code, if any, in column 1001. If data has been found for the Property Level (1A) portion of the call, there will be data in columns 1501-4300 of Work Area 2. Columns 1751-1752 will contain the GRC for the 1A portion of the call (which will be either a \u201c00\u201d or a \u201c01\u201d indicating a warning) and column 1747 will contain the Reason Code if there is a warning. If data has not been found for the Property Level (1A) portion of the call, columns 1501-4300 will be blank aside from the Error GRC in column 1751-1752 and the Error Reason Code, if any, in column 1747. If data has not been found for either the Blockface or Property Level request, Function 1B\u2019s Work Area 2 will be returned to the user with all fields blank aside from the two GRC and Reason Code fields mentioned above. V.5.1 Mainframe GOAT Screen for Function 1B In order to make room for more information, the Function 1B GOAT screen is formatted somewhat differently from the other GOAT screens. Since this new screen has many changes we are making an exception and describing it in the UPG. a.There is only one field for the address number (Adr #:) and street name (Strt:). The same field is now used for the user\u2019s input and the normalized output. b. The screen is basically divided into two halves \u2013 with the top half giving Blockface Level Information (Function 1E) and the bottom half giving Property Level Information (Function 1A). c. Two Return Code and Message Areas are displayed at the bottom of the screen. The first message area will reflect the Property Level portion and the second message area will reflect the Blockface and Political Level portion. d. The Function Code input field is at the very top of the screen (Function Code:). The same field is used to display \u20181B\u2019 and to allow the user to transfer to another function. e. The Unit input field is at the very top of the screen (Unit:). The same field is used to return the normalized unit display format output. Sample Mainframe GOAT Function 1B Screen","title":"V.5 Output Data Returned in Work Area 2 of Address Processing Functions"},{"location":"chapters/chapterV/section05/#function-1","text":"Function 1, when called using two work areas, performs blockface-level processing. Almost all of the items that Function 1 returns in WA2 are associated with the entire blockface, and do not vary with the specific input address within that blockface. Among these items is a set of geographic district identifiers, such as Census Tract and Block, Police Precinct and Community District. One piece of information returned by Function 1 that does vary with the specific input address is a pair of spatial coordinates . This identifies the approximate location of the given address on the earth\u2019s surface. School District (SD) boundaries split some blockfaces , and in those cases, Function 1 returns the SD value that is appropriate for the specific input address. However, the high and low house numbers returned in WA2 always correspond to the entire blockface, not to the portion of the blockface within the given SD. When the blockface is split by a SD boundary, no indication is provided that the blockface is split. An example of a blockface that is split by a SD boundary is the odd-address side of FARRAGUT ROAD in Brooklyn between EAST 105 STREET and EAST 108 STREET. The address range for the entire blockface is 10501 to 10799. The subrange from 10501 to 10599 is in SD 18; and the subrange from 10601 to 10799 is in SD 19. If the input to a Function 1 call is 10559 FARRAGUT ROAD, \u201818\u2019 is returned in the WA2 SD field, but 10501 and 10799 are returned as the address range for the blockface. If the input to a Function 1 call is 10611 FARRAGUT ROAD, \u201819\u2019 is returned in the WA2 SD field, but, again, 10501 and 10799 are returned as the address range for the blockface. The information that regular Function 1 returns in WA2 also includes two lists of street codes for the cross streets at both ends of the blockface. These cross street codes are B5SCs thus reflecting the primary street names. The Extended WA2 (MODE=X) also returns B7SC lists of cross streets and their street names thus reflecting the principal street names. Applications can use these cross streets to identify address-based data to blockfaces or street segments. In many applications, the consolidation of data for individual locations to the level of the blockface or street segment can significantly improve the efficiency of a municipal operation. The conversion of address-based data to segment-based data is further discussed in Chapter VII.3 . If a COW application has a need to display the street names of the cross streets ,aside from calling Function D or DG, the user can employ one of the following options: a. The Mode Switch in WA1 can be set to \u2018X\u2019 and the Extended function will return cross street codes as B7SCs and their corresponding principal street names in the extended portion of WA2. This is done with no processing overhead. This can be helpful to the user since the Primary Name is not always the best name for a particular cross street. See description of Extended Mode in Chapter II.7 ) b. The Cross Street Names Flag in WA1 can be set to \u2018E\u2019 and the cross street names will be returned in the List of Street Names in WA1 (see entries for Cross Street Names Flag and List of Street Names in Appendix 3 ). The Cross Street Names will be the primary street names since they are based on B5SCs. Note that the cross street names feature incurs processing overhead, and should only be used when necessary,. It is recommended that the Extended Mode option, mentioned above, be used. ** NOTE: There is no longer a need to set the Cross Street Names Flag to \u201cE\u201d when using Function 1 and 1E with Mode Switch of \u201cX\u201d, since the Cross Street Names are in the Extended part of the work area, ** although this will not create an error if the Cross Street Names flag is set to \u201cE\u201d. However, the Street Names returned in Work Area 1 with the Cross Street Name flag are based on the B5SCs and not the updated B7SCs. Function 1 and 1E Extended Work Areas - MODE=X (COW Only) In the Extended Function 1 and 1E work area 2, the BOE Preferred LGC and associated street name will be returned in new fields that are defined in the \u201cExtended\u201d portion of Work Area 2. The Extended Function 1 and 1E work area 2 includes additional fields such as USPS Preferred City Name, Latitude and Longitude, Neighborhood Tabulation Area (NTA) Name, PUMA Code, Bike Lane 2, Bike Traffic Direction, Street Width, Street Width Maximum, Speed Limit, etc. For a complete list, see the Work Area layout in Appendix 13 . ** Underlying Street Name or Street Address ** For NAPs and Addressable Place Names , the underlying street name or street address is returned as part of a warning message (reason code V). The street code of the underlying true street is not included in the list of cross streets. For example, Fifth Avenue is an underlying street of the Empire State Building; it will not be included in the list of cross streets for the Empire State Building. Information on the underlying true street appears in COW WA2 and MSW Long WA2. ** Additional data in COW regular WA2 and in long WA2 for MSW Functions 1 and 1E ** The long WA2 option is available for the MSW Functions 1 and 1E. Since all the additional data in the long WA2 for MSW Functions 1 and 1E are included in the regular WA2 for COW Functions 1 and 1E, there is no long WA2 option for COW. (There are extended work areas for COW Function 1/1E which are discussed below.) The additional data in COW regular WA2 and long MSW WA2 includes the following: Segment ID Borough and 7-digit street code for the underlying true street of a NAP or Addressable Place Name Underlying house number 2000 Census tract, block, and block suffix. (The 2010 fields are in the regular portion of the work area.) (COW only) Hurricane Evacuation Zone (COW Only) Organics Recycling Schedule (COW Only) Bulk Items Pickup Schedule Functions 1, 1B, and 1E allow a user to receive roadbed-specific information in place of information based upon the generic center line of a multi-roadbed street. A user requests roadbed-specific information via the \u2018Roadbed Request Switch\u2019. This means that a Function 1, 1B, or 1E call with this switch set will return the roadbed-specific geocodes, assuming that the input street has multiple roadbeds. Examples of geocodes that would be different include Segment ID, Segment Type Code, X-Y coordinates, LION Key and possibly cross streets and Census Tracts / Blocks. An additional file has been added to the Geosupport system to handle this data. Users who prefer non-roadbed-specific information, which assumes a single roadbed for all roads, are not required to make any changes.","title":"Function 1"},{"location":"chapters/chapterV/section05/#function-1e","text":"Function 1E, when called using two work areas, returns all of the WA2 data items that Function 1 returns. In addition, Function 1E returns the following political district identifiers in WA2: Election District, State Assembly and Senate Districts, City Council District, Congressional District and Municipal Court District. Function 1E handles cases where a School District boundary splits a blockface in the same manner as Function 1 does. In addition, Election District boundaries can also split blockfaces, and Function 1E handles those cases similarly. This includes the special case of the addresses 3333A through 3333E Broadway discussed in Chapter V.6 . As indicated above, Function 1E permits roadbed-specific information to be returned to the user. For more information, refer to the description as part of Function 1. COW Function 1/1E Extended Mode - Mode Switch set to \u201cX\u201d. Geosupport has an Extended Work Area 2 for COW Functions 1 and 1E called Function 1 and 1E Extended. The first 300 bytes of Function 1 and 1E with the Mode Switch set to \u201cX\u201d will be the same as regular Function 1 and 1E calls. Note: Please see Appendix 13 for the Extended Work Area 2 layout. Some of the fields in the extended portion of the Function 1/1E Work Areas include: USPS Preferred City Name, NTA Name, PUMA Code, Latitude, and Longitude. Note: There is no longer a need to set the Cross Street Names Flag to \u201cE\u201d when using Function 1 and 1E with Mode Switch \u201cX\u201d, since the Cross Street Names are in the Extended part of Work Area 2, although this will not create an error if the field is set to \u201cE\u201d. However, the Street Names returned in Work Area 1 with the Cross Street Names flag are based on the B5SCs (thus returning the primary street names) and not based on the updated B7SCs which allow the Extended Work Area 2 to return the principal street names.","title":"Function 1E"},{"location":"chapters/chapterV/section05/#function-1a","text":"Function 1A, when called using two work areas, performs property (i.e., tax lot) and building-level processing. Function 1A returns information in WA2 associated with the specific property and building (if any) containing the input address. This information includes the property identifiers (tax block and tax lot numbers), and a list of all addresses of all buildings on the property (or as many as will fit in WA2) as well as the Building Identification Numbers (BINs) if any. Function 1A\u2019s output information is discussed in detail in Chapter VI.6 . Function 1A Extended Work Area 2 (Mode Switch set to \u2018X\u2019) \u2013 COW Only. ** The first 246 bytes of the Extended Work Area 2 for Function 1A, up to the \u201cNumber of Entries in List of Geographic Identifiers\u201d field, are the same as with regular Work Area 2. Aside from adding the new Function 1A Reason Code, Warning Code, GRC and filler to the work area for Function 1A Extended, the only change is in the address list. The Principal Street Name (based on the B7SC in the address list) has been added to each element in the address list for the user\u2019s convenience.** Note that Mode Switch of \u2018X\u2019 is not valid with the Long Work Area 2 Flag set to Y, since the Function 1A Long Work Area 2 primarily returns BINs, not street codes.","title":"Function 1A"},{"location":"chapters/chapterV/section05/#function-ap-cow-only","text":"Function AP, when called using two work areas, performs Address Point processing and some property-level and building-level processing. Function AP returns the Address Point ID and the X,Y spatial coordinates of the Address Point. In addition, Function AP returns the Borough-Block-Lot of the Address Point and its BIN. The tax-lot information in WA2 lists only one address in the lot, namely, the input address with the BIN number (if an) of the building at that address. Function AP\u2019s property output information is very similar to Function 1A\u2019s output. Function AP and Function 1A\u2019s output information is discussed in detail in Chapter VI.10 and Chapter VI.6 . Function AP Extended Work Area 2 (Mode Switch set to \u2018X\u2019) \u2013 COW Only. ** The first 246 bytes of the Extended Work Area 2 for Function AP, up to the \u201cNumber of Entries in List of Geographic Identifiers\u201d field, are the same as with regular Work Area 2. Aside from adding Function AP Reason Code, Warning Code, GRC and filler to the work area 2 for Function AP Extended, the only change is in the address list. The Principal Street Name (based on the B7SC in the address list) has been added to each element in the address list for the user\u2019s convenience.**","title":"Function AP (COW Only)"},{"location":"chapters/chapterV/section05/#function-1b-cow-only","text":"Function 1B returns Blockface-level information and political geography, followed by property-level information for a given input. Work Area 2 consists of the output of a Function 1E call with Mode Switch = \u201cX\u201d followed by the output of a Function 1A call with Mode Switch = \u201cX\u201d. The input requires borough or zip code, address number if needed, and street name or street code. Function 1B processing first retrieves the property-level information (Function 1A Extended- tax lot and building) based on the input. The Function 1A Extended processing may modify the input address (e.g. a hyphen is inserted into the address number). In any case, the input address used by Function 1A Extended is then used to retrieve the blockface and political data (Function 1E Extended). Function 1B (combined Function 1E Extended and 1A Extended) returns a total of 4300 bytes in Work Area 2. The first 1500 are for the Blockface portion (Function 1E, see description above) of the call. The next 2800 bytes are for the Property Level portion (Function 1A, see description above and Chapter VI.6 ) of the call. A second set of Geosupport Return Code (GRC), Reason Code and Error/Warning Message fields is defined in Work Area 1 to be used for Function 1B. This new set contains the GRC, Reason Code and Error or Warning Message for the Function 1A Extended portion of the Function 1B call. The original GRC, Reason Code and Message fields in Work Area 1 contain the Return Code, Reason Code and Error or Warning Message from the Function 1E Extended portion of the Function 1B call. It is entirely possible that Geosupport will find one set of information and not find the other. There can be an error code and message in the new GRC and Message fields indicating property data (Function 1A) has not been found, and a 00 or 01 GRC in the original Return Code field indicating Blockface (Function 1E) information has been found or just the opposite.","title":"Function 1B (COW Only)"},{"location":"chapters/chapterV/section05/#work-area-2-for-function-1b","text":"Function 1B returns a total of 4300 bytes in Work Area 2. The first 1500 are for the Blockface (Function 1E Extended) portion of the call. The next 2800 bytes are for the Property Level (1A Extended) portion of the call. In the Function 1B Work Area 2, the Function 1E Extended WA2 output portion includes all the Function 1E Extended fields. There is one difference, namely that the preferred LGC that is returned in the Function 1B Work Area 2 is the DCP preferred LGC , not the Board of Elections preferred LGC. A new Return Code and Reason Code field are defined in Work Area 2 for each of the 1E Extended and 1A Extended portions of the 1B call. This information duplicates the original and secondary Return Code and Reason Codes in Work Area 1. GBAT does not return a Work Area 1 and therefore does not return both Return Code fields. In order to make it easier for the GBAT user to see the results for both components of the 1B call, Work Area 2 contains a Return Code and Reason Code for each portion (1E and 1A). If data is found, either in the Blockface (Function 1E) call or the Property Level (Function 1A) call, that data will be returned to the user along with both Return Codes and Reason Codes. If data has been found for the Blockface (1E) portion of the call, there will be data in columns 1 through 1500 of Work Area 2 returned to the user. Columns 1005-1006 will contain the GRC for the 1E portion of the call (which will be either a \u201c00\u201d or \u201c01\u201d indicating a warning) and column 1001 will contain the Reason Code if there is a warning. If data has not been found for the Blockface (1E) portion of the call, columns 1 through 1500 will be blank aside from the Error GRC in column 1005-1006 and the Error Reason Code, if any, in column 1001. If data has been found for the Property Level (1A) portion of the call, there will be data in columns 1501-4300 of Work Area 2. Columns 1751-1752 will contain the GRC for the 1A portion of the call (which will be either a \u201c00\u201d or a \u201c01\u201d indicating a warning) and column 1747 will contain the Reason Code if there is a warning. If data has not been found for the Property Level (1A) portion of the call, columns 1501-4300 will be blank aside from the Error GRC in column 1751-1752 and the Error Reason Code, if any, in column 1747. If data has not been found for either the Blockface or Property Level request, Function 1B\u2019s Work Area 2 will be returned to the user with all fields blank aside from the two GRC and Reason Code fields mentioned above.","title":"Work Area 2 for Function 1B"},{"location":"chapters/chapterV/section05/#v51-mainframe-goat-screen-for-function-1b","text":"In order to make room for more information, the Function 1B GOAT screen is formatted somewhat differently from the other GOAT screens. Since this new screen has many changes we are making an exception and describing it in the UPG. a.There is only one field for the address number (Adr #:) and street name (Strt:). The same field is now used for the user\u2019s input and the normalized output. b. The screen is basically divided into two halves \u2013 with the top half giving Blockface Level Information (Function 1E) and the bottom half giving Property Level Information (Function 1A). c. Two Return Code and Message Areas are displayed at the bottom of the screen. The first message area will reflect the Property Level portion and the second message area will reflect the Blockface and Political Level portion. d. The Function Code input field is at the very top of the screen (Function Code:). The same field is used to display \u20181B\u2019 and to allow the user to transfer to another function. e. The Unit input field is at the very top of the screen (Unit:). The same field is used to return the normalized unit display format output. Sample Mainframe GOAT Function 1B Screen","title":"V.5.1 Mainframe GOAT Screen for Function 1B"},{"location":"chapters/chapterV/section06/","text":"V.6 Duplicate Addresses New York City has a small number of duplicate addresses , which are not data errors in Geosupport files, but real duplicates in the assignment of house numbers to buildings or in the allocation of administrative address ranges to blockfaces. Some duplicate addresses were created when formerly independent towns were consolidated into one of the city\u2019s boroughs. Other duplicates involve situations in which a developer or other entity has given the same name to a private street that the city has given to a public street in the same borough. When two streets in the same borough have the same name, Geosupport treats them as portions of a single street, regardless of how far apart they are geographically. Geosupport\u2019s address-processing functions, Functions 1, 1A, 1B and 1E, when called using two work areas, have a special feature to process duplicate addresses. This feature involves the use of Duplicate Address Pseudo-Street Names (DAPSs) , described in Chapter III.6 . DAPSs are assigned to every street that has duplicate addresses, providing a means for users to specify unambiguously a particular instance of such an address. The user may alternatively specify the unique ZIP Code for the address. See Chapter III.6 for more detail. Whether a given input address is processed as a duplicate address depends on the function. Functions 1 and 1E behave identically with respect to duplicate address processing, both in the set of addresses they consider to be duplicates, and in the way addresses are processed. However, Function 1A differs from Functions 11E in both of these respects. Note, that Function 1B is a combination of Function 1A Extended and Function 1E Extended. Function 1B first calls Function 1A Extended to process the input address. During its processing, Function 1A Extended may modify the input address, (e.g. if it assumes a range). Function 1B then calls Function 1E Extended with the input address as it was modified by Function 1A Extended. Separate error messages are issued by the Function 1A Extended and the Function 1E Extended processing. Both messages are returned to the user. There are two cases of duplicate address situations : * Case 1: Overlap of Administrative Address Ranges Allocated to Two Blockfaces: The same administrative address range (discussed in Chapter V.4 ) or portion thereof is allocated to two different blockfaces on the same street in the same borough. That is, an administrative address range allocated to one blockface along a street contains, coincides with, or otherwise overlaps with, that allocated to another blockface along the same street. Any input address that is within such an overlap is processed as a duplicate address by Functions 1 and 1E. Case 2: Duplication of an Address or Address Range Assigned to Two Buildings: The same address or range of addresses is assigned to two different buildings on the same street in the same borough. Any such input address is processed as a duplicate address by Function 1A. In general, an address that is an instance of Case 2 is also an instance of Case 1, but the reverse is not necessarily true. That is, almost all addresses that are processed as duplicates by Function 1A are also processed as duplicates by Functions 1/1E, but there are many addresses that are processed as duplicates by Functions 1/1E but are not processed as duplicates by Function 1A. Hillside Avenue in Queens has addresses that exemplify both of the above cases. A Case 1 example is the following: There is a blockface of Hillside Avenue in the Bellerose neighborhood of Queens to which the administrative address range 239-02 to 239-10 is allocated. There is another blockface of Hillside Avenue, in the Douglaston neighborhood of Queens, to which the administrative address range 239-02 to 239-20 is allocated. Since the Bellerose range is entirely contained within the Douglaston range, Functions 1 and 1E process every house number in the Bellerose range (all the even house numbers on Hillside Avenue from 239-02 to 239-10) as a duplicate address. Despite the administrative address range duplication, not every individual even house number on Hillside Avenue between 239-02 and 239-10 is a valid actual building address in both Bellerose and Douglaston, i.e., is an instance of Case 2. Function 1A does not process an address as a duplicate unless it is assigned to two different buildings, even if Functions 1 and 1E process that address as a duplicate Function 1A faces three possibilities when processing an address that Functions 1/1E consider to be a duplicate, as illustrated by the following Hillside Avenue examples: 239-02 Hillside Avenue is assigned to buildings in both Bellerose and Douglaston. Therefore, this address is processed as a duplicate address by Function 1A, as well as by Functions 1/1E. 239-06 Hillside Avenue is assigned to only one building, in Bellerose. Therefore, this address is processed normally, not as a duplicate address, by Function 1A, even though it is processed as a duplicate address by Functions 1/1E. There are no buildings to which 239-04 Hillside Avenue is assigned. Therefore, this address is rejected as entirely invalid by Function 1A, even though it is processed as a duplicate address by Functions 1/1E. Processing of a duplicate address. When an address-processing function considers an input address to be a duplicate, it processes that address as follows. If the street in the input address is specified using the conventional street name (and no ZIP code is specified or an invalid ZIP code is specified), the call is rejected with a Geosupport Return Code of \u201875\u2019. The accompanying Message informs the user that the function considers this input address to be a duplicate address, and indicates the two DAPSs that could be used to specify this address unambiguously. For example, 239-02 Hillside Avenue is considered a duplicate address by all of the address-processing functions, so all of them would reject the input 239-02 HILLSIDE AVENUE and would return a GRC of \u201875\u2019 and the Message: DUPLICATE ADDRESS-USE HILLSIDE AVENUE BELLEROSE OR HILLSIDE AVENUE DOUGLASTON If the user specifies the input address using one of the DAPSs instead of the conventional street name, it is accepted . For example, 239-02 HILLSIDE AVENUE BELLEROSE is accepted by all of the address-processing functions, as is 239-02 HILLSIDE AVENUE DOUGLASTON. These functions return output information that is specific to the blockface (Functions 1/1E) or the tax lot and building (Function 1A) pinpointed by the DAPS. If the user specifies the input address using the conventional street name and a valid ZIP code then it is accepted . For example, 239-02 HILLSIDE AVENUE with ZIP code 11426 (in Bellerose) is accepted by all of the address-processing functions, as is 239-02 HILLSIDE AVENUE with ZIP code 11363 (in Douglaston). These functions use the corresponding DAPS information for the output street name and street code. These functions return output information that is specific to the blockface (Functions 1/1E, 1B) and/or the tax lot and building (Function 1A, 1B) pinpointed by the DAPS. To summarize, for an address that the function being called considers to be a duplicate, the conventional street name, without a ZIP code, is rejected; only a DAPS or a conventional street name, with a ZIP code, is accepted as an input street name for such addresses. Processing of a non-duplicate address on a street that has DAPSs. Now suppose that a particular address-processing function considers a given input address to be a valid non -duplicate. If the street does not have DAPSs (i.e., if the street does not have any addresses that are considered to be duplicates by any of the address-processing functions), then the processing does not involve the duplicate address processing feature. If the street does have DAPSs, then the address is processed as follows. If the address is specified using the conventional street name , it is accepted. For example, 239-20 Hillside Avenue is considered a non-duplicate address by all of the address-processing functions. Therefore, they all accept 239-20 HILLSIDE AVENUE as input. 239-06 Hillside Avenue is considered a non-duplicate address by Function 1A (it is valid for one building only, which happens to be in Bellerose), but it is considered a duplicate address by Functions 1/1E. Therefore, Function 1A accepts 239-06 HILLSIDE AVENUE as input, but Functions 1/1E reject this as a duplicate address for which DAPS input, or a ZIP code, is required. If the address is specified using DAPSs , the processing depends on the function: Functions 1/1E reject the address. For example, Functions 1/1E reject 239-20 HILLSIDE AVENUE BELLEROSE, as well as 239-20 HILLSIDE AVENUE DOUGLASTON. Functions 1/1E treat DAPSs as valid only for addresses they consider to be duplicates, and reject DAPSs for addresses that these functions do not consider to be duplicates. Function 1A\u2019s processing depends on whether Functions 1/1E consider the address to be a duplicate: If Functions 1/1E consider the address to be a non-duplicate, Function 1A rejects the address. For example, Function 1A rejects the input 239-20 HILLSIDE AVENUE BELLEROSE, as well as 239-20 HILLSIDE AVENUE DOUGLASTON. If Functions 1/1E consider the address to be a duplicate, Function 1A accepts the address when it is specified using the DAPS corresponding to the neighborhood where the address is valid, and rejects the address when it is specified using the other DAPS. For example, as mentioned above, 239-06 Hillside Avenue is valid only for a building in Bellerose. Therefore, Function 1A accepts 239-06 HILLSIDE AVENUE BELLEROSE, but it rejects 239-06 HILLSIDE AVENUE DOUGLASTON. Note that this contrasts with the behavior of Functions 1/1E, which reject both DAPSs when they consider an address to be a non-duplicate. We now summarize the duplicate address processing feature. Functions 1 and 1E behave identically with respect to duplicate address processing: they consider the same addresses to be duplicates, and they process all addresses in exactly the same way, both those they consider to be duplicates and those they do not. However, Functions 1/1E differ from Function 1A in certain respects. Functions 1/1E differ from Function 1A in which addresses they consider to be duplicates. Almost all addresses that Function 1A considers to be duplicates are also considered duplicates by Functions 1/1E. However, there are many addresses that Functions 1/1E consider to be duplicates that Function 1A does not. If an address-processing function considers an input address to be a duplicate, the function rejects the conventional street name, and accepts DAPSs, or conventional street names with ZIP codes. If an address-processing function considers an input address to be a valid non-duplicate, it accepts the conventional street name. If an address-processing function considers an input address to be a valid non-duplicate, and the street is specified using a DAPS, the action taken depends on the function. Functions 1/1E reject both DAPSs, regardless of whether Function 1A considers the address to be a duplicate. Function 1A\u2019s action depends on whether Functions 1/1E consider the address to be a duplicate. If Functions 1/1E consider the address to be a non-duplicate, Function 1A rejects both DAPSs. If Functions 1/1E consider the address to be a duplicate, Function 1A accepts the DAPS that corresponds to the location where the input address is a valid address of a building, and rejects the other DAPS. As mentioned earlier, Function 1B is a combination of Function 1A Extended and Function 1E Extended. Function 1B first performs Function 1A Extended processing of the input address. Function 1B then performs Function 1E Extended processing of the input address (as it was modified by Function 1A Extended). Separate error messages are issued by the Function 1A Extended and the Function 1E Extended processing. Both messages are returned to the user. If Function 1A Extended accepts the input, e.g. 239-06 Hillside Avenue, but Function 1E Extended does not, then the Function 1A portion of the Function 1B Work Area 2 will contain valid output, but the Function 1E Extended portion will show an error message rejecting the input (GRC 75) and no valid output will appear in the Function 1E Extended portion.","title":"V.6 Duplicate Addresses"},{"location":"chapters/chapterV/section07/","text":"V.7 Marble Hill/Rikers Island There are two New York City areas, Marble Hill and Rikers Island, that have the following idiosyncrasy: each is more closely identified geographically with a borough other than the borough to which the area legally belongs. The former is referred to as the \u2018alternative borough\u2019. Marble Hill : The legal borough is Manhattan, and the alternative borough is the Bronx. Marble Hill is located on the Bronx side (the north side) of a body of water separating Manhattan Island from the Bronx, and it has a land boundary with the Bronx but it is connected to Manhattan Island only by a bridge. Rikers Island : The legal borough is the Bronx, and the alternative borough is Queens. Rikers Island is physically connected to Queens via a bridge but is not connected to the Bronx. Because of their locations, Marble Hill and Rikers Island receive many of their government services from their alternative borough, and therefore they are included in many operational and administrative districts of the alternative borough. For example, most of Marble Hill is in Bronx Community District (CD) 8, and the remainder of it is in Bronx CD 7. Marble Hill also has a Bronx ZIP code (10463). Rikers Island is assigned to Queens CD1. In practice, both the legal borough and the alternative borough are used when specifying Marble Hill and Rikers Island locations. To accommodate this practice, Geosupport\u2019s address-processing and street configuration-processing functions have been designed to accept either the legal borough or the alternative borough as the input borough for Marble Hill and Rikers Island locations. For example, the Marble Hill address 150 WEST 225 STREET is accepted by the address-processing functions whether Manhattan or the Bronx is specified. The Rikers Island address 18-99 HAZEN STREET is accepted whether the Bronx or Queens is specified. When an application makes a two-work-area call to any of the address-processing or street configuration-processing functions other than Function 3S, and specifies the alternative borough for a Marble Hill or Rikers Island location, Geosupport issues a warning with a Reason Code value of \u2018C\u2019 and an appropriate Message. Except for the LION Key (viz. Borough Code, Face Code and Sequence Number) the information returned to the application in WA2 is the same regardless of which borough is specified as the input borough. Note, however, that the output borough name and street code(s) returned to the application in WA1 do depend on which borough is specified as the input borough. Each street in Marble Hill and Rikers Island has two street codes assigned to it, one for the legal borough and one for the alternative borough. The street code(s) and borough name that are returned in WA1 correspond to the input borough.","title":"V.7 Marble Hill/Rikers Island"},{"location":"chapters/chapterV/section08/","text":"V.8 Special Ruby Street Processing The address processing functions have a special feature to handle an anomaly involving a stretch of a street that lies along the Brooklyn\u2011Queens border. On the Brooklyn side, this street is called Ruby Street; on the Queens side of the same physical street, it is called 75 Street. Many residents of the Brooklyn side of this street customarily specify Brooklyn as the borough but they specify the Queens street name, 75 Street, rather than the \u2018legal\u2019 Brooklyn street name, Ruby Street. A further complication is that there is a different Brooklyn street (in Bay Ridge, far from the Queens border) that is also called 75 Street. Geosupport handles these anomalies automatically, as follows: When an address-processing function is called, and Brooklyn is specified as the input borough, and 75 STREET is specified as the input street name, Geosupport is able to determine from the input house number (assuming it is a valid house number) whether the address is on 75 Street in Bay Ridge or is actually on Ruby Street. If it is in Bay Ridge, it is processed normally. If the address is on Ruby Street, then Geosupport takes the following actions: The street name RUBY STREET and the street code for Ruby Street are returned in WA1 instead of the normalized input street name, 75 STREET, and the latter\u2019s Brooklyn street code. WA2 is returned with a full complement of data. Geosupport issues a warning with a Reason Code value of either \u20186\u2019 or \u20187\u2019. (Reason Code \u20186\u2019 indicates simply that the output street name and street code differ from the corresponding input values. Reason Code \u20187\u2019 indicates in addition that the input and output house numbers differ from each other in some way, as per Chapter V.2 . See Appendix 4 .)","title":"V.8 Special Ruby Street Processing"},{"location":"chapters/chapterV/section09/","text":"V.9 Vanity Addresses Vanity addresses are a type of geographically \u2018dislocated\u2019 address in which the street name is that of a different street from the one on which the building entrance is actually located. Developers sometimes use such addresses in the belief that a prestigious street name enhances the market value of a property. 1049 FIFTH AVENUE in Manhattan is an example of a vanity address. Although this is ostensibly a Fifth Avenue address, the building entrance to which this address is assigned is actually located on the south side of East 86th Street between Fifth and Madison Avenues. (In this case, the building has no frontages at all on the named street, although that is not a prerequisite to being a vanity address.) Functions 1 and 1E process vanity addresses as follows. A warning with Reason Code \u2019V\u2019 is issued, along with a message that indicates the \u2018true\u2019 street name (the name of the street on which the building entrance is actually located). The output data returned, including cross streets and geographic district identifiers, pertain to the true blockface. For example, the information returned for 1049 FIFTH AVENUE corresponds to the blockface on the right (south) side of East 86th Street between Fifth and Madison Avenues, not to a blockface of Fifth Avenue. In particular, East 86th Street is not returned as a cross street, since it is the true \u2018on\u2019 street; and Fifth Avenue is returned as the cross street at the low-address end of the segment. The source for the Spatial Coordinates (a.k.a. X-Y coordinates) returned for Vanity Addresses (and NAPs) is the Citywide Street Centerline file (CSCL). The CSCL information guarantees that the X-Y coordinates fall within the actual location (e.g. building footprint) of the Vanity Address. Function 1A processes vanity addresses as follows: A warning with Reason Code \u2018V\u2019 is not issued. The output data returned pertain to the actual building associated with the vanity address. In the list of geographic identifiers at least two entries will appear: one (type V entry) for the vanity address and one for the real street (a.k.a. true street or underlying street). The second entry will be either a regular address entry with house numbers and street information or a type R entry indicating the street that the entrance to the vanity address is on.","title":"V.9 Vanity Addresses"},{"location":"chapters/chapterV/section10/","text":"V.10 Out-of-Sequence Addresses In addition to vanity addresses, there is another type of geographically dislocated address called out-of-sequence addresses. In such an address, the street name does refer to the street where the referenced building entrance is actually located, but the house number is out of sequence with those of the adjacent buildings. An out-of-sequence address may or may not be so dislocated that the building entrance is on a blockface other than the one that is consistent with the normal addressing pattern of the given street. Developers sometimes request such addresses because they feel they are euphonious or easy to remember. An example of an out-of-sequence address is 62 WEST 62 STREET in Manhattan. This address refers to a building entrance located on the south side of West 62nd Street between Broadway and Columbus Avenue. In this case, the out-of-sequence address is indeed on the blockface that is consistent with the normal addressing pattern for West 62nd Street. However, the building in question is directly to the east of a building with the address range 42-44 WEST 62 STREET. This violates the normal addressing pattern for West 62nd Street, and for east-west streets on the west side of Manhattan in general, in which the house numbers consistently increase going from east to west. Functions 1 and 1E process out-of-sequence addresses as follows. A warning with Reason Code \u2018O\u2019 is issued for any address on a blockface containing an out-of-sequence address. The output data returned, including cross streets and geographic district identifiers, pertain to the blockface on which the building entrance is actually located. The Spatial Coordinates returned are those of a point calculated under the assumption that the building entrance is located at the midpoint of the blockface. An opposite-parity address contains a house number that is of the opposite parity to the predominant parity on the blockface. Opposite-parity addresses are processed in the same manner as out-of-sequence addresses.","title":"V.10 Out-of-Sequence Addresses"},{"location":"chapters/chapterV/section11/","text":"V.11 ZIP Code as Input Instead of Borough Code For Functions 1, 1A, 1B, and 1E, the user may supply the five-digit ZIP code in place of the borough code. Geosupport will determine the borough based on the ZIP code. If both a ZIP code and a borough code are supplied, the borough code will be used and, in general, the ZIP code will be ignored. Please note that the ZIP code is not validated. It is mainly used to determine the borough. For example, if you supply a ZIP code that is valid for the borough, but not for that particular location, the specified function will execute successfully. In addition, the ZIP code returned in Work Area 2 may be different than the ZIP code you have supplied. In general the ZIP codes returned in Work Area 2 are usually accurate for residential areas since these ZIP codes are validated by the Board of Elections. If you believe that the ZIP code returned by Geosupport is incorrect, please forward the address in question with the ZIP code you believe is correct to GSS_Feedback@planning.nyc.gov. See Appendix 6 for more information.","title":"V.11 ZIP Code as Input Instead of Borough Code"},{"location":"chapters/chapterV/section12/","text":"V.12 Fuzzy Search for Address Functions 1, 1A, 1B, and 1E Geosupport processes situations where there is only one possible valid similar name and that valid similar name is created by adding the word EAST or WEST to the front of the input street name (in other words, the input street name is a front-truncated street name). For example, if a user supplies 212 146 STREET in Manhattan as the input to a Function 1, 1A, 1B or 1E call, Geosupport recognizes that 146 Street does not exist in Manhattan. Since only WEST 146 STREET exists (there is no East 146 Street), Geosupport will accept the call with a warning message indicating that West 146 Street is assumed.","title":"V.12 Fuzzy Search for Address Functions 1, 1A, 1B, and 1E"},{"location":"chapters/chapterV/section13/","text":"V.13 Special Place Name Processing Functions 1 and 1E return the underlying street name of an addressable place name, and the street address of a non-addressable place name, as part of a warning message with reason code V. In addition, the underlying information is returned in code format in the COW Work Area 2 and the MSW Long Work Area 2.","title":"V.13 Special Place Name Processing"},{"location":"chapters/chapterV/section14/","text":"V.14 \u2018No Cross Street\u2019 Segment Processing When there are no cross streets at the end of a segment, Functions 1, 1E and B return the cross streets from preceding or subsequent segments. The High and Low Addresses at those cross streets are also returned. In Function 1 and 1E Extended and Function 1B, the Node ID and X-Y coordinates (spatial coordinates) at those cross streets are returned as well. If the user wishes to see the original values of the Node ID and X-Y coordinates of the original segment (which may have no cross street) those values appear in special \u2018segment\u2019 fields in Functions 1/1E Extended and Function 1B.Work Area 2.","title":"V.14 \u2018No Cross Street\u2019 Segment Processing"},{"location":"chapters/chapterV/section15/","text":"V.15 UNIT Information Feature (COW Only) Users have requested the ability to describe addresses more in more detail. Geosupport now allows users to specify UNIT information, e.g. APT 5, on COW address-processing functions The UNIT feature enables users to keep better track of information specific to units within a building. For example, it will be useful for PECO (Post Emergency Canvassing Operations) to record which units in a building were canvassed, and which units required assistance. By allowing users to input apartment numbers it will help the users keep track of whom they saw when going into the field. They can print lists with apartment numbers and keep track of which apartments were seen and which still remain to be seen. The Unit information can also be used on mailing labels, etc. Unit information may appear at the end of an input free-form address, e.g. 120 BROADWAY STE 3102 Alternatively, unit information may also appear in the Unit Input field in Work Area 1, e.g. STE 3102 ** Unit ** information consists of a ** Type ** and an ** Identifier ** . For example, \u2018APT 5\u2019 consists of a Unit Type of \u2018APT\u2019 (apartment) and a Unit Identifier of \u20185\u2019. (Unit Type and Unit Identifier are similar to NENA (National Emergency Number Association) terminology.) NENA and USPS (US Postal Service) have defined Preferred Types with a length of up to 4 characters. Geosupport converts the input Type to the Preferred Type. See Table of Preferred Types later in this section. If the unit information does not have a recognized type, the Type will be set to a pound sign, viz. #, and the data will be considered as the Identifier. If the data is longer than the space available in the Unit fields, the identifier will be truncated and a warning message (Reason Code $) will be issued. Unit information is supplied by the user in the Work Area 1 (WA1) Unit Input field for a length of 14, or at the end of a free-form address. In either case, the unit information is normalized and returned in the Output Area of WA1 in two formats \u2013 Display format and Sort format. Display format for a length of 14, with Type and Identifier concatenated with one blank in between them. Sort format for a length of 14, which is broken down into two consecutive fields Unit Type for a length of 4 Unit Identifier for a length of 10 The following table indicates the size and location of the UNIT fields in the COW Work Area 1. These fields are defined in the Geosupport COPY library. UNIT Fields Work Area 1 (COW only) Field name Size From To Functions ---- The following Unit field is in the Input portion of Work Area 1 ---- Unit Input 14 219 232 1* ---- The following Unit fields are in the Output portion of Work Area 1 ---- UNIT - SORT FORMAT 14 667 680 1* Unit \u2013 Type 4 667 670 1* Unit \u2013 Identifier 10 671 680 1* Unit \u2013 Display Format 14 681 694 1* The normalization of Unit input includes recognizing the Unit Type and Identifier and converting all Unit Types to the Preferred Unit Types. In addition, the first instance of a Type is moved to the front of the Display Unit field. Some of the basics of normalization are mentioned here. All ordinals are removed All characters aside from A-Z, 0-9, -, / are removed All extraneous blanks and all blanks before and after / or \u2013 are removed The first instance of a Type is moved to the front of the unit field with the rest of the identifier following, e.g. 1st Floor will be output as FL 1. All instances of a Type are replaced by the Preferred Type In the absence of a Type, the software will return a pound sign (#). In Display format there will always be a blank between the Type and the Identifier, e.g. MEZZA will appear as MEZZ A in a Unit output field. ( MEZZ is the preferred Type for Mezzanine.) Note: In the following discussions, blanks appear as hyphens. Consider an example where the Unit Input is ' 4TH-FLOOR '. It will be normalized to: ' FL-4 ' in the Display format. The ordinal 'TH' was removed; 'FLOOR' was replaced by the Preferred Type 'FL' ; and 'FL' was moved to the front of the Display Unit field. The Sort format is similar except that it is composed of two fields. The Type is always 4 characters. The first instance of a Type is put into the Type field of the Sort format. The Identifier has 10 characters and any numeric may have extra spaces around them to ensure that they sort properly. In this case, '4 th -FLOOR' would be appear as 'FL--' in the Sort Type field and '---4------' in the Sort Identifier field. The extra blanks before the \u20184\u2019 in the Sort Identifier field will ensure that if they are sorted, the sort version of '10TH\u2011FLOOR' ('--10------') will appear after the sort version of '4TH-FLOOR' If no Type at all is recognized in the input, then a pound sign \u2018#\u2019 is used as the Type in the Display and the Sort format. For example, if the Unit Input just had a \u20185\u2019, Then the Display format would contain '#-5' ; the Sort format would contain Type: '#---' and Identifier:'---5------'. If Unit Input is specified in the WA1 Unit Input field, and additional information also appears after the Street Name in a free-form call , then the WA1 Unit Input field is processed and the information appearing after the free-form address is ignored. When the Unit information is supplied as part of the free-form address , Geosupport continues to give the Reason Code 'W' warning message INPUT STREET NAME HAS BEEN MODIFIED In rare instances, a Unit Identifier may be truncated in an output field. In that case, if the Unit Input was specified in the WA1 Unit Input field, then a warning message is issued. The warning message is: GRC Reason Code Functions Message 01 $ 1* UNIT IDENTIFIER HAS BEEN TRUNCATED When this situation occurs with a free-form address, the original warning message with Reason Code \u2018W\u2019: INPUT STREET NAME HAS BEEN MODIFIED is still given. The following is a table of the Preferred Unit Types and the Alternate Types that are recognized as input. The Preferred Type will appear in the Unit Output fields. Table of PREFERRED UNIT TYPEs Preferred Alternate Alternate Alternate Alternate Unit Type Input 1 Input 2 Input 3 Input 4 APT APARTMENT APART APT BSMT BASEMENT BSMT BSM BSMBLDGT BUILDING BLDG BLD CLR CELLAR CELAR CELL CLR COMM COMMONS COMMON COMM COM CONC COMCONCOURSEMONS CONCOURS CONC CORR CORRIDOR CORRID CORR COR DEPT DEPARTMENT DEPT DEP FL FLOOR FLR FL FRNT FRONT FRNT FRT HNGR HANGER HNGR KEY KEY LBBY LOBBY LBBY LBY LOT LOT LVL LEVEL LEVL LVL LEV LOWR LOWER LOWR LOW MEZZ MEZZANINE MEZZ MEZ OFC OFFICE OFFIC OFF PH PENTHOUSE PNTHSE PH PIER PIER REAR REAR RM ROOM RM SIDE SIDE SLIP SLIP SLP SPC SPACE SPAC SPC STG STORAGE STORAG STRG STG STOP STOP STP STE SUITE SUIT STE TRML TERMINAL TRMNL TRML UNIT UNIT UNT RM ROOM RM UPPR UPPER UPPR UPR WING WING WNG ** Mainframe GOAT (CICS) Support of Unit - Functions 1A and 1B ** Function:1A Input: Field labeled 'Unit' is available for input data. Output: Field labeled 'Norm Unit Disp' displays the Normalized Display Format Unit Output field. Function:1B Input: Field labeled \u2018Unit\u2019 is available for input data. Output: To save screen space, the Field labeled 'Unit' that was used for input is also used for output and displays the Normalized Display Format Unit Output field. ** Mainframe GBAT Support - Functions 1A and 1B ** ** Required ** GBAT Control Entries WORKAREA=COW RECTYPE=1A or 1B ** Optional ** GBAT Control Entries UNIT=S,L defines location of Unit input field(not required if input data is free-form only) GEOUNIT=YES or NO specifies if GBAT returns the Normalized Display Format Unit output field. GEOCODE=NO or ALL required if GEOUNIT=YES ** Optional LRECL ** change If GEOUNIT=YES is in effect, the LRECL of OUTFILE must be increased by 70. For more detail on GBAT Unit processing, see Chapter IX, Appendix 9, and Appendix 12. ** Summary of Geosupport support of Unit processing ** As of this writing, Unit Processing is supported by: Mainframe Batch and CICS Desktop Edition Linux Edition .net and Java classes Mainframe GBAT Batch (Functions 1A and 1B) Mainframe GOAT CICS (Functions 1A and 1B) Desktop Edition GBAT (Functions 1A and 1B)! Web GOAT As of this writing, Unit fields are not processed by: Mainframe GBAT Batch (Functions 1 and 1E) Desktop Edition GBAT (Functions 1 and 1E) Desktop Edition GOAT","title":"V.15 UNIT Information Feature (COW Only)"},{"location":"chapters/chapterVI/chapterVI/","text":"CHAPTER VI TAX LOT AND BUILDING PROCESSING - FUNCTIONS 1A, BL, BN / ADDRESS POINT PROCESSING - FUNCTION AP","title":"Chapter VI"},{"location":"chapters/chapterVI/section01/","text":"VI.1 Introduction New York City has approximately one million parcels of privately and publicly owned real property, called tax lots, containing more than 800,000 buildings. This chapter describes the Geosupport functions that process tax lots and buildings, Functions 1A, BL and BN. It also describes the Geosupport function that provides the Address Point information for addresses in New York City, Function AP. Two data items discussed in detail in this chapter, the Borough-Block-and-Lot (BBL) and the Building Identification Number (BIN), serve as unique identifiers for tax lots and buildings, respectively. (Addresses are non-unique building identifiers, since many buildings have more than one address.) Function 1A accepts address input, Function BL accepts BBL input, and Function BN accepts BIN input. Address Point IDs which relate to a \u2018real\u2019 posted address, and BBL and BIN information can be retrieved via Function AP. Function AP accepts address input. For more information on Function AP and Address Points, see Chapter VI.10 . Functions 1A, 1B, BL, and BN return property information that is updated on a weekly basis. (Prior to Version 17.1/Release 17A, the property information was updated on a quarterly basis. For Function 1B, only the property level data will be updated weekly 4 .) COW users may request more up-to-date information relating to new buildings and demolitions via the TPAD Request Flag for Functions 1A, 1B, BL and BN. (Note that TPAD information is not available for Function AP. Also, for Function AP, the property information continues to be updated on a quarterly basis.) For more information on the TPAD feature see Chapter VI.11 which discusses TPAD 5 BIN and Status Information (COW only). See also Appendix 17 which discusses TPAD error processing and work area field names. _________________________ 4 The weekly updates are typically available to users on the DoITT mainframe. For other users, discuss availability with the Geosupport Staff. 5 TPAD \u2013 Transitional Property Address Directory","title":"VI.1 Introduction"},{"location":"chapters/chapterVI/section02/","text":"VI.2 Tax Lots and BBLs The city\u2019s tax geography is designated and modified by the New York City Department of Finance (DOF). The tax geography consists of the subdivision of the territory of the city (excluding city-owned land that is mapped for streets) into tax blocks , each of which is further subdivided into one or more tax lots . Each tax block is identified, uniquely within its borough, by a tax block number assigned by DOF. Each tax block can consist of one, more than one, or a portion of one physical city block. Each tax lot is identified, uniquely within its tax block, by a tax lot number assigned by DOF. Thus, each of the city\u2019s tax lots is identified, uniquely within the entire city, by the combination of three items, the borough code, tax block number and tax lot number. These items are often concatenated to form a single data item called the Borough-Block-and-Lot (BBL). DOF strives to keep the tax block numbering as stable as possible over time, to facilitate property title searches and other historical record-keeping. For example, when a new stretch of street divides what was a single physical block into two physical blocks, DOF generally retains the old tax block number for both of the new physical blocks. As a result, there are many tax blocks that consist of more than one physical block. Occasionally, DOF does subdivide a tax block into two or more new tax blocks, assigning new tax block numbers to them. This may be done when a large area of land is being developed, often in conjunction with the mapping of a new pattern of streets. In recent years, this has most commonly occurred in Staten Island. In contrast to the relatively stable tax block geography, the tax lot geography is quite volatile. DOF constantly merges and \u2018apportions\u2019 (subdivides) tax lots, generally assigning new tax lot numbers to the newly created tax lots. However, DOF sometimes reassigns the tax lot number of a \u2018predecessor\u2019 lot (one of the lots that is being merged or apportioned out of existence) to a \u2018successor\u2019 lot. As a result, it is possible for the same BBL value to refer simultaneously to an existing tax lot and to one or more tax lots that no longer exist. Figure VI-1, below, illustrates the tax geography for a portion of Manhattan in the vicinity of City Hall. Figure VI-1: Tax Geography for a Portion of Manhattan The large numbers in Figure VI-1 are tax block numbers, and the small numbers are tax lot numbers. Notice that tax block 153 is a case of a tax block consisting of two physical blocks. Also notice that tax blocks 154 and 155 both have a tax lot 1, exemplifying that tax lot numbers are unique only within a tax block . (Similarly, tax block numbers are unique only within a borough.)","title":"VI.2 Tax Lots and BBLs"},{"location":"chapters/chapterVI/section03/","text":"VI.3 Buildings and Building Identification Numbers (BINs) Many city agencies must maintain and process building-related data rather than, or in addition to, tax lot-related data. These two levels of processing are distinct, since a single tax lot can contain more than one building or no buildings. A critical issue for building-level processing is to be able to identify buildings consistently . Neither addresses nor BBLs are suitable to serve as consistent identifiers for buildings. Some shortcomings of using addresses as building identifiers are as follows: Many buildings have more than one address. Some buildings have no addresses. The same address can identify both an existing building and a demolished one. New York City has a small number of instances in which two different existing buildings have the same address (see Chapter V.6 ). Some shortcomings of using BBLs as building identifiers are as follows: Some tax lots contain more than one building. The relationship of buildings to tax lots is volatile, since tax lots are often subdivided and merged over time. In order to provide a unique, immutable, citywide standard for building identification that can support consistent building-level processing, GSS has developed a set of Building Identification Numbers (BINs) that are assigned to every known building in the city. (BINs are distinct from, and should not be confused with, house numbers.) A BIN is a seven\u2011byte numeric item, the first digit of which is the borough code. If a BIN field in a Geosupport work area is \u2018empty\u2019 (devoid of information), it contains the borough code followed by all zeros (in contrast to most Geosupport fields, which contain all blanks when \u2018empty\u2019). These are often referred to as zero BINs or \u2018million\u2019 BINs (e.g. 1000000, 2000000, etc.). By using BINs as the building identifier, city agencies can process and match building-related data easily and in a consistent manner. Indeed, there are buildings that do not have either an address or a Non-Addressable Place Name (NAP) and can be identified only by their BIN. In this document, such buildings are called Non-Addressable Un-named Buildings (NAUBs) . Typical examples of NAUBs are some storage sheds on industrial lots and some comfort stations in parks. The proliferation of the use of BINs among city agencies facilitates matching data by building across applications and across agencies. The Department of Buildings, which is particularly involved with building-level processing, uses BINs to identify buildings in its major computer applications. The BIN that is assigned to a building is never changed (except to correct assignment errors); it remains assigned to that building permanently, even if the building is subsequently demolished or its BBL changes as a result of a tax lot merger or apportionment. If a building is demolished, and a new building is subsequently built and given the same address as that of the demolished building, GSS assigns to the new building a new BIN, different from that of the demolished building. In this case, the same address ambiguously identifies two distinct buildings (the new one and the demolished one), but each building is unambiguously identified by its own unique BIN. However, only the \u2018active\u2019 BIN for an address is returned in the Geosupport System at one time, unless the user sets the TPAD request switch in which case a Transitional BIN may also be returned for a given address (see Chapter VI.11 for more information). That is, only one BIN per address is accepted as Function BN input and returned as Function 1A, 1B and BL output. Generally, the active BIN of an address is the BIN assigned to the most recent building at the given address. Function BN also accepts as input the BINs assigned to buildings that have no addresses, such as NAUBs.","title":"VI.3 Buildings and Building Identification Numbers (BINs)"},{"location":"chapters/chapterVI/section04/","text":"VI.4 Condominiums and Billing BBLs Condominiums are a class of properties with unique characteristics. A condominium consists of condominium units , each of which constitutes a separate tax lot that has its own BBL. In a residential condominium, the condominium units are generally the individual apartments. In a commercial condominium, the units might be retail shops or blocks of space in an office building. There are also mixed-use condominiums that have both commercial and residential units. A condominium can encompass all or part of a building or more than one building, possibly on more than one tax block. The individual units in a condominium (but not the condominium itself) are parcels of real property. For example, title to an individual unit can be conveyed via a deed; unit owners are responsible for paying real estate taxes directly to the city; and liens can be placed against units. Many municipal operations relate to condominiums as a whole rather than to specific condominium units. Examples are collecting sanitation fines, issuing code violations and inspecting and licensing building-wide systems such as boilers and elevators. To distinguish condominiums from their constituent units, DOF has assigned to each condominium a set of special tax lot identifiers called the billing BBL . (Condominiums are also identified by a Condominium Identification Number, also assigned by DOF.) If a condominium occupies land on more than one tax block, DOF assigns a billing BBL to each portion of the condominium on a separate tax block. Function BL accepts billing BBLs as valid input data, and Functions 1A and BN return them as output data. DOF assigns billing BBLs only to condominiums, not to condominium units or non-condominium properties. Billing BBLs do not represent actual tax lots, and are not lienable. However, billing BBLs do provide a mechanism to obtain the name and address of a more appropriate party than a unit owner to communicate with concerning condominium-wide matters. DOF maintains files keyed to BBL which, for conventional BBLs, contain the names and addresses of parties registered to receive bills for real property taxes, often the property owner, but possibly a property manager, attorney or mortgagee. For a condominium billing BBL, the party listed might be an officer of the condominium, a property manager or an attorney. (Note: Geosupport does not provide direct access to DOF\u2019s files; to arrange such access, contact DOF.) In some instances there may be a condominium that has not yet been assigned a Billing BBL by DOF (or the Billing BBL was not yet available when the Geosupport files were generated); in these cases the BBL that is returned by Geosupport is set to zero and a warning message is issued.","title":"VI.4 Condominiums and Billing BBLs"},{"location":"chapters/chapterVI/section05/","text":"VI.5 Vacant Street Frontages and Pseudo-Addresses \u2018Real\u2019 addresses are officially assigned to new buildings by the topographic bureaus at each of the five borough president\u2019s offices. In addition, GSS assigns addresses called pseudo-addresses to some vacant street frontages of tax lots, that is, to street frontages that do not have \u2018real\u2019 building addresses. Pseudo-addresses have no \u2018official\u2019 status; they are not meaningful outside of the Geosupport System and should not be used for any operational purpose. In particular, mail sent to a pseudo-address is likely to be undeliverable. Since pseudo-addresses are not associated with buildings, they do not have associated BINs. Note: Pseudo-addresses are not to be confused with the unrelated concept of pseudo-street names (discussed in Chapter III.6 ). When assigning a pseudo-address, GSS attempts to anticipate what \u2018real\u2019 address might someday be assigned to a building if one were to be built at that location. However, the assignment of pseudo-addresses can sometimes involve an element of arbitrariness, especially where there is a wide gap between the two real addresses that \u2018sandwich\u2019 a vacant frontage, or where there is a row of several adjacent vacant frontages. When assigning a pseudo-address, at a minimum, GSS uses a house number that is not already in service on the given street and that is in proper sequence with nearby real house numbers and with any previously assigned pseudo-addresses. If no such house number is available, no pseudo-address is assigned to that vacant street frontage. Function 1A is designed to accept as input both real addresses and pseudo-addresses. Also, both Function 1A and Function BL include pseudo-addresses in the list of geographic identifiers that they return for a tax lot Pseudo-addresses serve the following purpose: Certain information is obtainable from Geosupport by address but not by BBL, such as many political and administrative district identifiers that Functions 1 and 1E return. For vacant tax lots, which have no buildings at all and therefore no real addresses, pseudo-addresses provide the only means to obtain such information from Geosupport. Of course, for those vacant tax lots that have no pseudo-addresses assigned to them, it is not possible to obtain such information from Geosupport. If a pseudo-address comes to be assigned as a real address of a newly constructed building, GSS changes that address\u2019s classification in the Geosupport System from pseudo-address to real address. At the same time, the address\u2019s tax lot might also change, if the new building happens to be on a different tax lot than the lot to which the address had been assigned as a pseudo-address. Real addresses can also change status and become either Geosupport rejects or pseudo-addresses, as the result of building demolitions. Geosupport is updated to reflect such changes, but time lags are possible.","title":"VI.5 Vacant Street Frontages and Pseudo-Addresses"},{"location":"chapters/chapterVI/section06/","text":"VI.6 Function 1A Function 1A processes input addresses and NAPs. When Function 1A is called using two work areas, it returns information in WA2 related to the tax lot and the building (if any) identified by the input data (see work area layouts in Appendix 2(MSW) and Appendix 13 (COW) . If the input address is a pseudo-address, a warning is issued with Reason Code \u20188\u2019 or \u20189\u2019. See Chapter V for a general discussion of Geosupport address processing, much of which is applicable to Function 1A. In particular, the various combinations of data items that can be used to specify an input address are described in Chapter V.3 . Chapter V.4 discusses how Function 1A differs from the other address-processing functions with respect to the validation significance of input address acceptance and rejection, and explains why Function 1A is the best address-processing function to use to validate addresses. Special address processing features discussed in Chapter V are also available with Function 1A, including duplicate address processing, the special Marble Hill/Rikers Island feature, and the special Ruby Street feature. An important purpose of Function 1A is to provide the BBLs for which addresses are known. The BBLs can then be used (outside of the Geosupport System) to retrieve information from various city files that are keyed to BBL, including DOF\u2019s billing address files, from which the name and mailing address of the party registered to receive real estate tax bills can be retrieved. This same party might also be an appropriate recipient for many other property-related city mailings, such as notices of inspections, violations, summonses, fines, hearing notifications and licenses. If the property is part of a Business Improvement District (BID), the BID is returned in Work Area 2 as a borough and five-digit street code (B5SC). Function D may be used to obtain the name of the BID. The latitude and longitude of the location are also returned by COW Function 1A. In addition, COW Function 1A returns the DCP Zoning Map number. The long WA2 option (COW and MSW) as well as the Extended WA2 option (COW only) are available for Function 1A. Note that Extended WA2 is not valid if Long Work Area 2 is in effect. All three WA2s (viz. regular, long, and extended) for Function 1A contain a set of data organized into a list. The list in the regular WA2 and the Extended WA2 is a List of Geographic Identifiers (LGI). The LGI is intended to provide a comprehensive geographic profile of the tax lot by listing, so far as the information is known and space allows, all of the buildings the lot contains; all of the street addresses and non-addressable street frontages of each of those buildings; all of the vacant street frontages of the lot; and all NAPs associated with the lot. See the entry for the List of Geographic Identifiers in Appendix 3 for a detailed discussion of the contents of the LGI. The LGI\u2019s entries are ordered so that entries with non-empty BINs are listed first, grouped by BIN. If the input address is a real address, the first group of entries in the LGI consists of the entries for the BIN corresponding to the input address, and (except for certain special cases) the very first entry is an address range encompassing the input address. (The special cases are when the input information contains the alternative borough for a Marble Hill or Rikers Island location or the alternative street name or street code for a Ruby Street address -- see Chapters V.7 and V.8 . Any entries with empty BINs (a.k.a. zero BINs), such as entries for pseudo-address ranges, are listed after the entries with non-empty BINs as space in the LGI allows. If the input address is a pseudo-address, an address range encompassing it may or may not appear in the LGI, depending on the availability of space in the LGI and on the order in which the non-BIN entries happen to be listed. The LGI has a maximum capacity of 21 entries, which for almost all tax lots is sufficient to contain all of the lot\u2019s geographic identifiers. A tax lot that does have more than 21 geographic identifiers is said to have the \u2018LGI overflow condition\u2019. The LGI overflow condition is indicated by a value in the LGI Overflow Flag in Function 1A\u2019s regular WA2, as well as by the issuance of a warning (Reason Code \u2018A\u2019). By definition, when a tax lot has the LGI overflow condition, some of the lot\u2019s geographic identifiers are not included in the LGI. In particular, it is possible that the BINs of some of the lot\u2019s buildings do not appear in the LGI. The purpose of the long WA2 option for Function 1A is to provide a means for applications to retrieve a complete list of BINs for all the buildings on a tax lot, even for lots that have the LGI overflow condition. The long WA2 contains a List of Buildings on the Tax Lot. Each entry in this list consists only of a BIN; the list includes no address, street frontage or NAP information. (Such information can be obtained for each of the lot\u2019s buildings by making Function BN calls.) The maximum capacity of the List of Buildings is 2,500, which is sufficient to list the BINs of all of the buildings on any tax lot in New York City. Applications can use the long WA2 option for all tax lots, even for those that do not have the LGI overflow condition. Using the long WA2 option for every Function 1A call, rather than only for tax lots that have the LGI overflow condition, may be advantageous in applications that require a list of BINs but do not require the other information returned in the LGI. Doing so simplifies application design: only a single Function 1A call would be required for each input address, and the List of BINs, unlike the LGI, contains every BIN for the lot without repetition. However, users should be aware that, for tax lots that have the LGI overflow condition, a long WA2 call causes Function 1A to perform more I/O operations than a regular WA2 call. If the input address to a Function 1A call (using the regular WA2, the long WA2, or the Extended WA2), is that of a condominium , Geosupport returns a \u2018C\u2019 in the Condominium Flag in WA2. In addition, the following information is returned for condominiums: Condominium Billing BBL (or the billing BBL of the portion of the condominium in the tax block containing the input address, if the condominium is in more than one tax block). In some instances there may be a condominium that has not yet been assigned a Billing BBL by DOF (or the Billing BBL was not yet available when the Geosupport data files were generated); in these cases the BBL that is returned by Geosupport is set to zero and a warning message issued. DOF Condominium Identification Number (provided that DOF has assigned an ID number to the condominium and GSS has entered it into the Geosupport data). The low BBL of all the condominium units in the building identified by the input address. The high BBL of all the condominium units in the building identified by the input address. For the positions of these fields in Work Area 2, see Appendix 2 and Appendix 13 for MSW and COW respectively. Function 1A Extended Work Area 2 (Mode Switch set to \u2018X\u2019). This option is available in COW only. The first 246 bytes of the Extended Work Area 2 for Function 1A, up to the \u201cNumber of Entries in List of Geographic Identifiers\u201d field, are the same as with regular COW Work Area 2. Aside from adding some filler and the new Function 1A Reason Code, Warning Code, and GRC fields (which are identical to the WA1 fields) to the work area for Function 1A Extended, the only change is in the address list. The street codes in the address list are B7SCs instead of B5SCs. The Principal Street Name (based on the B7SC in the address list) has been added to each element in the address list for the user\u2019s convenience. Note that Mode Switch of \u201cX\u201d is not valid with the Long Work Area 2 Flag set to Y, since the Function 1A Long Work Area 2 primarily returns BINs, not street codes.","title":"VI.6 Function 1A"},{"location":"chapters/chapterVI/section07/","text":"VI.7 Function BL The input to Function BL is a BBL identifying a tax lot. Like Function 1A , Function BL can be called with the long WA2 option. As with COW Function 1A, COW Function BL can be called requesting the Extended Work Area 2 (Mode Switch set to \u2018X\u2019). The layouts of the regular, long and extended WA2s for Function BL are the same as the corresponding layouts for Function 1A, as described in Chapter VI.6 . However, since the input information to Function BL identifies only a tax lot, whereas the input information to Function 1A identifies a specific building via its address, the contents of certain WA2 fields have a different significance for Function BL than for Function 1A. These fields are the BBL (in positions 29-38 for MSW and 34-44 for COW), the BIN (in positions 70-76 for MSW and 82-88 for COW), and the LGI (in positions 184-939 for MSW and 251-1363 for COW) of the regular WA2. All other WA2 fields have the same contents for both functions. For Function BL, the contents of the WA2 fields for the BBL, BIN and LGI are as follows: If the input BBL identifies a single-building non-condominium tax lot: The output BBL field contains the input BBL. The BIN field contains the BIN of the tax lot\u2019s only building. The LGI may contain all types of entries. As with Function 1A, the LGI may or may not be comprehensive with respect to the tax lot\u2019s real address ranges and with respect to its BINs. If the input BBL identifies a multi-building non-condominium tax lot: The output BBL field contains the input BBL. The BIN field contains the BIN of an arbitrary one of the tax lot\u2019s buildings. The LGI may contain all types of entries. As with Function 1A, the LGI may or may not be comprehensive with respect to the tax lot\u2019s real address ranges and with respect to its BINs. If the input BBL identifies a vacant tax lot, i.e., a tax lot that has no buildings: The output BBL field contains the input BBL. The BIN field contains the Borough Code followed by all zeros. The LGI consists of all of the pseudo-address ranges (type Q entries) assigned to the tax lot, and all vacant street frontages (type F entries) of the tax lot. If the input BBL identifies a condominium unit: The output BBL field contains the billing BBL of the condominium (except in cases where a billing BBL has not yet been assigned by DOF (or the billing BBL was not available when the Geosupport data files were generated), in which case the BBL returned contains zeros and a warning message is issued). If the condominium occupies portions of more than one tax block, the output BBL field contains the billing BBL of the portion of the condominium that is specific to the tax block containing the input condominium unit. The BIN field contains the BIN of the building that contains that unit. The LGI contains building-related entries (real address ranges, NAUBs (type B entries), NAPs (type G, N and X entries) and blank-wall building frontages (type W entries)) only for the building containing the input condominium unit, and is comprehensive for that building. The LGI can contain all non-building-related types of entries (vacant street frontages (type F entries) and pseudo-address ranges (type Q entries)). If the input BBL is a billing BBL of a condominium: The output BBL field contains the input BBL. The BIN field contains the BIN of an arbitrary one of the condominium\u2019s buildings on the tax block identified by the input billing BBL. The LGI may contain all types of entries. As with Function 1A, the LGI may or may not be comprehensive with respect to the tax lot\u2019s real address ranges and with respect to its BINs.","title":"VI.7 Function BL"},{"location":"chapters/chapterVI/section08/","text":"VI.8 Standard and Legacy Versions of Functions 1A and BL The version of Functions 1A and BL that is documented in this User Programming Guide is called the standard version . The standard version was first created in 1995 when major modifications were made to Functions 1A and BL. The predecessor version of Functions 1A and BL is called the legacy version . The legacy version is no longer supported and was discontinued as of version 10.0. If you have programs that use the legacy PAD, please refer to the Geosupport Technical Bulletin 05-1 dated February 18, 2005 for information on converting to standard PAD. Copies of this bulletin are available upon request to GSS_Feedback@planning.nyc.gov. All MSW applications that invoke Functions 1A and BL must set the 1ABL Version Switch to the value \u2018S\u2019. Note: COW applications only support standard PAD, so the 1ABL Version Switch is not applicable.","title":"VI.8 Standard and Legacy Versions of Functions 1A and BL"},{"location":"chapters/chapterVI/section09/","text":"VI.9 Function BN Function BN processes a building specified by an input BIN. Function BN does not have the long WA2 option. However, the Mode Switch of X (Extended) is available as an option. The layout of the regular WA2 for Function BN is identical to that of the regular WA2 for Function 1A, while the layout of the Extended WA2 is the same as that of the Extended WA2 for Function 1A. However, in Function BN\u2019s WA2, the LGI contains entries only for the input building; not for any other buildings on the tax lot. It also does not contain any vacant street frontage (type F) or pseudo-address (type Q) entries. Function BN\u2019s LGI is always complete with respect to the input building, since there is no building in New York City that has more than 21 geographic identifiers. Except for the difference in the contents of the LGI and its list counter field, the Number of Entries in the LGI, the contents of Function BN\u2019s WA2 and Function 1A\u2019s regular WA2 are identical for a given tax lot.","title":"VI.9 Function BN"},{"location":"chapters/chapterVI/section10/","text":"VI.10 Function AP (COW Only) Emergency Management and the Department of Health and Mental Hygiene have a need to geocode addresses to their corresponding CSCL address points. By geocoding to a CSCL address point, the user application will presumably geocode to a \u2018real\u2019 posted address \u2013 not an address that might be part of an administrative range for a building. The Functions AP and AP Extended 6 (a.k.a. APX) return the desired information. Function AP processes input addresses. When Function AP is called using two work areas, it returns information in WA2 related to Address Point, tax lot and the building identified by the input data. Work Area 2 contains the Address Point ID and X, Y coordinates of the Address Point. It also contains some property information such as the BBL and BIN of the input address. Note that the Work Area 2 contains information related only to the input address, not to any other addresses or buildings on the lot. The Work Area 2 layouts for Functions AP and AP Extended are very similar to those of Functions 1A and 1A Extended. Only those fields deemed necessary for the AP function are returned with AP and AP Extended. Fields that are not needed are filler. The field names in the copylibs are typically very similar to each other except for the prefixes. Since the AP function is requesting the address point of only one address, Geosupport returns only one address in the Work Area 2 address list. See the Function AP work area layouts in Appendix 13 (COW) . See Chapter V for a general discussion of Geosupport address processing, much of which is applicable to Function AP. Function AP Extended Work Area 2 (Mode Switch set to \u2018X\u2019). The first 246 bytes of the Extended Work Area 2 for Function AP, up to the \u201cNumber of Entries in List of Geographic Identifiers\u201d field, are the same as with regular COW Work Area 2. Aside from adding some filler and the Function AP Reason Code, Warning Code, and GRC fields (which are identical to the WA1 fields) to the work area for Function AP Extended, the only change is in the address list. The street codes in the address list are B7SCs instead of B5SCs. The Principal Street Name (based on the B7SC in the address list) is added to each element in the address list for the user\u2019s convenience. _________________________ 6 Function AP Extended is also known as Function APX. It is invoked by calling Function AP with the Mode Switch set to X.","title":"VI.10 Function AP (COW Only)"},{"location":"chapters/chapterVI/section11/","text":"VI.11 Transitional Property Address Directory (TPAD) Building Identification Number (BIN) and status information for Functions 1A, 1B, BL and BN (COW Only) (Note: For more information about the TPAD feature, including error processing, be sure to see Appendix 17 .) The TPAD File: The TPAD (Transitional Property Address Directory) file, allows users to get some up\u2010to\u2010date property related information. Geosupport has four functions (1A, 1B, BL and BN) that access the Property Address Directory (PAD) file. The PAD file contains property level information and is updated on a quarterly 7 basis. In order for users to get more up\u2010to\u2010date information regarding the status of new building construction and/or demolition, the Department of City Planning (DCP) has created the TPAD file. The TPAD file is updated daily with new information received from the Department of Buildings (DOB) regarding job filings for new buildings (NB). DOB uses the BIN-On-Demand system to obtain a new BIN at the time that an applicant pre-files an application on an address not currently in Geosupport. The newly assigned BINs are included in the TPAD file. In addition, changes in status of both NB and demolition (DM) jobs are updated weekly . Invoking the TPAD functionality: To invoke TPAD processing, Geosupport users set the TPAD request switch in Work Area 1. When this switch is set to \u2018Y\u2019 for a 1A, 1B, BL or BN call, Geosupport will read the TPAD file along with the PAD file, thereby being able to return more up\u2010to\u2010date information to users. The TPAD Switch is located in position 329 of the COW Work Area 1. If the switch is set to \u2018N\u2019 or blank, then no TPAD processing is performed. If the TPAD Switch is set to \u201cY\u201d, then the following TPAD information will be returned to the user for Functions 1A, 1B, BL, and BN: Work Area 2 Fixed Portion Status of DM Job for BIN of the Input Address New BIN for NB Job for Input Address or BBL Status of NB Job Conflict Flag Work Area 2 Address List Status of Job for this BIN in the Address List TPAD Status Values are as follows: TPAD Status Value Associated Job Type Description space n/a No activity for this address 0 NB New BIN issued (for DOB); NB Job application not yet filed 1 NB NB Job application filed and paid for 2 NB NB Job signed off [temporary or final Certificate of Occupancy (T/CO or C/O) issued] 3 NB New BIN issued (for HPD 8 ); NB Job application not yet filed 5 DM DM Job application filed and paid for 6 DM DM Job signed off (building demolished) When the TPAD Switch is set \u2018on\u2019, Geosupport will always return a value in the TPAD Conflict Flag in Work Area 2. On occasion, when there are conflicts between the data in the PAD and the TPAD record, the Conflict Flag in Work Area 2 will be set to a value greater than \u20181\u2019. The possible values of the Conflict Flag are described in the table below. See Appendix 17 for a detailed description of the contents of the Geosupport Return Code, Reason Code, Reason Code Qualifier, and Error Message, when TPAD processing is requested. TPAD Conflict Flag Value Meaning (and associated TPAD Warning Message) 0 TPAD data found, no conflicts with PAD data (no warning message returned) 1 PAD found, no TPAD data found (no warning message returned) 2 TPAD BBL used, no existing PAD BBL 3 TPAD BBL used, PAD pseudo\u2010address on different BBL than TPAD NB BIN 4 TPAD BBL used, existing PAD BIN of Input Address on different BBL than TPAD NB BIN 5 (Not implemented) 6 TPAD BBL used, existing PAD BIN of Input Address with DM\u20105 on different BBL than TPAD NB BIN 7 TPAD BBL used, existing PAD BIN of Input Address with DM\u20106 on different BBL than TPAD NB BIN 8 PAD BBL used, TPAD NB BIN with NB\u20100 on different BBL than PAD BIN 9 PAD BBL used, TPAD NB BIN with NB\u20101 on different BBL than PAD BIN A PAD BBL used, TPAD NB BIN with NB\u20102 on different BBL than PAD BIN B PAD BBL used, TPAD NB BIN with NB\u20103 on different BBL than PAD BIN C TPAD data found, TPAD address overlaps PAD address D Address Found in TPAD, not found in PAD E BIN found in TPAD, not found in PAD In mainframe GOAT (CICS), the TPAD information can be retrieved by entering a \u2018Y\u2019 in the \u2018TPADData\u2019 or \u2018TPAD\u2019 field on the 1A, 1B, BL and BN screens. The mainframe GBAT control card for TPAD processing is TPADDATA, with values of \u2018YES\u2019 or \u2018NO\u2019. Interpreting the TPAD data Because of the transitional nature of the data that can be returned by requesting the TPAD data, interpreting the data can sometimes be confusing. This section will describe how the transitional information is returned and try to reduce some of this confusion. The user should note, however, some situations will be inherently confusing and will require additional Geosupport function calls to clarify the situation. Geosupport Processing when TPAD Information IS NOT requested: The BIN of Input Address field will contain the BIN of a building that existed at the time of the Geosupport release. The relationship of the BIN of Input Address field to the input for Geosupport 1A, 1B, BL and BN calls is as follows: 1A and 1B: The content of the BIN of Input Address field will be the BIN associated with the input address (if any). BL: For most BBLs the content of the BIN of Input Address field will be the single BIN associated with the input BBL. For those BBLs that have multiple associated BINs, this will be one of the BINs. There is no way of determining which BIN it will be. BN: The content will always be the input BIN. Geosupport Processing when TPAD Information IS requested: The goal of the Transitional PAD Data (TPAD) enhancements is to supplement the above information with data maintained in the Transitional PAD file. To accomplish this, Geosupport first makes a regular 1A, 1B, BL, or BN call. It then reads the Transitional PAD file for additional information. Three new fields (not including the TPAD Request Switch and Conflict Flag) have been added to WA2 to reflect this TPAD information. The new fields are: The TPAD BIN of Input Address Status field will hold the status for the BIN of Input Address field. The TPAD New BIN field will contain the BIN that has recently been issued for potential new construction. The TPAD New BIN Status field will hold the status for the TPAD New BIN field. TPAD Status For BIN of Input Address Interpretation Space Building exists, there is no demolition pending 0 This status will not be used here 1 This status will not be used here 2 Building previously did not exist, but new building issued Certificate of Occupancy (C/O) after last PAD release 5 Building exists; a DM permit has been paid for 6 Building previously existed; DM was signed off after last PAD release TPAD Status for New BIN Value Associated Job Type Description Blank No activity for this address 0 NB New BIN issued (for DOB); application not yet filed 1 NB NB Job application filed and paid for 2 NB NB Job signed off [temporary or final Certificate of Occupancy (T/CO or C/O) issued] 3 NB New BIN issued (for HPD); application not yet filed 5 DM DM Job application filed and paid for 6 DM DM Job signed off (building demolished) Address List TPAD Enhancements For regular 1A, 1B, BL, and BN calls, the Address List contains alternate addresses associated with the BBL for 1A, 1B, and BL calls and with the BIN for BN calls. Each entry represents an address range and the BIN (if any) associated with this address. For TPAD enhancements we have done two things. We added a TPAD status field for each address entry. And, we have changed the order of the display of Addresses in the list. We list the BIN of Input Address first, followed by New BINs, if any, followed by Demolitions, followed by the rest of the addresses in the PAD record. For Long Work Area 2 requests, we have added a new field for each BIN, the TPAD Status field. Only 2187 BINs will be displayed in the Long Work Area 2 for TPAD requests. Address List entries with BIN that existed at the time of the Geosupport Release TPAD Status For Existing BIN Interpretation Space Building exists, there is no demolition pending 0 This status is not used here 1 This status is not used here 2 This status is not used here 5 Building exists; a DM permit has been paid for 6 Building previously existed; DM was signed off after last PAD release Address List entries with TPAD New BIN contain a newly assigned BIN for the input address. TPAD Status For New BIN Interpretation Space This status will not be used here 0 A New BIN has been assigned to the address, but its purpose is unknown 1 A New BIN has been assigned and a New Building Job has been paid for at DOB 2 A New BIN has been assigned and the building has been given a T/CO or C/O by DOB 5 This status is not used here 6 This status is not used here The field names of the various TPAD\u2010related fields in COW Work Area 1 and Work Area 2 are available in Appendix 13 . _________________________ 7 As of Release 17A, those users who are on the DoITT mainframe typically will have PAD data that is updated weekly via the UPAD (Update PAD) file. Other users, e.g. Desktop users, will have PAD data that is updated quarterly. If desired, those users can make arrangements for more frequent updates. 8 HPD - Department of Housing Preservation and Development","title":"VI.11 Transitional Property Address Directory (TPAD) Building Identification Number (BIN) and status information for Functions 1A, 1B, BL and BN (COW Only)"},{"location":"chapters/chapterVII/chapterVII/","text":"CHAPTER VII STREET CONFIGURATION PROCESSING - FUNCTIONS 2, 3, 3C, 3S","title":"Chapter VII"},{"location":"chapters/chapterVII/section01/","text":"VII.1 Introduction This chapter discusses various types of geographic locations known collectively as \u2018street configurations\u2019, and the Geosupport functions that process them. Street configurations are locations that are specified in terms of a combination of either two or three streets or a node ID (aka node number) . 9 The two-street configurations are street intersections, which are specified in terms of a pair of intersecting streets, or in terms of a single intersection name, or in terms of a node ID. The three-street configurations are locations that are specified in terms of an \u2018on\u2019 street between two cross streets. There are three types of three-street configurations: street segments, blockfaces, and street stretches. Table VII-1 lists the types of street configurations that Geosupport can process, the data items required to specify each type, the functions that process them, and the sections of this chapter in which they are discussed. The final section in this chapter describes borough boundary processing, a special feature of all the street configuration functions except Function 3S. Table VII-1: Street Configuration Types and the Functions that Process Them Street Configuration Type Specified By Function Section Intersections \u25cf 2 intersecting streets and, if the 2 streets intersect twice, a compass direction specifying which intersection to process, -or- \u25cf one intersection name \u2013or- \u25cf (COW Only) one node ID (required if streets intersect more than twice) 2 or 2W VII.2 Street Segments (and related configurations) \u25cf \u2018On\u2019 street and 2 consecutive (or \u2018nearly\u2019 consecutive) cross streets 3 VII.3 & VII.4 Blockfaces \u25cf \u2018On\u2019 street, 2 consecutive cross streets, and compass direction specifying side of street 3C VII.3 & VII.5 Street Stretches \u25cf \u2018On\u2019 street and (optionally) any 2 cross streets and, if the \u2018on\u2019 street intersects a cross street twice, a compass direction specifying which intersection to process 3S VII.3 & VII.6 Applications pass input streets to the street configuration functions in the appropriate WA1 input fields, either in the form of street names or in the form of street codes. In the case of two-street configurations, the order of the two input streets is immaterial; either input street may be passed in either WA1 input street field. In the case of three-street configurations, the \u2018on\u2019 street must be passed in the WA1 input \u2018on\u2019 street field; the two cross streets may be passed in either order in the two WA1 input cross street fields. For any of the street configuration functions, input street names may be pseudo-street names or intersection names, except for the \u2018on\u2019 street in a three-street configuration. Place names may not serve as input street names. (For a discussion of non-street features, pseudo-street names, place names and intersection names, see Chapter III.6. ) In the remainder of this chapter, the term \u2018street\u2019 refers to a street name or street code that conforms to the above criteria. Geosupport processes street configurations based on a simplified model of the city\u2019s geography embodied in a digital map of New York City called CSCL (Citywide Street Centerline). The CSCL is a single-line map, that is, it represents streets and other linear geographic features, including railroad lines and shorelines, as single lines with no thickness, and it represents intersections as single points with no area or internal detail. In reality, of course, intersections occupy areas of various sizes and shapes, as reflected in a more realistic type of map known as a double-line map. The distinction between a single-line map and a double-line map is illustrated in Figure VII-1. The Department of City Planning extracts a version of the CSCL known as LION which may be more familiar to Geosupport Users and is available for download or for view on DCP\u2019s website: http://www1.nyc.gov/site/planning/data-maps/open-data.page#lion Figure VII-1: Single Line and Double-Line Maps Contrasted _________________________ 9 Node ID is described in Chapter VII.2 . The phrase \u2018node number\u2019 may occasionally appear in Geosupport documentation and in copy books.","title":"VII.1 Introduction"},{"location":"chapters/chapterVII/section02/","text":"VII.2 Intersections: Function 2 and Function 2W Note that any references to Function 2 apply to Function 2W as well, unless specifically stated otherwise. Note also that Function 2W is a COW-only function. Function 2 is the Geosupport function that processes street intersections. Function 2 can process not only conventional street intersections, but also node IDs (COW only), intersection names and \u2018pseudo-intersections\u2019, that is, intersections of a conventional street with a pseudo-street ( see Chapter III.6 ). There are three types of pseudo-intersections: dead ends, points at which a street intersects with the city limits, and bending points of streets. A point is considered a bending point if the angle of the street at that point is not within the range 160-200 degrees (i.e., not within 20 degrees of a straight line). Nodes We use the term node generically to refer to all types of intersections, both conventional and pseudo. Each node is assigned a unique node ID. Nodes, defined via street names and street codes, can serve not only as Function 2 input, but also as the delimiting endpoints of street stretches for input to the functions that process three-street configurations. Node IDs can serve as input only to a COW Function 2 or Function 2W call. Formally, a node is a point along a street where one of the following occurs: Figure VII-2: City Limit Point Conventional intersection of two streets: The street intersects with at least one other street (called a cross street). Example: \u2018the intersection of BROADWAY and CHAMBERS STREET in Manhattan\u2019 City Limit Point: The street (or non-street feature e.g. bridge or tunnel) intersects with the city limits. (The street may terminate at that point or it may continue as a suburban street). City Limit points occur at the Bronx-Westchester County border, the Queens-Nassau County border, the New York-New Jersey border and the Staten Island \u2013New Jersey border.\u2028The New Jersey borders occur in the Hudson River, for \u2028example HOLLAND TUNNEL and CITY LIMIT in \u2028Manhattan. An example of Queens city limit is (see \u2028Figure VII-2): \u2018LINDEN BOULEVARD at the CITY LIMITS in Queens\u2019 Figure VII-3: Dead End Dead End: The street has a termination point (called a dead end) that is not at the city limits and at which there are no cross streets. Example (see Figure VII-3): \u2018DEAD END of CROES AVENUE in the Bronx\u2019. City limit points are excluded from being treated as possible dead ends because city streets may continue across the city limits into the adjacent suburban county.) Figure VII-4: Bends * Bend: The street has a bending point. Example (see Figure VII-4): \u2018BEND of COMMERCE STREET\u2019 and \u2018BEND of BARROW STREET\u2019 in Manhattan. Note that the bending point of Barrow is also a conventional street intersection, the intersection of Barrow and Commerce Streets. The Commerce Street bending point is not a conventional intersection, and can only be specified in terms of the pseudo-street BEND. Conceptually, nodes can be characterized as those points along streets that can be specified in a form recognizable to Geosupport, that is, in the form of an intersection name, or a pair of street codes or a pair of street names that possess street codes, or a node ID (in a COW function call). One, and only one, street of a pair may be a pseudo-street. The allowable pseudo-streets are DEAD END and its aliases, CITY LIMITS and its aliases, and BEND and its aliases. See Chapter III.6 for a discussion of pseudo-street names. Number of Intersections of a Pair of Streets Given any pair of New York City streets (or a street and a pseudo-street), there are four possibilities: The two streets do not intersect at all. They intersect at one location (the \u2018unique-node case\u2019). They intersect twice (the \u2018two-node case\u2019). They intersect more than twice (the \u2018many-node case\u2019). Function 2 can process a pair of input streets in the unique-node case and in the two-node case , but a node ID is required as input in the many-node case (supported only in COW) . If the user does not know the node ID, Function 2W may be used to assist the user in determining the appropriate node ID. For a description of this process, see the Overview of Function 2 Node Enhancements and the discussion of the many-node case in Specifying Function 2 Input Data below. Note that aside from dead ends, bends, subway lines, highways, etc., the many-node case is rare. There are numerous streets that have more than two dead ends, and there are numerous streets that have more than two bends. The Two-Node Case The two-node case occurs with greater frequency than might be expected. Some types of situations in which the two-node case occurs are the following: Figure VII-5: Street Intersecting Twice with Curved Street A street bends or curves, causing it to intersect with a second street at two different points. An example in Queens is the two intersections of the curved street Cromwell Crescent with Alderton Street (see Figure VII-5). FigureV11-6: \u2018Dogleg\u2019 * A street has a displacement or offset as it crosses another street (a configuration sometimes called a \u2018dogleg\u2019), so that there are two points where the two streets intersect. An example in Brooklyn is Ditmas Avenue where it crosses Coney Island Avenue (Figure VII-6). Figure VII-7: Street Fork * A street forks into two branches (for example, around a traffic island, plaza or small park) such that both branches have the same street name and they both intersect with another street. An example in Manhattan is Duane Street, which forks around a small triangular park; both branches of Duane Street intersect with Hudson Street (Figure VII-7). Figure VII-8: Street With Two Dead Ends * A street has exactly two dead ends. An example in the Bronx is Odell Street (Figure VII-8). The two pseudo-intersections of Odell Street with the pseudo-street DEAD END are considered to be an instance of the two-node case. Similarly, streets that have exactly two intersections with the city limit, and streets that have exactly two bending points, are instances of the two-node case. ## Overview of Function 2 Node Enhancements (COW Only) Node ID (Node Number) as Input Processing the \u2018Many-Node\u2019 Case A unique Node Number known as a node ID is assigned to each of New York City\u2019s intersections. Geosupport returns node IDs for many of its functions, e.g. 1/1E Extended, 1B, 2, 3, 3C, 3S. Users in a GIS environment also have access to the node IDs via CSCL or LION. Users can specify a node ID as input to Function 2 and get information about the intersection without specifying cross streets or an intersection name. Geosupport also uses node IDs to allow processing of streets that intersect more than twice. Function 2W is available to all users Function 2W returns a 4000-byte Work Area 2. The first 200 bytes are identical to the entire Work Area 2 of regular Function 2. Additional information appears in the remainder of the Function 2W Work Area 2, which can be used in processing streets that intersect more than twice. Node as Input to Function 2 Users have requested the ability to retrieve information about an intersection based on the intersection\u2019s Node Number. That capability has been added to Function 2 (and Function 2W). Work Area 1 has a Node Number input field where the user specifies the node input. A Node Number output field is also defined in Work Area 1 where the normalized (right-justified and zero-filled) Node Number appears. If the user also inputs street names or street codes, they will be ignored and the Node Number input will take priority. Processing Two Streets that Intersect more than twice (\u2018Many-Node case\u2019) Users have also requested the ability to retrieve information about an intersection of two streets that intersect more than twice. If two streets intersect more than twice for a Function 2 call, the user will now get an error message (GRC 03 Reason Code A) suggesting that the user run Function 2W to get related nodes. The same input that is rejected above (streets that intersect more than twice) will be rejected when those streets are processed by Function 2W. Function 2W will return an error message (GRC 03 Reason Code B) that tells the user to use a node as input \u2013 However, - In Addition to GRC 03/A and an Error Message, Function 2W will also Return A Work Area 2 (WA2) that Contains Related Nodes and Street Codes. This is unique in Geosupport because rejected calls normally do not return information in Work Area 2. The Function 2W WA2 will include the Node Numbers of all the nodes satisfying the input (up to 20 nodes) and a list of B7SCs of the intersecting streets at each node, Based on the Node Numbers and the Street Codes, the user can choose which node should be processed. The user then issues a Function 2 or 2W call with the node ID as input and that call should execute successfully. GBAT support of Node Input to Function 2 GBAT has a new option called NODE where the user specifies the location of the Node input. When NODE is input to GBAT the GBAT statistics will not be broken down by borough since borough is not a required part of the input. It is recommended that users not specify streets as input together with nodes for a GBAT run since none of the output statistics will be broken down by borough. GBAT support of Streets that Intersect more than twice GBAT has a new option, called RELATEDNODES, for Function 2. If the user requests RELATEDNODES and the streets intersect more than twice (GRC 03 Reason Code A or B) GBAT will issue a Function 2W call under the covers, and get the nodes and street codes information from WA2. GBAT will place this information in a separate error file, viz. ERRFIL3 which the user can examine and then choose the node to be processed. The NODE can then be used as input to a subsequent run. In addition to the entry in ERRFIL3 (which contains the nodes and street codes list), GBAT creates a normal error entry in the standard error file (viz. ERRFILE) Note that when a GBAT entry is rejected with GRC03 it will not be written to the GBAT output file (OUTFILE) even if it is for Function 2W which generates a WA2 in this situation. The information is returned to the user in ERRFIL3. GOAT support of Streets that Intersect more than twice When input streets intersect more than twice, Mainframe GOAT (CICS) and the web version of GOAT on the Web display a list of up to 20 nodes and the cross streets at these nodes, with their street codes and street names. The user can then more easily choose a node and reissue the GOAT call using the chosen node as input. Specifying Function 2 Input Data Applications pass input to Function 2/2W by specifying either an intersection name, or two distinct streets (i.e., two streets that have different B5SCs), or a node ID (COW only) identifying the intersection. If the input information is in the form of an intersection name , it may be passed in either WA1 input street name field, and the other field should preferably be left blank or it may contain any conventional street that exists at the given intersection. If the input data are in the form of two streets that are an instance of the two-node case , an input compass direction (\u2018N\u2019, \u2018S\u2019, \u2018E\u2019 or \u2018W\u2019) must also be specified. The compass direction identifies which of the two nodes is to be processed, by specifying that node\u2019s spatial position relative to the other one. For example, if \u2018N\u2019 is specified as the input compass direction, then Function 2 will process the northernmost of the two nodes. If the user knows the node ID of the intersection, this may be used as input instead of the two streets and a compass direction. If the input information is in the form of a node ID , a borough code is not required and is ignored if supplied. Figure V11-9: Simultaneous 2-Node and Unique-Node Case Note that an intersection may be an instance of the two-node case when specified (with a compass direction) in terms of a particular pair of streets, while the same intersection may be an instance of the unique-node case when specified (without a compass direction) in terms of a different pair of streets. For example, in Staten Island, Industrial Loop and Arthur Kill Road intersect at two nodes (see Figure VII-9). When specifying either of those nodes as an intersection of Industrial Loop and Arthur Kill Road, a compass direction is required. However, at the northern (or alternatively, the eastern) one of those nodes, there is a third street, Grille Court. That node can be specified, without a compass direction, as the unique intersection either of Grille Court and Industrial Loop, or of Grille Court and Arthur Kill Road. That node could alternatively be identified by its node ID (viz. 0000890) and no street names are needed. In some instances of the two-node case, the two nodes are \u2018nearly\u2019 (i.e., within 10 compass degrees of) due east-west of each other. In that event, attempting to distinguish between the two nodes in terms of the compass directions north and south would be highly error-prone. In those cases, therefore, Function 2 accepts only \u2018E\u2019 and \u2018W\u2019 as valid input compass directions. Similarly, if the spatial relationship between the two nodes is \u2018nearly\u2019 (within 10 degrees of) due north-south, Function 2 accepts only \u2018N\u2019 and \u2018S\u2019. For Manhattan only, in the two-node case, Geosupport rotates the spatial relationship between the pairs of nodes 30 degrees counterclockwise before determining whether they are \u2018nearly\u2019 north-south or east-west of each other. This comports with the widespread conventional treatment of the avenues and streets in most of Manhattan as if they were oriented due north-south and due east-west, respectively. In reality, Manhattan\u2019s principal street pattern lies approximately at a 30-degree clockwise rotation from the cardinal points of the compass. For a more detailed discussion of the 30-degree rotation for Manhattan, see the entry for Segment Orientation in Appendix 3 . In most instances of the two-node case, the two nodes have a pronounced \u2018diagonal\u2019 spatial relationship, that is, they are not within 10 degrees of either due north-south or due east-west of each other. In that case, Function 2 accepts all four compass directions as valid input. For example, either \u2018N\u2019 or \u2018W\u2019 is accepted as a specification for the northwestern intersection of Alderton Street and Cromwell Crescent (the intersection highlighted on the upper left in Figure VII-5); either \u2018S\u2019 or \u2018E\u2019 is accepted as a specification for the southeastern (lower right) intersection of these streets. In the two-node case, a user must supply a compass direction, with street names, to issue a successful call. Alternatively, the user may supply a node ID instead of the street names and a compass direction. If the two nodes in the two-node-case are close together, under certain conditions it may not matter which intersection is selected. For example, if a medical emergency occurred at the intersection of Reade and Elk Streets in Manhattan, when reporting the location it would not matter which of the two intersections was provided since the two intersections are separated by about 21 feet. On the other hand, if the medical emergency is reported as having occurred at the intersection of Castle Hill Avenue and Zerega Avenue in the Bronx, a more precise compass direction is required since the two intersections are separated by about 10,631 feet or roughly two miles. When no compass direction is supplied, the error message returned by Geosupport (GRC 02) for a two-node case includes the distance, in feet, between the two nodes. Depending upon the circumstance, the user may make a reasoned decision as to whether the precise intersection is required or if it does not make any difference which intersection is requested. In the many-node case, a user must supply a node ID as input to issue a successful call. A node ID is accepted as input only to COW Function 2 or 2W. If the user does not have the node ID Function 2W may be invoked to retrieve the node IDs and B7SCs that exist at the duplicate intersections. The user may then invoke Function 2 or 2W with the node ID of his choice. The procedure is as follows: When an MSW Function 2 call is issued with streets that intersect more than twice, the resulting message is: GRC 03 Reason Code is \u2018blank\u2019. \u2018STREETS INTERSECT MORE THAN TWICE - CAN ONLY BE PROCESSED BY COW FUNCTION CALL\u2019 The user can now modify his application to issue a COW Function 2 call and proceed as defined below. Note that the Reason Code no longer contains the number of times that the streets intersect (3 through 9). When a COW Function 2 call is issued with streets that intersect more than twice, the resulting message is: GRC 03 Reason Code is \u2018A\u2019. \u2018STREETS INTERSECT MORE THAN TWICE-USE FUNCTION 2W TO FIND RELATED NODES\u2019 The user can now modify his application to issue a COW Function 2W call and proceed as follows. When a COW Function 2W call is issued with streets that intersect more than twice, the resulting message is: GRC 03 Reason Code is \u2018B\u2019. \u2018STREETS INTERSECT MORE THAN TWICE - USE NODE AS INPUT\u2019 In addition to the error message, Function 2W also returns a Work Area 2 which contains the node IDs (up to 20 nodes) where the streets intersect and also the B7SCs of the streets at those nodes. There can be up to 5 intersecting streets at each node, and each of those streets may have up to 4 aliases. The user can then choose a node and issue a COW Function 2 or 2W call with that node ID as input. The call should then be successful. See Appendix 13 for the detail layout of Work Area 2 for Function 2W. Note: The GRC 03 message returns \u2018blank\u2019, \u2018A\u2019, or \u2018B\u2019 as the Reason Code. It no longer returns the number of intersections (3 through 9) as the Reason Code . Possible Outcomes of a Function 2 or 2W Call Table VII-2 lists possible outcomes of a Function 2 or 2W call by Geosupport Return Code (GRC). Table VII-2 does not include standard reject conditions that are applicable to most Geosupport functions, such as an inability to normalize or recognize an input street name. In Table VII-2, the term \u2018intersection\u2019 also encompasses pseudo-intersections. Table VII-2: Possible Outcomes of a Function 2 and 2W Call Possible Outcomes of a Function 2 and 2W Call Possible Outcomes of a Function 2 and 2W Call GRC/ Reason Code Meaning 00 (Successful call) If the input information was in the form of an intersection name, it was recognized as a valid name of a specific intersection. If the input information was in the form of two streets, they intersect once or twice, and if twice, an input compass direction has been supplied which is a valid descriptor for one of those intersections. A full complement of output data is returned in the work areas. 01/H (Warning) The two input streets intersect once, but the input compass direction field is non-blank. The input compass direction field is ignored. A full complement of output data is returned in the work areas. 01/N (Warning) Both a node ID and street names or street codes were specified as input. The node ID will be used; the street names/codes will be ignored. 01/T (Warning) The input street name is ignored if an intersection name is specified along with a street name that is part of the intersection. 02 (Reject) The two input streets intersect twice, but the input compass direction field is blank. A valid input compass direction value is required for these input streets. 03/blank (Reject) MSW - The two input streets intersect more than twice. MSW Function 2 calls cannot process such intersections. The Reason Code value is blank. The message suggests that the user use a COW function call. 03/A (Reject) COW - The two input streets intersect more than twice. Function 2 calls cannot process such intersections. The message suggests that the user issue a Function 2W call to find related nodes. 03/B (Reject) COW \u2013 Function 2W only - The two input streets intersect more than twice. Function 2W returns node IDs and street codes. The message suggests that the user use a node ID as input. 12 (Reject) The input information was in the form of an intersection name or a street code of an intersection name. Geosupport recognizes this name or code as valid, but does not yet have this name or code associated with a specific intersection. 30 (Reject) An input intersection name was specified along with an input street name, but the input street is not part of the intersection. 32 (Reject) An invalid node ID was specified as input. It was non-numeric or had embedded blanks.. 33 (Reject) A node ID was specified as input, but no intersection was found with that node ID. 39 (Reject) The input compass direction field contains a non-blank value other than \u2018E\u2019, \u2018N\u2019, \u2018S\u2019 or \u2018W\u2019. 40 (Reject) The two input streets intersect twice, but the two intersections are nearly N-S or E-W of each other and the input compass direction is an invalid descriptor for either of the intersections. 62 (Reject) If the input data were in the form of two input street names or codes, the two input streets do not intersect. Function 2 Output Data Among COW Function 2\u2019s WA1 output items are the following: B7SCs and 32-byte street names of the intersecting streets appear in the List of Street Codes and List of Street Names fields.. Among Function 2\u2019s WA2 output items are the following: Identifiers for a set of geographic districts that contain the intersection, including Census Tract, Community District and Police Precinct. The COW WA2 also includes Sanitation District and Health Center District. Spatial Coordinates of the intersection. These correspond to a nominal center point of the intersection and should not be treated as a precise identification of any particular point location on the earth\u2019s surface. (For a more detailed discussion, see the Spatial Coordinates entry in Appendix 3 .) A List of Intersecting Streets (in the form of PB5SCs for MSW and B5SCs for COW) identifying up to five streets incident upon the intersection. Subject to the space limitation, the list may include the PB5SCs or B5SCs of the two input streets, unless one is the pseudo-street BEND, which for Function 2 is never included in the list. The list may also include the PB5SCs or B5SCs of the pseudo-streets CITY LIMIT and DEAD END, and it may include the PB5SCs or B5SCs of any intersection names that are valid for the given intersection. If the application has a need to display the street names of the intersecting streets, the Cross Street Names Flag in WA1 can be turned \u2018on\u2019 and the names will be returned in the List of Street Names in WA1 (see entries for Cross Street Names Flag and List of Street Names in Appendix 3 ). Note that the cross street names feature incurs processing overhead, and should only be used when necessary. A Compass Direction for Intersection Key. If the first two entries in the List of Intersecting Streets are an instance of the two-node case (i.e., they intersect twice), the Compass Direction for Intersection Key contains a compass direction value identifying the intersection in terms of those two streets. If the two streets are not an instance of the two-node case, this field is blank. If both a \u2018longitudinal\u2019 compass direction (\u2018N\u2019 or \u2018S\u2019) and a \u2018latitudinal\u2019 compass direction (\u2018E\u2019 or \u2018W\u2019) are valid for this intersection, the longitudinal compass direction value appears in this field. A Compass Direction for Intersection Key . If the first two entries in the List of Intersecting Streets are an instance of the two-node case (i.e., they intersect twice), the Compass Direction for Intersection Key contains a compass direction value identifying the intersection in terms of those two streets. If the two streets are not an instance of the two-node case, this field is blank. If both a \u2018longitudinal\u2019 compass direction (\u2018N\u2019 or \u2018S\u2019) and a \u2018latitudinal\u2019 compass direction (\u2018E\u2019 or \u2018W\u2019) are valid for this intersection, the longitudinal compass direction value appears in this field. Political geography and CD Eligibility (COW Only) . Function 2 returns Assembly District, Congressional District, State Senatorial District, Civil Court District, City Council District and CD Eligibility. Since it is possible that multiple political geographies may exist at an intersection, Geosupport returns the political geography associated with the most frequently occurring Election District / Assembly District (ED/AD). If there is no one political geography that occurs more frequently than any other, then the political geography associated with the ED/AD that is one of the most frequently occurring ED/ADs and that has the lowest numeric value is selected. This insures that the same data will be returned from one data cycle to the next data cycle. The only exception should be the changes in the political geography associated with the decennial census conducted by the federal government. No indication is provided that the intersection lies on a political boundary Since Function 2 treats street intersections as if they were single points, Geosupport does not provide a means for a user to request information specific to a portion of an intersection, such as a particular block corner. In the event that an intersection lies on a boundary of two or more geographic districts of a particular type, Function 2 returns the identifier for one of those districts, but provides no indication that some of the intersection\u2019s corners may lie in other districts. The district identifier that is returned for such an intersection is selected using an algorithm based on the community districts and atomic polygons (previously known as dynamic blocks) at that intersection. This algorithm typically allows for data consistency from one data release to the next. Note that the same district identifier will be returned no matter how the intersection is specified. For example, the intersection of East 116 Street and Fifth Avenue in Manhattan lies on the boundaries of three different School Districts (SDs) (see Figure VII-10). Two of the four block corners at this intersection lie in SD 3, one lies in SD 4 and one lies in SD 5. For this intersection, Function 2 returns SD 3, and provides no indication that the intersection lies on a SD boundary. Figure V11-10: Multiple Districts at an Intersection Multi-Street Intersections and Retrieval Consistency This subsection discusses the common situation of intersections at which there are more than two streets. Geosupport accepts any pair of those streets as a valid input specification for the intersection. (The concept of an intersection of multiple streets should not be confused with the concept of two streets that intersect at multiple points, which was discussed in the preceding subsection.) For example, consider the three-street intersection of Hudson Street, Chambers Street and West Broadway in Manhattan (Figure VII-11). The user can specify this intersection as input to Function 2 in three ways: as the intersection of Hudson Street and Chambers Street; Hudson Street and West Broadway; or Chambers Street and West Broadway. Figure V11-11: Three - Street Intersection Similarly, a four-street intersection can be specified in six ways, etc. Function 2 returns identical WA2 information (other than that related to which streets were the input streets for the call) for an intersection regardless of which pair of streets is used to specify it. Since an intersection of more than two streets can be specified in more than one way, an important issue for some applications that process data by intersection is the ability to retrieve or match data from an application file consistently by intersection. (For a general discussion of the concept of application file geographic retrieval consistency, see Section I.3 .) That is, it is desirable for applications to be able to retrieve data successfully for a multi-street intersection regardless of which pair of streets is used to identify the intersection. A data item called the Node ID, which is returned in Function 2's WA2, is designed to serve effectively as a unique, consistent intersection identifier. It is able to so serve because the same Node ID Number is returned regardless of how the intersection is specified. Moreover, the Node ID assigned to an intersection is kept constant over time. That is, the same Node ID is returned for a given intersection by every Geosupport release, even in cases where there is a change in the set of streets defining an intersection (such as the presence of a new street, the closure of an existing street, or a change in the street code assigned to a street). Fuzzy Intersection Processing (Function 2) - Front-truncated street names Under certain conditions, Function 2 will return data when front-truncated street names are given as input; e.g. 14 STREET instead of EAST 14 STREET or WEST 14 STREET. If a user supplies a front-truncated street name as one of the names that define an intersection, Geosupport will attempt to find the intersection using the appropriate street names. If Geosupport is successful in finding the intersection, it will process the call and issue a warning message (Reason Code J) indicating which street name was assumed. The following are a number of examples and special cases of this processing. Consider the example of a user who issues a Function 2 call with 24 STREET and THIRD AVENUE in Manhattan as the input. Since 24 STREET in Manhattan is a front-truncated street name, Geosupport knows that there exists an EAST 24 STREET and a WEST 24 STREET in Manhattan. Geosupport attempts to find the intersection of East 24 Street and Third Avenue and the intersection of West 24 Street and Third Avenue in Manhattan. Since the intersection of East 24 Street and Third Avenue does exist in Manhattan and the intersection of West 24 Street and Third Avenue does not exist, data for the intersection of East 24 Street and Third Avenue in Manhattan is returned to the user, together with a warning message indicating that East 24 Street is assumed. If the user supplies the front-truncated street name 34 STREET and FIFTH AVENUE in Manhattan as input to a Function 2 call, Geosupport will discover that both the intersection of EAST 34 STREET and FIFTH AVENUE and the intersection of WEST 34 STREET and FIFTH AVENUE exist. In this case, the Node IDs will be compared. Since, in this case, the Node IDs are the same, data for the intersection will be returned to the user. The street with the lower numeric value for its street code will be returned, which in this example is East 34 Street. The user will also receive a warning message indicating that East 34 Street is assumed. If the user supplies the front-truncated street name 177 STREET and JEROME AVENUE in the Bronx as input to a Function 2 call, Geosupport will find that both the intersection of EAST 177 STREET and JEROME AVENUE and the intersection of WEST 177 STREET and JEROME AVENUE exist. However in this case the Node IDs will be different because a dogleg exists at the intersection. The Function 2 call would be rejected with an error message indicating that the intersection is not unique. As a result, the user must determine whether East or West 177 Street is the desired street. Non-addressable Place Names (NAPs) will not be considered when processing truncated street names at an intersection. For example, if the user supplies \u201833\u2019 and MADISON AVENUE in Manhattan as the input to a Function 2 call, Geosupport will find that in addition to EAST 33 STREET and WEST 33 STREET, there is also 33 POLICE PRECINCT. 33 Police Precinct is eliminated as a possibility because it is a NAP which may not be used in a Function 2 call. This leaves only East and West 33 Street as possibilities and since only East 33 Street intersects Madison Avenue in Manhattan, the call will be processed successfully and a warning message will indicate a street name change. Note Concerning the \u2018Vestigial\u2019 Function 2C: A Geosupport enhancement that was implemented in Version 9.5 (March 1998) enabled Function 2 to process pairs of streets that intersect twice, using the input compass direction field to identify the specific intersection to be processed. Prior to that enhancement, Function 2 could only process pairs of streets that intersect once, and a separate function, Function 2C, had to be used to process pairs of streets that intersect twice. The enhancement enabled Function 2 to process both types of intersection input, rendering Function 2C obsolete. Function 2C is a \u2018vestigial\u2019 function, in the sense in which this term is described in Chapter I.5 . In particular, all new applications should be designed to perform all intersection processing using Function 2 only. It is recommended that users modify existing applications by replacing all Function 2C calls with Function 2 calls . To do so, it may be necessary or appropriate to modify the application\u2019s reject handling routines to reflect the situations and GRC\u2019s delineated in Table VII-2. Function 2C is not further documented in this User Programming Guide .","title":"VII.2 Intersections: Function 2 and Function 2W"},{"location":"chapters/chapterVII/section02/#nodes","text":"We use the term node generically to refer to all types of intersections, both conventional and pseudo. Each node is assigned a unique node ID. Nodes, defined via street names and street codes, can serve not only as Function 2 input, but also as the delimiting endpoints of street stretches for input to the functions that process three-street configurations. Node IDs can serve as input only to a COW Function 2 or Function 2W call. Formally, a node is a point along a street where one of the following occurs: Figure VII-2: City Limit Point Conventional intersection of two streets: The street intersects with at least one other street (called a cross street). Example: \u2018the intersection of BROADWAY and CHAMBERS STREET in Manhattan\u2019 City Limit Point: The street (or non-street feature e.g. bridge or tunnel) intersects with the city limits. (The street may terminate at that point or it may continue as a suburban street). City Limit points occur at the Bronx-Westchester County border, the Queens-Nassau County border, the New York-New Jersey border and the Staten Island \u2013New Jersey border.\u2028The New Jersey borders occur in the Hudson River, for \u2028example HOLLAND TUNNEL and CITY LIMIT in \u2028Manhattan. An example of Queens city limit is (see \u2028Figure VII-2): \u2018LINDEN BOULEVARD at the CITY LIMITS in Queens\u2019 Figure VII-3: Dead End Dead End: The street has a termination point (called a dead end) that is not at the city limits and at which there are no cross streets. Example (see Figure VII-3): \u2018DEAD END of CROES AVENUE in the Bronx\u2019. City limit points are excluded from being treated as possible dead ends because city streets may continue across the city limits into the adjacent suburban county.) Figure VII-4: Bends * Bend: The street has a bending point. Example (see Figure VII-4): \u2018BEND of COMMERCE STREET\u2019 and \u2018BEND of BARROW STREET\u2019 in Manhattan. Note that the bending point of Barrow is also a conventional street intersection, the intersection of Barrow and Commerce Streets. The Commerce Street bending point is not a conventional intersection, and can only be specified in terms of the pseudo-street BEND. Conceptually, nodes can be characterized as those points along streets that can be specified in a form recognizable to Geosupport, that is, in the form of an intersection name, or a pair of street codes or a pair of street names that possess street codes, or a node ID (in a COW function call). One, and only one, street of a pair may be a pseudo-street. The allowable pseudo-streets are DEAD END and its aliases, CITY LIMITS and its aliases, and BEND and its aliases. See Chapter III.6 for a discussion of pseudo-street names. Number of Intersections of a Pair of Streets Given any pair of New York City streets (or a street and a pseudo-street), there are four possibilities: The two streets do not intersect at all. They intersect at one location (the \u2018unique-node case\u2019). They intersect twice (the \u2018two-node case\u2019). They intersect more than twice (the \u2018many-node case\u2019). Function 2 can process a pair of input streets in the unique-node case and in the two-node case , but a node ID is required as input in the many-node case (supported only in COW) . If the user does not know the node ID, Function 2W may be used to assist the user in determining the appropriate node ID. For a description of this process, see the Overview of Function 2 Node Enhancements and the discussion of the many-node case in Specifying Function 2 Input Data below. Note that aside from dead ends, bends, subway lines, highways, etc., the many-node case is rare. There are numerous streets that have more than two dead ends, and there are numerous streets that have more than two bends.","title":"Nodes"},{"location":"chapters/chapterVII/section02/#the-two-node-case","text":"The two-node case occurs with greater frequency than might be expected. Some types of situations in which the two-node case occurs are the following: Figure VII-5: Street Intersecting Twice with Curved Street A street bends or curves, causing it to intersect with a second street at two different points. An example in Queens is the two intersections of the curved street Cromwell Crescent with Alderton Street (see Figure VII-5). FigureV11-6: \u2018Dogleg\u2019 * A street has a displacement or offset as it crosses another street (a configuration sometimes called a \u2018dogleg\u2019), so that there are two points where the two streets intersect. An example in Brooklyn is Ditmas Avenue where it crosses Coney Island Avenue (Figure VII-6). Figure VII-7: Street Fork * A street forks into two branches (for example, around a traffic island, plaza or small park) such that both branches have the same street name and they both intersect with another street. An example in Manhattan is Duane Street, which forks around a small triangular park; both branches of Duane Street intersect with Hudson Street (Figure VII-7). Figure VII-8: Street With Two Dead Ends * A street has exactly two dead ends. An example in the Bronx is Odell Street (Figure VII-8). The two pseudo-intersections of Odell Street with the pseudo-street DEAD END are considered to be an instance of the two-node case. Similarly, streets that have exactly two intersections with the city limit, and streets that have exactly two bending points, are instances of the two-node case. ## Overview of Function 2 Node Enhancements (COW Only) Node ID (Node Number) as Input Processing the \u2018Many-Node\u2019 Case A unique Node Number known as a node ID is assigned to each of New York City\u2019s intersections. Geosupport returns node IDs for many of its functions, e.g. 1/1E Extended, 1B, 2, 3, 3C, 3S. Users in a GIS environment also have access to the node IDs via CSCL or LION. Users can specify a node ID as input to Function 2 and get information about the intersection without specifying cross streets or an intersection name. Geosupport also uses node IDs to allow processing of streets that intersect more than twice. Function 2W is available to all users Function 2W returns a 4000-byte Work Area 2. The first 200 bytes are identical to the entire Work Area 2 of regular Function 2. Additional information appears in the remainder of the Function 2W Work Area 2, which can be used in processing streets that intersect more than twice. Node as Input to Function 2 Users have requested the ability to retrieve information about an intersection based on the intersection\u2019s Node Number. That capability has been added to Function 2 (and Function 2W). Work Area 1 has a Node Number input field where the user specifies the node input. A Node Number output field is also defined in Work Area 1 where the normalized (right-justified and zero-filled) Node Number appears. If the user also inputs street names or street codes, they will be ignored and the Node Number input will take priority. Processing Two Streets that Intersect more than twice (\u2018Many-Node case\u2019) Users have also requested the ability to retrieve information about an intersection of two streets that intersect more than twice. If two streets intersect more than twice for a Function 2 call, the user will now get an error message (GRC 03 Reason Code A) suggesting that the user run Function 2W to get related nodes. The same input that is rejected above (streets that intersect more than twice) will be rejected when those streets are processed by Function 2W. Function 2W will return an error message (GRC 03 Reason Code B) that tells the user to use a node as input \u2013 However, - In Addition to GRC 03/A and an Error Message, Function 2W will also Return A Work Area 2 (WA2) that Contains Related Nodes and Street Codes. This is unique in Geosupport because rejected calls normally do not return information in Work Area 2. The Function 2W WA2 will include the Node Numbers of all the nodes satisfying the input (up to 20 nodes) and a list of B7SCs of the intersecting streets at each node, Based on the Node Numbers and the Street Codes, the user can choose which node should be processed. The user then issues a Function 2 or 2W call with the node ID as input and that call should execute successfully. GBAT support of Node Input to Function 2 GBAT has a new option called NODE where the user specifies the location of the Node input. When NODE is input to GBAT the GBAT statistics will not be broken down by borough since borough is not a required part of the input. It is recommended that users not specify streets as input together with nodes for a GBAT run since none of the output statistics will be broken down by borough. GBAT support of Streets that Intersect more than twice GBAT has a new option, called RELATEDNODES, for Function 2. If the user requests RELATEDNODES and the streets intersect more than twice (GRC 03 Reason Code A or B) GBAT will issue a Function 2W call under the covers, and get the nodes and street codes information from WA2. GBAT will place this information in a separate error file, viz. ERRFIL3 which the user can examine and then choose the node to be processed. The NODE can then be used as input to a subsequent run. In addition to the entry in ERRFIL3 (which contains the nodes and street codes list), GBAT creates a normal error entry in the standard error file (viz. ERRFILE) Note that when a GBAT entry is rejected with GRC03 it will not be written to the GBAT output file (OUTFILE) even if it is for Function 2W which generates a WA2 in this situation. The information is returned to the user in ERRFIL3. GOAT support of Streets that Intersect more than twice When input streets intersect more than twice, Mainframe GOAT (CICS) and the web version of GOAT on the Web display a list of up to 20 nodes and the cross streets at these nodes, with their street codes and street names. The user can then more easily choose a node and reissue the GOAT call using the chosen node as input.","title":"The Two-Node Case"},{"location":"chapters/chapterVII/section02/#specifying-function-2-input-data","text":"Applications pass input to Function 2/2W by specifying either an intersection name, or two distinct streets (i.e., two streets that have different B5SCs), or a node ID (COW only) identifying the intersection. If the input information is in the form of an intersection name , it may be passed in either WA1 input street name field, and the other field should preferably be left blank or it may contain any conventional street that exists at the given intersection. If the input data are in the form of two streets that are an instance of the two-node case , an input compass direction (\u2018N\u2019, \u2018S\u2019, \u2018E\u2019 or \u2018W\u2019) must also be specified. The compass direction identifies which of the two nodes is to be processed, by specifying that node\u2019s spatial position relative to the other one. For example, if \u2018N\u2019 is specified as the input compass direction, then Function 2 will process the northernmost of the two nodes. If the user knows the node ID of the intersection, this may be used as input instead of the two streets and a compass direction. If the input information is in the form of a node ID , a borough code is not required and is ignored if supplied. Figure V11-9: Simultaneous 2-Node and Unique-Node Case Note that an intersection may be an instance of the two-node case when specified (with a compass direction) in terms of a particular pair of streets, while the same intersection may be an instance of the unique-node case when specified (without a compass direction) in terms of a different pair of streets. For example, in Staten Island, Industrial Loop and Arthur Kill Road intersect at two nodes (see Figure VII-9). When specifying either of those nodes as an intersection of Industrial Loop and Arthur Kill Road, a compass direction is required. However, at the northern (or alternatively, the eastern) one of those nodes, there is a third street, Grille Court. That node can be specified, without a compass direction, as the unique intersection either of Grille Court and Industrial Loop, or of Grille Court and Arthur Kill Road. That node could alternatively be identified by its node ID (viz. 0000890) and no street names are needed. In some instances of the two-node case, the two nodes are \u2018nearly\u2019 (i.e., within 10 compass degrees of) due east-west of each other. In that event, attempting to distinguish between the two nodes in terms of the compass directions north and south would be highly error-prone. In those cases, therefore, Function 2 accepts only \u2018E\u2019 and \u2018W\u2019 as valid input compass directions. Similarly, if the spatial relationship between the two nodes is \u2018nearly\u2019 (within 10 degrees of) due north-south, Function 2 accepts only \u2018N\u2019 and \u2018S\u2019. For Manhattan only, in the two-node case, Geosupport rotates the spatial relationship between the pairs of nodes 30 degrees counterclockwise before determining whether they are \u2018nearly\u2019 north-south or east-west of each other. This comports with the widespread conventional treatment of the avenues and streets in most of Manhattan as if they were oriented due north-south and due east-west, respectively. In reality, Manhattan\u2019s principal street pattern lies approximately at a 30-degree clockwise rotation from the cardinal points of the compass. For a more detailed discussion of the 30-degree rotation for Manhattan, see the entry for Segment Orientation in Appendix 3 . In most instances of the two-node case, the two nodes have a pronounced \u2018diagonal\u2019 spatial relationship, that is, they are not within 10 degrees of either due north-south or due east-west of each other. In that case, Function 2 accepts all four compass directions as valid input. For example, either \u2018N\u2019 or \u2018W\u2019 is accepted as a specification for the northwestern intersection of Alderton Street and Cromwell Crescent (the intersection highlighted on the upper left in Figure VII-5); either \u2018S\u2019 or \u2018E\u2019 is accepted as a specification for the southeastern (lower right) intersection of these streets. In the two-node case, a user must supply a compass direction, with street names, to issue a successful call. Alternatively, the user may supply a node ID instead of the street names and a compass direction. If the two nodes in the two-node-case are close together, under certain conditions it may not matter which intersection is selected. For example, if a medical emergency occurred at the intersection of Reade and Elk Streets in Manhattan, when reporting the location it would not matter which of the two intersections was provided since the two intersections are separated by about 21 feet. On the other hand, if the medical emergency is reported as having occurred at the intersection of Castle Hill Avenue and Zerega Avenue in the Bronx, a more precise compass direction is required since the two intersections are separated by about 10,631 feet or roughly two miles. When no compass direction is supplied, the error message returned by Geosupport (GRC 02) for a two-node case includes the distance, in feet, between the two nodes. Depending upon the circumstance, the user may make a reasoned decision as to whether the precise intersection is required or if it does not make any difference which intersection is requested. In the many-node case, a user must supply a node ID as input to issue a successful call. A node ID is accepted as input only to COW Function 2 or 2W. If the user does not have the node ID Function 2W may be invoked to retrieve the node IDs and B7SCs that exist at the duplicate intersections. The user may then invoke Function 2 or 2W with the node ID of his choice. The procedure is as follows: When an MSW Function 2 call is issued with streets that intersect more than twice, the resulting message is: GRC 03 Reason Code is \u2018blank\u2019. \u2018STREETS INTERSECT MORE THAN TWICE - CAN ONLY BE PROCESSED BY COW FUNCTION CALL\u2019 The user can now modify his application to issue a COW Function 2 call and proceed as defined below. Note that the Reason Code no longer contains the number of times that the streets intersect (3 through 9). When a COW Function 2 call is issued with streets that intersect more than twice, the resulting message is: GRC 03 Reason Code is \u2018A\u2019. \u2018STREETS INTERSECT MORE THAN TWICE-USE FUNCTION 2W TO FIND RELATED NODES\u2019 The user can now modify his application to issue a COW Function 2W call and proceed as follows. When a COW Function 2W call is issued with streets that intersect more than twice, the resulting message is: GRC 03 Reason Code is \u2018B\u2019. \u2018STREETS INTERSECT MORE THAN TWICE - USE NODE AS INPUT\u2019 In addition to the error message, Function 2W also returns a Work Area 2 which contains the node IDs (up to 20 nodes) where the streets intersect and also the B7SCs of the streets at those nodes. There can be up to 5 intersecting streets at each node, and each of those streets may have up to 4 aliases. The user can then choose a node and issue a COW Function 2 or 2W call with that node ID as input. The call should then be successful. See Appendix 13 for the detail layout of Work Area 2 for Function 2W. Note: The GRC 03 message returns \u2018blank\u2019, \u2018A\u2019, or \u2018B\u2019 as the Reason Code. It no longer returns the number of intersections (3 through 9) as the Reason Code .","title":"Specifying Function 2 Input Data"},{"location":"chapters/chapterVII/section02/#possible-outcomes-of-a-function-2-or-2w-call","text":"Table VII-2 lists possible outcomes of a Function 2 or 2W call by Geosupport Return Code (GRC). Table VII-2 does not include standard reject conditions that are applicable to most Geosupport functions, such as an inability to normalize or recognize an input street name. In Table VII-2, the term \u2018intersection\u2019 also encompasses pseudo-intersections. Table VII-2: Possible Outcomes of a Function 2 and 2W Call Possible Outcomes of a Function 2 and 2W Call Possible Outcomes of a Function 2 and 2W Call GRC/ Reason Code Meaning 00 (Successful call) If the input information was in the form of an intersection name, it was recognized as a valid name of a specific intersection. If the input information was in the form of two streets, they intersect once or twice, and if twice, an input compass direction has been supplied which is a valid descriptor for one of those intersections. A full complement of output data is returned in the work areas. 01/H (Warning) The two input streets intersect once, but the input compass direction field is non-blank. The input compass direction field is ignored. A full complement of output data is returned in the work areas. 01/N (Warning) Both a node ID and street names or street codes were specified as input. The node ID will be used; the street names/codes will be ignored. 01/T (Warning) The input street name is ignored if an intersection name is specified along with a street name that is part of the intersection. 02 (Reject) The two input streets intersect twice, but the input compass direction field is blank. A valid input compass direction value is required for these input streets. 03/blank (Reject) MSW - The two input streets intersect more than twice. MSW Function 2 calls cannot process such intersections. The Reason Code value is blank. The message suggests that the user use a COW function call. 03/A (Reject) COW - The two input streets intersect more than twice. Function 2 calls cannot process such intersections. The message suggests that the user issue a Function 2W call to find related nodes. 03/B (Reject) COW \u2013 Function 2W only - The two input streets intersect more than twice. Function 2W returns node IDs and street codes. The message suggests that the user use a node ID as input. 12 (Reject) The input information was in the form of an intersection name or a street code of an intersection name. Geosupport recognizes this name or code as valid, but does not yet have this name or code associated with a specific intersection. 30 (Reject) An input intersection name was specified along with an input street name, but the input street is not part of the intersection. 32 (Reject) An invalid node ID was specified as input. It was non-numeric or had embedded blanks.. 33 (Reject) A node ID was specified as input, but no intersection was found with that node ID. 39 (Reject) The input compass direction field contains a non-blank value other than \u2018E\u2019, \u2018N\u2019, \u2018S\u2019 or \u2018W\u2019. 40 (Reject) The two input streets intersect twice, but the two intersections are nearly N-S or E-W of each other and the input compass direction is an invalid descriptor for either of the intersections. 62 (Reject) If the input data were in the form of two input street names or codes, the two input streets do not intersect.","title":"Possible Outcomes of a Function 2 or 2W Call"},{"location":"chapters/chapterVII/section02/#function-2-output-data","text":"Among COW Function 2\u2019s WA1 output items are the following: B7SCs and 32-byte street names of the intersecting streets appear in the List of Street Codes and List of Street Names fields.. Among Function 2\u2019s WA2 output items are the following: Identifiers for a set of geographic districts that contain the intersection, including Census Tract, Community District and Police Precinct. The COW WA2 also includes Sanitation District and Health Center District. Spatial Coordinates of the intersection. These correspond to a nominal center point of the intersection and should not be treated as a precise identification of any particular point location on the earth\u2019s surface. (For a more detailed discussion, see the Spatial Coordinates entry in Appendix 3 .) A List of Intersecting Streets (in the form of PB5SCs for MSW and B5SCs for COW) identifying up to five streets incident upon the intersection. Subject to the space limitation, the list may include the PB5SCs or B5SCs of the two input streets, unless one is the pseudo-street BEND, which for Function 2 is never included in the list. The list may also include the PB5SCs or B5SCs of the pseudo-streets CITY LIMIT and DEAD END, and it may include the PB5SCs or B5SCs of any intersection names that are valid for the given intersection. If the application has a need to display the street names of the intersecting streets, the Cross Street Names Flag in WA1 can be turned \u2018on\u2019 and the names will be returned in the List of Street Names in WA1 (see entries for Cross Street Names Flag and List of Street Names in Appendix 3 ). Note that the cross street names feature incurs processing overhead, and should only be used when necessary. A Compass Direction for Intersection Key. If the first two entries in the List of Intersecting Streets are an instance of the two-node case (i.e., they intersect twice), the Compass Direction for Intersection Key contains a compass direction value identifying the intersection in terms of those two streets. If the two streets are not an instance of the two-node case, this field is blank. If both a \u2018longitudinal\u2019 compass direction (\u2018N\u2019 or \u2018S\u2019) and a \u2018latitudinal\u2019 compass direction (\u2018E\u2019 or \u2018W\u2019) are valid for this intersection, the longitudinal compass direction value appears in this field. A Compass Direction for Intersection Key . If the first two entries in the List of Intersecting Streets are an instance of the two-node case (i.e., they intersect twice), the Compass Direction for Intersection Key contains a compass direction value identifying the intersection in terms of those two streets. If the two streets are not an instance of the two-node case, this field is blank. If both a \u2018longitudinal\u2019 compass direction (\u2018N\u2019 or \u2018S\u2019) and a \u2018latitudinal\u2019 compass direction (\u2018E\u2019 or \u2018W\u2019) are valid for this intersection, the longitudinal compass direction value appears in this field. Political geography and CD Eligibility (COW Only) . Function 2 returns Assembly District, Congressional District, State Senatorial District, Civil Court District, City Council District and CD Eligibility. Since it is possible that multiple political geographies may exist at an intersection, Geosupport returns the political geography associated with the most frequently occurring Election District / Assembly District (ED/AD). If there is no one political geography that occurs more frequently than any other, then the political geography associated with the ED/AD that is one of the most frequently occurring ED/ADs and that has the lowest numeric value is selected. This insures that the same data will be returned from one data cycle to the next data cycle. The only exception should be the changes in the political geography associated with the decennial census conducted by the federal government. No indication is provided that the intersection lies on a political boundary Since Function 2 treats street intersections as if they were single points, Geosupport does not provide a means for a user to request information specific to a portion of an intersection, such as a particular block corner. In the event that an intersection lies on a boundary of two or more geographic districts of a particular type, Function 2 returns the identifier for one of those districts, but provides no indication that some of the intersection\u2019s corners may lie in other districts. The district identifier that is returned for such an intersection is selected using an algorithm based on the community districts and atomic polygons (previously known as dynamic blocks) at that intersection. This algorithm typically allows for data consistency from one data release to the next. Note that the same district identifier will be returned no matter how the intersection is specified. For example, the intersection of East 116 Street and Fifth Avenue in Manhattan lies on the boundaries of three different School Districts (SDs) (see Figure VII-10). Two of the four block corners at this intersection lie in SD 3, one lies in SD 4 and one lies in SD 5. For this intersection, Function 2 returns SD 3, and provides no indication that the intersection lies on a SD boundary. Figure V11-10: Multiple Districts at an Intersection","title":"Function 2 Output Data"},{"location":"chapters/chapterVII/section02/#multi-street-intersections-and-retrieval-consistency","text":"This subsection discusses the common situation of intersections at which there are more than two streets. Geosupport accepts any pair of those streets as a valid input specification for the intersection. (The concept of an intersection of multiple streets should not be confused with the concept of two streets that intersect at multiple points, which was discussed in the preceding subsection.) For example, consider the three-street intersection of Hudson Street, Chambers Street and West Broadway in Manhattan (Figure VII-11). The user can specify this intersection as input to Function 2 in three ways: as the intersection of Hudson Street and Chambers Street; Hudson Street and West Broadway; or Chambers Street and West Broadway. Figure V11-11: Three - Street Intersection Similarly, a four-street intersection can be specified in six ways, etc. Function 2 returns identical WA2 information (other than that related to which streets were the input streets for the call) for an intersection regardless of which pair of streets is used to specify it. Since an intersection of more than two streets can be specified in more than one way, an important issue for some applications that process data by intersection is the ability to retrieve or match data from an application file consistently by intersection. (For a general discussion of the concept of application file geographic retrieval consistency, see Section I.3 .) That is, it is desirable for applications to be able to retrieve data successfully for a multi-street intersection regardless of which pair of streets is used to identify the intersection. A data item called the Node ID, which is returned in Function 2's WA2, is designed to serve effectively as a unique, consistent intersection identifier. It is able to so serve because the same Node ID Number is returned regardless of how the intersection is specified. Moreover, the Node ID assigned to an intersection is kept constant over time. That is, the same Node ID is returned for a given intersection by every Geosupport release, even in cases where there is a change in the set of streets defining an intersection (such as the presence of a new street, the closure of an existing street, or a change in the street code assigned to a street).","title":"Multi-Street Intersections and Retrieval Consistency"},{"location":"chapters/chapterVII/section02/#fuzzy-intersection-processing-function-2-front-truncated-street-names","text":"Under certain conditions, Function 2 will return data when front-truncated street names are given as input; e.g. 14 STREET instead of EAST 14 STREET or WEST 14 STREET. If a user supplies a front-truncated street name as one of the names that define an intersection, Geosupport will attempt to find the intersection using the appropriate street names. If Geosupport is successful in finding the intersection, it will process the call and issue a warning message (Reason Code J) indicating which street name was assumed. The following are a number of examples and special cases of this processing. Consider the example of a user who issues a Function 2 call with 24 STREET and THIRD AVENUE in Manhattan as the input. Since 24 STREET in Manhattan is a front-truncated street name, Geosupport knows that there exists an EAST 24 STREET and a WEST 24 STREET in Manhattan. Geosupport attempts to find the intersection of East 24 Street and Third Avenue and the intersection of West 24 Street and Third Avenue in Manhattan. Since the intersection of East 24 Street and Third Avenue does exist in Manhattan and the intersection of West 24 Street and Third Avenue does not exist, data for the intersection of East 24 Street and Third Avenue in Manhattan is returned to the user, together with a warning message indicating that East 24 Street is assumed. If the user supplies the front-truncated street name 34 STREET and FIFTH AVENUE in Manhattan as input to a Function 2 call, Geosupport will discover that both the intersection of EAST 34 STREET and FIFTH AVENUE and the intersection of WEST 34 STREET and FIFTH AVENUE exist. In this case, the Node IDs will be compared. Since, in this case, the Node IDs are the same, data for the intersection will be returned to the user. The street with the lower numeric value for its street code will be returned, which in this example is East 34 Street. The user will also receive a warning message indicating that East 34 Street is assumed. If the user supplies the front-truncated street name 177 STREET and JEROME AVENUE in the Bronx as input to a Function 2 call, Geosupport will find that both the intersection of EAST 177 STREET and JEROME AVENUE and the intersection of WEST 177 STREET and JEROME AVENUE exist. However in this case the Node IDs will be different because a dogleg exists at the intersection. The Function 2 call would be rejected with an error message indicating that the intersection is not unique. As a result, the user must determine whether East or West 177 Street is the desired street. Non-addressable Place Names (NAPs) will not be considered when processing truncated street names at an intersection. For example, if the user supplies \u201833\u2019 and MADISON AVENUE in Manhattan as the input to a Function 2 call, Geosupport will find that in addition to EAST 33 STREET and WEST 33 STREET, there is also 33 POLICE PRECINCT. 33 Police Precinct is eliminated as a possibility because it is a NAP which may not be used in a Function 2 call. This leaves only East and West 33 Street as possibilities and since only East 33 Street intersects Madison Avenue in Manhattan, the call will be processed successfully and a warning message will indicate a street name change.","title":"Fuzzy Intersection Processing (Function 2) - Front-truncated street names"},{"location":"chapters/chapterVII/section02/#note-concerning-the-vestigial-function-2c","text":"A Geosupport enhancement that was implemented in Version 9.5 (March 1998) enabled Function 2 to process pairs of streets that intersect twice, using the input compass direction field to identify the specific intersection to be processed. Prior to that enhancement, Function 2 could only process pairs of streets that intersect once, and a separate function, Function 2C, had to be used to process pairs of streets that intersect twice. The enhancement enabled Function 2 to process both types of intersection input, rendering Function 2C obsolete. Function 2C is a \u2018vestigial\u2019 function, in the sense in which this term is described in Chapter I.5 . In particular, all new applications should be designed to perform all intersection processing using Function 2 only. It is recommended that users modify existing applications by replacing all Function 2C calls with Function 2 calls . To do so, it may be necessary or appropriate to modify the application\u2019s reject handling routines to reflect the situations and GRC\u2019s delineated in Table VII-2. Function 2C is not further documented in this User Programming Guide .","title":"Note Concerning the \u2018Vestigial\u2019 Function 2C:"},{"location":"chapters/chapterVII/section03/","text":"VII.3 Three-Street Configurations - Concepts and Terminology There are many applications in which geographic locations to be processed are identified in terms of an \u2018on\u2019 street between two cross streets. Geosupport can process several types of such locations, namely street segments, blockfaces and street stretches. We refer generically to all these types of locations as three-street configurations . This section introduces concepts and terminology needed to discuss three-street configurations. The three succeeding sections discuss the Geosupport functions that process the various types of three-street configurations: Chapter VII.4 discusses Function 3, which processes street segments Chapter VII.5 discusses Function 3C, which processes blockfaces Chapter VII.6 discusses Function 3S, which processes street stretches. The definitions below are based on Geosupport\u2019s single-line map model of the city\u2019s geography, as explained in Chapter VII.1. Also, recall that the term \u2018street\u2019 refers to a street name or street code that satisfies the criteria delineated in Chapter VII.1. The term \u2018node\u2019 is as defined in Chapter VII-2 . Street Stretches and Street Segments A street stretch is a portion (possibly all) of a street (called the \u2018on\u2019 street ) between any two nodes along it (called the delimiting nodes of the stretch). A street stretch is considered to comprise both sides of the \u2018on\u2019 street. For Geosupport purposes, a street segment is defined as a street stretch between a pair of delimiting nodes which may not coincide with an intersecting street . A street segment can therefore consist of a set of one or more CSCL segments. In Geosupport, the general term \u2018street segment\u2019 is used to describe two situations. A street segment is strictly defined as a street stretch such that the two delimiting nodes are consecutive along the \u2018on\u2019 street. Every such segment is uniquely identified by a segment ID. For Geosupport purposes, a street segment often refers to a street stretch consisting of more than one segment, such that at least one side of the street stretch is a single entire blockface. This street stretch is defined by multiple segments id\u2019s, all of which may optionally be returned to the user. For a more detailed discussion see Chapter VII.4 , which describes Function 3. Every street stretch is composed of a set of one or more street segments, which do not necessarily form a continuously connected chain. That is, a street stretch can encompass gaps in the street. Some examples of street stretches and segments follow. Figure V11-12: Street Stretch * The stretch of Madison Avenue between East 51st Street and East 52nd Street in Manhattan (see Figure VII-12) is a street segment. The stretch of Madison Avenue between East 51st Street and East 54th Street is not a segment because its delimiting nodes are not consecutive along the \u2018on\u2019 street; it is a stretch consisting of three segments. FigureV11-13: Street Stretch Containing Gap * An example of a street stretch that is not connected is Manhattan\u2019s West 64th Street between Central Park West and West End Avenue (see Figure VII-13). West 64th Street has a gap (does not exist) between Columbus Avenue and Amsterdam Avenue, where it is interrupted by Lincoln Center. As a result, the stretch in question consists of two sub-stretches that are not connected to each other. Street stretches can be delimited by pseudo-intersections and intersection names as well as conventional street intersections: * An example of a street segment in the Bronx delimited by a dead end is CROES AVENUE between WATSON AVENUE and DEAD END (see Figure VII-3). * An example of a street stretch in Queens delimited by the city limits is LINDEN BOULEVARD between CROSS ISLAND PARKWAY and CITY LIMITS (see Figure VII-2). * Some examples of street segments in Manhattan delimited by bends are: BARROW STREET between HUDSON STREET and BEND (also specifiable in terms of conventional streets as BARROW STREET between HUDSON STREET and COMMERCE STREET); and COMMERCE STREET between BARROW STREET and BEND (the only way to specify this segment) (see Figure VII-4). ## Logical Direction Assigned to Streets GSS has assigned a logical direction to every street segment in New York City. References to the left and right sides of any segment, and references to its delimiting nodes as the \u2018from\u2019 node and \u2018to\u2019 node, are relative to the segment\u2019s logical direction. For streets that have addresses, the logical direction is always assigned as the direction of increasing addresses. Therefore, for any street with addresses, the \u2018from\u2019 node of any segment is always the node at its low address end, and the \u2018to\u2019 node is the node at the high address end; the left and right sides of the segment are determined accordingly. For features that have no addresses, such as all railroad tracks and some highways, the logical direction is assigned arbitrarily, but consistently, along the feature\u2019s full extent. Note that a street\u2019s logical direction, and thus the meaning of \u2018from\u2019, \u2018to\u2019, \u2018left\u2019 and \u2018right\u2019, is unrelated to the street\u2019s traffic direction, to its orientation with respect to the points of the compass, or to the order in which cross streets delimiting a stretch are specified. ## Blockfaces A blockface is a continuous frontage of a physical city block along one street, ignoring the presence of any bending points or other intervening nodes. That is, the portions of a street frontage of a block that lie on both sides of a bending point are considered to be parts of the same blockface. FigureV11-14: Block with Four Blockfaces For example, the Manhattan block bounded by Madison and Park Avenues and East 51st and East 52nd Streets has the following four blockfaces (see Figure VII-14, which, unlike most of the figures in this chapter, contains a double-line map to illustrate clearly the concept of a blockface): * The east side of Madison Avenue between East 51st and East 52nd Streets * The south side of East 52nd Street between Madison and Park Avenues * The west side of Park Avenue between East 51st and East 52nd Streets * The north side of East 51st Street between Madison and Park Avenues An example of a stretch with a bending point in Manhattan is Commerce Street between Bedford and Barrow Streets (see Figure VII-4). Both sides of this stretch are single blockfaces, even though the stretch consists of two segments connected at the bending point. ## T-Intersections Figure VII-15: T-Intersection A street stretch, and in particular a street segment, is considered to comprise both sides of the \u2018on\u2019 street. In the case of a street segment, each side necessarily is either a single entire blockface or a portion of one. Many segments consist of a pair of facing entire blockfaces along the \u2018on\u2019 street. However, this is not the case at a street configuration called a T-intersection. A T-intersection (so named because the streets are configured like the letter \u2018T\u2019) is an intersection where a cross street intersects the \u2018on\u2019 street on one side of the \u2018on\u2019 street only, and there are no cross streets on the other side of the \u2018on\u2019 street at that intersection. At a T-intersection, the \u2018on\u2019 street has a blockface that encompasses more than one segment, and conversely, at least one side of each of those segments consists of only a portion of that blockface. An example of a T-intersection in Manhattan is the intersection of Fifth Avenue and East 41st Street (Figure VII-15). Because of the presence of the New York Public Library main building along the west side of Fifth Avenue between West 40th and West 42nd Streets, there are no cross streets on the west side of Fifth Avenue where it intersects with East 41st Street. The long blockface on the west side of Fifth Avenue encompasses two segments, each consisting of a portion of this long blockface facing a shorter entire blockface on the east side of Fifth Avenue. Figure V11-16: Two Consecutive T- Intersections It is possible for a street to have T-intersections at several consecutive nodes. An example in Manhattan is the three-segment stretch of Lexington Avenue between East 42nd and East 45th Streets (Figure VII-16). Because of the presence of the Grand Central Terminal complex on the west side of Lexington Avenue, East 43rd Street and East 44th Street intersect Lexington Avenue only on its east side, forming two consecutive T-intersections along Lexington Avenue. As a result, the west side of this stretch is a single long blockface, which faces three shorter blockfaces on the east side of Lexington Avenue. Figure VII-17: T-Intersections on Alternating Sides of street When a street has consecutive T-intersections at which the cross streets are on alternating sides of the \u2018on\u2019 street, then long blockfaces on both sides of the \u2018on\u2019 street face each other in overlapping fashion, forming segments both sides of which consist of portions of those long blockfaces. Union Avenue in Staten Island is an example (Figure VII-17). Note that Union Avenue between Leyden Avenue and Walloon Street is a street segment, because the two delimiting intersections are consecutive along Union Avenue, even though the cross streets are on opposite sides of the \u2018on\u2019 street.","title":"VII.3 Three-Street Configurations - Concepts and Terminology"},{"location":"chapters/chapterVII/section03/#street-stretches-and-street-segments","text":"A street stretch is a portion (possibly all) of a street (called the \u2018on\u2019 street ) between any two nodes along it (called the delimiting nodes of the stretch). A street stretch is considered to comprise both sides of the \u2018on\u2019 street. For Geosupport purposes, a street segment is defined as a street stretch between a pair of delimiting nodes which may not coincide with an intersecting street . A street segment can therefore consist of a set of one or more CSCL segments. In Geosupport, the general term \u2018street segment\u2019 is used to describe two situations. A street segment is strictly defined as a street stretch such that the two delimiting nodes are consecutive along the \u2018on\u2019 street. Every such segment is uniquely identified by a segment ID. For Geosupport purposes, a street segment often refers to a street stretch consisting of more than one segment, such that at least one side of the street stretch is a single entire blockface. This street stretch is defined by multiple segments id\u2019s, all of which may optionally be returned to the user. For a more detailed discussion see Chapter VII.4 , which describes Function 3. Every street stretch is composed of a set of one or more street segments, which do not necessarily form a continuously connected chain. That is, a street stretch can encompass gaps in the street. Some examples of street stretches and segments follow. Figure V11-12: Street Stretch * The stretch of Madison Avenue between East 51st Street and East 52nd Street in Manhattan (see Figure VII-12) is a street segment. The stretch of Madison Avenue between East 51st Street and East 54th Street is not a segment because its delimiting nodes are not consecutive along the \u2018on\u2019 street; it is a stretch consisting of three segments. FigureV11-13: Street Stretch Containing Gap * An example of a street stretch that is not connected is Manhattan\u2019s West 64th Street between Central Park West and West End Avenue (see Figure VII-13). West 64th Street has a gap (does not exist) between Columbus Avenue and Amsterdam Avenue, where it is interrupted by Lincoln Center. As a result, the stretch in question consists of two sub-stretches that are not connected to each other. Street stretches can be delimited by pseudo-intersections and intersection names as well as conventional street intersections: * An example of a street segment in the Bronx delimited by a dead end is CROES AVENUE between WATSON AVENUE and DEAD END (see Figure VII-3). * An example of a street stretch in Queens delimited by the city limits is LINDEN BOULEVARD between CROSS ISLAND PARKWAY and CITY LIMITS (see Figure VII-2). * Some examples of street segments in Manhattan delimited by bends are: BARROW STREET between HUDSON STREET and BEND (also specifiable in terms of conventional streets as BARROW STREET between HUDSON STREET and COMMERCE STREET); and COMMERCE STREET between BARROW STREET and BEND (the only way to specify this segment) (see Figure VII-4). ## Logical Direction Assigned to Streets GSS has assigned a logical direction to every street segment in New York City. References to the left and right sides of any segment, and references to its delimiting nodes as the \u2018from\u2019 node and \u2018to\u2019 node, are relative to the segment\u2019s logical direction. For streets that have addresses, the logical direction is always assigned as the direction of increasing addresses. Therefore, for any street with addresses, the \u2018from\u2019 node of any segment is always the node at its low address end, and the \u2018to\u2019 node is the node at the high address end; the left and right sides of the segment are determined accordingly. For features that have no addresses, such as all railroad tracks and some highways, the logical direction is assigned arbitrarily, but consistently, along the feature\u2019s full extent. Note that a street\u2019s logical direction, and thus the meaning of \u2018from\u2019, \u2018to\u2019, \u2018left\u2019 and \u2018right\u2019, is unrelated to the street\u2019s traffic direction, to its orientation with respect to the points of the compass, or to the order in which cross streets delimiting a stretch are specified. ## Blockfaces A blockface is a continuous frontage of a physical city block along one street, ignoring the presence of any bending points or other intervening nodes. That is, the portions of a street frontage of a block that lie on both sides of a bending point are considered to be parts of the same blockface. FigureV11-14: Block with Four Blockfaces For example, the Manhattan block bounded by Madison and Park Avenues and East 51st and East 52nd Streets has the following four blockfaces (see Figure VII-14, which, unlike most of the figures in this chapter, contains a double-line map to illustrate clearly the concept of a blockface): * The east side of Madison Avenue between East 51st and East 52nd Streets * The south side of East 52nd Street between Madison and Park Avenues * The west side of Park Avenue between East 51st and East 52nd Streets * The north side of East 51st Street between Madison and Park Avenues An example of a stretch with a bending point in Manhattan is Commerce Street between Bedford and Barrow Streets (see Figure VII-4). Both sides of this stretch are single blockfaces, even though the stretch consists of two segments connected at the bending point. ## T-Intersections Figure VII-15: T-Intersection A street stretch, and in particular a street segment, is considered to comprise both sides of the \u2018on\u2019 street. In the case of a street segment, each side necessarily is either a single entire blockface or a portion of one. Many segments consist of a pair of facing entire blockfaces along the \u2018on\u2019 street. However, this is not the case at a street configuration called a T-intersection. A T-intersection (so named because the streets are configured like the letter \u2018T\u2019) is an intersection where a cross street intersects the \u2018on\u2019 street on one side of the \u2018on\u2019 street only, and there are no cross streets on the other side of the \u2018on\u2019 street at that intersection. At a T-intersection, the \u2018on\u2019 street has a blockface that encompasses more than one segment, and conversely, at least one side of each of those segments consists of only a portion of that blockface. An example of a T-intersection in Manhattan is the intersection of Fifth Avenue and East 41st Street (Figure VII-15). Because of the presence of the New York Public Library main building along the west side of Fifth Avenue between West 40th and West 42nd Streets, there are no cross streets on the west side of Fifth Avenue where it intersects with East 41st Street. The long blockface on the west side of Fifth Avenue encompasses two segments, each consisting of a portion of this long blockface facing a shorter entire blockface on the east side of Fifth Avenue. Figure V11-16: Two Consecutive T- Intersections It is possible for a street to have T-intersections at several consecutive nodes. An example in Manhattan is the three-segment stretch of Lexington Avenue between East 42nd and East 45th Streets (Figure VII-16). Because of the presence of the Grand Central Terminal complex on the west side of Lexington Avenue, East 43rd Street and East 44th Street intersect Lexington Avenue only on its east side, forming two consecutive T-intersections along Lexington Avenue. As a result, the west side of this stretch is a single long blockface, which faces three shorter blockfaces on the east side of Lexington Avenue. Figure VII-17: T-Intersections on Alternating Sides of street When a street has consecutive T-intersections at which the cross streets are on alternating sides of the \u2018on\u2019 street, then long blockfaces on both sides of the \u2018on\u2019 street face each other in overlapping fashion, forming segments both sides of which consist of portions of those long blockfaces. Union Avenue in Staten Island is an example (Figure VII-17). Note that Union Avenue between Leyden Avenue and Walloon Street is a street segment, because the two delimiting intersections are consecutive along Union Avenue, even though the cross streets are on opposite sides of the \u2018on\u2019 street.","title":"Street Stretches and Street Segments"},{"location":"chapters/chapterVII/section04/","text":"VII.4 Street Segments and Related Configurations: Function 3 Function 3 is designed to accept as input portions of a street that are, loosely speaking, \u2018one block long\u2019. More precisely, Function 3 processes two types of input street stretches: Street segments (i.e., portions of a street between two consecutive nodes). Street stretches consisting of more than one segment, such that at least one side of the street stretch is a single entire blockface. (Note that the user has the option of requesting that all segment ids in this type of output stretch be returned. See discussion of the Auxiliary Segment switch in the description of Function 3 output.) This type of input street stretch has three sub-cases: At a T-intersection, there is a street stretch in which one side is a single entire blockface. At a bending point at which there are no cross streets, there is a street stretch in which both sides are single entire blockfaces. Physical street segments that are split into multiple sub-segments because of a change in some district such as ZIP codes or police beats. The following examples illustrate the types of input data acceptable and not acceptable to Function 3. For the Lexington Avenue examples (in Manhattan), see Figure VII-16. For the Union Avenue examples (in Staten Island), see Figure VII-17. For the Commerce Street examples (in Manhattan), see Figure VII-4. For the Croes Avenue example (in the Bronx), see Figure VII-3. Input Data Examples for Function 3 Input \u2018On\u2019 Street One Cross Str. Other Cross Str. Fn 3 Action Reason for Action Lexington Avenue East 42 Street East 43 Street Accepted Single segment Lexington Avenue East 43 Street East 44 Street Accepted Single segment Lexington Avenue East 44 Street East 45 Street Accepted Single segment Lexington Avenue East 42 Street East 45 Street Accepted Single entire blockface on west side of Lexington Ave Lexington Avenue East 42 Street East 44 Street Rejected Multi-segment, neither side of Lex. Ave is a single entire blockface - west side is a portion of a blockface, east side comprises 2 blockfaces. Lexington Avenue East 43 Street East 45 Street Rejected Multi-segment, neither side of Lex. Ave is a single entire blockface - west side is a portion of a blockface, east side comprises 2 blockfaces. Union Avenue Leyden Avenue Walloon Street Accepted Single segment Union Avenue Walloon Street Journey Street Accepted Single segment Union Avenue Journey Street Union Court Accepted Single segment Union Avenue Union Court Brabant Street Accepted Single segment Union Avenue Leyden Avenue Journey Street Accepted Single entire blockface on west side of Union Avenue Union Avenue Walloon Street Union Court Accepted Single entire blockface on east side of Union Avenue Union Avenue Journey Street Brabant Street Accepted Single entire blockface on west side of Union Avenue Commerce Street Barrow Street Bend Accepted Single segment Commerce Street Bedford Street Bend Accepted Single segment Commerce Street Barrow Street Bedford Street Accepted Both sides are single entire blockfaces Croes Avenue Watson Avenue Dead End Accepted Single entire segment Function 3 Input Data Specification and Validation Applications pass an input stretch to Function 3 by specifying three input streets, consisting of the \u2018on\u2019 street and two cross streets, in the appropriate WA1 input fields. The input cross streets, but not the \u2018on\u2019 street, may be pseudo-streets or intersection names. The input cross streets may be specified in either order. As with all Geosupport street input, the three input streets to a Function 3 call are specified in the form of either street names or street codes. If either or both of the delimiting intersections of the input stretch has more than one cross street, the stretch may be specified using any of those cross streets. For example, the segment of Chambers Street illustrated in Figure VII-11 may be specified either as \u2018Chambers Street between Church Street and West Broadway\u2019, or as \u2018Chambers Street between Church Street and Hudson Street\u2019. A successful two-work-area call to Function 3 signifies that the three input streets form a combination of an \u2018on\u2019 street and two cross streets that specify either a valid street segment or a valid street stretch at least one side of which is a single entire blockface. FigureVII-18: Ambiguous Segment Specification Ambiguous Function 3 Input Data Some combinations of an \u2018on\u2019 street and two cross streets are ambiguous as Function 3 input data, that is, the data specify more than one stretch that satisfies Function 3\u2019s input criteria. An example of ambiguous Function 3 input data in Queens is \u2018Alderton Street between Asquith Crescent and 64th Road\u2019 (Figure VII-18). This combination of streets describes two different segments of Alderton Street. Function 3 rejects such ambiguous input. Unlike Function 2, which provides a means (compass direction input) for users to specify unambiguously an intersection of two streets that intersect in two different places, Geosupport provides the user with no recourse when Function 3 rejects an input stretch specification as ambiguous. Function 3 Output Data If a two-work-area call to Function 3 is successful, information about both sides of the input stretch is returned in WA2. (Note that the long WA2 option is available for the MSW Function 3. See Section II.5 .) Some of the data items apply to both the left and right sides of the segment, e.g. the \u2018on\u2019 street name and street code, segment length, \u2018From\u2019 node (COW only), \u2018To\u2019 node (COW only), etc. Many of the data items in Function 3\u2019s WA2 (both regular and long) are paired, with one item for the left side of the \u2018on\u2019 street and another item of the same type for the right side. For example, there are fields for left and right ZIP code, for left and right 2010 census tract, and for left and right address ranges (each range consisting of a \u2018from\u2019 house number and a \u2018to\u2019 house number). Other examples exist in the COW WA2 for Function 3, e.g. fields for left and right Elections District (ED), for left and right Assembly District (AD), and for left and right Blockface ID (in COW Function 3 Extended). As explained in Chapter VII.3 , left and right are determined by the \u2018on\u2019 street\u2019s logical direction, and therefore are independent of the order in which the user specifies the input cross streets. In the case of an input stretch encompassing more than one segment (the T-intersection and bend cases), the values of the WA2 items that Function 3 returns for the side of the street comprising more than one blockface are as follows. The low and high house number values that are returned correspond to the entire stretch. The values that are returned for all other side-related items correspond to the \u2018last\u2019 (relative to the stretch\u2019s logical direction) blockface. For example, consider Fifth Avenue in Manhattan between East 40 and East 42 Streets (see Figure VII-15). Since the direction of increasing addresses along Fifth Avenue is from south to north, that is also Fifth Avenue\u2019s logical direction. It follows that the right side of the given stretch is the east side. It consists of two blockfaces. Relative to the logical direction, the \u2018last\u2019 of these blockfaces is the one between East 41 and East 42 Streets. Accordingly, the right address range that is returned in WA2, consisting of the right low house number and the right high house number, corresponds to the entire right side of Fifth Avenue between East 40 and East 42 Streets. The values returned for all other items for the right side of the input stretch correspond to the \u2018last\u2019 blockface, the one between East 41 and East 42 Streets. The data returned represents two segments, but only one Segment ID is capable of being returned in the regular Function 3 WA2; consequently only the Segment ID with the lowest value is returned in the regular Function 3 WA2. COW Function 3 is capable of returning all the Segment IDs that exist in the returned segment. (See discussion of Auxiliary Segment Switch below.) If the user requests Fifth Avenue between East 40th street and East 41st Street, the segment ID returned will be 00034174. If the user requests Fifth Avenue between East 41st Street and East 42nd Street, the Segment ID returned will be 00034176. However if the user requests Fifth Avenue between East 40th Street and East 42nd Street, which represents two segments, (and the Auxiliary Segment Option is not requested) the segment ID returned will be 00034174, which is numerically the lower of the two numbers. A COW Function 3 call may return, at the user\u2019s option, all the Segment IDs (up to 70) of the segments that comprise the generated output segment. To request this data, the Auxiliary Segment Switch (AUXSEG a.k.a. SEGAUX) in the COW WA1 must be set to \u2018Y\u2019. This will result in all the Segment IDs (up to 70) being returned in a 500-byte area appended to the COW Function 3 WA2. Function 3 returns the Segment Length in WA2. This value is expressed in feet, and is computed from the Spatial Coordinates of the nodes that constitute the segment\u2019s endpoints; it is an approximation to the true length of the segment. Segment Length values provided by Geosupport should not be used in applications that require an engineering level of precision. In the case of an input stretch encompassing more than one segment, the Segment Length value that function 3 returns is the sum of the lengths of the constituent segments. Another item that Function 3 returns in WA2 is called the Curve Flag. It indicates whether the input segment is curved, and if so, whether that curve is an arc of a circle or is an irregular curve. In the case of an arc of a circle, the Curve Flag indicates on which side of the segment\u2019s \u2018secant line\u2019 (the straight line joining the segment\u2019s endpoint nodes) the curve lies. If the input segment is curved, whether regularly or irregularly, the Segment Length value returned is approximately equal to the true arc length of the curve, rather than the secant length. If the input stretch encompasses more than one segment, the Curve Flag is returned with an \u2018on\u2019 (non-blank) value if at least one of the constituent segments is curved. For further information, see the entries for Curve Flag and Segment Length in Appendix 3 . In COW format, Function 3 also returns the FROM and TO node IDs. In addition, in Extended COW format, Function 3 Extended (with or without Auxiliary Segments) returns the X,Y coordinates associated with each of the nodes as well. The Extended WA2 Mode Switch can be used to request the Extended COW format for Function 3. The first 450 bytes of Function 3 with the Mode Switch set to \u201cX\u201d will be the same as for regular COW Function 3 calls. The additional fields consist of items such as Bike Lane 2, Bike Traffic Direction, Street Width, X-Y Coordinates, Roadway Type, Traffic Direction, Speed Limit, Neighborhood Tabulation Area (NTA) Names and PUMA codes. For a full list of the data returned, see the COW Work Area layout in Appendix 13 . The long WA2 option is available for the MSW Function 3. The additional data provided in the MSW long WA2 include the census geography and the administrative fire district geography. All this data is included in the regular COW Function 3 WA2. Fuzzy Street Name Search for Functions 3 and 3C See Section VII.8 Fuzzy Street Name Search Processing for Functions 3, 3C, and 3S Cross Street Reversal Flag A WA2 item returned by Function 3 called the Cross Street Reversal Flag indicates whether the order of the input streets is consistent with, or opposite to, the stretch\u2019s logical direction. This flag can be used to determine which side of the street is the left side and which side is the right side in relation to the order of the input cross streets, as follows: If the Cross Street Reversal Flag is returned as a blank, the cross street that was specified in the input First Cross Street field in WA1 is at the \u2018from\u2019 end of the stretch and the cross street that was specified in the Second Cross Street field is at the \u2018to\u2019 end, so that left and right are consistent with facing from the first cross street to the second cross street. If the Cross Street Reversal Flag contains an \u2018R\u2019, the first input cross street is at the \u2018to\u2019 end and the second is at the \u2018from\u2019 end, so that left and right are consistent with facing from the second cross street to the first cross street. For example, consider the segment of Lexington Avenue between East 42nd and East 43rd Streets. Since the addresses on Lexington Avenue increase from south to north, East 42nd Street is at the \u2018from\u2019 end of this segment and East 43rd Street is at the \u2018to\u2019 end. If an application specifies this segment to Function 3 by passing East 42nd Street in the First Cross Street WA1 field and East 43rd Street in the Second Cross Street WA1 field, the Cross Street Reversal Flag will be returned as a blank. On the other hand, if East 43rd Street is passed in the First Cross Street field and East 42nd Street is passed in the Second Cross Street field, the flag will be returned containing an \u2018R\u2019. Segment Orientation In applications that involve field operations, such as those that generate work orders to dispatch personnel to specific blockfaces, the use of \u2018left\u2019 and \u2018right\u2019 as descriptors of the sides of a street can cause confusion for personnel in the field, because their significance is based on the street\u2019s logical direction, which is not necessarily obvious in the field. Compass directions, on the other hand, are absolute descriptors of the sides of a street; the west side of Lexington Avenue in Manhattan is a specific, invariant side of that street, and is independent of how an observer may be facing. So in such applications, compass directions may be more suitable as side-of-street descriptors than \u2018left\u2019 and \u2018right\u2019. To determine compass direction descriptors for the left and right sides of a segment, applications can use an item called the Segment Orientation that Function 3 returns in WA2. The Segment Orientation indicates how the input segment (or the last segment of the input stretch, if it consists of more than one segment) is oriented with respect to the points of the compass, taking into consideration the \u2018on\u2019 street\u2019s logical direction. For example, if the input segment is Lexington Avenue between East 42nd Street and East 43rd Street, using the Segment Orientation, the application can determine that the left side of this segment (as determined by the street\u2019s assigned logical direction) is the west side and the right side is the east side. See the entry for Segment Orientation in Appendix 3 for details on the possible values of the Segment Orientation and how to use it to determine compass direction descriptors for sides of streets. In addition, in some applications it is desirable to be able to describe the \u2018ends\u2019 of a street segment in terms of a compass direction. The application can use the Segment Orientation in conjunction with the Cross Street Reversal Flag to express a compass direction descriptor for a side of a street in terms of left or right relative to a particular ordering of the cross streets (as opposed to left and right relative to the street\u2019s logical direction). For example, the application can determine that, when facing from East 42nd Street to East 43rd Street, the left side of Lexington Avenue is the west side; or that, when facing from East 43rd Street to East 42nd Street, the left side of Lexington Avenue is the east side. Applications can use the Segment Orientation and the Cross Street Reversal Flag to determine compass direction descriptors for the \u2018ends\u2019 of a street segment, as well as its sides. For example, it can be determined that East 43rd Street is at the north end of the Lexington Avenue segment in our example, and East 42nd Street is at the south end. See the entry for Segment Orientation in Appendix 3 for further details. Consistent Retrieval of Application Data by \u2018On\u2019 Street and Two Cross Streets If a street stretch has a delimiting node at which there is more than one cross street, the stretch can be specified in more than one way. Some applications require the ability to retrieve records for stretches from an application file consistently by geographic location, that is, independently of which cross streets were used to specify a stretch at record creation time and which cross streets are used at retrieval time. Function 3 provides items that can be used to form a key for such retrieval. Among the output items that Function 3 returns in WA2 are two lists of street codes (in the form of PB5SCs) for all the cross streets at the two delimiting nodes. Each list is ordered so that its first entry is always the numerically smallest PB5SC of all the entries in that list. This arrangement facilitates the formation by the application of a key for consistent geographic retrieval. The key would consist of a combination of the PB5SC for the \u2018on\u2019 street, the first entry in the \u2018from\u2019 cross street list, and the first entry in the \u2018to\u2019 cross street list. If the application has a need to display the street names of the cross streets, the Cross Street Names Flag in WA1 can be turned \u2018on\u2019 and the names will be returned in the List of Street Names in WA1 (see entries for Cross Street Names Flag and List of Street Names in Appendix 3 ). Note that the cross street names feature incurs processing overhead, and should only be used when necessary. Converting Address-Keyed Application Data to \u2018On\u2019 Street/Cross Streets As mentioned in Chapter V.5 , Function 1\u2019s WA2 has two lists of cross streets for the two intersections delimiting the blockface containing the input address. Like the cross street lists in Function 3\u2019s WA2, Function 1\u2019s lists are arranged so that the numerically smallest PB5SC in each list is that list\u2019s first entry. (However, unlike Function 3\u2019s lists, either or both of Function 1\u2019s lists can be empty.) Applications can identify an input address to a street stretch by using Function 1\u2019s cross street lists to create a stretch-type key in the same way as described above for Function 3. This is useful in some applications that process geographically heterogeneous input data, with some input records, for example, identified by an address and others by an \u2018on\u2019 street and two cross streets. An example of such an application is the New York City Department of Transportation\u2019s Street Light Information and Complaints System, which generates and tracks work orders for street light repair work. Among the ways in which this application improves the efficiency of those operations is by providing a means to consolidate all transactions involving street lights located on the same street segment into a single work order, regardless of whether the initial identification of the location is by an address or by an \u2018on\u2019 street and two cross streets.","title":"VII.4 Street Segments and Related Configurations: Function 3"},{"location":"chapters/chapterVII/section04/#input-data-examples-for-function-3","text":"Input \u2018On\u2019 Street One Cross Str. Other Cross Str. Fn 3 Action Reason for Action Lexington Avenue East 42 Street East 43 Street Accepted Single segment Lexington Avenue East 43 Street East 44 Street Accepted Single segment Lexington Avenue East 44 Street East 45 Street Accepted Single segment Lexington Avenue East 42 Street East 45 Street Accepted Single entire blockface on west side of Lexington Ave Lexington Avenue East 42 Street East 44 Street Rejected Multi-segment, neither side of Lex. Ave is a single entire blockface - west side is a portion of a blockface, east side comprises 2 blockfaces. Lexington Avenue East 43 Street East 45 Street Rejected Multi-segment, neither side of Lex. Ave is a single entire blockface - west side is a portion of a blockface, east side comprises 2 blockfaces. Union Avenue Leyden Avenue Walloon Street Accepted Single segment Union Avenue Walloon Street Journey Street Accepted Single segment Union Avenue Journey Street Union Court Accepted Single segment Union Avenue Union Court Brabant Street Accepted Single segment Union Avenue Leyden Avenue Journey Street Accepted Single entire blockface on west side of Union Avenue Union Avenue Walloon Street Union Court Accepted Single entire blockface on east side of Union Avenue Union Avenue Journey Street Brabant Street Accepted Single entire blockface on west side of Union Avenue Commerce Street Barrow Street Bend Accepted Single segment Commerce Street Bedford Street Bend Accepted Single segment Commerce Street Barrow Street Bedford Street Accepted Both sides are single entire blockfaces Croes Avenue Watson Avenue Dead End Accepted Single entire segment","title":"Input Data Examples for Function 3"},{"location":"chapters/chapterVII/section04/#function-3-input-data-specification-and-validation","text":"Applications pass an input stretch to Function 3 by specifying three input streets, consisting of the \u2018on\u2019 street and two cross streets, in the appropriate WA1 input fields. The input cross streets, but not the \u2018on\u2019 street, may be pseudo-streets or intersection names. The input cross streets may be specified in either order. As with all Geosupport street input, the three input streets to a Function 3 call are specified in the form of either street names or street codes. If either or both of the delimiting intersections of the input stretch has more than one cross street, the stretch may be specified using any of those cross streets. For example, the segment of Chambers Street illustrated in Figure VII-11 may be specified either as \u2018Chambers Street between Church Street and West Broadway\u2019, or as \u2018Chambers Street between Church Street and Hudson Street\u2019. A successful two-work-area call to Function 3 signifies that the three input streets form a combination of an \u2018on\u2019 street and two cross streets that specify either a valid street segment or a valid street stretch at least one side of which is a single entire blockface. FigureVII-18: Ambiguous Segment Specification","title":"Function 3 Input Data Specification and Validation"},{"location":"chapters/chapterVII/section04/#ambiguous-function-3-input-data","text":"Some combinations of an \u2018on\u2019 street and two cross streets are ambiguous as Function 3 input data, that is, the data specify more than one stretch that satisfies Function 3\u2019s input criteria. An example of ambiguous Function 3 input data in Queens is \u2018Alderton Street between Asquith Crescent and 64th Road\u2019 (Figure VII-18). This combination of streets describes two different segments of Alderton Street. Function 3 rejects such ambiguous input. Unlike Function 2, which provides a means (compass direction input) for users to specify unambiguously an intersection of two streets that intersect in two different places, Geosupport provides the user with no recourse when Function 3 rejects an input stretch specification as ambiguous.","title":"Ambiguous Function 3 Input Data"},{"location":"chapters/chapterVII/section04/#function-3-output-data","text":"If a two-work-area call to Function 3 is successful, information about both sides of the input stretch is returned in WA2. (Note that the long WA2 option is available for the MSW Function 3. See Section II.5 .) Some of the data items apply to both the left and right sides of the segment, e.g. the \u2018on\u2019 street name and street code, segment length, \u2018From\u2019 node (COW only), \u2018To\u2019 node (COW only), etc. Many of the data items in Function 3\u2019s WA2 (both regular and long) are paired, with one item for the left side of the \u2018on\u2019 street and another item of the same type for the right side. For example, there are fields for left and right ZIP code, for left and right 2010 census tract, and for left and right address ranges (each range consisting of a \u2018from\u2019 house number and a \u2018to\u2019 house number). Other examples exist in the COW WA2 for Function 3, e.g. fields for left and right Elections District (ED), for left and right Assembly District (AD), and for left and right Blockface ID (in COW Function 3 Extended). As explained in Chapter VII.3 , left and right are determined by the \u2018on\u2019 street\u2019s logical direction, and therefore are independent of the order in which the user specifies the input cross streets. In the case of an input stretch encompassing more than one segment (the T-intersection and bend cases), the values of the WA2 items that Function 3 returns for the side of the street comprising more than one blockface are as follows. The low and high house number values that are returned correspond to the entire stretch. The values that are returned for all other side-related items correspond to the \u2018last\u2019 (relative to the stretch\u2019s logical direction) blockface. For example, consider Fifth Avenue in Manhattan between East 40 and East 42 Streets (see Figure VII-15). Since the direction of increasing addresses along Fifth Avenue is from south to north, that is also Fifth Avenue\u2019s logical direction. It follows that the right side of the given stretch is the east side. It consists of two blockfaces. Relative to the logical direction, the \u2018last\u2019 of these blockfaces is the one between East 41 and East 42 Streets. Accordingly, the right address range that is returned in WA2, consisting of the right low house number and the right high house number, corresponds to the entire right side of Fifth Avenue between East 40 and East 42 Streets. The values returned for all other items for the right side of the input stretch correspond to the \u2018last\u2019 blockface, the one between East 41 and East 42 Streets. The data returned represents two segments, but only one Segment ID is capable of being returned in the regular Function 3 WA2; consequently only the Segment ID with the lowest value is returned in the regular Function 3 WA2. COW Function 3 is capable of returning all the Segment IDs that exist in the returned segment. (See discussion of Auxiliary Segment Switch below.) If the user requests Fifth Avenue between East 40th street and East 41st Street, the segment ID returned will be 00034174. If the user requests Fifth Avenue between East 41st Street and East 42nd Street, the Segment ID returned will be 00034176. However if the user requests Fifth Avenue between East 40th Street and East 42nd Street, which represents two segments, (and the Auxiliary Segment Option is not requested) the segment ID returned will be 00034174, which is numerically the lower of the two numbers. A COW Function 3 call may return, at the user\u2019s option, all the Segment IDs (up to 70) of the segments that comprise the generated output segment. To request this data, the Auxiliary Segment Switch (AUXSEG a.k.a. SEGAUX) in the COW WA1 must be set to \u2018Y\u2019. This will result in all the Segment IDs (up to 70) being returned in a 500-byte area appended to the COW Function 3 WA2. Function 3 returns the Segment Length in WA2. This value is expressed in feet, and is computed from the Spatial Coordinates of the nodes that constitute the segment\u2019s endpoints; it is an approximation to the true length of the segment. Segment Length values provided by Geosupport should not be used in applications that require an engineering level of precision. In the case of an input stretch encompassing more than one segment, the Segment Length value that function 3 returns is the sum of the lengths of the constituent segments. Another item that Function 3 returns in WA2 is called the Curve Flag. It indicates whether the input segment is curved, and if so, whether that curve is an arc of a circle or is an irregular curve. In the case of an arc of a circle, the Curve Flag indicates on which side of the segment\u2019s \u2018secant line\u2019 (the straight line joining the segment\u2019s endpoint nodes) the curve lies. If the input segment is curved, whether regularly or irregularly, the Segment Length value returned is approximately equal to the true arc length of the curve, rather than the secant length. If the input stretch encompasses more than one segment, the Curve Flag is returned with an \u2018on\u2019 (non-blank) value if at least one of the constituent segments is curved. For further information, see the entries for Curve Flag and Segment Length in Appendix 3 . In COW format, Function 3 also returns the FROM and TO node IDs. In addition, in Extended COW format, Function 3 Extended (with or without Auxiliary Segments) returns the X,Y coordinates associated with each of the nodes as well. The Extended WA2 Mode Switch can be used to request the Extended COW format for Function 3. The first 450 bytes of Function 3 with the Mode Switch set to \u201cX\u201d will be the same as for regular COW Function 3 calls. The additional fields consist of items such as Bike Lane 2, Bike Traffic Direction, Street Width, X-Y Coordinates, Roadway Type, Traffic Direction, Speed Limit, Neighborhood Tabulation Area (NTA) Names and PUMA codes. For a full list of the data returned, see the COW Work Area layout in Appendix 13 . The long WA2 option is available for the MSW Function 3. The additional data provided in the MSW long WA2 include the census geography and the administrative fire district geography. All this data is included in the regular COW Function 3 WA2. Fuzzy Street Name Search for Functions 3 and 3C See Section VII.8 Fuzzy Street Name Search Processing for Functions 3, 3C, and 3S","title":"Function 3 Output Data"},{"location":"chapters/chapterVII/section04/#cross-street-reversal-flag","text":"A WA2 item returned by Function 3 called the Cross Street Reversal Flag indicates whether the order of the input streets is consistent with, or opposite to, the stretch\u2019s logical direction. This flag can be used to determine which side of the street is the left side and which side is the right side in relation to the order of the input cross streets, as follows: If the Cross Street Reversal Flag is returned as a blank, the cross street that was specified in the input First Cross Street field in WA1 is at the \u2018from\u2019 end of the stretch and the cross street that was specified in the Second Cross Street field is at the \u2018to\u2019 end, so that left and right are consistent with facing from the first cross street to the second cross street. If the Cross Street Reversal Flag contains an \u2018R\u2019, the first input cross street is at the \u2018to\u2019 end and the second is at the \u2018from\u2019 end, so that left and right are consistent with facing from the second cross street to the first cross street. For example, consider the segment of Lexington Avenue between East 42nd and East 43rd Streets. Since the addresses on Lexington Avenue increase from south to north, East 42nd Street is at the \u2018from\u2019 end of this segment and East 43rd Street is at the \u2018to\u2019 end. If an application specifies this segment to Function 3 by passing East 42nd Street in the First Cross Street WA1 field and East 43rd Street in the Second Cross Street WA1 field, the Cross Street Reversal Flag will be returned as a blank. On the other hand, if East 43rd Street is passed in the First Cross Street field and East 42nd Street is passed in the Second Cross Street field, the flag will be returned containing an \u2018R\u2019.","title":"Cross Street Reversal Flag"},{"location":"chapters/chapterVII/section04/#segment-orientation","text":"In applications that involve field operations, such as those that generate work orders to dispatch personnel to specific blockfaces, the use of \u2018left\u2019 and \u2018right\u2019 as descriptors of the sides of a street can cause confusion for personnel in the field, because their significance is based on the street\u2019s logical direction, which is not necessarily obvious in the field. Compass directions, on the other hand, are absolute descriptors of the sides of a street; the west side of Lexington Avenue in Manhattan is a specific, invariant side of that street, and is independent of how an observer may be facing. So in such applications, compass directions may be more suitable as side-of-street descriptors than \u2018left\u2019 and \u2018right\u2019. To determine compass direction descriptors for the left and right sides of a segment, applications can use an item called the Segment Orientation that Function 3 returns in WA2. The Segment Orientation indicates how the input segment (or the last segment of the input stretch, if it consists of more than one segment) is oriented with respect to the points of the compass, taking into consideration the \u2018on\u2019 street\u2019s logical direction. For example, if the input segment is Lexington Avenue between East 42nd Street and East 43rd Street, using the Segment Orientation, the application can determine that the left side of this segment (as determined by the street\u2019s assigned logical direction) is the west side and the right side is the east side. See the entry for Segment Orientation in Appendix 3 for details on the possible values of the Segment Orientation and how to use it to determine compass direction descriptors for sides of streets. In addition, in some applications it is desirable to be able to describe the \u2018ends\u2019 of a street segment in terms of a compass direction. The application can use the Segment Orientation in conjunction with the Cross Street Reversal Flag to express a compass direction descriptor for a side of a street in terms of left or right relative to a particular ordering of the cross streets (as opposed to left and right relative to the street\u2019s logical direction). For example, the application can determine that, when facing from East 42nd Street to East 43rd Street, the left side of Lexington Avenue is the west side; or that, when facing from East 43rd Street to East 42nd Street, the left side of Lexington Avenue is the east side. Applications can use the Segment Orientation and the Cross Street Reversal Flag to determine compass direction descriptors for the \u2018ends\u2019 of a street segment, as well as its sides. For example, it can be determined that East 43rd Street is at the north end of the Lexington Avenue segment in our example, and East 42nd Street is at the south end. See the entry for Segment Orientation in Appendix 3 for further details.","title":"Segment Orientation"},{"location":"chapters/chapterVII/section04/#consistent-retrieval-of-application-data-by-on-street-and-two-cross-streets","text":"If a street stretch has a delimiting node at which there is more than one cross street, the stretch can be specified in more than one way. Some applications require the ability to retrieve records for stretches from an application file consistently by geographic location, that is, independently of which cross streets were used to specify a stretch at record creation time and which cross streets are used at retrieval time. Function 3 provides items that can be used to form a key for such retrieval. Among the output items that Function 3 returns in WA2 are two lists of street codes (in the form of PB5SCs) for all the cross streets at the two delimiting nodes. Each list is ordered so that its first entry is always the numerically smallest PB5SC of all the entries in that list. This arrangement facilitates the formation by the application of a key for consistent geographic retrieval. The key would consist of a combination of the PB5SC for the \u2018on\u2019 street, the first entry in the \u2018from\u2019 cross street list, and the first entry in the \u2018to\u2019 cross street list. If the application has a need to display the street names of the cross streets, the Cross Street Names Flag in WA1 can be turned \u2018on\u2019 and the names will be returned in the List of Street Names in WA1 (see entries for Cross Street Names Flag and List of Street Names in Appendix 3 ). Note that the cross street names feature incurs processing overhead, and should only be used when necessary.","title":"Consistent Retrieval of Application Data by \u2018On\u2019 Street and Two Cross Streets"},{"location":"chapters/chapterVII/section04/#converting-address-keyed-application-data-to-on-streetcross-streets","text":"As mentioned in Chapter V.5 , Function 1\u2019s WA2 has two lists of cross streets for the two intersections delimiting the blockface containing the input address. Like the cross street lists in Function 3\u2019s WA2, Function 1\u2019s lists are arranged so that the numerically smallest PB5SC in each list is that list\u2019s first entry. (However, unlike Function 3\u2019s lists, either or both of Function 1\u2019s lists can be empty.) Applications can identify an input address to a street stretch by using Function 1\u2019s cross street lists to create a stretch-type key in the same way as described above for Function 3. This is useful in some applications that process geographically heterogeneous input data, with some input records, for example, identified by an address and others by an \u2018on\u2019 street and two cross streets. An example of such an application is the New York City Department of Transportation\u2019s Street Light Information and Complaints System, which generates and tracks work orders for street light repair work. Among the ways in which this application improves the efficiency of those operations is by providing a means to consolidate all transactions involving street lights located on the same street segment into a single work order, regardless of whether the initial identification of the location is by an address or by an \u2018on\u2019 street and two cross streets.","title":"Converting Address-Keyed Application Data to \u2018On\u2019 Street/Cross Streets"},{"location":"chapters/chapterVII/section05/","text":"VII.5 Blockfaces: Function 3C In some applications, data are related to blockfaces, which are specific to a side of a street, rather than to street stretches or segments, which comprise both sides of the \u2018on\u2019 street. One way in which users commonly specify blockfaces is in terms of an \u2018on\u2019 street, two cross streets and a compass direction designating the side of the \u2018on\u2019 street, for example: \u201cin Manhattan, the east side of Madison Avenue between East 50th and East 51st Streets\u201d. Given such a blockface specification, Function 3C can be used to obtain information specific to that blockface. (For Manhattan only, the compass orientations of blockfaces are shifted 30 degrees counterclockwise, to conform to the widespread conventional treatment of the avenues and streets in midtown Manhattan as if they were oriented due north-south and due east-west, respectively. For more details on this 30-degree shift, see the description of Segment Orientation in Appendix 3 .) Function 3C accepts as input the long blockfaces formed by T-intersections. The sides of stretches opposite to such long blockfaces consist of more than one blockface and are not accepted as Function 3C input. The input items to Function 3C are an \u2018on\u2019 street, two cross streets and a compass direction specifying the side of the street. The input cross streets, but not the \u2018on\u2019 street, may be pseudo-streets or intersection names. Note that, for Function 3C, the input compass direction has a different significance than it does for Function 2. In the case of Function 3C, the compass direction identifies which side of the street is to be processed. In the case of Function 2, it identifies, for a pair of input streets that intersect at two distinct locations, which of those two intersections is to be processed. The same combinations of an \u2018on\u2019 street and two cross streets that Function 3 rejects as ambiguous input data are also rejected as ambiguous input data by Function 3C. When Function 3C is called using two work areas, it returns in its WA2 those Function 3 WA2 items that are not associated with a specific side of the street, such as the lists of cross streets, the Segment Length, the \u2018From\u2019 node (COW only), \u2018To\u2019 node (COW only), etc. It also returns all of those Function 3 WA2 items that are specific to the side of the street specified by the input compass direction, such as the low and high house numbers, ZIP code and community district for that side of the street. A successful two-work-area call to Function 3C signifies the following: The input \u2018on\u2019 street and two cross streets (or intersection names) specify a street stretch that is valid as Function 3 input (i.e., it is either a single street segment or a multi-segment stretch at least one side of which is a single entire blockface) The input compass direction is a valid specification (as defined below) of a side of that stretch The specified side of the stretch is a single entire blockface As the second condition above implies, Function 3C treats some compass directions as invalid side-of-street specifications for some street stretches. The validity of a compass direction as a specification of a side of a street is determined by the orientation of the segment (or of the last segment of the stretch, if it consists of more than one segment) with respect to the points of the compass, as indicated by the value of the Segment Orientation. If the segment is oriented \u2018nearly\u2019 (i.e., within ten degrees of) due east-west, as indicated by a Segment Orientation value of \u2018E\u2019 or \u2018W\u2019, then its sides can only be validly described as the north and south sides, and Function 3C will reject east and west as side-of-street specifications. Similarly, if the segment is within ten degrees of due north-south, as indicated by a Segment Orientation value of \u2018N\u2019 or \u2018S\u2019 , then it is considered to have only east and west sides, and Function 3C will reject north and south as side-of-street specifications. (Note: recall that all Segment Orientation values in Manhattan are rotated 30 degrees counterclockwise. This has the effect, for example, of causing Geosupport to treat Third Avenue in Midtown Manhattan as a \u2018nearly\u2019 north-south street. Thus, Function 3C accepts as input either the east or west side of Third Avenue between, say, East 50 Street and East 51 Street, but it rejects the north and south sides.) Of course, most segments are \u2018diagonal\u2019 (not oriented within ten degrees of due north-south or due east-west), in which case all four compass directions are accepted as valid side-of-street specifications. For example, if the segment is oriented northwest-southeast, one side of the segment is simultaneously the north side and the east side, and the other side is simultaneously the south side and the west side. Consider the example illustrated in Figure VII-15. The east side of Fifth Avenue between East 40th and East 41st Streets is a valid blockface specification and is accepted by Function 3C. The same is true for the east side of Fifth Avenue between East 41st and East 42nd Streets. The west side of Fifth Avenue between East 40th and East 42nd Streets is likewise a valid blockface specification, in this case designating the long blockface of a T-intersection. The east side of Fifth Avenue between East 40th and East 42nd Streets is not a valid blockface specification, and is rejected by Function 3C (even though that combination of \u2018on\u2019 street and two cross streets is accepted by Function 3), since that side of Fifth Avenue between those cross streets consists of two blockfaces. See Chapter VII.4 for a description of the Auxiliary Segment Switch. That switch allows the user to request that Geosupport return all the segment IDs in a long face of a T-intersection, or any other multi-segment situation. The Extended WA2 Mode Switch is available for Function 3C. The first 300 bytes of Function 3C with the Mode Switch set to \u201cX\u201d will be the same as regular Function 3C calls. The additional fields that are returned with Function 3 Extended are returned with Function 3C Extended as well.","title":"VII.5 Blockfaces: Function 3C"},{"location":"chapters/chapterVII/section06/","text":"VII.6 Street Stretches: Function 3S Function 3S processes street stretches. An input stretch is specified by an \u2018on\u2019 street and (optionally) any two cross streets, using the same WA1 input fields as are used for Function 3. If the \u2018on\u2019 street intersects an input cross street twice, an input compass direction must also be specified to identify which of those two intersections is intended to delimit the stretch. Input cross streets, but not the \u2018on\u2019 street, may be pseudo-streets or intersection names. If no input cross streets are specified, the delimiting nodes of the input stretch default to the \u2018on\u2019 street\u2019s beginning and ending nodes, and the input stretch consists of the entire \u2018on\u2019 street. If the \u2018on\u2019 street is a locally-valid name, then only the intersections in that portion of the street, where the name is valid, will appear in the list. Similarly, if street code input is used, the B7SC will determine the stretch of the locally-valid street. Function 3S\u2019s WA2 contains a list of all of the input stretch\u2019s \u2018intersections\u2019 in sequence between the beginning and ending delimiting nodes of the stretch. An \u2018intersection\u2019 can either be a node (as defined in Chapter VII.2 ), or it can be a non-specifiable intersection, that is, a point at which the street intersects only with a geographic feature to which a street code has not been assigned. WA2 also contains a list counter containing the number of such intersections. There is space in the list for a maximum of 350 intersections. Each entry in the list typically contains the numerically smallest and second smallest PB5SCs for MSW, and up to five B7SCs for COW (the first two B7SCs are typically the numerically smallest and second smallest, of all of the cross streets at the represented intersection, if any). Note that to return the most useful information to the user, \u2018normal\u2019 streets in numerical order appear first in the list entry, followed by \u2018special\u2019 streets, such as Ramps and Exits. Railroads, Shorelines and Borough Boundaries will then appear followed by Named Intersections, CITY LIMITs, DEAD ENDs, and BENDs. This will occur even if the \u2018special\u2019 streets have lower street codes than the \u2018normal\u2019 streets. To avoid unnecessary listing of BENDs, Function 3S recognizes a BEND only if the angle of the bend is 60 degrees or more. (Prior to Release 16D, a bend was listed if the angle was 20 degrees or more.) Also, a bend is not included in the list of cross streets when another real street intersects there as well. The \u2018on\u2019 street is not included in the list of cross streets at each intersection. If there is only one cross street at an intersection, the list entry contains packed zeros in the second cross street field for MSW and blanks in remaining cross street fields for COW. List entries representing non-specifiable intersections contain packed zeros in both cross street fields for MSW and blanks in all cross street fields for COW. Two streets with different B7SCs but with the same B5SCs may appear in a COW list entry. This can happen when the Preferred Street Name of a street changes at an intersection. For example, in Brooklyn, the Preferred Street Name of Livingston Street becomes Aitken Place when Livingston Street intersects Clinton Street. The COW list entry for that intersection on Clinton Street will include B7SCs for both Livingston Street (B7SC 3-56530-01) and Aitken Place (B7SC 3-56530-02). Note: An MSW Function 3S call returns only B5SCs and in this situation the list may include two identical streets codes with the same B5SC. This, at least, informs the MSW user that there are two street names at that point. As in the past, we strongly encourage MSW Work Area users to migrate to the COW Work Areas so you can benefit from multiple Geosupport enhancements that are not included in MSW. Each list entry also contains the distance in feet between the node represented by this list entry and the node represented by the previous list entry. The maximum value this field can contain is 99,999. Please note that the distance information is only a rough approximation and cannot be used for applications that require precise distance measurements. Note, also, that the distance field will always contain zero in the first list entry returned by Function 3S since there is no previous list entry. There is also a field in each list entry for a Gap Flag . A non-blank value in the Gap Flag indicates that one of the following is true: a. There is some kind of gap in the \u2018on\u2019 street between the node represented by this list entry and the node represented by the previous list entry b. Multiple segments have been combined to create this entry so that only Real Street intersections are listed. Intersections with bends and other non-street features are combined to create one entry. In other words, a non-blank value indicates that either there is no segment of the \u2018on\u2019 street connecting those two nodes, or that multiple segments have been combined to represent a \u2018single\u2019 segment between the two nodes. Note that the Gap Flag will always be blank in the first list entry returned by Function 3S since there is no previous list entry. The Gap Flag is set to \u2018G\u2019 when there is a break in a street, such as exists with 7 Avenue between Central Park South (a.k.a. West 59 Street) and Central Park North (a.k.a. West 110 Street) in Manhattan. The length returned represents the distance between the end of one string of segments and the start of the next string of segments. With 7 Avenue in Manhattan, the length of the gap would be the distance from the intersection of 7 Avenue and Central Park South and the intersection of 7 Avenue and Central Park North. The Gap Flag will be blank even if there is a gap between the first intersection in the list and the preceding intersection in the entire street; since, from the user\u2019s perspective there is no gap within in the stretch. An example of this is the partial street stretch of Broadway in Manhattan between East 17 Street and East 20 Street. There is a gap between East 14 Street and East 17 Street, but there will not be any indication of that gap in the list of intersections. If, on the other hand, the user requested the partial street stretch of Broadway in Manhattan between East 10 Street and East 20 Street, the gap between East 14 Street and East 17 Street will appear in the list. There are situations (e.g. dogleg and new stretch) where merely indicating that a gap exists is not sufficiently descriptive. The Gap Flag is also used to indicate that segments have been combined when \u2018Real Streets Only\u2019 are requested. To handle these situations, the Gap Flag has three values in addition to \u2018G\u2019. \u2018D\u2019 for a Dogleg \u2018N\u2019 for a New Stretch. Note: For entries with the value of \u2018N\u2019, the length from the previous node is set to zero. \u2018C\u2019 for Combined Segments. This occurs when the user requests \u2018real streets only\u2019 which results in some segments being combined. See the description of the \u2018Real Street Only\u2019 flag below. Example of Dogleg Looking at Elk Street in Manhattan, which exists between Chambers Street and Duane Street, there is a gap at Reade Street. This is not a real gap, but rather a dogleg. Gaps of this nature are identified with the letter \u2018D\u2019 to indicate the existence of a dogleg. The length field contains the length of the dogleg. (see Figure VII.6 for example of dogleg. Examples of New Stretch A new stretch may involve situations where there are multiple roadbeds like Ocean Parkway in Brooklyn and Allen Street in Manhattan. In these cases one roadbed is listed first and then the first segment of each of the other roadbeds is listed as New (\u2018N\u2019). The length field which contains the distance from the previous node is set to zero. A new stretch may involve a triangle, which occurs when a road veers off for one or more segments and then comes back. Examples of this exist in the Bronx involving White Plains Road and Rhinelander Avenue. In this case, Rhinelander Avenue appears twice in the White Plains Road stretch; once as part of the entire street and once as a \u201cNew\u201d one-segment stretch between nodes 0079418 and 0079417. Another example of a triangle is Queens Boulevard between Yellowstone Boulevard and 70 Road. On the southern side of Queens Blvd, there is a \u201cspur\u201d of Queens Boulevard between Yellowstone Boulevard and 70 Road separated from the main portion of Queens Boulevard by MacDonald Park. In any case the length field is set to zero. A new stretch may involve a \u2018street\u2019 that has several separate stretches. In the Bronx, an example of this is the Throgs Neck Expressway which has several separate stretches, some of which have a different name (e.g. Throgs Neck Boulevard), but use the same five-digit street code. The first segment of each of these separate street stretches is listed as New (\u2018N\u2019), and the distance from the previous node is set to zero. Description of Combined Segments and the \u201cReal Street Only\u201d Flag In the COW there is an input flag in WA1 called the \u201cReal Street Only\u201d flag for users who seek only \u201creal\u201d cross streets along a stretch of a street, and not items defined as \u201cNon-Street Feature\u201d or \u201cBend\u201d. If the \u201cReal Street Only\u201d flag is set to R , only \u201cReal\u201d street list entries are returned. This means that \u201cNon-Street Feature\u201d or \u201cBend\u201d items are not returned. The length from the previous node to the node with \u201cNon-Street Feature\u201d or \u201cBend\u201d is added to the next segment and the Gap Flag is set to C , which indicates that segment lengths have been combined and one or more nodes have been omitted. There are two exceptions to this situation; namely, if the Gap Flag of the current node is equal to N or G which means a new stretch has commenced or if the Gap Flag of the next node is equal to N or G . In this case, a new stretch is starting and adding in the length of the preceding segment does not make sense. If the \u201cReal Street Only\u201d flag is set to any value other than R , all segments are displayed. Example of Combined Segments Consider the street stretch in Manhattan on A C Powell Boulevard between West 137 Street and West 140 Street. A normal function 3S call will result in seven intersections listed, including three non-street feature intersections. If \u201cReal Street Only\u201d is requested, only four intersections are listed, and the distances between the intersections are adjusted accordingly. Additional COW List entry items In the COW, for Function 3S, each list entry also includes a Marble Hill/Rikers Island flag , the Node ID of the intersection and a count of the number of streets at the intersection. Note: In COW work areas, the entries in the list of intersections include B7SCs instead of B5SCs (as had been returned prior to Version 10.6). Users who are still using MSW work areas will find B5SCs in the list of intersections as in the past. Locally Valid Street Name or Street Code processing In Function 3S, if the on-street is a locally-valid street name , e.g. \u2018FASHION AVENUE\u2019 in Manhattan, Geosupport returns only the intersections where the name \u2018FASHION AVENUE\u2019 in Manhattan is valid. In this example, Geosupport will return approximately 16 intersections for \u2018FASHION AVENUE\u2019 in Manhattan. If the user provides street code input instead of street name input, Geosupport uses the B7SC of the input to find the stretch of the locally-valid street. Of course, if the user supplies only the B5SC the entire street will be searched, which, hopefully, is what the user intended. In COW work areas, the entries in the list of intersections will include B7SCs instead of the B5SCs as had been returned previously. Users who are still using MSW work areas will find B5SCs in the list of intersections as in the past. Roadbed Street Stretches: Function 3S Partial Implementation Function 3S may be used to obtain information about roadbed street stretches via the Roadbed Request Switch (as opposed to only generic street 10 stretches). Please be aware that the roadbed processing, which is only partially implemented, may change and is being provided to enable you, the user, to take advantage of this enhancement while in its infancy. Information about generic street stretches may be obtained for the entire street stretch or for part of a street stretch. However information about roadbed street stretches may only be obtained for certain types of stretches. Information about certain parts of a street stretch is not fully functional and will result in a Geosupport Return Code (GRC) of 96. It is expected to be fully functional in a future release of Geosupport. It is the user\u2019s responsibility to set the Roadbed Request Switch which is in Work Area 1. If the Roadbed Request Switch is set to R , then a roadbed street stretch will be returned to the user. A blank in the Roadbed Request Switch will result in a generic street stretch being returned to the user. Any other value will result in a Geosupport Return Code (GRC) of 65. If a user supplies a generic name for a multi-roadbed street and the Roadbed Request Switch indicates that generic processing is desired (i.e. value of the switch is \u2018blank\u2019), the output will be virtually the same as prior to implementation of the Roadbed Request Switch. An example of this would be Park Row in Manhattan. If a user supplies a generic name for a multi-roadbed street and the Roadbed Request Switch indicates that roadbed processing is desired (i.e. value of the switch is \u2018R\u2019), the output may or may not be what was provided in the past. If the generic name supplied represents an undivided street, the generic and roadbed processing will produce the same output and it is possible to request part of the street stretch. If the generic name supplied represents a multi-roadbed street either in part or in full, then the entire stretch may be requested. Also, a street stretch that begins and ends with an undivided portion of the street may be requested. If only part of the street involves a multi-roadbed, then the undivided portion may be requested in part. For example, 58 Avenue in Queens is undivided in part. Consequently you may ask for roadbed processing from, say, 211 Street to 219 Street. If you ask for roadbed processing from, say, 214 Street to 218 Street, you will receive GRC 96 indicating that this functionality is under construction. If the entire stretch is requested with roadbed processing, the output will be different than what the output is for generic processing. The output starts with Rust Street and continues supplying the cross streets until about 213 Street where 58 Avenue becomes a multi-roadbed street. All of the intersecting streets on one roadbed are presented until about 219 Street, where 58 Avenue becomes undivided. The output then returns to earlier segments where 58 Avenue branched off as well as the segments for the other roadbed between 211 Street and 219 Street. If a user supplies a street name that is defined as a roadbed name, but does not set the Roadbed Request Switch to indicate that roadbed processing is requested, then a GRC of 57 with the associated error message of \u201cINPUT INCLUDES ROADBED NAME, BUT ROADBED REQUEST SWITCH IS OFF\u201d will be returned to the user. If a user supplies a street name that is defined as a roadbed name and sets the Roadbed Request Switch to indicate that roadbed processing is requested, then only those streets within the two cross streets that intersect the specified roadbed will be returned in the output. For example if you request the stretch for Park Avenue Northbound Roadbed and set the Roadbed Request Switch to indicate that roadbed processing is requested, then the output will include the streets that cross the northbound roadbed. Coincident Segments: Function 3S Processing Coincident segment processing (where one road is above another road) has become more consistent as of Release 16C. Coincident segments (streets, subways, railroads) were sometimes being listed as cross streets in releases prior to 16C. As of Release 16C, the B7SCs of segments coincident with the \u2018on\u2019 street are no longer listed as cross streets at both the \u2018from\u2019 node and \u2018to\u2019 node unless the coincident segment diverges at either the \u2018from\u2019 node or the \u2018to\u2019 node of the \u2018on\u2019 street. The new rules for coincident segments are as follows: i. At a point where one of the two coincident segments\u2019 stretch ends, the coincident segment will not be listed as a cross street. ii. At a point where one of the two coincident segments diverges (no longer coincident), the divergent segment will be listed as a cross street. iii. At a point where two divergent segments become coincident, the incoming divergent segment will be listed as a cross street. iv. At a point where a coincident segment stretch ends and a new coincidence begins with another \u2018on street. The continuing and terminated segments will be listed as cross streets. _________________________ 10 Generic streets are single line representations of streets that have multiple roadbeds, such as Queens Boulevard in Queens, the Grand Concourse in the Bronx, Broadway (in the Upper West Side) in Manhattan and Ocean Parkway in Brooklyn.","title":"VII.6 Street Stretches: Function 3S"},{"location":"chapters/chapterVII/section06/#locally-valid-street-name-or-street-code-processing","text":"In Function 3S, if the on-street is a locally-valid street name , e.g. \u2018FASHION AVENUE\u2019 in Manhattan, Geosupport returns only the intersections where the name \u2018FASHION AVENUE\u2019 in Manhattan is valid. In this example, Geosupport will return approximately 16 intersections for \u2018FASHION AVENUE\u2019 in Manhattan. If the user provides street code input instead of street name input, Geosupport uses the B7SC of the input to find the stretch of the locally-valid street. Of course, if the user supplies only the B5SC the entire street will be searched, which, hopefully, is what the user intended. In COW work areas, the entries in the list of intersections will include B7SCs instead of the B5SCs as had been returned previously. Users who are still using MSW work areas will find B5SCs in the list of intersections as in the past.","title":"Locally Valid Street Name or Street Code processing"},{"location":"chapters/chapterVII/section06/#roadbed-street-stretches-function-3s-partial-implementation","text":"Function 3S may be used to obtain information about roadbed street stretches via the Roadbed Request Switch (as opposed to only generic street 10 stretches). Please be aware that the roadbed processing, which is only partially implemented, may change and is being provided to enable you, the user, to take advantage of this enhancement while in its infancy. Information about generic street stretches may be obtained for the entire street stretch or for part of a street stretch. However information about roadbed street stretches may only be obtained for certain types of stretches. Information about certain parts of a street stretch is not fully functional and will result in a Geosupport Return Code (GRC) of 96. It is expected to be fully functional in a future release of Geosupport. It is the user\u2019s responsibility to set the Roadbed Request Switch which is in Work Area 1. If the Roadbed Request Switch is set to R , then a roadbed street stretch will be returned to the user. A blank in the Roadbed Request Switch will result in a generic street stretch being returned to the user. Any other value will result in a Geosupport Return Code (GRC) of 65. If a user supplies a generic name for a multi-roadbed street and the Roadbed Request Switch indicates that generic processing is desired (i.e. value of the switch is \u2018blank\u2019), the output will be virtually the same as prior to implementation of the Roadbed Request Switch. An example of this would be Park Row in Manhattan. If a user supplies a generic name for a multi-roadbed street and the Roadbed Request Switch indicates that roadbed processing is desired (i.e. value of the switch is \u2018R\u2019), the output may or may not be what was provided in the past. If the generic name supplied represents an undivided street, the generic and roadbed processing will produce the same output and it is possible to request part of the street stretch. If the generic name supplied represents a multi-roadbed street either in part or in full, then the entire stretch may be requested. Also, a street stretch that begins and ends with an undivided portion of the street may be requested. If only part of the street involves a multi-roadbed, then the undivided portion may be requested in part. For example, 58 Avenue in Queens is undivided in part. Consequently you may ask for roadbed processing from, say, 211 Street to 219 Street. If you ask for roadbed processing from, say, 214 Street to 218 Street, you will receive GRC 96 indicating that this functionality is under construction. If the entire stretch is requested with roadbed processing, the output will be different than what the output is for generic processing. The output starts with Rust Street and continues supplying the cross streets until about 213 Street where 58 Avenue becomes a multi-roadbed street. All of the intersecting streets on one roadbed are presented until about 219 Street, where 58 Avenue becomes undivided. The output then returns to earlier segments where 58 Avenue branched off as well as the segments for the other roadbed between 211 Street and 219 Street. If a user supplies a street name that is defined as a roadbed name, but does not set the Roadbed Request Switch to indicate that roadbed processing is requested, then a GRC of 57 with the associated error message of \u201cINPUT INCLUDES ROADBED NAME, BUT ROADBED REQUEST SWITCH IS OFF\u201d will be returned to the user. If a user supplies a street name that is defined as a roadbed name and sets the Roadbed Request Switch to indicate that roadbed processing is requested, then only those streets within the two cross streets that intersect the specified roadbed will be returned in the output. For example if you request the stretch for Park Avenue Northbound Roadbed and set the Roadbed Request Switch to indicate that roadbed processing is requested, then the output will include the streets that cross the northbound roadbed.","title":"Roadbed Street Stretches: Function 3S Partial Implementation"},{"location":"chapters/chapterVII/section06/#coincident-segments-function-3s-processing","text":"Coincident segment processing (where one road is above another road) has become more consistent as of Release 16C. Coincident segments (streets, subways, railroads) were sometimes being listed as cross streets in releases prior to 16C. As of Release 16C, the B7SCs of segments coincident with the \u2018on\u2019 street are no longer listed as cross streets at both the \u2018from\u2019 node and \u2018to\u2019 node unless the coincident segment diverges at either the \u2018from\u2019 node or the \u2018to\u2019 node of the \u2018on\u2019 street. The new rules for coincident segments are as follows: i. At a point where one of the two coincident segments\u2019 stretch ends, the coincident segment will not be listed as a cross street. ii. At a point where one of the two coincident segments diverges (no longer coincident), the divergent segment will be listed as a cross street. iii. At a point where two divergent segments become coincident, the incoming divergent segment will be listed as a cross street. iv. At a point where a coincident segment stretch ends and a new coincidence begins with another \u2018on street. The continuing and terminated segments will be listed as cross streets. _________________________ 10 Generic streets are single line representations of streets that have multiple roadbeds, such as Queens Boulevard in Queens, the Grand Concourse in the Bronx, Broadway (in the Upper West Side) in Manhattan and Ocean Parkway in Brooklyn.","title":"Coincident Segments: Function 3S Processing"},{"location":"chapters/chapterVII/section07/","text":"VII.7 Borough Boundary Processing (Functions 2, 3 and 3C) All of the street configuration functions other than Function 3S allow users to specify locations that lie along a boundary of two boroughs in terms of streets from both boroughs. Function 2, for example, accepts the intersection of Brooklyn\u2019s Ridgewood Avenue and Queens\u2019s Rockaway Boulevard as a valid input street intersection lying on the Brooklyn Queens boundary. A more unusual example that Function 2 also accepts as a valid input intersection is the intersection of Atlantic Avenue in Brooklyn and Atlantic Avenue in Queens. Although physically, Atlantic Avenue is a single continuous street that crosses the Brooklyn-Queens border; Geosupport treats the portions of Atlantic Avenue in the two boroughs as two different streets, and therefore recognizes their meeting point at the borough boundary as an intersection. A borough boundary location can be specified in terms of streets from different boroughs as follows. For street input data that are in the form of street names, there are three WA1 input fields for borough codes called Borough Code 1, Borough Code 2 and Borough Code 3 (see the WA1 layout in Appendix 2 ). These fields correspond respectively to the three WA1 input street name fields called Street Name 1, Street Name 2 and Street Name 3. A value is always required in Borough Code 1. If no values are loaded into Borough Code 2 and/or Borough Code 3, the default values are the value in Borough Code 1. When not all of the input street names are in the same borough, the proper value(s) must be inserted into Borough Code 2 and/or Borough Code 3, as appropriate. If the street input data are in the form of street codes, either as PB5SCs or as B10SCs, each input street code field contains a borough code in its first byte position. This makes it possible to specify input streets from different boroughs using street code input. The borough boundary processing feature described in this section is not implemented for Function 3S, which requires all three input streets to be from the same borough. If the input streets are in the form of street names, the borough must be specified in the WA1 input field Borough Code 1; Function 3S ignores the contents of the WA1 input fields Borough Code 2 and Borough Code 3.","title":"VII.7 Borough Boundary Processing (Functions 2, 3 and 3C)"},{"location":"chapters/chapterVII/section08/","text":"VII.8 Fuzzy Name Search Processing for Functions 3, 3C, and 3S \u2013 Front-truncated street names Under certain conditions, Functions 3, 3C, and 3S will return data when front-truncated street names are given as input; e.g. when 14 STREET in Manhattan is given as input instead of EAST 14 STREET or WEST 14 STREET. When a user supplies a street that is a front-truncated street name, Geosupport will process that front-truncated street name if the front-truncated street name supplied may only refer to a single street name. For example, if a user supplies \u20187 STREET\u2019 in Manhattan as an input street, Geosupport knows that the only possibility is \u2018EAST 7 STREET\u2019 in Manhattan since there is no \u2018WEST 7 STREET\u2019. When a user supplies a street name that is a front-truncated street name such as 57 STREET where there are two viable street names, such as EAST 57 STREET and WEST 57 STREET in Manhattan, then Geosupport will determine which of the two street names actually intersects with the other input street. (Geosupport invokes Function 2 under-the-covers to check the intersections.) Geosupport will accept the call if only one of the two street names actually intersects the other input street. As an example, if a user inputs \u201957 STREET\u2019 between \u2018PARK AVENUE\u2019 and \u2018MADISON AVENUE\u2019, Geosupport will provide data, because in Manhattan \u2018EAST 57 STREET\u2019 intersects \u2018PARK AVENUE\u2019 and \u2018MADISON AVENUE\u2019. As another example, if a user inputs \u2018PARK AVENUE\u2019 between 57 STREET and 58 STREET, Geosupport will accept the call, because in Manhattan EAST 57 STREET intersects \u2018PARK AVENUE\u2019 as does EAST 58 STREET. A warning message with Reason Code J will be issued when Geosupport assumes a name that is different from the input street name. There are situations where a front-truncated street name will not be accepted. As an example, a Function 3S call where a user inputs \u201857 STREET\u2019 between \u2018PARK AVENUE\u2019 and \u2018SEVENTH AVENUE\u2019, Geosupport will not provide data, because, in Manhattan, \u2018EAST 57 STREET\u2019 intersects \u2018PARK AVENUE\u2019 and \u2018WEST 57 STREET\u2019 intersects \u2018SEVENTH AVENUE\u2019. \u2018EAST 57 STREET\u2019 and \u2018WEST 57 STREET\u2019 are not considered to be the same streets. As another example, a Function 3S call where a user inputs \u201857 STREET\u2019 with no cross streets. Geosupport will not provide data, because it has no cross street to help determine whether the user wants East 57 Street or West 57 Street. When no data is returned, Geosupport will return the Geosupport Return Code (GRC) of \u2018EE\u2019 for \u201857 STREET\u2019 and provide a list of similar names which will include both \u2018EAST 57 STREET\u2019 and \u2018WEST 57 STREET\u2019. The fuzzy search involving Functions 3, 3C and 3S is similar to the fuzzy search for Function 2 Intersection Processing, which is described in a sub-section of VII.2 .","title":"VII.8 Fuzzy Name Search Processing for Functions 3, 3C, and 3S \u2013 Front-truncated street names"},{"location":"chapters/chapterVIII/chapterVIII/","text":"CHAPTER VIII THE GEOSUPPORT API - USER PROGRAM CODING AND JCL","title":"Chapter VIII"},{"location":"chapters/chapterVIII/section01/","text":"VIII.1 Introduction The Geosupport System\u2019s Application Programming Interface (API), the mechanism by which a user-written batch or CICS application program interfaces with the Geosupport System, was described in broad terms in Chapter II. The present chapter describes in detail, for the programming languages most widely used to develop applications on city mainframes, the statements that the user must code in an application program to access Geosupport via the API. The languages covered are COBOL, Assembler (i.e., any dialect of IBM mainframe assembler language), PL/1, C (supported on the mainframe at the Department of Information Technology and Communications (DoITT) by the IBM/C compiler) and NATURAL (a proprietary programming language used with the ADABAS database management system). An important optional user programming aid, the Geosupport COPY facility, is also discussed. The Geosupport-related JCL that the user must code to compile, link and (for batch applications) execute an application program is also described. Notes for non-DoITT mainframe users: All JCL documented in this chapter is valid for the DoITT mainframe. Variations from this JCL are possible at other data centers where Geosupport is installed , for a variety of reasons. For example, the DSNs of the Geosupport files may differ from those at DoITT to conform to local file naming standards. Variations from DoITT may also be caused by software environment differences, such as the version of the operating system that is running. In addition, certain software products mentioned in this chapter, such as IBM/C or ADABAS, that are installed at DoITT may be unavailable at other data centers. Non-DoITT users should refer any Geosupport-related JCL questions or problems to their data center\u2019s Geosupport System Administrator (the system programmer at the data center who is responsible for installing new Geosupport releases). Non-DoITT users should also be aware that certain Geosupport files and functions that are available at DoITT may not currently be installed at their data center. Specifically, a foreground file named PAD, which is accessed only by Functions 1A, BL and BN, is relatively large and therefore is not installed at some data centers at which there are no current applications that require Functions 1A, BL or BN. At those data centers, Functions 1A, BL and BN are not available for use . If future applications at those data centers require Functions 1A, BL and/or BN, the PAD file can then be installed, thereby activating those functions.","title":"VIII.1 Introduction"},{"location":"chapters/chapterVIII/section02/","text":"VIII.2 Review of the Geosupport API The Geosupport API consists of the following elements: Driver : A Geosupport program called the driver that serves as an intermediary between the user\u2019s application program and the Geosupport foreground software. The driver exists in the form of a load module, which the user must link-edit with the application program. (The link-editing is performed automatically for NATURAL programs.) Work Areas : One or two standard-layout work areas that are used to pass data back and forth between the application program and Geosupport. The user must include the Geosupport work area(s) in the application program. Programming Statements : Programming statements that the user must code in the application program to utilize the driver and work area(s) to interface with Geosupport. The work areas and required programming statements are identical in the batch and CICS environments, except that there is a different driver for each environment. The driver for batch applications is named GBI. The driver for CICS applications is named GOAIDRV. The driver serves two purposes: It passes execution control from the user's application program to the Geosupport foreground software, which is external to the application program load module. It passes the memory address(es) of the work area(s), which are located within the application program, to the Geosupport foreground software, enabling Geosupport to access the work areas. The user program must include the required Geosupport work area(s) in its working storage (COBOL, Assembler or C), automatic storage (PL/1) or U size buffer (NATURAL). When the application program issues a call to the driver, either one or two work areas (more precisely, their memory addresses) are passed as parameters of the call. The length and layout of Work Area 1 (WA1) are fixed. The length and layout of Work Area 2 (WA2) are determined by the function and, for functions that have either the long WA2 option or the Mode Switch of \u2018X\u2019 \u2013 Extended (discussed in Chapter II.5 ), by which option is specified. The distinction between one-work-area and two-work-area calls is discussed in Chapter II.4 . For the convenience of users whose application programs are written in COBOL, Assembler, PL/1, C or NATURAL, Geosupport COPY files are maintained. They contain source code descriptions of all of the work area layouts in each programming language. The Geosupport COPY files are discussed in detail in Chapter VIII.4 . The use of the Geosupport COPY facility is optional but strongly recommended. In batch applications, the user JCL for the execute step must include JOBLIB or STEPLIB DD statements for the load libraries that contain the Geosupport foreground software. Chapter VIII.8 describes the JCL required for batch execution, and Appendix 8 contains examples. Important note for CICS applications written in NATURAL: In order for Geosupport\u2019s CICS driver to be able to pass control to the Geosupport foreground software properly, the driver must determine whether the user program is written in NATURAL. (This is necessary because NATURAL programs make non-standard program calls in the CICS environment. In a standard call, the address of the parameter list is passed in Register 1. Programs written in COBOL, Assembler, PL/1 and C generate standard calls. However, CICS NATURAL programs use Register 1 for a different purpose. Therefore, for NATURAL programs only, the Geosupport CICS driver uses the Transaction Work Area instead of Register 1 to pass the addresses of the work areas to Geosupport.) The Geosupport CICS driver determines whether the calling program is a NATURAL program by examining an internal Geosupport table that contains the transaction-IDs of all applications written in NATURAL. If the transaction-ID of a CICS NATURAL program is not in that table, the transaction will terminate abnormally when attempting to call Geosupport. At DoITT, the updating of the Geosupport NATURAL transaction-ID table is the responsibility of DoITT staff. Therefore, DoITT users developing new CICS applications written in NATURAL must make a request to the appropriate DoITT staff to enter the new transaction-IDs into the Geosupport table . NATURAL CICS users running at other computer centers should contact the Citywide Geo Application Services group at Geosupport_DL@planning.nyc.gov.","title":"VIII.2 Review of the Geosupport API"},{"location":"chapters/chapterVIII/section02/#important-note-for-cics-applications-written-in-natural","text":"In order for Geosupport\u2019s CICS driver to be able to pass control to the Geosupport foreground software properly, the driver must determine whether the user program is written in NATURAL. (This is necessary because NATURAL programs make non-standard program calls in the CICS environment. In a standard call, the address of the parameter list is passed in Register 1. Programs written in COBOL, Assembler, PL/1 and C generate standard calls. However, CICS NATURAL programs use Register 1 for a different purpose. Therefore, for NATURAL programs only, the Geosupport CICS driver uses the Transaction Work Area instead of Register 1 to pass the addresses of the work areas to Geosupport.) The Geosupport CICS driver determines whether the calling program is a NATURAL program by examining an internal Geosupport table that contains the transaction-IDs of all applications written in NATURAL. If the transaction-ID of a CICS NATURAL program is not in that table, the transaction will terminate abnormally when attempting to call Geosupport. At DoITT, the updating of the Geosupport NATURAL transaction-ID table is the responsibility of DoITT staff. Therefore, DoITT users developing new CICS applications written in NATURAL must make a request to the appropriate DoITT staff to enter the new transaction-IDs into the Geosupport table . NATURAL CICS users running at other computer centers should contact the Citywide Geo Application Services group at Geosupport_DL@planning.nyc.gov.","title":"Important note for CICS applications written in NATURAL:"},{"location":"chapters/chapterVIII/section03/","text":"VIII.3 Coding API Calls This section describes the source code statements that the user must code in the application program to call the driver. Also described, for PL/1 and C applications, are the statements required to declare the driver as an external entry point. Such a declaration is not required for COBOL, Assembler and NATURAL. For all programming languages, the driver can be called either with one or with two calling parameters. The first parameter passes the address of Work Area 1 to the driver. If the application program is making a two-work-area call, the second parameter passes the address of Work Area 2 to the driver. The programming statements to declare and call the driver are shown below in the form that must be coded for batch application programs. For CICS programs, the user must code these statements in the same way, but with the name of the CICS driver, GOAIDRV, in place of the batch driver, GBI. In a (batch) PL/1 program, the driver must be declared as an external entry point as follows: DCL GBI EXTERNAL ENTRY OPTION (ASM,INTER); In a (batch) IBM/C program, the driver should be declared as follows: #pragma linkage (GBI,OS) long GBI(void *,... ); If \u2018WA1\u2019 and WA2 are the names that the user has given to the work areas within the application program source code, the statement calling the driver would be coded as follows in a (batch) application program: Language One-Work-Area Call Two-Work-Area Call COBOL CALL \u2018GBI\u2019 USING WA1. CALL \u2018GBI\u2019 USING WA1, WA2. Assembler CALL GBI,WA1,VL CALL GBI,(WA1,WA2),VL PL/1 CALL GBI (WA1); CALL GBI (WA1, WA2); IBM/C GBI(&WA1); GBI(&WA1,&WA2); NATURAL CALL \u2018GBI\u2019 USING WA1 CALL \u2018GBI\u2019 USING WA1 WA2","title":"VIII.3 Coding API Calls"},{"location":"chapters/chapterVIII/section04/","text":"VIII.4 The Geosupport Copy Files This section describes an optional feature of Geosupport, its COPY files. The Geosupport COPY files contain source code layouts of the Geosupport API work areas in the COBOL, Assembler, PL/1, C and NATURAL programming languages. The use of the Geosupport COPY files can greatly facilitate user programming and is strongly recommended for all applications. The Geosupport COPY files are contained in the Geosupport COPY libraries, which are described below. In this section, basic concepts of COPY files are explained, and the organization of the Geosupport COPY libraries is described. In Chapter VIII.5 , the specific source code statements that users must code in their programs to utilize the Geosupport COPY files are described. Chapter VIII.6 describes the JCL required to compile a program that utilizes the Geosupport COPY files. Overview of COPY Files in General Many programming languages, including COBOL, Assembler, PL/1, C and NATURAL, have a facility for referring, within the source code of a program, to external files (generically referred to as \u2018COPY files\u2019 in this document) containing source code to be inserted into the program at compile time. (C \u2018COPY files\u2019 are usually called header files; NATURAL \u2018COPY files\u2019 are called Local Data Areas (LDAs).) Each programming language has a declarative command (\u2018COPY\u2019 in COBOL and Assembler, \u2018%INCLUDE\u2019 in PL/1, \u2018#include\u2019 in C, \u2018LOCAL USING\u2019 in NATURAL) for referring to such external COPY files. During program compilation, when the compiler encounters such a command, it dynamically retrieves the source code stored in the named COPY file and processes that source code as if it were an integral part of the program source code. The source code retrieved at compile time from the COPY file serves as input to the compiler only; it is not inserted permanently into the user\u2019s program source code file. Only the declarative statement that refers to the COPY file is permanently present in the program source code. Note : declarative statements referencing external source code COPY files are not to be confused with external program calls. Declarative statements are directives to the compiler, and are processed at source code compilation time; program calls are executable statements, performed at application execution time. For COBOL, Assembler, PL/1 and C, COPY files must reside as members of a Partitioned Data Set (PDS) called a COPY library, which must be made accessible to the compiler by coding a SYSLIB DD statement in the JCL for the compile step. In addition, for COBOL and PL/1, an appropriate compiler option must be specified. For NATURAL, COPY files are called Local Data Areas (LDAs) and reside in the system library in each ADABAS database. The Database Administrator (DBA) must modify each NATURAL application\u2019s security profile to make the LDAs accessible to the application. An ideal situation in which to use COPY files is when numerous programs in an application must all describe the same data structure(s). Using this technique, a source code description of each data structure is stored centrally in a COPY library. All programs requiring one or more of the data structures need only contain declarative statement(s) referring to the appropriate member file(s) in the COPY library. This approach insures that all the programs define the given storage layout in exactly the same way, using the same data item names, data types and data lengths. This facilitates application-wide maintenance and debugging. Changes to a data structure need only be made centrally in the COPY file, rather than separately and redundantly in each program. Of course, the source code in a program that references a COPY file must be written so that it is compatible with the source code in that COPY file. In particular, for fields that are defined in the COPY file and referred to in the program, the program must use the same data names and must assume the same data types and lengths as does the COPY file. The Geosupport COPY Libraries There are two Geosupport COPY libraries that collectively contain COBOL, Assembler, PL/1 and C source code COPY files for all of the Geosupport API work area layouts. Geosupport also has a set of NATURAL LDAs for the work area layouts. The use of these facilities can greatly facilitate user application programming. Among the potential productivity benefits are the following: Elimination of the need for application programmers to key into their programs lengthy source code descriptions of the Geosupport work area layouts line by line. Standardization of Geosupport data item names among the programs in an application, facilitating troubleshooting and the reassignment of programming staff to programs written by others. Standardization of the descriptions (data types and lengths) of Geosupport data items in an application, fostering accuracy and compatibility among programs and files. Simplification of the updating of programs to reflect changes to Geosupport work area layouts. Each time a program that references the Geosupport COPY libraries is recompiled, the latest versions of the work area layouts are automatically retrieved. The Geosupport COPY libraries supporting COBOL, Assembler, PL/1 and C applications are two catalogued Partitioned Data Sets (PDSs) named A030.GEO.COPYLIB2 and A030.GEO.COPYLIB. For NATURAL applications at DoITT, the DoITT Database Administration staff is responsible for installing the Geosupport LDAs in the system library (CSCLIB) for each ADABAS database and for making the LDAs accessible to each application that needs such access by updating the application\u2019s profile. It is the user\u2019s responsibility to communicate with the appropriate DoITT staff to request such installation and profile updating. The Geosupport COPY libraries contain a complete set of COPY files for the Geosupport API work areas in COBOL, Assembler, PL/1, C and NATURAL. Each COPY file contains source code descriptions of one or more of the work areas in one of the supported programming languages, as explained below. The Geosupport COPY libraries support both batch and CICS applications. The MSW Work Area 2s of Functions 1, and 1E, (regular WA2), 2, 3 and 3C all have the same length, 200 bytes. For each of the supported programming languages except C, the layouts of these work areas are stored together in a single COPY file, coded as redefinitions of the same memory area. (In the COBOL files, this is done using REDEFINES. In the Assembler files, it is done using an ORG to reset the Location Counter. In the PL/1 files, it is done using BASED. In the NATURAL LDAs, it is done using REDEFINE.) Except for C, each of the remaining work area layouts has its own COPY file. For C, there is a single COPY file (called a \u2018header file\u2019 in C terminology) containing the layouts of all of the work areas, including WA1. The COW Work Area 2s are handled in a similar fashion, though they may not all have the same length. Tables VIII-1 and VIII-2, below, list all of the MSW and COW COPY files respectively for COBOL, Assembler, PL/1, NATURAL and C. The tables indicate the work areas for which each file contains layouts, the lengths of those work areas in bytes, and the name of each file by programming language. Appendix 5 and Appendix 14 contain printouts of the MSW and COW COPY files respectively. Important Note: As of January 1, 2020, Mainframe-Specific Work Areas (MSWs) will no longer be supported. It is therefore essential that users convert their MSW applications to th COW format. See Appendix 12 Table VIII-1: MSW COPY Files for COBOL, Assembler, PL/1, C and NATURAL - - - - - - - - - - COPY File Name - - - - - - - - MSW WORK AREA FUNCTION(S) LENGTH (bytes) COBOL ASSEMBLER PL/1 C NATURAL WA1 All 884 W1COB W1BAL W1PL1 WAC GEOLW1 WA2 1 (regular WA2), 1E (regular WA2), 2, 3 (regular WA2), 3C 200 W2COB W2BAL W2PL1 WAC GEOLW2 WA2 1 (long WA2), 1E (long WA2), 3 (long WA2) 300 W2COBL W2BALL W2PL1L WAC GEOLW2L WA2 1A&BL (regular WA2), BN (\\*) 939 W2COB1A W2BAL1A W2PL11A WAC GEOLW2LA WA2 1A&BL (long WA2) (\\**) 17,683 W2COB1AL W2BAL1AL W2PL11AL WAC GEOLW2LAL WA2 3S 4,224 W2COB3S W2BAL3S W2PL13S WAC GEOLW23S The COW COPY Files Table (Table VIII-2) appears on the following page. - - - - - - - - - - COPY File Name - - - - - - - - MSW WORK AREA FUNCTION(S) LENGTH (bytes) COBOL ASSEMBLER PL/1 C NATURAL WA1 All 1,200 P1COB P1BAL P1PL1 PAC GEOLP1 WA2 1 & 1E (Regular WA2), 3C (Regular WA2) 300 P2COB P2BAL P2PL1 PAC GEOLP2 WA2 2 200 P2COB P2BALL P2PL1L PAC GEOLP2 WA2 2W 4000 P2COB P2BAL P2PL1 PAC GEOLP2 WA2 3 (Regular WA2) 450 P2COB P2BAL P2PL1 PAC GEOLP2 WA2 3 (WA2 with AUXSEG option) 950 P2COB P2BAL P2PL1 PAC GEOLP2 WA2 3C (WA2 with AUXSEG option) 800 P2COB P2BAL P2PL1 PAC GEOLP2 WA2 3C (WA2 with AUXSEG option) 800 P2COB P2BAL P2PL1 PAC GEOLP2 WA2 3 (Extended WA2) 1,000 P2COB P2BAL P2PL1 PAC GEOLP2 WA2 3C (Extended WA2) 850 P2COB P2BAL P2PL1 PAC GEOLP2 WA2 3 (Extended WA2 w/AUXSEG) 1,500 P2COB P2BAL P2PL1 PAC GEOLP2 WA2 3C (Extended WA2 w/AUXSEG) 1,350 P2COB P2BAL P2PL1 PAC GEOLP2 WA2 1A & BL (Regular WA2), BN (\\*) 1,363 P2COB1A P2BAL1A P2PL11A PAC GEOLP21A WA2 1A & BL (Long WA2) (\\**) 1A & BL (TPAD Long WA2) (\\***) 17,750 P2COB1AL P2BAL1A P2PL11AL PAC GEOLP2AL WA2 1A & BL & BN (Extended WA2) (****) 2,800 P2COB1AL P2BAL1A P2PL11AL PAC GEOLP2AL WA2 1 & 1E (Extended WA2) 1,500 P2COB1AL P2BAL1A P2PL11AL PAC GEOLP2AL WA2 1B 4,300 P2COB1AL P2BAL1A P2PL11AL PAC GEOLP2AL WA2 3S 19,274 P2COB3S P2BAL3S P2PL13S PAC GEOLP23S WA2 AP 1,363 P2COBAP P2BALAP P2PL1AP PAC GEOL2AP WA2 AP (Extended WA2) 2,800 P2COBAP P2BALAP P2PL1AP PAC GEOL2APX (*) Functions 1A, BL and BN share a single regular WA2 layout. (* ) Functions 1A and BL share a single long WA2 layout. (Function BN has no long WA2 option.). (* ) Functions 1A and BL share a single TPAD long WA2 layout. (Function BN has no TPAD long WA2 option.). (* **) Functions 1A, BL and BN share a single extended WA2 layout.","title":"VIII.4 The Geosupport Copy Files"},{"location":"chapters/chapterVIII/section04/#overview-of-copy-files-in-general","text":"Many programming languages, including COBOL, Assembler, PL/1, C and NATURAL, have a facility for referring, within the source code of a program, to external files (generically referred to as \u2018COPY files\u2019 in this document) containing source code to be inserted into the program at compile time. (C \u2018COPY files\u2019 are usually called header files; NATURAL \u2018COPY files\u2019 are called Local Data Areas (LDAs).) Each programming language has a declarative command (\u2018COPY\u2019 in COBOL and Assembler, \u2018%INCLUDE\u2019 in PL/1, \u2018#include\u2019 in C, \u2018LOCAL USING\u2019 in NATURAL) for referring to such external COPY files. During program compilation, when the compiler encounters such a command, it dynamically retrieves the source code stored in the named COPY file and processes that source code as if it were an integral part of the program source code. The source code retrieved at compile time from the COPY file serves as input to the compiler only; it is not inserted permanently into the user\u2019s program source code file. Only the declarative statement that refers to the COPY file is permanently present in the program source code. Note : declarative statements referencing external source code COPY files are not to be confused with external program calls. Declarative statements are directives to the compiler, and are processed at source code compilation time; program calls are executable statements, performed at application execution time. For COBOL, Assembler, PL/1 and C, COPY files must reside as members of a Partitioned Data Set (PDS) called a COPY library, which must be made accessible to the compiler by coding a SYSLIB DD statement in the JCL for the compile step. In addition, for COBOL and PL/1, an appropriate compiler option must be specified. For NATURAL, COPY files are called Local Data Areas (LDAs) and reside in the system library in each ADABAS database. The Database Administrator (DBA) must modify each NATURAL application\u2019s security profile to make the LDAs accessible to the application. An ideal situation in which to use COPY files is when numerous programs in an application must all describe the same data structure(s). Using this technique, a source code description of each data structure is stored centrally in a COPY library. All programs requiring one or more of the data structures need only contain declarative statement(s) referring to the appropriate member file(s) in the COPY library. This approach insures that all the programs define the given storage layout in exactly the same way, using the same data item names, data types and data lengths. This facilitates application-wide maintenance and debugging. Changes to a data structure need only be made centrally in the COPY file, rather than separately and redundantly in each program. Of course, the source code in a program that references a COPY file must be written so that it is compatible with the source code in that COPY file. In particular, for fields that are defined in the COPY file and referred to in the program, the program must use the same data names and must assume the same data types and lengths as does the COPY file.","title":"Overview of COPY Files in General"},{"location":"chapters/chapterVIII/section04/#the-geosupport-copy-libraries","text":"There are two Geosupport COPY libraries that collectively contain COBOL, Assembler, PL/1 and C source code COPY files for all of the Geosupport API work area layouts. Geosupport also has a set of NATURAL LDAs for the work area layouts. The use of these facilities can greatly facilitate user application programming. Among the potential productivity benefits are the following: Elimination of the need for application programmers to key into their programs lengthy source code descriptions of the Geosupport work area layouts line by line. Standardization of Geosupport data item names among the programs in an application, facilitating troubleshooting and the reassignment of programming staff to programs written by others. Standardization of the descriptions (data types and lengths) of Geosupport data items in an application, fostering accuracy and compatibility among programs and files. Simplification of the updating of programs to reflect changes to Geosupport work area layouts. Each time a program that references the Geosupport COPY libraries is recompiled, the latest versions of the work area layouts are automatically retrieved. The Geosupport COPY libraries supporting COBOL, Assembler, PL/1 and C applications are two catalogued Partitioned Data Sets (PDSs) named A030.GEO.COPYLIB2 and A030.GEO.COPYLIB. For NATURAL applications at DoITT, the DoITT Database Administration staff is responsible for installing the Geosupport LDAs in the system library (CSCLIB) for each ADABAS database and for making the LDAs accessible to each application that needs such access by updating the application\u2019s profile. It is the user\u2019s responsibility to communicate with the appropriate DoITT staff to request such installation and profile updating. The Geosupport COPY libraries contain a complete set of COPY files for the Geosupport API work areas in COBOL, Assembler, PL/1, C and NATURAL. Each COPY file contains source code descriptions of one or more of the work areas in one of the supported programming languages, as explained below. The Geosupport COPY libraries support both batch and CICS applications. The MSW Work Area 2s of Functions 1, and 1E, (regular WA2), 2, 3 and 3C all have the same length, 200 bytes. For each of the supported programming languages except C, the layouts of these work areas are stored together in a single COPY file, coded as redefinitions of the same memory area. (In the COBOL files, this is done using REDEFINES. In the Assembler files, it is done using an ORG to reset the Location Counter. In the PL/1 files, it is done using BASED. In the NATURAL LDAs, it is done using REDEFINE.) Except for C, each of the remaining work area layouts has its own COPY file. For C, there is a single COPY file (called a \u2018header file\u2019 in C terminology) containing the layouts of all of the work areas, including WA1. The COW Work Area 2s are handled in a similar fashion, though they may not all have the same length. Tables VIII-1 and VIII-2, below, list all of the MSW and COW COPY files respectively for COBOL, Assembler, PL/1, NATURAL and C. The tables indicate the work areas for which each file contains layouts, the lengths of those work areas in bytes, and the name of each file by programming language. Appendix 5 and Appendix 14 contain printouts of the MSW and COW COPY files respectively. Important Note: As of January 1, 2020, Mainframe-Specific Work Areas (MSWs) will no longer be supported. It is therefore essential that users convert their MSW applications to th COW format. See Appendix 12 Table VIII-1: MSW COPY Files for COBOL, Assembler, PL/1, C and NATURAL - - - - - - - - - - COPY File Name - - - - - - - - MSW WORK AREA FUNCTION(S) LENGTH (bytes) COBOL ASSEMBLER PL/1 C NATURAL WA1 All 884 W1COB W1BAL W1PL1 WAC GEOLW1 WA2 1 (regular WA2), 1E (regular WA2), 2, 3 (regular WA2), 3C 200 W2COB W2BAL W2PL1 WAC GEOLW2 WA2 1 (long WA2), 1E (long WA2), 3 (long WA2) 300 W2COBL W2BALL W2PL1L WAC GEOLW2L WA2 1A&BL (regular WA2), BN (\\*) 939 W2COB1A W2BAL1A W2PL11A WAC GEOLW2LA WA2 1A&BL (long WA2) (\\**) 17,683 W2COB1AL W2BAL1AL W2PL11AL WAC GEOLW2LAL WA2 3S 4,224 W2COB3S W2BAL3S W2PL13S WAC GEOLW23S The COW COPY Files Table (Table VIII-2) appears on the following page. - - - - - - - - - - COPY File Name - - - - - - - - MSW WORK AREA FUNCTION(S) LENGTH (bytes) COBOL ASSEMBLER PL/1 C NATURAL WA1 All 1,200 P1COB P1BAL P1PL1 PAC GEOLP1 WA2 1 & 1E (Regular WA2), 3C (Regular WA2) 300 P2COB P2BAL P2PL1 PAC GEOLP2 WA2 2 200 P2COB P2BALL P2PL1L PAC GEOLP2 WA2 2W 4000 P2COB P2BAL P2PL1 PAC GEOLP2 WA2 3 (Regular WA2) 450 P2COB P2BAL P2PL1 PAC GEOLP2 WA2 3 (WA2 with AUXSEG option) 950 P2COB P2BAL P2PL1 PAC GEOLP2 WA2 3C (WA2 with AUXSEG option) 800 P2COB P2BAL P2PL1 PAC GEOLP2 WA2 3C (WA2 with AUXSEG option) 800 P2COB P2BAL P2PL1 PAC GEOLP2 WA2 3 (Extended WA2) 1,000 P2COB P2BAL P2PL1 PAC GEOLP2 WA2 3C (Extended WA2) 850 P2COB P2BAL P2PL1 PAC GEOLP2 WA2 3 (Extended WA2 w/AUXSEG) 1,500 P2COB P2BAL P2PL1 PAC GEOLP2 WA2 3C (Extended WA2 w/AUXSEG) 1,350 P2COB P2BAL P2PL1 PAC GEOLP2 WA2 1A & BL (Regular WA2), BN (\\*) 1,363 P2COB1A P2BAL1A P2PL11A PAC GEOLP21A WA2 1A & BL (Long WA2) (\\**) 1A & BL (TPAD Long WA2) (\\***) 17,750 P2COB1AL P2BAL1A P2PL11AL PAC GEOLP2AL WA2 1A & BL & BN (Extended WA2) (****) 2,800 P2COB1AL P2BAL1A P2PL11AL PAC GEOLP2AL WA2 1 & 1E (Extended WA2) 1,500 P2COB1AL P2BAL1A P2PL11AL PAC GEOLP2AL WA2 1B 4,300 P2COB1AL P2BAL1A P2PL11AL PAC GEOLP2AL WA2 3S 19,274 P2COB3S P2BAL3S P2PL13S PAC GEOLP23S WA2 AP 1,363 P2COBAP P2BALAP P2PL1AP PAC GEOL2AP WA2 AP (Extended WA2) 2,800 P2COBAP P2BALAP P2PL1AP PAC GEOL2APX (*) Functions 1A, BL and BN share a single regular WA2 layout. (* ) Functions 1A and BL share a single long WA2 layout. (Function BN has no long WA2 option.). (* ) Functions 1A and BL share a single TPAD long WA2 layout. (Function BN has no TPAD long WA2 option.). (* **) Functions 1A, BL and BN share a single extended WA2 layout.","title":"The Geosupport COPY Libraries"},{"location":"chapters/chapterVIII/section05/","text":"VIII.5 Coding API Calls When Using Geosupport COPY Files This section describes the source code statements that COBOL, Assembler, PL/1, C and NATURAL users must code in application programs that use Geosupport COPY files. The required statements consist of declarative statements to reference the COPY files (using the file names in Table VIII-1) and statements calling the driver. In Chapter VIII.3 , the forms of calls to the driver were given using arbitrary data names for the work areas. In programs that do not use Geosupport COPY files, those names are user-selectable. In the present section, the forms of the driver calls are given again, this time with the specific data names that are required for compatibility with the COPY files. COBOL and C are the only supported languages that permit COPY file users to select their own names for the work areas (but not for the fields within the work areas). Prior to each call to the driver, the program must prime Work Area 1 with the input data to be processed by Geosupport, as described in Chapter II.3 . In Chapter VIII.3 , the forms of calls to the driver were given using arbitrary data names for the work areas. In programs that do not use Geosupport COPY files, those names are user-selectable. In the present section, the forms of the driver calls are given again, this time with the specific data names that are required for compatibility with the COPY files. COBOL and C are the only supported languages that permit COPY file users to select their own names for the work areas (but not for the fields within the work areas). Prior to each call to the driver, the program must prime Work Area 1 with the input data to be processed by Geosupport, as described in Chapter II.3 . The declarative statements referencing COPY files cause the compiler to process the source code contained therein as if it were present within the application program\u2019s own source code at the point in the program where the declarative statement is located. Application programs need only reference those Geosupport COPY files that are required for the Geosupport function(s) the program actually calls, although referencing other COPY files does no harm. COBOL Source Code Statements To reference Geosupport MSW COPY files, COBOL programs must contain the appropriate one (or more) of the following statements in WORKING-STORAGE: 01 ANY-NAME-FOR-WA1. COPY W1COB. WA1, all functions 01 ANY-NAME-FOR-WA2. COPY W2COB. WA2, Functions 1 & 1E & 3 (regular WA2), 2, 3C 01 ANY-NAME-FOR-WA2-L. COPY W2COBL. WA2, Functions 1& 1E & 3 (long WA2) 01 ANY-NAME-FOR-WA2-1A. COPY W2COB1A. WA2, Functions 1A & BL (regular WA2), BN 01 ANY-NAME-FOR-WA2-1AL. COPY W2COB1AL. WA2, Functions 1A & BL (long WA2) 01 ANY-NAME-FOR-WA2-3S. COPY W2COB3S. WA2, Function 3S For COBOL programs that will be executed in the batch environment and that use Geosupport COPY files, API calls are coded as follows: One-work-area calls, all functions: CALL \u2018GBI\u2019 USING ANY-NAME-FOR-WA1. Two-work-area calls, Functions 1 & 1E & 3 (regular WA2), 2, 3C: CALL \u2018GBI\u2019 USING ANY-NAME-FOR-WA1 ANY-NAME-FOR-WA2. Two-work-area calls, Functions 1 & 1E & 3 (long WA2): CALL \u2018GBI\u2019 USING ANY-NAME-FOR-WA1 ANY-NAME-FOR-WA2-L. Two-work-area calls, Functions 1A & BL (regular WA2), BN: CALL \u2018GBI' USING ANY-NAME-FOR-WA1 ANY-NAME-FOR-WA2-1A. Two-work-area calls, Functions 1A & BL (long WA2): CALL \u2018GBI\u2019 USING ANY-NAME-FOR-WA1 ANY-NAME-FOR-WA2-1AL. Two-work-area calls, Function 3S: CALL \u2018GBI\u2019 USING ANY-NAME-FOR-WA1 ANY-NAME-FOR-WA2-3S. CICS programs issue calls as above but with GOAIDRV in place of GBI. To reference Geosupport COW COPY files include the appropriate COPY files whose names begin with P1 and P2 instead of W1 and W2, e.g. P1COB instead of W1COB. Note that in the COW format, there is no long WA2 for Functions 1, 1E, and 3. Note, also, that there are additional function options in the COW format. * To choose the appropriate COW COPY file, see Table VIII-2.* Assembler Source Code Statements To reference Geosupport MSW COPY files , Assembler programs must contain the appropriate one (or more) of the following statements: COPY W1BAL WA1, all functions COPY W2BAL WA2, Functions 1 & 1E & 3 (regular WA2), 2, 3C COPY W2BALL WA2, Functions 1 & 1E & 3 (long WA2) COPY W2BAL1A WA2, Functions 1A & BL (regular WA2), BN COPY W2BAL1AL WA2, Functions 1A & BL (long WA2) COPY W2BAL3S WA2, Function 3S For Assembler programs that will be executed in the batch environment and that use Geosupport COPY files, API calls are coded as follows: CALL GBI,W1BAL,VL One-work-area calls, all functions CALL GBI,(W1BAL,W2BAL),VL Two-work-area calls, Functions 1 & 1E & 3 (regular WA2), 2, 3C CALL GBI,(W1BAL,W2BALL),VL Two-work-area calls, Functions 1 & 1E & 3 (long WA2) CALL GBI,(W1BAL,W2BAL1A),VL Two-work-area calls, Functions 1A & BL (regular WA2), BN CALL GBI,(W1BAL,W2BAL1AL),VL Two-work-area calls, Functions 1A & BL (long WA2) CALL GBI,(W1BAL,W2BAL3S),VL Two-work-area calls, Function 3S CICS programs issue calls as above but with GOAIDRV in place of GBI. To reference Geosupport COW COPY files include the appropriate COPY files whose names begin with P1 and P2 instead of W1 and W2, e.g. P1BAL instead of W1BAL. Note that in the COW format, there is no long WA2 for Functions 1, 1E, and 3. Note, also, that there are additional function options in the COW format. * To choose the appropriate COW COPY file, see Table VIII-2. * PL/1 Source Code Statements To reference Geosupport MSW COPY files , PL/1 programs must contain the appropriate one(s) of the following statements: %INCLUDE W1PL1; WA1, all functions %INCLUDE W2PL1; WA2, Functions 1 & 1E & 3 (regular WA2), 2, 3C %INCLUDE W2PL1L; WA2, Functions 1 & 1E & 3 (long WA2) %INCLUDE W2PL11A; WA2, Functions 1A & BL (regular WA2), BN %INCLUDE W2PL11AL; WA2, Functions 1A & BL (long WA2) %INCLUDE W2PL13S; WA2, Function 3S For PL/1 programs that will be executed in the batch environment and that use Geosupport COPY files, API calls are coded as follows: CALL GBI (W1PL1); One-work-area calls, all functions CALL GBI (W1PL1,W2PL1); Two-work-area calls, Functions 1 & 1E, 2, 3 (regular WA2), 3C CALL GBI (W1PL1,W2PL1L); Two-work-area calls, Functions 1 & 1E & 3 (long WA2) CALL GBI (W1PL1,W2PL11A); Two-work-area calls, Functions 1A & BL (regular WA2), BN CALL GBI (W1PL1,W2PL11AL); Two-work-area calls, Functions 1A & BL (long WA2) CALL GBI (W1PL1,W2PL13S); Two-work-area calls, Function 3S CICS programs issue calls as above but with GOAIDRV in place of GBI. (Note: for either a batch or a CICS PL/1 program, the appropriate Geosupport driver (GBI or GOAIDRV respectively) must be declared as an external entry point. See Section VIII.3.) To reference the Geosupport COW COPY files include the appropriate copy files whose names begin with P1 and P2 instead of W1 and W2, e.g. P1PL1 instead of W1PL1. Note that in the COW format, there is no long WA2 for Functions 1, 1E, and 3. Note, also, that there are additional function options in the COW format. /* To choose the appropriate COW COPY file, see Table VIII-2. * IBM/C Source Code Statements To reference the Geosupport MSW COPY file IBM/C programs must contain the following statement: #include In the following C source code examples, the letter \u2018L\u2019 appears in upper case to facilitate distinguishing it from the numeric character \u20181\u2019. C_WA1 anyname_wa1; WA1, all functions C_WA2_F1 anyname_wa2_f1; WA2, Functions 1 & 1E (regular WA2) C_WA2_F1 anyname_wa2_f1L; WA2, Functions 1 & 1E (long WA2) C_WA2_F1A anyname_wa2_f1a; WA2, Functions 1A & BL (regular WA2), BN C_WA2_F1AL anyname_wa2_f1aL; WA2, Functions 1A & BL (long WA2) C_WA2_F2 anyname_wa2_f2; WA2, Function 2 C_WA2_F3 anyname_wa2_f3; WA2, Function 3 (regular WA2) C_WA2_F3L anyname_wa2_f3L; WA2, Function 3 (long WA2) C_WA2_F3C anyname_wa2_f3c; WA2, Function 3C C_WA2_F3S anyname_wa2_f3s; WA2, Function 3S For C programs that will be executed in the batch environment and that use the Geosupport COPY file, API calls are coded as follows: C_WA1 anyname_wa1; WA1, all functions C_WA2_F1 anyname_wa2_f1; WA2, Functions 1 & 1E (regular WA2) C_WA2_F1 anyname_wa2_f1L; WA2, Functions 1 & 1E (long WA2) C_WA2_F1A anyname_wa2_f1a; WA2, Functions 1A & BL (regular WA2), BN C_WA2_F1AL anyname_wa2_f1aL; WA2, Functions 1A & BL (long WA2) C_WA2_F2 anyname_wa2_f2; WA2, Function 2 C_WA2_F3 anyname_wa2_f3; WA2, Function 3 (regular WA2) C_WA2_F3L anyname_wa2_f3L; WA2, Function 3 (long WA2) C_WA2_F3C anyname_wa2_f3c; WA2, Function 3C C_WA2_F3S anyname_wa2_f3s; WA2, Function 3S GBI (&anyname_wa1); One-work-area calls, all functions. GBI (&anyname_wa1,&anyname_wa2_f1); Two-work-area calls, Functions 1 & 1E (regular WA2) GBI (&anyname_wa1,&anyname_wa2_f1L); Two-work-area calls, Functions 1 & 1E (long WA2) GBI (&anyname_wa1,&anyname_wa2_f1a); Two-work-area calls, Functions 1A & BL (regular WA2), BN GBI (&anyname_wa1,&anyname_wa2_f1aL); Two-work-area calls, Functions 1A & BL (long WA2) GBI (&anyname_wa1,&anyname_wa2_f2); Two-work-area calls, Function 2 GBI (&anyname_wa1,&anyname_wa2_f3); Two-work-area calls, Function 3 (regular WA2) GBI (&anyname_wa1,&anyname_wa2_f3L); Two-work-area calls, Function 3 (long WA2) GBI (&anyname_wa1,&anyname_wa2_f3c); Two-work-area calls, Function 3C GBI (&anyname_wa1,&anyname_wa2_f3s); Two-work-area calls, Function 3S CICS programs issue calls as above but with GOAIDRV in place of GBI. (Note: for either a batch or a CICS C program, the Geosupport driver (GBI or GOAIDRV respectively) must be declared as an external entry point. ( See Section VIII.3 .) To reference the Geosupport COW COPY files include the PAC COPY file instead of the WAC COPY file. Note that in the COW format, there is no long WA2 for Functions 1, 1E, and 3. Note, also, that there are additional function options in the COW format. NATURAL Source Code Statements NATURAL Source Code Statements NATURAL programs reference Geosupport MSW LDAs by containing one or more of the following statements in DEFINE DATA: LOCAL USING GEOLW1 WA1, all functions LOCAL USING GEOLW2 WA2, Functions 1 & 1E & 3 (regular WA2), 2, 3C LOCAL USING GEOLW2L WA2, Functions 1 & 1E & 3 (long WA2) LOCAL USING GEOLW21A WA2, Functions 1A & BL (regular WA2), BN LOCAL USING GEOLW2AL WA2, Functions 1A & BL (long WA2) LOCAL USING GEOLW23S WA2, Function 3S For NATURAL MSW programs that will be executed in the batch environment and that use the Geosupport COPY files (LDAs), API calls are issued as follows: CALL \u2018GBI\u2019 USING W1NAT One-work-area calls, all functions CALL \u2018GBI\u2019 USING W1NAT W2NAT Two-work-area calls, Functions 1 & 1E & 3 (regular WA2), 2, 3C CALL \u2018GBI\u2019 USING W1NAT W2NATL Two-work-area calls, Functions 1 & 1E & 3 (longWA2) CALL \u2018GBI\u2019 USING W1NAT W2NAT1A Two-work-area calls, Functions 1A & BL (regular WA2), BN CALL \u2018GBI\u2019 USING W1NAT W2NATAL Two-work-area calls, Functions 1A & BL (long WA2) CALL \u2018GBI\u2019 USING W1NAT W2NAT3S Two-work-area calls, Functions 3S CICS NATURAL programs issue calls as above but with GOAIDRV in place of GBI. Natural COW NATURAL programs reference Geosupport COW LDAs by containing one or more of the following statements in DEFINE DATA: LOCAL USING GEOLP1 WA1, all functions LOCAL USING GEOLP2 WA2, Functions 1 & 1E & 3C LOCAL USING GEOLP2 WA2, Function 2 LOCAL USING GEOLP2 WA2, Function 3 LOCAL USING GEOLP21A WA2, Functions 1A & BL (regular WA2), BN LOCAL USING GEOLP2AL WA2, Functions 1A & BL (long WA2) LOCAL USING GEOLP23S WA2, Function 3S LOCAL USING GEOL2AP WA2, Function AP LOCAL USING GEOL2APX WA2, Function AP Extended For NATURAL COW programs that will be executed in the batch environment and that use the Geosupport COPY files (LDAs), some samples of API calls follow: CALL \u2018GBI\u2019 USING P1NAT One-work-area calls, all functions CALL \u2018GBI\u2019 USING P1NAT P2NAT Two-work-area calls, Functions 1 & 1E & 3C CALL \u2018GBI\u2019 USING P1NAT P2NAT2 Two-work-area calls, Function 2 CALL \u2018GBI\u2019 USING P1NAT P2NAT3 Two-work-area calls, Function 3 CALL \u2018GBI\u2019 USING P1NAT P2NAT1A Two-work-area calls, Fns 1A & BL (regular WA2), BN CALL \u2018GBI\u2019 USING P1NAT P2NAT1AL Two-work-area calls, Functions 1A & BL (long WA2) CALL \u2018GBI\u2019 USING P1NAT P2NAT3S Two-work-area calls, Functions 3S CALL \u2018GBI\u2019 USING P1NAT P2NATAP Two-work-area calls, Functions AP CALL \u2018GBI\u2019 USING P1NAT P2NATAPX Two-work-area calls, Functions AP Extended Note that there are additional function options in the COW format. * To choose the appropriate COW COPY file (P2NATxxx), see Table VIII-2. * CICS NATURAL programs issue calls as above but with GOAIDRV in place of GBI.","title":"VIII.5 Coding API Calls When Using Geosupport COPY Files"},{"location":"chapters/chapterVIII/section05/#cobol-source-code-statements","text":"To reference Geosupport MSW COPY files, COBOL programs must contain the appropriate one (or more) of the following statements in WORKING-STORAGE: 01 ANY-NAME-FOR-WA1. COPY W1COB. WA1, all functions 01 ANY-NAME-FOR-WA2. COPY W2COB. WA2, Functions 1 & 1E & 3 (regular WA2), 2, 3C 01 ANY-NAME-FOR-WA2-L. COPY W2COBL. WA2, Functions 1& 1E & 3 (long WA2) 01 ANY-NAME-FOR-WA2-1A. COPY W2COB1A. WA2, Functions 1A & BL (regular WA2), BN 01 ANY-NAME-FOR-WA2-1AL. COPY W2COB1AL. WA2, Functions 1A & BL (long WA2) 01 ANY-NAME-FOR-WA2-3S. COPY W2COB3S. WA2, Function 3S For COBOL programs that will be executed in the batch environment and that use Geosupport COPY files, API calls are coded as follows: One-work-area calls, all functions: CALL \u2018GBI\u2019 USING ANY-NAME-FOR-WA1. Two-work-area calls, Functions 1 & 1E & 3 (regular WA2), 2, 3C: CALL \u2018GBI\u2019 USING ANY-NAME-FOR-WA1 ANY-NAME-FOR-WA2. Two-work-area calls, Functions 1 & 1E & 3 (long WA2): CALL \u2018GBI\u2019 USING ANY-NAME-FOR-WA1 ANY-NAME-FOR-WA2-L. Two-work-area calls, Functions 1A & BL (regular WA2), BN: CALL \u2018GBI' USING ANY-NAME-FOR-WA1 ANY-NAME-FOR-WA2-1A. Two-work-area calls, Functions 1A & BL (long WA2): CALL \u2018GBI\u2019 USING ANY-NAME-FOR-WA1 ANY-NAME-FOR-WA2-1AL. Two-work-area calls, Function 3S: CALL \u2018GBI\u2019 USING ANY-NAME-FOR-WA1 ANY-NAME-FOR-WA2-3S. CICS programs issue calls as above but with GOAIDRV in place of GBI. To reference Geosupport COW COPY files include the appropriate COPY files whose names begin with P1 and P2 instead of W1 and W2, e.g. P1COB instead of W1COB. Note that in the COW format, there is no long WA2 for Functions 1, 1E, and 3. Note, also, that there are additional function options in the COW format. * To choose the appropriate COW COPY file, see Table VIII-2.*","title":"COBOL Source Code Statements"},{"location":"chapters/chapterVIII/section05/#assembler-source-code-statements","text":"To reference Geosupport MSW COPY files , Assembler programs must contain the appropriate one (or more) of the following statements: COPY W1BAL WA1, all functions COPY W2BAL WA2, Functions 1 & 1E & 3 (regular WA2), 2, 3C COPY W2BALL WA2, Functions 1 & 1E & 3 (long WA2) COPY W2BAL1A WA2, Functions 1A & BL (regular WA2), BN COPY W2BAL1AL WA2, Functions 1A & BL (long WA2) COPY W2BAL3S WA2, Function 3S For Assembler programs that will be executed in the batch environment and that use Geosupport COPY files, API calls are coded as follows: CALL GBI,W1BAL,VL One-work-area calls, all functions CALL GBI,(W1BAL,W2BAL),VL Two-work-area calls, Functions 1 & 1E & 3 (regular WA2), 2, 3C CALL GBI,(W1BAL,W2BALL),VL Two-work-area calls, Functions 1 & 1E & 3 (long WA2) CALL GBI,(W1BAL,W2BAL1A),VL Two-work-area calls, Functions 1A & BL (regular WA2), BN CALL GBI,(W1BAL,W2BAL1AL),VL Two-work-area calls, Functions 1A & BL (long WA2) CALL GBI,(W1BAL,W2BAL3S),VL Two-work-area calls, Function 3S CICS programs issue calls as above but with GOAIDRV in place of GBI. To reference Geosupport COW COPY files include the appropriate COPY files whose names begin with P1 and P2 instead of W1 and W2, e.g. P1BAL instead of W1BAL. Note that in the COW format, there is no long WA2 for Functions 1, 1E, and 3. Note, also, that there are additional function options in the COW format. * To choose the appropriate COW COPY file, see Table VIII-2. *","title":"Assembler Source Code Statements"},{"location":"chapters/chapterVIII/section05/#pl1-source-code-statements","text":"To reference Geosupport MSW COPY files , PL/1 programs must contain the appropriate one(s) of the following statements: %INCLUDE W1PL1; WA1, all functions %INCLUDE W2PL1; WA2, Functions 1 & 1E & 3 (regular WA2), 2, 3C %INCLUDE W2PL1L; WA2, Functions 1 & 1E & 3 (long WA2) %INCLUDE W2PL11A; WA2, Functions 1A & BL (regular WA2), BN %INCLUDE W2PL11AL; WA2, Functions 1A & BL (long WA2) %INCLUDE W2PL13S; WA2, Function 3S For PL/1 programs that will be executed in the batch environment and that use Geosupport COPY files, API calls are coded as follows: CALL GBI (W1PL1); One-work-area calls, all functions CALL GBI (W1PL1,W2PL1); Two-work-area calls, Functions 1 & 1E, 2, 3 (regular WA2), 3C CALL GBI (W1PL1,W2PL1L); Two-work-area calls, Functions 1 & 1E & 3 (long WA2) CALL GBI (W1PL1,W2PL11A); Two-work-area calls, Functions 1A & BL (regular WA2), BN CALL GBI (W1PL1,W2PL11AL); Two-work-area calls, Functions 1A & BL (long WA2) CALL GBI (W1PL1,W2PL13S); Two-work-area calls, Function 3S CICS programs issue calls as above but with GOAIDRV in place of GBI. (Note: for either a batch or a CICS PL/1 program, the appropriate Geosupport driver (GBI or GOAIDRV respectively) must be declared as an external entry point. See Section VIII.3.) To reference the Geosupport COW COPY files include the appropriate copy files whose names begin with P1 and P2 instead of W1 and W2, e.g. P1PL1 instead of W1PL1. Note that in the COW format, there is no long WA2 for Functions 1, 1E, and 3. Note, also, that there are additional function options in the COW format. /* To choose the appropriate COW COPY file, see Table VIII-2. *","title":"PL/1 Source Code Statements"},{"location":"chapters/chapterVIII/section05/#ibmc-source-code-statements","text":"To reference the Geosupport MSW COPY file IBM/C programs must contain the following statement: #include In the following C source code examples, the letter \u2018L\u2019 appears in upper case to facilitate distinguishing it from the numeric character \u20181\u2019. C_WA1 anyname_wa1; WA1, all functions C_WA2_F1 anyname_wa2_f1; WA2, Functions 1 & 1E (regular WA2) C_WA2_F1 anyname_wa2_f1L; WA2, Functions 1 & 1E (long WA2) C_WA2_F1A anyname_wa2_f1a; WA2, Functions 1A & BL (regular WA2), BN C_WA2_F1AL anyname_wa2_f1aL; WA2, Functions 1A & BL (long WA2) C_WA2_F2 anyname_wa2_f2; WA2, Function 2 C_WA2_F3 anyname_wa2_f3; WA2, Function 3 (regular WA2) C_WA2_F3L anyname_wa2_f3L; WA2, Function 3 (long WA2) C_WA2_F3C anyname_wa2_f3c; WA2, Function 3C C_WA2_F3S anyname_wa2_f3s; WA2, Function 3S For C programs that will be executed in the batch environment and that use the Geosupport COPY file, API calls are coded as follows: C_WA1 anyname_wa1; WA1, all functions C_WA2_F1 anyname_wa2_f1; WA2, Functions 1 & 1E (regular WA2) C_WA2_F1 anyname_wa2_f1L; WA2, Functions 1 & 1E (long WA2) C_WA2_F1A anyname_wa2_f1a; WA2, Functions 1A & BL (regular WA2), BN C_WA2_F1AL anyname_wa2_f1aL; WA2, Functions 1A & BL (long WA2) C_WA2_F2 anyname_wa2_f2; WA2, Function 2 C_WA2_F3 anyname_wa2_f3; WA2, Function 3 (regular WA2) C_WA2_F3L anyname_wa2_f3L; WA2, Function 3 (long WA2) C_WA2_F3C anyname_wa2_f3c; WA2, Function 3C C_WA2_F3S anyname_wa2_f3s; WA2, Function 3S GBI (&anyname_wa1); One-work-area calls, all functions. GBI (&anyname_wa1,&anyname_wa2_f1); Two-work-area calls, Functions 1 & 1E (regular WA2) GBI (&anyname_wa1,&anyname_wa2_f1L); Two-work-area calls, Functions 1 & 1E (long WA2) GBI (&anyname_wa1,&anyname_wa2_f1a); Two-work-area calls, Functions 1A & BL (regular WA2), BN GBI (&anyname_wa1,&anyname_wa2_f1aL); Two-work-area calls, Functions 1A & BL (long WA2) GBI (&anyname_wa1,&anyname_wa2_f2); Two-work-area calls, Function 2 GBI (&anyname_wa1,&anyname_wa2_f3); Two-work-area calls, Function 3 (regular WA2) GBI (&anyname_wa1,&anyname_wa2_f3L); Two-work-area calls, Function 3 (long WA2) GBI (&anyname_wa1,&anyname_wa2_f3c); Two-work-area calls, Function 3C GBI (&anyname_wa1,&anyname_wa2_f3s); Two-work-area calls, Function 3S CICS programs issue calls as above but with GOAIDRV in place of GBI. (Note: for either a batch or a CICS C program, the Geosupport driver (GBI or GOAIDRV respectively) must be declared as an external entry point. ( See Section VIII.3 .) To reference the Geosupport COW COPY files include the PAC COPY file instead of the WAC COPY file. Note that in the COW format, there is no long WA2 for Functions 1, 1E, and 3. Note, also, that there are additional function options in the COW format.","title":"IBM/C Source Code Statements"},{"location":"chapters/chapterVIII/section05/#natural-source-code-statements","text":"NATURAL Source Code Statements NATURAL programs reference Geosupport MSW LDAs by containing one or more of the following statements in DEFINE DATA: LOCAL USING GEOLW1 WA1, all functions LOCAL USING GEOLW2 WA2, Functions 1 & 1E & 3 (regular WA2), 2, 3C LOCAL USING GEOLW2L WA2, Functions 1 & 1E & 3 (long WA2) LOCAL USING GEOLW21A WA2, Functions 1A & BL (regular WA2), BN LOCAL USING GEOLW2AL WA2, Functions 1A & BL (long WA2) LOCAL USING GEOLW23S WA2, Function 3S For NATURAL MSW programs that will be executed in the batch environment and that use the Geosupport COPY files (LDAs), API calls are issued as follows: CALL \u2018GBI\u2019 USING W1NAT One-work-area calls, all functions CALL \u2018GBI\u2019 USING W1NAT W2NAT Two-work-area calls, Functions 1 & 1E & 3 (regular WA2), 2, 3C CALL \u2018GBI\u2019 USING W1NAT W2NATL Two-work-area calls, Functions 1 & 1E & 3 (longWA2) CALL \u2018GBI\u2019 USING W1NAT W2NAT1A Two-work-area calls, Functions 1A & BL (regular WA2), BN CALL \u2018GBI\u2019 USING W1NAT W2NATAL Two-work-area calls, Functions 1A & BL (long WA2) CALL \u2018GBI\u2019 USING W1NAT W2NAT3S Two-work-area calls, Functions 3S CICS NATURAL programs issue calls as above but with GOAIDRV in place of GBI. Natural COW NATURAL programs reference Geosupport COW LDAs by containing one or more of the following statements in DEFINE DATA: LOCAL USING GEOLP1 WA1, all functions LOCAL USING GEOLP2 WA2, Functions 1 & 1E & 3C LOCAL USING GEOLP2 WA2, Function 2 LOCAL USING GEOLP2 WA2, Function 3 LOCAL USING GEOLP21A WA2, Functions 1A & BL (regular WA2), BN LOCAL USING GEOLP2AL WA2, Functions 1A & BL (long WA2) LOCAL USING GEOLP23S WA2, Function 3S LOCAL USING GEOL2AP WA2, Function AP LOCAL USING GEOL2APX WA2, Function AP Extended For NATURAL COW programs that will be executed in the batch environment and that use the Geosupport COPY files (LDAs), some samples of API calls follow: CALL \u2018GBI\u2019 USING P1NAT One-work-area calls, all functions CALL \u2018GBI\u2019 USING P1NAT P2NAT Two-work-area calls, Functions 1 & 1E & 3C CALL \u2018GBI\u2019 USING P1NAT P2NAT2 Two-work-area calls, Function 2 CALL \u2018GBI\u2019 USING P1NAT P2NAT3 Two-work-area calls, Function 3 CALL \u2018GBI\u2019 USING P1NAT P2NAT1A Two-work-area calls, Fns 1A & BL (regular WA2), BN CALL \u2018GBI\u2019 USING P1NAT P2NAT1AL Two-work-area calls, Functions 1A & BL (long WA2) CALL \u2018GBI\u2019 USING P1NAT P2NAT3S Two-work-area calls, Functions 3S CALL \u2018GBI\u2019 USING P1NAT P2NATAP Two-work-area calls, Functions AP CALL \u2018GBI\u2019 USING P1NAT P2NATAPX Two-work-area calls, Functions AP Extended Note that there are additional function options in the COW format. * To choose the appropriate COW COPY file (P2NATxxx), see Table VIII-2. * CICS NATURAL programs issue calls as above but with GOAIDRV in place of GBI.","title":"NATURAL Source Code Statements"},{"location":"chapters/chapterVIII/section06/","text":"VIII.6 JCL for the Compile Step COBOL, Assembler, PL/1 and C programs that do not reference Geosupport COPY files do not require any Geosupport-related JCL in the compile step. When compiling a COBOL, Assembler, PL/1 or C program that references Geosupport COPY files, the Geosupport COPY libraries must be made accessible to the compiler, as described below. NATURAL programs are compiled in the usual way, with no special user action required to access the Geosupport LDAs. The Geosupport COPY libraries that support COBOL, Assembler, PL/1 and C are two catalogued files which at DoITT have the DSNs A030.GEO.COPYLIB2 and A030.GEO.COPYLIB. (At other installations, users should verify these DSNs with the data center\u2019s Geosupport System Administrator.) The COPY libraries must be concatenated under the DDname SYSLIB in the JCL for the compile step. Since the two libraries have some member names in common, it is essential to concatenate their DD statements in the proper order as shown below. Assuming that one of the standard IBM catalogued procedures for compiling is being used, the JCL for SYSLIB should be coded as follows: COBOL: //COBOL.SYSLIB DD DSN=A030.GEO.COPYLIB2,DISP=SHR // DD DSN=A030.GEO.COPYLIB,DISP=SHR ASSEMBLER //ASM.SYSLIB DD DSN=A030.GEO.COPYLIB2,DISP=SHR // DD DSN=A030.GEO.COPYLIB,DISP=SHR // DD DSN= < \\name of user macro library>,DISP=SHR // DD DSN=SYS1.MACLIB,DISP=SHR PL/1: //PLI.SYSLIB DD DSN=A030.GEO.COPYLIB2,DISP=SHR // DD DSN=A030.GEO.COPYLIB,DISP=SHR IBM/C: //COMPILE.SYSLIB DD // DD DSN=A030.GEO.COPYLIB,DISP=SHR For Assembler applications, care must be taken to insure that the required Assembler macro libraries are concatenated to SYSLIB, as shown. For C applications, note that the compiler requires access only to COPYLIB, not to COPYLIB2, and furthermore, care must be taken to insure that COPYLIB is concatenated to the IBM/C header file library, rather than overriding it. Overriding is prevented by coding one DD statement with a blank operand field followed by the DD statement for the Geosupport COPY library, as shown. For COBOL applications, in addition to providing the DD statements for SYSLIB, the appropriate compiler option, LIB, must also be in effect. Since LIB is the default, it does not have to be explicitly specified. For PL/1 applications being compiled by a compiler other than the IBM Enterprise PL/1 Compiler, in addition to providing the DD statements for SYSLIB, the appropriate compiler option, MACRO or INCLUDE, must also be in effect. If %INCLUDE is the only kind of preprocessor statement in the program, then the INCLUDE option should be used instead of the MACRO option. This will make compilation faster. If other kinds of preprocessor statements are in the program in addition to the %INCLUDE statement(s), then the MACRO option must be used. For example: // EXEC IBMZC,PARM.PLI=\u2019 MACRO\u2019 or // EXEC IBMZC,PARM.PLI=\u2019 INCLUDE\u2019 In the IBM Enterprise PL/1 Compiler, the meaning of the INCLUDE compiler option has changed. As a result, if %INCLUDE is the only kind of preprocessor statement in the program, then no compiler option reflecting that fact should be coded. If other kinds of preprocessor statements are in the program in addition to the %INCLUDE statement(s), then as is the case with other PL/1 compilers, the MACRO option must be used.","title":"VIII.6 JCL for the Compile Step"},{"location":"chapters/chapterVIII/section07/","text":"VIII.7 JCL for the Linkage Editor Step In both batch and CICS applications, the Geosupport driver must be link-edited into the user program. For applications written in NATURAL, this is done automatically with no special user action required. For non-NATURAL applications, either batch or CICS, users must link-edit their programs as explained below. When link-editing a non-NATURAL application, the user must provide in the JCL for the linkage editor step a DD statement for the Geosupport load library containing the driver, as well as an INCLUDE statement in the SYSIN file specifying the driver. The DD statement should be coded as follows (\u201cYOURDDN\u201d may be replaced by any DDname): //YOURDDN DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR For batch programs, the INCLUDE statement in the SYSIN file should be coded as follows: //LKED.SYSIN DD * \u2022 \u2022 INCLUDE YOURDDN(GBI) \u2022 \u2022 /* For CICS programs, the INCLUDE statement should be coded as follows: //LKED.SYSIN DD * \u2022 \u2022 INCLUDE YOURDDN(GOAIDRV) \u2022 \u2022 /*","title":"VIII.7 JCL for the Compile Step"},{"location":"chapters/chapterVIII/section08/","text":"VIII.8 JCL for the Execute Step (Batch Applications) For user programs being executed in the batch environment, the user must provide seven megabytes of memory for Geosupport, in addition to the memory required for the user program itself. Geosupport Software Files User programs that are executed in the batch environment also require Geosupport-related DD statements in the JCL for the execute step. A STEPLIB or JOBLIB DD statement must be provided to make the Geosupport foreground component batch load module library accessible to the application. As of Version 10.1 of Geosupport, users do this by coding either of the following DD statements: //STEPLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR // DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR or //JOBLIB DD DSN=A030.GEO.SUPPORT.PDSE.LOADLIB,DISP=SHR // DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR (NATURAL users, please see the important note at the end of this section regarding the STEPLIB or JOBLIB DD statement.) Geosupport Data Files As of Version 10.1 of Geosupport, the user no longer has to provide DD statements for the Geosupport data files. In fact, if these DD statements are provided they are ignored by Geosupport. The data set names of the Geosupport data files are stored in a module called DSNAMES. If you need to use a non-standard Geosupport data file, please see your systems programmer. Note for NATURAL Users: When using a NATURAL batch execution procedure, care must be taken to insure that the Geosupport load library is concatenated to the two standard NATURAL libraries, rather than overriding them. Overriding is prevented by coding two DD statements with blank operand fields, followed by the DD statement for the Geosupport load library. The following JCL is an example (any stepname may be used): //STEPNM EXEC ,REGION=7M //STEPLIB DD // DD //JOBLIB DD DSN=A030.GEO.SUPPORT PDSE LOADLIB,DISP=SHR // DD DSN=A030.GEO.SUPPORT.LOADLIB,DISP=SHR","title":"VIII.8 JCL for the Execute Step (Batch Applications)"},{"location":"chapters/chapterX/chapterX/","text":"CHAPTER X DESKTOP EDITION: GEOSUPPORT BATCH ADDRESS TRANSLATOR (GBAT)","title":"Chapter X"},{"location":"chapters/chapterX/section01/","text":"X.1 What is GBAT? GBAT Desktop Edition is Geosupport Desktop Edition\u2019s batch utility application and may be executed on any 32-bit Windows platform. GBAT Desktop Edition (referred to as GBAT in this document) can frequently satisfy your batch Geosupport processing needs and eliminate the necessity of your writing your own application program. GBAT accepts as input and provides as output either text files or most databases that are supported by Microsoft\u2019s ODBC (Open Database Connectivity), such as Access 2 Execution of GBAT is controlled by control files that you create via a user friendly, full featured graphical interface. Once you have created these control files, they may be used repeatedly. If you are using a database for input and/or output, you must have a fairly thorough knowledge of how to use that database. This document does not discuss how to use any database. For information on the database that you are using, refer to either the vendor documentation on the database or to Microsoft documentation. GBAT produces two types of output text files or databases. One set of output consists of the successful output and the second consists of the records that resulted in an error condition. NOTE FOR DATABASE USERS: GBAT returns empty input fields as Zero Length Strings in the output, even if they were originally NULL. This phenomenon has been observed using Access and is presumed to exist using other databases as well. We hope to fix this in a future release of GBAT Desktop Edition. 2 GBAT has been successfully tested with Access, dBASE, Excel, MS SQL Server and FoxPro. GBAT has not been successfully tested with Paradox.","title":"X.1 What is GBAT?"},{"location":"chapters/chapterX/section02/","text":"X.2 Using GBAT X.2.1 Before You Begin Use the Geosupport Desktop Edition Installation CD to install the Geosupport Desktop Edition package. It is recommended that you use GBAT on machines with the latest versions of the \u201cMicrosoft Data Access Components\u201d and \u201cMicrosoft Jet\u201d. If you want to make certain that you are up to date, download and install the following files from Microsoft\u2019s web site: Mdac_typ.exe,Jet40Sp3_Comp.exe, and Jet40SP6_9xNT.exe. X.2.2 Starting the Application To start the application, find and double-click the NYCgbat.exe program icon which appears as shown on the right side, in My Computer or Windows Explorer. X.2.3 Selecting an ODBC Data Source Upon starting the application, you will be presented with the following ODBC data source selection screen. An ODBC Data Source file is a configuration file that contains information about a database that can be accessed through ODBC. If you have previously configured the data source, it will be listed in the list displayed in the \u201cSelect Data Source\u201d window, an example of which is shown above. In that situation, select that Data Source and click on the OK button. Then proceed to Chapter X.2.5 labeled \u201cFunction Selection\u201d in this document. If you have not previously configured your data source, you need to create a new data source. This is done by clicking on the New button. Creating a data source using a database that you are familiar with should be a fairly straightforward process; refer to the documentation or online help of your ODBC driver\u2019s data source configuration for further information. See Note For Database Users on previous page. Creating a data source for text files is more complicated. Follow the steps indicated in Chapter X.2.4 to create a data source for the text files. X.2.4 Configuring a New Text Data Source First, click on the New button in the Select Data Source Window, which is illustrated above. You will be presented with a list of drivers for which a data source can be set up as illustrated below on the \u201cCreate New Data Source\u201d window. Select the Microsoft Text Driver and click on the Next button. In the \u201dCreate New Data Source\u201d window illustrated below, choose a name for your data source and click on the Next button. Click on the finish button in the window shown next, and you will be taken to the ODBC text driver\u2019s configuration screen. The next window illustrates the \u201cODBC Text Setup\u201d screen as it initially appears. In the above window, first deselect the \u201cUse Current Directory\u201d checkbox. Next Using the \u201cSelect Directory\u201d button, choose the directory in which your text files are located. Then click on the Options button to expand the window. If the extension of the filenames in which your data is stored does not appear on the Extensions List of the above window, type it in the Extension box and click on the Add button. Then, select that extension on the list and click on the \u201cDefine Format\u201d button. You can use the above window labeled \u201cDefine Text Format\u201d to specify the schema of the data in each of your text files. This is important because GBAT operates on a database paradigm rather than a flat-file paradigm. It needs to be given data in the form of Tables and Columns (also know as \u201cfields\u201d), rather than files and character positions, in order to make sense out of them. First from the \u201cTables\u201d menu select the name of the file whose schema you wish to define. Check the \u201cColumn Name Header\u201d checkbox if the first line of the text file that you are configuring contains field names rather than field data. (If the data file does not contain field names, you will have to specify field names later on.) Now, select the format in which your data is stored. Choose \u201cCSV Delimited\u201d if your data items are surrounded by quotation marks and separated by commas Choose \u201cTab Delimited\u201d if your data items are separated by tab characters Choose \u201cCustom Delimited\u201d if your data items are separated by some other character. You will have to specify that character in the \u201cDelimiter\u201d field. Choose \u201cFixed Length\u201d if the data items in your text file are a fixed number of characters, consistent on each line, without any sort of delimitation. If your text file uses the Fixed Length format, and/or you have not selected the \u201cColumn Name Header\u201d checkbox, you will now have to specify information about the fields that it contains. (In all other circumstances, the Driver should be able to determine this information automatically. You can click the \u201cGuess\u201d button if you want to make sure.) For each field in your text file: Choose the field\u2019s Data Type from the \u201cData Type\u201d drop-down menu. This will usually be \u201cchar\u201d for fields in text files. Enter a Name by which the field will be identified. If you are using a Fixed Length format file, and/or you have chosen \u201cchar\u201d for the data type, specify the Width of the field in characters. This is important for any file format, because if you specify a width that is too short, the data that GBAT sees will be truncated. However, it is especially important for Fixed Length format files that the field width be accurate, because the width value is also used to determine the starting position of the following field. Click on the Add button to add the field specification to the Columns list. If, for example, you have a Fixed Length format text file, where two lines appear as: 22 Reade St. 1 1541 E28 St. 3 This file contains an Address Number field beginning at position one that is five characters long, followed by a street name field beginning at position six that is twelve characters long, followed by a borough code field beginning at position eighteen that is a single character long. To configure the columns for this table, select Char from the data type list, type \u201cADDRESS NUMBER\u201d for the name, and \u201c5\u201d for the width; then click on the Add button. Then select Char, enter \u201cStreet Name\u201d, and \u201c12\u201d, and click on Add. Finally, select char once again, enter \u201cBorough Code\u201d, \u201c1\u201d, and click on Add. When you\u2019ve finished setting up your table, you can select another text file to configure from the Tables list box. After you have configured all of your tables, click on the OK button to return to the \u201cODBC Text Setup\u201d window. Click on the OK button in this window. You have now finished setting up your Text ODBC Data Source. Select your newly created data source in the window labeled \u201cSelect Data Source\u201d, which should be displayed now. Click on the OK button to continue to the next step. X.2.5 Function Selection This is the point at which the configuration of your GBAT session proper begins. First, you will be defining the input information to be used by GBAT; that is, where the data is coming from, and what sort of processing should be carried out on it. If you have already configured the input settings and saved them to a file, you can retrieve those settings here. Select the \u201cLoad Configuration\u201d checkbox and find the saved configuration file using the Browse button. You may then proceed to Chapter X.2.7 labeled \u201cGeneral Input Configuration\u201d by clicking on the Next button. You must choose a table to be the source of your input data. To do this, select a table from the \u201cSelect a Table\u201d drop-down list. This will be a data source that you previously configured as described in Chapter X.2.3 of this document. You must also choose the Geosupport function that will be used to process your data. To do this, select the radio button for the appropriate function. For more information on the capabilities of each of the Geosupport functions, please see Appendix 1 . Click on the Next button to continue on to the next screen. X.2.6 Function-Specific Configuration X.2.6.1 Function 1 and Function 1E If you chose Function 1 on the Function Selection window, the following window will be displayed. Please note that the window for Function 1E differs from the window for Function 1 only in the label at the top of the window. The input information required to execute Function 1 or 1E includes an address number, street name or street code, and borough. Your text file or database may contain the house number in one of three different forms. The most common form is the manner in which you would normally write the house number; e.g. 22, 61-15, 27A, etc. If your data is in this form, select the first button under House Number which is labeled \u201cAddress Number\u201d. If your file has been processed by the Geosupport system you may have saved the form of the house number used internally in Geosupport referred to as HNS, which stands for House Number in Sort format. If your data is in this format, select the second button under House Number, which is labeled HNS. The third possibility is that the address number is combined with the street name and, consequently, there will be no separate field for the address number. In this case, select the third button under House Number which is labeled None (Freeform address). If either \u201cAddress Number\u201d or \u201cHNS\u201d is selected, then select the field in your file which contains the Address Number or HNS. If you have selected \u201cHNS\u201d, the field must be eleven characters wide. If you have selected \u201cAddress Number\u201d, then the field may be any size up to sixteen characters wide. If you have selected \u201cNone\u201d, then no field is selected. Next specify the format of your street data, which will be street name or street code. If you have selected the street code option and the street code field in your database contains a borough code as its first digit, select the \u201cStreet Code Contains Borough Code\u201dbutton. From the drop-down list, select the field in the table that contains the street data. Now specify the field in your table that contains the borough code. If the borough code in your table is contained within the street code field, this step will not be necessary. Once you have finished configuring these options, click on the Next button to move on to the next screen, which is described in Chapter X.2.7 labeled \u201cGeneral Input Configuration\u201d. X.2.6.2 Function 1A If you chose Function 1A on the Function Selection screen, the following window will now be displayed: The input information required to execute Function 1A includes an address number, street name or street code, and borough as well as information defined as \u201cExtended Data\u201d. For information on defining the address number, street information and borough refer to the previous section which describes the input information required to execute Function 1 and 1E since this information is the same. For Function 1A, you have the option of having Geosupport return a list of addresses or a list of Building Identification Numbers commonly referred to as BINs. If you want the list of addresses, select the button labeled \u201cAddress List\u201d. If you want the list of BINs, select the button labeled \u201cBIN List\u201d. Since the number of addresses in the address list can vary from one to twenty one and the number of BINs in the BIN list can vary from one to two thousand five hundred, only the first item in the list will be returned as an optional field for your output table. However, if you would like the full list of addresses or BINs, select the \u201cOutput Complete List\u201d checkbox and enter the name of the database table to which you would like the list to be output. If you later chose to output the results of the data processing as text files rather than database tables, the name that you specify here will be ignored. If the database table does not exist, it will be created during execution of GBAT. Once you have finished configuring these options, click on the Next button to move on to the next screen, which is described in Chapter X.2.7 labeled \u201cGeneral Input Configuration\u201d. X.2.6.3 Function 1N If you chose Function 1N on the Function Selection screen, the following window will be displayed: The input information required to execute Function 1N includes a street name and borough. First select from the drop-down list the field in the table that contains the street name. Next specify the field in your table that contains the borough code. Once you have finished configuring these options, click on the Next button to move on to the next screen, which is described in Chapter X.2.7 labeled \u201cGeneral Input Configuration\u201d. X.2.6.4 Function 2 If you chose Function 2 on the Function Selection screen, the following window will now be visible: The input information required to execute Function 2 includes two streets and the borough associated with each street. If the streets intersect exactly twice, a compass direction is required as well. If the streets intersect more than twice, then the intersection cannot be processed by Geosupport. First, it is necessary to specify the format of your street data, which will be in the form of either street name or street code. The street code may be either the five-digits, seven digits or ten-digits. If the street code field has been selected and it includes the borough code, then select the boxes labeled \u201cStreet Code Contains Borough Code\u201d. From the drop- down lists, select for each street the field in the table that contain the street data to be used. Do the same for the borough codes, if they are not contained within the street codes. If you are using street codes, please ensure that all of the street codes you provide for each street are of the same length; that is, all street codes must be either 5 digit, 7 digit or 10 digit and all must either include or exclude the borough code. If you would like to specify a field for compass directions, ensure that the \u201cCompass Direction\u201d checkbox is checked and select the appropriate field from the drop-down list. If you do not wish to provide this optional field, ensure that the \u201cCompass Direction\u201d checkbox is not checked. Once you have finished configuring these options, click on the Next button to move on to the next screen, which is described in Chapter X.2.7 labeled \u201cGeneral Input Configuration\u201d. X.2.6.5 Function 3 If you chose Function 3 on the Function Selection screen, the following window will be displayed: The input information required to execute Function 3 includes the on-street, two cross streets and the boroughs of each street. First, using the radio buttons, specify the format of your street data, which will be street name or street code. For each street for which you have selected the street code option and for your data the borough code is not contained within the street code, check the \u201cExternal Borough Code\u201d checkbox. From the drop-down lists, for each street select the field in the table that contains the street data. Do the same for the borough codes, if they are not included with the street codes. If you are using street codes, please ensure that all of the street codes you provide for each street are of the same length; that is, all street codes must be either 5 digit, 7 digit or 10 digit and all must either include or exclude the borough code. Once you have finished configuring these options, click on the Next button to move on to the next screen, which is described in Chapter X.2.7 labeled \u201cGeneral Input Configuration\u201d. X.2.6.6 Function 3C If you chose Function 3C on the Function Selection screen, the following window will now be displayed: The input information required to execute Function 3C includes a compass direction, an on-street name, two cross streets, and the boroughs for each of the streets. First, using the radio buttons, specify the format of your street data, which will be street name or street code. Next select the field containing the compass direction from the \u201cSelect a Field for Compass Direction\u201d drop-down. Refer to Chapter X.2.6.5 , which describes the input for Function 3, for information on supplying the rest of the data for Function 3C. Once you have finished configuring these options, click on the Next button to move on to the next screen, which is described in Chapter X.2.7 labeled \u201cGeneral Input Configuration\u201d. X.2.6.7 Function BL If you chose Function BL on the Function Selection screen, the following window will now be displayed: The input information required to execute Function BL includes a borough, tax block and tax lot. Each of these items may be provided in separate fields or as a single ten-character string in one field. If you would like to provide the entire BBL in a single field, select the \u201cFull BBL\u201d radio button in the Borough area of the window and then choose the appropriate source field from the drop-down menu. If, on the other hand, you would prefer to provide each element of the BBL individually, select the \u201cBorough Code\u201d radio button in the Borough area of the window and then choose the appropriate source field for the borough code from the adjacent drop-down. Do the same thing for the tax block and the tax lot in the subsequent areas of the window. For Function BL as for Function 1A, you have the option of having Geosupport return a list of addresses or a list of Building Identification Numbers commonly referred to as BINs. If you want the list of addresses, select the button labeled \u201cAddress List\u201d. If you want the list of BINs, select the button labeled \u201cBIN List\u201d. Since the number of addresses in the address list can vary from one to twenty one and the number of BINs in the BIN list can vary from one to two thousand five hundred, only the first item in the list will be returned as an optional field for your output table. However, if you would like the full list of addresses or BINs, select the \u201cOutput Complete List\u201d checkbox and enter the name of the database table to which you would like the list to be output. If you later chose to output the results of the data processing as text files rather than database tables, the name that you specify here will be ignored. If the database table does not currently exist, it will be created during the GBAT execution. Once you have finished configuring these options, click on the Next button to move on to the next screen, which is described in Chapter X.2.7 labeled \u201cGeneral Input Configuration\u201d. X.2.6.8 Function BN If you chose Function BN on the Function Selection screen, the following window will now be displayed: The input information required to execute Function BN includes only the Building Identification Number (BIN). Select the field containing the list of input BINs using the drop-down menu. Unlike Functions 1A and BL, only the Address List may be returned with Function BN. The first item on this list will be available as an optional field for your output table. However, if you would like the full list of address ranges, select the \u201cOutput Complete List\u201d checkbox and enter the name of the database table to which you would like the list to be output. If you later chose to output the results of the data processing as text files rather than database tables, the name that you specify here will be ignored. Once you have finished configuring these options, click on the Next button to move on to the next screen, which is described in Chapter X.2.7 labeled \u201cGeneral Input Configuration\u201d. X.2.6.9 Function D, DG, DN If you chose a D Function on the Function Selection screen, a variation on the following window will now be displayed: The input information required to execute Function D, DG or DN includes one to three street codes and their associated borough. Five digit street codes are supplied for Function D, seven digit street codes are supplied for Function DG and ten digit street codes are supplied for Function DN. Chose the input field that will be used as the source for the first street code from the drop-down list. If the borough code is not also contained within this field, check the \u201cExternal Borough Code\u201d checkbox, and choose the source field for the borough code from the adjacent drop-list. If you have additional input fields for street codes, you may specify them in a similar fashion, after first checking the \u201cSecond Street Code\u201d and \u201cThird Street Code\u201d check boxes. Please ensure that all of the street codes you provide are of the same length; that is, all street codes must be either 5 digit for Function D, 7 digit for Function DG or 10 digit for Function DN and all must either include or exclude the borough code. Please note that if the borough code is included with the street code, then the field width for Function D is six, for Function DG, eight and for Function DN, eleven. Once you have finished configuring these options, click on the Next button to move on to the next screen, which is described in Chapter X.2.7 labeled \u201cGeneral Input Configuration\u201d. X.2.7 General Input Configuration The General Input Configuration Window should now be displayed: This window is used to configure various options that influence how the data is processed, but are not specific to a particular function. You can specify the maximum length of street names that Geosupport will process and return by using the \u201cStreet Name Length\u201d field. The value that you enter should be between four and thirty-two, inclusive. The default value is thirty-two. The default format for street names is the Sort Order format. The Sort Order converts all numbers in street names to a four character field; for example the \u201c1\" in \u201c1 Avenue\u201d is preceded by three blanks and the \u201c10\" in \u201c10 Avenue\u201d is preceded by two blanks. The purpose of the leading blanks is to force \u201c1 Avenue\u201d to precede \u201c10 Avenue\u201d when the street names are sorted. The Compact format eliminates the leading blanks. If you would like street names to be returned in Compact format, check the Compact checkbox; otherwise street names will be returned in Sort Order format. Certain functions are able to return lists of cross streets in Work Area 1. If you would like the names of the cross streets to be returned as well as their street codes, check the \u201cCross Street Names\u201d checkbox. This checkbox will be enabled only when you are using a function that can return the cross street list. Alias Table functionality has not yet been implemented in GBAT Desktop Edition; please ignore the associated controls in this window at this time. If your data uses some values for borough codes other than the Geosupport standard 3 , check the \u201cUse Alternate Borough Codes\u201d checkbox and enter them here. When encountering these non-standard borough codes, GBAT will translate them into the appropriate Geosupport equivalents, allowing successful processing to occur. This option is available only for those functions which accept borough codes for input. If you would like to save your input configuration settings for later re-use, click on the Save Input Configuration button. You will be presented with a window which enables you to supply the name you wish to use for this file. Once you have finished configuring the options in this window, click on the \u201cNext\u201d button to continue on to the next screen, which is described in Chapter X.2.8 which is labeled Output Configuration. 3 The standard borough codes are 1=Manhattan, 2= Bronx, 3=Brooklyn, 4=Queens and 5=Staten Island. X.2.8 Output Configuration You should now see the following Output Configuration window: This screen is used to configure various aspects of the behavior of GBAT during the function processing as well as describing the desired output. If you have previously configured these settings and saved them to a file, you can click on the \u201cLoad Output Configuration\u201d button to retrieve the file. You will be presented with a window that lists the various output configuration files that are stored in your system. If you would like GBAT to stop processing after a certain number of input records have been rejected by Geosupport (i.e., caused Geosupport to return an error), check the \u201cEnable Max Rejects\u201d checkbox. The default value is 200 and appears in the box labeled \u201cMaximum Rejects\u201d. If this number is not suitable for your situation, you may specify another value. If you would like records that generate Geosupport warnings as well as errors to be treated as rejects, check the \u201cReject Warnings\u201d checkbox. If you would like output to be written to text files rather than to tables in your database, check the \u201cWrite to Text Files\u201d checkbox. Buttons labeled \u201cError File Browse\u201d and \u201cOutput File Browse\u201d will appear; these can be used to select the names of the text files in which output will be placed. For Functions 1A, BL and BN where you have selected the check box labeled \u201cOutput Complete List\u201d after you have clicked on the \u201cStart\u201d button on the Function Processing window, you will receive a request for the name of the file in which the address list or the BIN list output is to be stored. If you would like your output written to database tables, make sure that the \u201cWrite to Text Files\u201d checkbox is not checked. You must specify a name for the error table in the \u201cError Table Name\u201d text box, and a name for the output table in the \u201cOutput Table Name\u201d text box. If you chose names belonging to tables that already exist, those existing tables will be deleted and replaced with the new tables. Use the \u201cOutput Type\u201d drop down list to select the type of output that you would like GBAT create. \u201cWork Area 1\u201d will place all of the data returned by Work Area 1 into your output table. \u201cWork Area 2\u201d will do the same with all the Work Area 2 fields. \u201cWA1 and WA2\u201d will return all the fields from both work areas into your table. If you select the \u201cErrors Only\u201d section, no output table will be generated at all and only errors will be returned. This is a simple way to validate the data that you have in your database or text file. Selecting the \u201cCustom\u201d option from the \u201cOutput Type\u201d drop down allows you to include whatever fields you want in the output table, in whatever order you want. Chose fields from the \u201cAvailable Fields\u201d list by selecting them with the left mouse button. Multiple fields can be selected by holding down the Ctrl key and clicking on each. To select a range of fields, hold down the shift key, click on the first fields in the range, and then on the last. To add fields to the \u201cSelected Fields\u201d list, click on the \u00ba button. To remove fields from the \u201cSelected Fields\u201d list, select them as you would those in the \u201cAvailable Fields\u201d list and click on the \u00bb button. When you are finished setting up these configuration options, you can save them to disk for later re-use. To do so, click on the \u201cSave Output Configuration\u201d button. Click on the Next button to move to the next screen, which is described in Chapter X.2.9 , which is labeled Function Processing. X.2.9 Function Processing At this point everything is prepared for the actual GBAT execution. The Function Processing window should now appear on your display unit: Click on the Start button to begin execution. Output messages will periodically be displayed in the window, indicating the process\u2019s status, as well as a blue progress bar which will indicate the percentage of the job that has been completed. If at any time you would like to halt the processing, simply click on the upper Cancel button. When processing has completed, the window will look something like the following window. If you would like to run the process again, click on the Start button. If you would like to make changes to the configuration before executing GBAT again, click on the Back button until you reach the screen that contains what you want changed. To exit the application, click on the Finish button.","title":"X.2 Using GBAT"},{"location":"chapters/chapterX/section02/#x21-before-you-begin","text":"Use the Geosupport Desktop Edition Installation CD to install the Geosupport Desktop Edition package. It is recommended that you use GBAT on machines with the latest versions of the \u201cMicrosoft Data Access Components\u201d and \u201cMicrosoft Jet\u201d. If you want to make certain that you are up to date, download and install the following files from Microsoft\u2019s web site: Mdac_typ.exe,Jet40Sp3_Comp.exe, and Jet40SP6_9xNT.exe.","title":" X.2.1 Before You Begin "},{"location":"chapters/chapterX/section02/#x22-starting-the-application","text":"To start the application, find and double-click the NYCgbat.exe program icon which appears as shown on the right side, in My Computer or Windows Explorer.","title":"X.2.2 Starting the Application "},{"location":"chapters/chapterX/section02/#x23-selecting-an-odbc-data-source","text":"Upon starting the application, you will be presented with the following ODBC data source selection screen. An ODBC Data Source file is a configuration file that contains information about a database that can be accessed through ODBC. If you have previously configured the data source, it will be listed in the list displayed in the \u201cSelect Data Source\u201d window, an example of which is shown above. In that situation, select that Data Source and click on the OK button. Then proceed to Chapter X.2.5 labeled \u201cFunction Selection\u201d in this document. If you have not previously configured your data source, you need to create a new data source. This is done by clicking on the New button. Creating a data source using a database that you are familiar with should be a fairly straightforward process; refer to the documentation or online help of your ODBC driver\u2019s data source configuration for further information. See Note For Database Users on previous page. Creating a data source for text files is more complicated. Follow the steps indicated in Chapter X.2.4 to create a data source for the text files.","title":"X.2.3 Selecting an ODBC Data Source "},{"location":"chapters/chapterX/section02/#x24-configuring-a-new-text-data-source","text":"First, click on the New button in the Select Data Source Window, which is illustrated above. You will be presented with a list of drivers for which a data source can be set up as illustrated below on the \u201cCreate New Data Source\u201d window. Select the Microsoft Text Driver and click on the Next button. In the \u201dCreate New Data Source\u201d window illustrated below, choose a name for your data source and click on the Next button. Click on the finish button in the window shown next, and you will be taken to the ODBC text driver\u2019s configuration screen. The next window illustrates the \u201cODBC Text Setup\u201d screen as it initially appears. In the above window, first deselect the \u201cUse Current Directory\u201d checkbox. Next Using the \u201cSelect Directory\u201d button, choose the directory in which your text files are located. Then click on the Options button to expand the window. If the extension of the filenames in which your data is stored does not appear on the Extensions List of the above window, type it in the Extension box and click on the Add button. Then, select that extension on the list and click on the \u201cDefine Format\u201d button. You can use the above window labeled \u201cDefine Text Format\u201d to specify the schema of the data in each of your text files. This is important because GBAT operates on a database paradigm rather than a flat-file paradigm. It needs to be given data in the form of Tables and Columns (also know as \u201cfields\u201d), rather than files and character positions, in order to make sense out of them. First from the \u201cTables\u201d menu select the name of the file whose schema you wish to define. Check the \u201cColumn Name Header\u201d checkbox if the first line of the text file that you are configuring contains field names rather than field data. (If the data file does not contain field names, you will have to specify field names later on.) Now, select the format in which your data is stored. Choose \u201cCSV Delimited\u201d if your data items are surrounded by quotation marks and separated by commas Choose \u201cTab Delimited\u201d if your data items are separated by tab characters Choose \u201cCustom Delimited\u201d if your data items are separated by some other character. You will have to specify that character in the \u201cDelimiter\u201d field. Choose \u201cFixed Length\u201d if the data items in your text file are a fixed number of characters, consistent on each line, without any sort of delimitation. If your text file uses the Fixed Length format, and/or you have not selected the \u201cColumn Name Header\u201d checkbox, you will now have to specify information about the fields that it contains. (In all other circumstances, the Driver should be able to determine this information automatically. You can click the \u201cGuess\u201d button if you want to make sure.) For each field in your text file: Choose the field\u2019s Data Type from the \u201cData Type\u201d drop-down menu. This will usually be \u201cchar\u201d for fields in text files. Enter a Name by which the field will be identified. If you are using a Fixed Length format file, and/or you have chosen \u201cchar\u201d for the data type, specify the Width of the field in characters. This is important for any file format, because if you specify a width that is too short, the data that GBAT sees will be truncated. However, it is especially important for Fixed Length format files that the field width be accurate, because the width value is also used to determine the starting position of the following field. Click on the Add button to add the field specification to the Columns list. If, for example, you have a Fixed Length format text file, where two lines appear as: 22 Reade St. 1 1541 E28 St. 3 This file contains an Address Number field beginning at position one that is five characters long, followed by a street name field beginning at position six that is twelve characters long, followed by a borough code field beginning at position eighteen that is a single character long. To configure the columns for this table, select Char from the data type list, type \u201cADDRESS NUMBER\u201d for the name, and \u201c5\u201d for the width; then click on the Add button. Then select Char, enter \u201cStreet Name\u201d, and \u201c12\u201d, and click on Add. Finally, select char once again, enter \u201cBorough Code\u201d, \u201c1\u201d, and click on Add. When you\u2019ve finished setting up your table, you can select another text file to configure from the Tables list box. After you have configured all of your tables, click on the OK button to return to the \u201cODBC Text Setup\u201d window. Click on the OK button in this window. You have now finished setting up your Text ODBC Data Source. Select your newly created data source in the window labeled \u201cSelect Data Source\u201d, which should be displayed now. Click on the OK button to continue to the next step.","title":" X.2.4 Configuring a New Text Data Source "},{"location":"chapters/chapterX/section02/#x25-function-selection","text":"This is the point at which the configuration of your GBAT session proper begins. First, you will be defining the input information to be used by GBAT; that is, where the data is coming from, and what sort of processing should be carried out on it. If you have already configured the input settings and saved them to a file, you can retrieve those settings here. Select the \u201cLoad Configuration\u201d checkbox and find the saved configuration file using the Browse button. You may then proceed to Chapter X.2.7 labeled \u201cGeneral Input Configuration\u201d by clicking on the Next button. You must choose a table to be the source of your input data. To do this, select a table from the \u201cSelect a Table\u201d drop-down list. This will be a data source that you previously configured as described in Chapter X.2.3 of this document. You must also choose the Geosupport function that will be used to process your data. To do this, select the radio button for the appropriate function. For more information on the capabilities of each of the Geosupport functions, please see Appendix 1 . Click on the Next button to continue on to the next screen.","title":" X.2.5 Function Selection "},{"location":"chapters/chapterX/section02/#x26-function-specific-configuration","text":"","title":" X.2.6 Function-Specific Configuration "},{"location":"chapters/chapterX/section02/#x27-general-input-configuration","text":"The General Input Configuration Window should now be displayed: This window is used to configure various options that influence how the data is processed, but are not specific to a particular function. You can specify the maximum length of street names that Geosupport will process and return by using the \u201cStreet Name Length\u201d field. The value that you enter should be between four and thirty-two, inclusive. The default value is thirty-two. The default format for street names is the Sort Order format. The Sort Order converts all numbers in street names to a four character field; for example the \u201c1\" in \u201c1 Avenue\u201d is preceded by three blanks and the \u201c10\" in \u201c10 Avenue\u201d is preceded by two blanks. The purpose of the leading blanks is to force \u201c1 Avenue\u201d to precede \u201c10 Avenue\u201d when the street names are sorted. The Compact format eliminates the leading blanks. If you would like street names to be returned in Compact format, check the Compact checkbox; otherwise street names will be returned in Sort Order format. Certain functions are able to return lists of cross streets in Work Area 1. If you would like the names of the cross streets to be returned as well as their street codes, check the \u201cCross Street Names\u201d checkbox. This checkbox will be enabled only when you are using a function that can return the cross street list. Alias Table functionality has not yet been implemented in GBAT Desktop Edition; please ignore the associated controls in this window at this time. If your data uses some values for borough codes other than the Geosupport standard 3 , check the \u201cUse Alternate Borough Codes\u201d checkbox and enter them here. When encountering these non-standard borough codes, GBAT will translate them into the appropriate Geosupport equivalents, allowing successful processing to occur. This option is available only for those functions which accept borough codes for input. If you would like to save your input configuration settings for later re-use, click on the Save Input Configuration button. You will be presented with a window which enables you to supply the name you wish to use for this file. Once you have finished configuring the options in this window, click on the \u201cNext\u201d button to continue on to the next screen, which is described in Chapter X.2.8 which is labeled Output Configuration. 3 The standard borough codes are 1=Manhattan, 2= Bronx, 3=Brooklyn, 4=Queens and 5=Staten Island.","title":" X.2.7 General Input Configuration "},{"location":"chapters/chapterX/section02/#x28-output-configuration","text":"You should now see the following Output Configuration window: This screen is used to configure various aspects of the behavior of GBAT during the function processing as well as describing the desired output. If you have previously configured these settings and saved them to a file, you can click on the \u201cLoad Output Configuration\u201d button to retrieve the file. You will be presented with a window that lists the various output configuration files that are stored in your system. If you would like GBAT to stop processing after a certain number of input records have been rejected by Geosupport (i.e., caused Geosupport to return an error), check the \u201cEnable Max Rejects\u201d checkbox. The default value is 200 and appears in the box labeled \u201cMaximum Rejects\u201d. If this number is not suitable for your situation, you may specify another value. If you would like records that generate Geosupport warnings as well as errors to be treated as rejects, check the \u201cReject Warnings\u201d checkbox. If you would like output to be written to text files rather than to tables in your database, check the \u201cWrite to Text Files\u201d checkbox. Buttons labeled \u201cError File Browse\u201d and \u201cOutput File Browse\u201d will appear; these can be used to select the names of the text files in which output will be placed. For Functions 1A, BL and BN where you have selected the check box labeled \u201cOutput Complete List\u201d after you have clicked on the \u201cStart\u201d button on the Function Processing window, you will receive a request for the name of the file in which the address list or the BIN list output is to be stored. If you would like your output written to database tables, make sure that the \u201cWrite to Text Files\u201d checkbox is not checked. You must specify a name for the error table in the \u201cError Table Name\u201d text box, and a name for the output table in the \u201cOutput Table Name\u201d text box. If you chose names belonging to tables that already exist, those existing tables will be deleted and replaced with the new tables. Use the \u201cOutput Type\u201d drop down list to select the type of output that you would like GBAT create. \u201cWork Area 1\u201d will place all of the data returned by Work Area 1 into your output table. \u201cWork Area 2\u201d will do the same with all the Work Area 2 fields. \u201cWA1 and WA2\u201d will return all the fields from both work areas into your table. If you select the \u201cErrors Only\u201d section, no output table will be generated at all and only errors will be returned. This is a simple way to validate the data that you have in your database or text file. Selecting the \u201cCustom\u201d option from the \u201cOutput Type\u201d drop down allows you to include whatever fields you want in the output table, in whatever order you want. Chose fields from the \u201cAvailable Fields\u201d list by selecting them with the left mouse button. Multiple fields can be selected by holding down the Ctrl key and clicking on each. To select a range of fields, hold down the shift key, click on the first fields in the range, and then on the last. To add fields to the \u201cSelected Fields\u201d list, click on the \u00ba button. To remove fields from the \u201cSelected Fields\u201d list, select them as you would those in the \u201cAvailable Fields\u201d list and click on the \u00bb button. When you are finished setting up these configuration options, you can save them to disk for later re-use. To do so, click on the \u201cSave Output Configuration\u201d button. Click on the Next button to move to the next screen, which is described in Chapter X.2.9 , which is labeled Function Processing.","title":" X.2.8 Output Configuration "},{"location":"chapters/chapterX/section02/#x29-function-processing","text":"At this point everything is prepared for the actual GBAT execution. The Function Processing window should now appear on your display unit: Click on the Start button to begin execution. Output messages will periodically be displayed in the window, indicating the process\u2019s status, as well as a blue progress bar which will indicate the percentage of the job that has been completed. If at any time you would like to halt the processing, simply click on the upper Cancel button. When processing has completed, the window will look something like the following window. If you would like to run the process again, click on the Start button. If you would like to make changes to the configuration before executing GBAT again, click on the Back button until you reach the screen that contains what you want changed. To exit the application, click on the Finish button.","title":" X.2.9 Function Processing "},{"location":"chapters/chapterXI/chapterXI/","text":"CHAPTER XI GEOSUPPORT ON-LINE ADDRESS TRANSLATOR (GOAT)","title":"Chapter XI"},{"location":"chapters/chapterXI/section01/","text":"XI.1 Introduction IMPORTANT NOTE: Windows Desktop GOAT has been deprecated. No updates to its functionality will be made. It will continue to be available in the 32-bit Geosupport Desktop Edition only, not in the 64-bit version. The data returned by GOAT will continue to reflect the data in the Geosupport release that came with the installation package; however, new fields that are added to Geosupport will not be added to GOAT. Please note that a fully-supported version of GOAT is available at: www.nyc.gov/goat Description of GOAT: Geosupport On-Line Address Translator, commonly referred to as GOAT, is the system\u2019s principal interactive Windows application. It is an inquiry application that allows the user to request almost any Geosupport Function. The user simply enters input data and receives a formatted screen display of the output information provided by that function. To use GOAT requires no programming skills and it is heavily used by non-technical people who need the information that GOAT can provide.","title":"XI.1 Introduction"},{"location":"chapters/chapterXI/section02/","text":"XI.2 How to Use GOAT The GOAT icon that is displayed on the right side of this page may appear on your desktop. To invoke GOAT, click on this icon. If the icon is not on your desktop, you may invoke GOAT from the folder in which Geosupport was installed on your system via EXPLORER. The screen displayed on the next page will appear on your desktop. You may invoke a function by clicking on the tool bar at the top of the GOAT window as illustrated to the below. An alternate method is to click on \u201cGoat Function\u201d on the line above the tool bar to display a list of Geosupport Functions as illustrated below. Note: All illustrations are samples and may not appear identical to what appears on your screen. To invoke any function, click on the function either on the tool bar or in the Goat Function list.","title":"XI.2 How to Use GOAT"},{"location":"chapters/chapterXI/section03/","text":"XI.3 Invoking Function 1 or Function 1E After you have clicked on \"1\" in the tool bar or \"Fn 1\" in the \u201cGoat Function\u201d list, the dialogue box displayed below will appear in your GOAT Window. To invoke Function 1 or 1E, you must enter a house number in the text box labeled \u201cHouse Number\u201d and a street name in the text box labeled \u201cStreet Name\u201d. If you want information about a place name such as the Bronx Zoo or the Empire State Building, then you enter the place name in the text box labeled \u201cStreet Name\u201d and leave the text box labeled \u201cHouse Number\u201d blank. You select the borough by clicking on one of the buttons associated with \u201cBorough\u201d. The borough names are abbreviated. Mn is Manhattan, Bx is the Bronx, Bk is Brooklyn, Qn is Queens and SI is Staten Island. The dialogue box appears with the borough pre-set to Manhattan. You may choose to receive or not to receive information concerning the political districts (Function 1E), such as Election District, Assembly District, etc The input and the output are displayed as below. In this example the political districts are displayed.","title":"XI.3 Invoking Function 1 or Function 1E"},{"location":"chapters/chapterXI/section04/","text":"XI.4 Invoking Function 1A After you have clicked on the \u201c1A\u201d in the tool bar or the \u201cFn 1A\u201d in the \u201cGoat Function\u201d list, the dialogue box displayed on the right will appear in your Goat Window. To invoke Function 1A you must enter a house number in the text box labeled \u201cHouse Number\u201d and a street name in the text box labeled \u201cStreet Name\u201d. If you want information about a place name such as the Bronx Zoo or the Empire State Building, then you enter the place name in the text box labeled \u201cStreet Name\u201d and leave the text box labeled \u201cHouse Number\u201d blank. You select the borough by clicking on one of the buttons associated with \u201cBorough\u201d. The borough names are abbreviated. Mn is Manhattan, Bx is the Bronx, Bk is Brooklyn, Qn is Queens and SI is Staten Island. The dialogue box appears with the borough pre-set to Manhattan. You may have a choice of receiving a list of addresses associated with the property or a list of Building Identification Numbers (BINs). If you leave the button associated with \u201cBIN List\u201d set to \u201cNo\u201d as shown to the right, you will receive a list of addresses associated with the property. The output resulting from the input illustrated on the right is as displayed below.","title":"XI.4 Invoking Function 1A"},{"location":"chapters/chapterXI/section05/","text":"XI.5 Invoking Function 2 After you have clicked on \"2\" in the tool bar or \"Fn 2\" in the \u201cGoat Function\u201d list, the dialogue box displayed on the right will appear in your GOAT Window. To invoke Function 2, you must enter two street names. The first goes in the text box labeled \u201cFirst Street Name\u201d and the second goes in the text box labeled \u201cSecond Street Name\u201d. Place Names may not be used. You select the borough by clicking on one of the buttons associated with \u201cBorough of First Street Name\u201d. The borough names are abbreviated. Mn is Manhattan, Bx is the Bronx, Bk is Brooklyn, Qn is Queens and SI is Staten Island. The dialogue box appears with the borough pre-set to Manhattan. You do not need to click on a button associated with \u201cBorough of Second Street\u201d if both streets are in the same borough. There are certain streets in New York City which intersect twice. One example is Cromwell Crescent and Alderton Street in Queens. To obtain information about the intersection you must specify about which one of the two intersections you want the information. This is done by specifying a compass direction as illustrated in the dialogue box to the right. The output resulting from this input is shown below.","title":"XI.5 Invoking Function 2"},{"location":"chapters/chapterXI/section06/","text":"XI.6 Invoking Function 3 or Function 3C After you have clicked on \"3\" in the tool bar or \"Fn 3\" in the \u201cGoat Function\u201d list, the dialogue box displayed on the right will appear in your GOAT Window. To invoke Function 3 or 3C, you must enter three street names. The first goes in the text box labeled \u201c\u2018On\u2019 Street\u201d, the second goes in the text box labeled \u201cFirst Cross Street\u201d and the third goes in the text box labeled \u201cSecond Cross Street\u201d. Place Names may not be used. You select the borough by clicking on one of the buttons associated with \u201cBorough of 'On' Street Name\u201d. The borough names are abbreviated. Mn is Manhattan, Bx is the Bronx, Bk is Brooklyn, Qn is Queens and SI is Staten Island. The dialogue box appears with the borough pre-set to Manhattan. You do not need to click on a button associated with \u201cBorough of First Cross Street\u201d or \u201cBorough of Second Cross Street\u201d if all three streets are in the same borough. The dialogue box above will result in the output illustrated as shown below. If you want information about only one side of the street (Function 3C), then you use the compass direction found towards the bottom of the dialogue box to select the side of the street that you are interested in. This is illustrated in the dialogue box displayed above. The output resulting from this input is shown below.","title":"XI.6 Invoking Function 3 or Function 3C"},{"location":"chapters/chapterXI/section07/","text":"XI.7 Invoking Function 3S After you have clicked on the \"3S\" in the tool bar or the \"Fn 3S\" in the \u201cGoat Function\u201d list, the dialogue box displayed on the right will appear in your GOAT Window. To invoke Function 3S, you must enter either one or three street names. If you want to know the names of all streets that a particular street intersects, you would supply only a Borough and an \u2018On\u2019 Street. If you are only interested in the names of some of the streets that intersect the \u2018On\u2019 Street, you may restrict the output by supplying cross streets that will limit the output. The first street goes in the text box labeled \u201c\u2018On\u2019 Street\u201d, the second street goes in the text box labeled \u201cFirst Cross Street\u201d and the third street goes in the text box labeled \u201cSecond Cross Street\u201d. You may not supply a \u201cFirst Cross Street\u201d unless you supply a \u201cSecond Cross Street\u201d. The converse is also true. Place Names may not be used. You select the borough by clicking on one of the buttons associated with \u201cBorough of 'On' Street Name\u201d. The borough names are abbreviated. Mn is Manhattan, Bx is the Bronx, Bk is Brooklyn, Qn is Queens and SI is Staten Island. The dialogue box appears with the borough pre-set to Manhattan. The dialogue box on the right requests all of the streets that intersect Reade Street in Manhattan. The output would appear as shown on the top of the next page. Please note that the output includes the approximate length of the street stretch. If you are only interested in a subset of the streets that ntersect the \u2018On\u2019 Street, you may limit your search by specifying cross streets as illustrated in the dialogue box to the right. The output of this search will yield the results shown below. If the \u2018on\u2019 street and one or both of the cross streets intersect twice, you must specify a compass direction. In the example shown here, the street stretch being requested is Alderton Street between its northern intersection with Cromwell Crescent and its southern intersection with Cromwell Crescent. The output is shown below.","title":"XI.7 Invoking Function 3S"},{"location":"chapters/chapterXI/section08/","text":"XI.8 Invoking Function B Function B has been implemented in Geosupport Desktop Edition. More to come on this.","title":"XI.8 Invoking Function B"},{"location":"chapters/chapterXI/section09/","text":"XI.9 Invoking Function BL Please note that the output for Function BL is the same as the output for Function 1A except for the information in the Title Bar which will reference your input data. After you have clicked on the \u201cBL\u201d in the tool bar or the \u201cFn BL\u201d in the \u201cGoat Function\u201d list, the dialogue box displayed on the right will appear in your GOAT Window. To invoke Function BL, you must enter a Tax Block Number in the text box labeled \u201cBlock\u201d and a Tax Lot Number in the text box labeled \u201cLot\u201d. You select the borough by clicking on one of the buttons associated with \u201cBorough\u201d. The borough names are abbreviated. Mn is Manhattan, Bx is the Bronx, Bk is Brooklyn, Qn is Queens and SI is Staten Island. The dialogue box appears with the borough pre-set to Manhattan. You may have a choice of receiving a list of addresses associated with the property or a list of Building Identification Numbers (BINs). If you leave the button associated with \u201cBIN List\u201d set to \u201cNo\u201d as shown in the dialogue box to the right, you will receive a list of addresses associated with the property. The output you would receive from the input shown is displayed on the left side of the page in the section on Function 1A. If you wish to see a list of the Building Identification Numbers (BINs) on the property, you need to click on the \u201cYes\u201d button associated with \u201cBIN List\u201d as shown in the dialogue box to the right. The output resulting from the input illustrated on the right is shown on the right side of the page in the section on Function 1A.","title":"XI.9 Invoking Function BL"},{"location":"chapters/chapterXI/section10/","text":"XI.10 Invoking Function BN Please note that the output for Function BN is the same as the output for Function 1A except for the information in the Title Bar which will reference your input data. After you have clicked on the \u201cBN\u201d in the tool bar or the \u201cFn BN\u201d in the \u201cGoat Function\u201d list, the dialogue box displayed on the right will appear in your GOAT Window. To invoke Function BN, you must enter a Building Identification Number in the text box labeled \u201cBIN. You may only receive a list of addresses associated with the Building Identification Number (BIN) that you supplied as input. The output you would receive from the input shown is displayed on the left side of the page in the section on Function 1A.","title":"XI.10 Invoking Function BN"},{"location":"chapters/chapterXI/section11/","text":"XI.11 Invoking Function D To invoke Function D, you must click on \u201cD\u201d in the tool bar or the \u201cFN D\u201d in the \u201cGoat Function\u201d list. As you can see in the dialogue box displayed to the right, you have the option of supplying up to three street codes at once. You must supply the Borough information for the first street code. You only need supply the borough information for the second and third street code if the borough is different than the first one. The street codes may be entered as 5, 7 or 10 digit street codes. Any order or combination is permitted. In the example illustrated to the right, not only is each street code in another borough, but each street code is of a different length; the first one is five digits, the second is seven and the third is ten. You may also influence the output by modifying the contents of the text box next to the label \u201cStreet Name Length (SNL)\u201d. Leaving the SNL at 32 results in the output illustrated below. However reducing the SNL value to 14, results in the output below where the word \u201cSTREET\u201d is abbreviated to \u201cST\u201d and \u201cAVENUE\u201d is abbreviated to \u201cAVE\u201d. The second method that you may use to influence the output of Function D using GOAT is the Format Option. The choices are \u201cCompact\u201d and \u201cSort\u201d. This option affects the format of street names that contain numbers. \u201cSort\u201d is the default and causes blanks to be inserted in a street name in front of the number. Notice the extra blanks in front of the number 34 in the above output. If instead of leaving the Format Option set to \u201cSort\u201d, you select \u201cCompact\u201d, the extra blanks in front of '34' will be removed as illustrated in the output below. Notice also that the \u201cCompact\u201d option has no effect on the display of the street names that include only non-numeric words.","title":"XI.11 Invoking Function D"},{"location":"node_modules/ajv/","text":"Ajv: Another JSON Schema Validator The fastest JSON Schema validator for node.js and browser. Supports v5 proposals . Please note : You can start using NEW beta version 5.0.4 (see migration guide from 4.x.x ) with the support of JSON-Schema draft-06 (not officially published yet): npm install ajv@^5.0.4-beta . Also see docs for 5.0.4. Contents Performance Features Getting started Frequently Asked Questions Using in browser Command line interface Validation Keywords Formats $data reference NEW: $merge and $patch keywords Defining custom keywords Asynchronous schema compilation Asynchronous validation Modifying data during validation Filtering data Assigning defaults Coercing data types API Methods Options Validation errors Related packages Packages using Ajv Tests, Contributing, History, License Performance Ajv generates code using doT templates to turn JSON schemas into super-fast validation functions that are efficient for v8 optimization. Currently Ajv is the fastest and the most standard compliant validator according to these benchmarks: json-schema-benchmark - 50% faster than the second place jsck benchmark - 20-190% faster z-schema benchmark themis benchmark Performace of different validators by json-schema-benchmark : Features Ajv implements full JSON Schema draft 4 standard: all validation keywords (see JSON-Schema validation keywords ) full support of remote refs (remote schemas have to be added with addSchema or compiled to be available) support of circular references between schemas correct string lengths for strings with unicode pairs (can be turned off) formats defined by JSON Schema draft 4 standard and custom formats (can be turned off) validates schemas against meta-schema supports browsers and nodejs 0.10-6.x asynchronous loading of referenced schemas during compilation \"All errors\" validation mode with option allErrors error messages with parameters describing error reasons to allow creating custom error messages i18n error messages support with ajv-i18n package filtering data from additional properties assigning defaults to missing properties and items coercing data to the types specified in type keywords custom keywords keywords switch , constant , contains , patternGroups , patternRequired , formatMaximum / formatMinimum and formatExclusiveMaximum / formatExclusiveMinimum from JSON-schema v5 proposals with option v5 v5 meta-schema for schemas using v5 keywords v5 $data reference to use values from the validated data as values for the schema keywords asynchronous validation of custom formats and keywords Currently Ajv is the only validator that passes all the tests from JSON Schema Test Suite (according to json-schema-benchmark , apart from the test that requires that 1.0 is not an integer that is impossible to satisfy in JavaScript). Install npm install ajv To install a stable beta version 5.0.4 (see migration guide from 4.x.x ): npm install ajv@^5.0.4-beta Getting started Try it in the node REPL: https://tonicdev.com/npm/ajv The fastest validation call: var Ajv = require('ajv'); var ajv = new Ajv(); // options can be passed, e.g. {allErrors: true} var validate = ajv.compile(schema); var valid = validate(data); if (!valid) console.log(validate.errors); or with less code // ... var valid = ajv.validate(schema, data); if (!valid) console.log(ajv.errors); // ... or // ... ajv.addSchema(schema, 'mySchema'); var valid = ajv.validate('mySchema', data); if (!valid) console.log(ajv.errorsText()); // ... See API and Options for more details. Ajv compiles schemas to functions and caches them in all cases (using schema stringified with json-stable-stringify as a key), so that the next time the same schema is used (not necessarily the same object instance) it won't be compiled again. The best performance is achieved when using compiled functions returned by compile or getSchema methods (there is no additional function call). Please note : every time validation function or ajv.validate are called errors property is overwritten. You need to copy errors array reference to another variable if you want to use it later (e.g., in the callback). See Validation errors Using in browser You can require Ajv directly from the code you browserify - in this case Ajv will be a part of your bundle. If you need to use Ajv in several bundles you can create a separate UMD bundle using npm run bundle script (thanks to siddo420 ). Then you need to load Ajv in the browser: This bundle can be used with different module systems or creates global Ajv if no module system is found. The browser bundle is available on cdnjs . Ajv is tested with these browsers: Please note : some frameworks, e.g. Dojo, may redefine global require in such way that is not compatible with CommonJS module format. In such case Ajv bundle has to be loaded before the framework and then you can use global Ajv (see issue #234 ). Command line interface CLI is available as a separate npm package ajv-cli . It supports: compiling JSON-schemas to test their validity BETA: generating standalone module exporting a validation function to be used without Ajv (using ajv-pack ) validating data file(s) against JSON-schema testing expected validity of data against JSON-schema referenced schemas custom meta-schemas files in JSON and JavaScript format all Ajv options reporting changes in data after validation in JSON-patch format Validation keywords Ajv supports all validation keywords from draft 4 of JSON-schema standard: type for numbers - maximum, minimum, exclusiveMaximum, exclusiveMinimum, multipleOf for strings - maxLength, minLength, pattern, format for arrays - maxItems, minItems, uniqueItems, items, additionalItems for objects - maxProperties, minproperties, required, properties, patternProperties, additionalProperties, dependencies compound keywords - enum, not, oneOf, anyOf, allOf With option v5: true Ajv also supports all validation keywords and $data reference from v5 proposals for JSON-schema standard: switch - conditional validation with a sequence of if/then clauses contains - check that array contains a valid item constant - check that data is equal to some value patternGroups - a more powerful alternative to patternProperties patternRequired - like required but with patterns that some property should match. formatMaximum, formatMinimum, formatExclusiveMaximum, formatExclusiveMinimum - setting limits for date, time, etc. See JSON-Schema validation keywords for more details. Formats The following formats are supported for string validation with \"format\" keyword: date : full-date according to RFC3339 . time : time with optional time-zone. date-time : date-time from the same source (time-zone is mandatory). date , time and date-time validate ranges in full mode and only regexp in fast mode (see options ). uri : full uri with optional protocol. email : email address. hostname : host name acording to RFC1034 . ipv4 : IP address v4. ipv6 : IP address v6. regex : tests whether a string is a valid regular expression by passing it to RegExp constructor. uuid : Universally Unique IDentifier according to RFC4122 . json-pointer : JSON-pointer according to RFC6901 . relative-json-pointer : relative JSON-pointer according to this draft . There are two modes of format validation: fast and full . This mode affects formats date , time , date-time , uri , email , and hostname . See Options for details. You can add additional formats and replace any of the formats above using addFormat method. The option unknownFormats allows to change the behaviour in case an unknown format is encountered - Ajv can either ignore them (default now) or fail schema compilation (will be the default in 5.0.0). You can find patterns used for format validation and the sources that were used in formats.js . $data reference With v5 option you can use values from the validated data as the values for the schema keywords. See v5 proposal for more information about how it works. $data reference is supported in the keywords: constant, enum, format, maximum/minimum, exclusiveMaximum / exclusiveMinimum, maxLength / minLength, maxItems / minItems, maxProperties / minProperties, formatMaximum / formatMinimum, formatExclusiveMaximum / formatExclusiveMinimum, multipleOf, pattern, required, uniqueItems. The value of \"$data\" should be a JSON-pointer to the data (the root is always the top level data object, even if the $data reference is inside a referenced subschema) or a relative JSON-pointer (it is relative to the current point in data; if the $data reference is inside a referenced subschema it cannot point to the data outside of the root level for this subschema). Examples. This schema requires that the value in property smaller is less or equal than the value in the property larger: var schema = { \"properties\": { \"smaller\": { \"type\": \"number\", \"maximum\": { \"$data\": \"1/larger\" } }, \"larger\": { \"type\": \"number\" } } }; var validData = { smaller: 5, larger: 7 }; This schema requires that the properties have the same format as their field names: var schema = { \"additionalProperties\": { \"type\": \"string\", \"format\": { \"$data\": \"0#\" } } }; var validData = { 'date-time': '1963-06-19T08:30:06.283185Z', email: 'joe.bloggs@example.com' } $data reference is resolved safely - it won't throw even if some property is undefined. If $data resolves to undefined the validation succeeds (with the exclusion of constant keyword). If $data resolves to incorrect type (e.g. not \"number\" for maximum keyword) the validation fails. $merge and $patch keywords With v5 option and the package ajv-merge-patch you can use the keywords $merge and $patch that allow extending JSON-schemas with patches using formats JSON Merge Patch (RFC 7396) and JSON Patch (RFC 6902) . To add keywords $merge and $patch to Ajv instance use this code: require('ajv-merge-patch')(ajv); Examples. Using $merge : { \"$merge\": { \"source\": { \"type\": \"object\", \"properties\": { \"p\": { \"type\": \"string\" } }, \"additionalProperties\": false }, \"with\": { \"properties\": { \"q\": { \"type\": \"number\" } } } } } Using $patch : { \"$patch\": { \"source\": { \"type\": \"object\", \"properties\": { \"p\": { \"type\": \"string\" } }, \"additionalProperties\": false }, \"with\": [ { \"op\": \"add\", \"path\": \"/properties/q\", \"value\": { \"type\": \"number\" } } ] } } The schemas above are equivalent to this schema: { \"type\": \"object\", \"properties\": { \"p\": { \"type\": \"string\" }, \"q\": { \"type\": \"number\" } }, \"additionalProperties\": false } The properties source and with in the keywords $merge and $patch can use absolute or relative $ref to point to other schemas previously added to the Ajv instance or to the fragments of the current schema. See the package ajv-merge-patch for more information. Defining custom keywords The advantages of using custom keywords are: allow creating validation scenarios that cannot be expressed using JSON-Schema simplify your schemas help bringing a bigger part of the validation logic to your schemas make your schemas more expressive, less verbose and closer to your application domain implement custom data processors that modify your data ( modifying option MUST be used in keyword definition) and/or create side effects while the data is being validated If a keyword is used only for side-effects and its validation result is pre-defined, use option valid: true/false in keyword definition to simplify both generated code (no error handling in case of valid: true ) and your keyword functions (no need to return any validation result). The concerns you have to be aware of when extending JSON-schema standard with custom keywords are the portability and understanding of your schemas. You will have to support these custom keywords on other platforms and to properly document these keywords so that everybody can understand them in your schemas. You can define custom keywords with addKeyword method. Keywords are defined on the ajv instance level - new instances will not have previously defined keywords. Ajv allows defining keywords with: - validation function - compilation function - macro function - inline compilation function that should return code (as string) that will be inlined in the currently compiled schema. Example. range and exclusiveRange keywords using compiled schema: ajv.addKeyword('range', { type: 'number', compile: function (sch, parentSchema) { var min = sch[0]; var max = sch[1]; return parentSchema.exclusiveRange === true ? function (data) { return data > min && data < max; } : function (data) { return data >= min && data <= max; } } }); var schema = { \"range\": [2, 4], \"exclusiveRange\": true }; var validate = ajv.compile(schema); console.log(validate(2.01)); // true console.log(validate(3.99)); // true console.log(validate(2)); // false console.log(validate(4)); // false Several custom keywords (typeof, instanceof, range and propertyNames) are defined in ajv-keywords package - they can be used for your schemas and as a starting point for your own custom keywords. See Defining custom keywords for more details. Asynchronous compilation During asynchronous compilation remote references are loaded using supplied function. See compileAsync method and loadSchema option . Example: var ajv = new Ajv({ loadSchema: loadSchema }); ajv.compileAsync(schema, function (err, validate) { if (err) return; var valid = validate(data); }); function loadSchema(uri, callback) { request.json(uri, function(err, res, body) { if (err || res.statusCode >= 400) callback(err || new Error('Loading error: ' + res.statusCode)); else callback(null, body); }); } Please note : Option missingRefs should NOT be set to \"ignore\" or \"fail\" for asynchronous compilation to work. Asynchronous validation Example in node REPL: https://tonicdev.com/esp/ajv-asynchronous-validation You can define custom formats and keywords that perform validation asyncronously by accessing database or some service. You should add async: true in the keyword or format defnition (see addFormat , addKeyword and Defining custom keywords ). If your schema uses asynchronous formats/keywords or refers to some schema that contains them it should have \"$async\": true keyword so that Ajv can compile it correctly. If asynchronous format/keyword or reference to asynchronous schema is used in the schema without $async keyword Ajv will throw an exception during schema compilation. Please note : all asynchronous subschemas that are referenced from the current or other schemas should have \"$async\": true keyword as well, otherwise the schema compilation will fail. Validation function for an asynchronous custom format/keyword should return a promise that resolves to true or false (or rejects with new Ajv.ValidationError(errors) if you want to return custom errors from the keyword function). Ajv compiles asynchronous schemas to either generator function (default) that can be optionally transpiled with regenerator or to es7 async function that can be transpiled with nodent or with regenerator as well. You can also supply any other transpiler as a function. See Options . The compiled validation function has $async: true property (if the schema is asynchronous), so you can differentiate these functions if you are using both syncronous and asynchronous schemas. If you are using generators, the compiled validation function can be either wrapped with co (default) or returned as generator function, that can be used directly, e.g. in koa 1.0. co is a small library, it is included in Ajv (both as npm dependency and in the browser bundle). Generator functions are currently supported in Chrome, Firefox and node.js (0.11+); if you are using Ajv in other browsers or in older versions of node.js you should use one of available transpiling options. All provided async modes use global Promise class. If your platform does not have Promise you should use a polyfill that defines it. Validation result will be a promise that resolves to true or rejects with an exception Ajv.ValidationError that has the array of validation errors in errors property. Example: /** * without \"async\" and \"transpile\" options (or with option {async: true}) * Ajv will choose the first supported/installed option in this order: * 1. native generator function wrapped with co * 2. es7 async functions transpiled with nodent * 3. es7 async functions transpiled with regenerator */ var ajv = new Ajv; ajv.addKeyword('idExists', { async: true, type: 'number', validate: checkIdExists }); function checkIdExists(schema, data) { return knex(schema.table) .select('id') .where('id', data) .then(function (rows) { return !!rows.length; // true if record is found }); } var schema = { \"$async\": true, \"properties\": { \"userId\": { \"type\": \"integer\", \"idExists\": { \"table\": \"users\" } }, \"postId\": { \"type\": \"integer\", \"idExists\": { \"table\": \"posts\" } } } }; var validate = ajv.compile(schema); validate({ userId: 1, postId: 19 })) .then(function (valid) { // \"valid\" is always true here console.log('Data is valid'); }) .catch(function (err) { if (!(err instanceof Ajv.ValidationError)) throw err; // data is invalid console.log('Validation errors:', err.errors); }); Using transpilers with asyncronous validation functions. To use a transpiler you should separately install it (or load its bundle in the browser). Ajv npm package includes minified browser bundles of regenerator and nodent in dist folder. Using nodent var ajv = new Ajv({ /* async: 'es7', */ transpile: 'nodent' }); var validate = ajv.compile(schema); // transpiled es7 async function validate(data).then(successFunc).catch(errorFunc); npm install nodent or use nodent.min.js from dist folder of npm package. Using regenerator var ajv = new Ajv({ /* async: 'es7', */ transpile: 'regenerator' }); var validate = ajv.compile(schema); // transpiled es7 async function validate(data).then(successFunc).catch(errorFunc); npm install regenerator or use regenerator.min.js from dist folder of npm package. Using other transpilers var ajv = new Ajv({ async: 'es7', transpile: transpileFunc }); var validate = ajv.compile(schema); // transpiled es7 async function validate(data).then(successFunc).catch(errorFunc); See Options . Comparison of async modes mode transpile speed* run-time speed* bundle size generators (native) - 1.0 - es7.nodent 1.35 1.1 183Kb es7.regenerator 1.0 2.7 322Kb regenerator 1.0 3.2 322Kb * Relative performance in node v.4, smaller is better. nodent has several advantages: much smaller browser bundle than regenerator almost the same performance of generated code as native generators in nodejs and the latest Chrome much better performace than native generators in other browsers works in IE 9 (regenerator does not) regenerator is a more widely adopted alternative. Filtering data With option removeAdditional (added by andyscott ) you can filter data during the validation. This option modifies original data. Example: var ajv = new Ajv({ removeAdditional: true }); var schema = { \"additionalProperties\": false, \"properties\": { \"foo\": { \"type\": \"number\" }, \"bar\": { \"additionalProperties\": { \"type\": \"number\" }, \"properties\": { \"baz\": { \"type\": \"string\" } } } } } var data = { \"foo\": 0, \"additional1\": 1, // will be removed; `additionalProperties` == false \"bar\": { \"baz\": \"abc\", \"additional2\": 2 // will NOT be removed; `additionalProperties` != false }, } var validate = ajv.compile(schema); console.log(validate(data)); // true console.log(data); // { \"foo\": 0, \"bar\": { \"baz\": \"abc\", \"additional2\": 2 } If removeAdditional option in the example above were \"all\" then both additional1 and additional2 properties would have been removed. If the option were \"failing\" then property additional1 would have been removed regardless of its value and property additional2 would have been removed only if its value were failing the schema in the inner additionalProperties (so in the example above it would have stayed because it passes the schema, but any non-number would have been removed). Please note : If you use removeAdditional option with additionalProperties keyword inside anyOf / oneOf keywords your validation can fail with this schema, for example: { \"type\": \"object\", \"oneOf\": [ { \"properties\": { \"foo\": { \"type\": \"string\" } }, \"required\": [ \"foo\" ], \"additionalProperties\": false }, { \"properties\": { \"bar\": { \"type\": \"integer\" } }, \"required\": [ \"bar\" ], \"additionalProperties\": false } ] } The intention of the schema above is to allow objects with either the string property \"foo\" or the integer property \"bar\", but not with both and not with any other properties. With the option removeAdditional: true the validation will pass for the object { \"foo\": \"abc\"} but will fail for the object {\"bar\": 1} . It happens because while the first subschema in oneOf is validated, the property bar is removed because it is an additional property according to the standard (because it is not included in properties keyword in the same schema). While this behaviour is unexpected (issues #129 , #134 ), it is correct. To have the expected behaviour (both objects are allowed and additional properties are removed) the schema has to be refactored in this way: { \"type\": \"object\", \"properties\": { \"foo\": { \"type\": \"string\" }, \"bar\": { \"type\": \"integer\" } }, \"additionalProperties\": false, \"oneOf\": [ { \"required\": [ \"foo\" ] }, { \"required\": [ \"bar\" ] } ] } The schema above is also more efficient - it will compile into a faster function. Assigning defaults With option useDefaults Ajv will assign values from default keyword in the schemas of properties and items (when it is the array of schemas) to the missing properties and items. This option modifies original data. Please note : by default the default value is inserted in the generated validation code as a literal (starting from v4.0), so the value inserted in the data will be the deep clone of the default in the schema. If you need to insert the default value in the data by reference pass the option useDefaults: \"shared\" . Inserting defaults by reference can be faster (in case you have an object in default ) and it allows to have dynamic values in defaults, e.g. timestamp, without recompiling the schema. The side effect is that modifying the default value in any validated data instance will change the default in the schema and in other validated data instances. See example 3 below. Example 1 ( default in properties ): var ajv = new Ajv({ useDefaults: true }); var schema = { \"type\": \"object\", \"properties\": { \"foo\": { \"type\": \"number\" }, \"bar\": { \"type\": \"string\", \"default\": \"baz\" } }, \"required\": [ \"foo\", \"bar\" ] }; var data = { \"foo\": 1 }; var validate = ajv.compile(schema); console.log(validate(data)); // true console.log(data); // { \"foo\": 1, \"bar\": \"baz\" } Example 2 ( default in items ): var schema = { \"type\": \"array\", \"items\": [ { \"type\": \"number\" }, { \"type\": \"string\", \"default\": \"foo\" } ] } var data = [ 1 ]; var validate = ajv.compile(schema); console.log(validate(data)); // true console.log(data); // [ 1, \"foo\" ] Example 3 (inserting \"defaults\" by reference): var ajv = new Ajv({ useDefaults: 'shared' }); var schema = { properties: { foo: { default: { bar: 1 } } } } var validate = ajv.compile(schema); var data = {}; console.log(validate(data)); // true console.log(data); // { foo: { bar: 1 } } data.foo.bar = 2; var data2 = {}; console.log(validate(data2)); // true console.log(data2); // { foo: { bar: 2 } } default keywords in other cases are ignored: not in properties or items subschemas in schemas inside anyOf , oneOf and not (see #42 ) in if subschema of v5 switch keyword in schemas generated by custom macro keywords Coercing data types When you are validating user inputs all your data properties are usually strings. The option coerceTypes allows you to have your data types coerced to the types specified in your schema type keywords, both to pass the validation and to use the correctly typed data afterwards. This option modifies original data. Please note : if you pass a scalar value to the validating function its type will be coerced and it will pass the validation, but the value of the variable you pass won't be updated because scalars are passed by value. Example 1: var ajv = new Ajv({ coerceTypes: true }); var schema = { \"type\": \"object\", \"properties\": { \"foo\": { \"type\": \"number\" }, \"bar\": { \"type\": \"boolean\" } }, \"required\": [ \"foo\", \"bar\" ] }; var data = { \"foo\": \"1\", \"bar\": \"false\" }; var validate = ajv.compile(schema); console.log(validate(data)); // true console.log(data); // { \"foo\": 1, \"bar\": false } Example 2 (array coercions): var ajv = new Ajv({ coerceTypes: 'array' }); var schema = { \"properties\": { \"foo\": { \"type\": \"array\", \"items\": { \"type\": \"number\" } }, \"bar\": { \"type\": \"boolean\" } } }; var data = { \"foo\": \"1\", \"bar\": [\"false\"] }; var validate = ajv.compile(schema); console.log(validate(data)); // true console.log(data); // { \"foo\": [1], \"bar\": false } The coercion rules, as you can see from the example, are different from JavaScript both to validate user input as expected and to have the coercion reversible (to correctly validate cases where different types are defined in subschemas of \"anyOf\" and other compound keywords). See Coercion rules for details. API new Ajv(Object options) -> Object Create Ajv instance. All the instance methods below are bound to the instance, so they can be used without the instance. .compile(Object schema) -> Function Generate validating function and cache the compiled schema for future use. Validating function returns boolean and has properties errors with the errors from the last validation ( null if there were no errors) and schema with the reference to the original schema. Unless the option validateSchema is false, the schema will be validated against meta-schema and if schema is invalid the error will be thrown. See options . .compileAsync(Object schema, Function callback) Asyncronous version of compile method that loads missing remote schemas using asynchronous function in options.loadSchema . Callback will always be called with 2 parameters: error (or null) and validating function. Error will be not null in the following cases: missing schema can't be loaded ( loadSchema calls callback with error). the schema containing missing reference is loaded, but the reference cannot be resolved. schema (or some referenced schema) is invalid. The function compiles schema and loads the first missing schema multiple times, until all missing schemas are loaded. See example in Asynchronous compilation . .validate(Object schema|String key|String ref, data) -> Boolean Validate data using passed schema (it will be compiled and cached). Instead of the schema you can use the key that was previously passed to addSchema , the schema id if it was present in the schema or any previously resolved reference. Validation errors will be available in the errors property of Ajv instance ( null if there were no errors). Please note : every time this method is called the errors are overwritten so you need to copy them to another variable if you want to use them later. If the schema is asynchronous (has $async keyword on the top level) this method returns a Promise. See Asynchronous validation . .addSchema(Array|Object schema [, String key]) Add schema(s) to validator instance. This method does not compile schemas (but it still validates them). Because of that dependencies can be added in any order and circular dependencies are supported. It also prevents unnecessary compilation of schemas that are containers for other schemas but not used as a whole. Array of schemas can be passed (schemas should have ids), the second parameter will be ignored. Key can be passed that can be used to reference the schema and will be used as the schema id if there is no id inside the schema. If the key is not passed, the schema id will be used as the key. Once the schema is added, it (and all the references inside it) can be referenced in other schemas and used to validate data. Although addSchema does not compile schemas, explicit compilation is not required - the schema will be compiled when it is used first time. By default the schema is validated against meta-schema before it is added, and if the schema does not pass validation the exception is thrown. This behaviour is controlled by validateSchema option. .addMetaSchema(Array|Object schema [, String key]) Adds meta schema(s) that can be used to validate other schemas. That function should be used instead of addSchema because there may be instance options that would compile a meta schema incorrectly (at the moment it is removeAdditional option). There is no need to explicitly add draft 4 meta schema (http://json-schema.org/draft-04/schema and http://json-schema.org/schema) - it is added by default, unless option meta is set to false . You only need to use it if you have a changed meta-schema that you want to use to validate your schemas. See validateSchema . With option v5: true meta-schema that includes v5 keywords also added. .validateSchema(Object schema) -> Boolean Validates schema. This method should be used to validate schemas rather than validate due to the inconsistency of uri format in JSON-Schema standard. By default this method is called automatically when the schema is added, so you rarely need to use it directly. If schema doesn't have $schema property it is validated against draft 4 meta-schema (option meta should not be false) or against v5 meta-schema if option v5 is true. If schema has $schema property then the schema with this id (that should be previously added) is used to validate passed schema. Errors will be available at ajv.errors . .getSchema(String key) -> Function Retrieve compiled schema previously added with addSchema by the key passed to addSchema or by its full reference (id). Returned validating function has schema property with the reference to the original schema. .removeSchema([Object schema|String key|String ref|RegExp pattern]) Remove added/cached schema. Even if schema is referenced by other schemas it can be safely removed as dependent schemas have local references. Schema can be removed using: - key passed to addSchema - it's full reference (id) - RegExp that should match schema id or key (meta-schemas won't be removed) - actual schema object that will be stable-stringified to remove schema from cache If no parameter is passed all schemas but meta-schemas will be removed and the cache will be cleared. .addFormat(String name, String|RegExp|Function|Object format) Add custom format to validate strings. It can also be used to replace pre-defined formats for Ajv instance. Strings are converted to RegExp. Function should return validation result as true or false . If object is passed it should have properties validate , compare and async : validate : a string, RegExp or a function as described above. compare : an optional comparison function that accepts two strings and compares them according to the format meaning. This function is used with keywords formatMaximum / formatMinimum (from v5 proposals - v5 option should be used). It should return 1 if the first value is bigger than the second value, -1 if it is smaller and 0 if it is equal. async : an optional true value if validate is an asynchronous function; in this case it should return a promise that resolves with a value true or false . Custom formats can be also added via formats option. .addKeyword(String keyword, Object definition) Add custom validation keyword to Ajv instance. Keyword should be different from all standard JSON schema keywords and different from previously defined keywords. There is no way to redefine keywords or to remove keyword definition from the instance. Keyword must start with a letter, _ or $ , and may continue with letters, numbers, _ , $ , or - . It is recommended to use an application-specific prefix for keywords to avoid current and future name collisions. Example Keywords: - \"xyz-example\" : valid, and uses prefix for the xyz project to avoid name collisions. - \"example\" : valid, but not recommended as it could collide with future versions of JSON schema etc. - \"3-example\" : invalid as numbers are not allowed to be the first character in a keyword Keyword definition is an object with the following properties: type : optional string or array of strings with data type(s) that the keyword applies to. If not present, the keyword will apply to all types. validate : validating function compile : compiling function macro : macro function inline : compiling function that returns code (as string) schema : an optional false value used with \"validate\" keyword to not pass schema metaSchema : an optional meta-schema for keyword schema modifying : true MUST be passed if keyword modifies data valid : pass true / false to pre-define validation result, the result returned from validation function will be ignored. This option cannot be used with macro keywords. $data : an optional true value to support $data reference as the value of custom keyword. The reference will be resolved at validation time. If the keyword has meta-schema it would be extended to allow $data and it will be used to validate the resolved value. Supporting $data reference requires that keyword has validating function (as the only option or in addition to compile, macro or inline function). async : an optional true value if the validation function is asynchronous (whether it is compiled or passed in validate property); in this case it should return a promise that resolves with a value true or false . This option is ignored in case of \"macro\" and \"inline\" keywords. errors : an optional boolean indicating whether keyword returns errors. If this property is not set Ajv will determine if the errors were set in case of failed validation. compile , macro and inline are mutually exclusive, only one should be used at a time. validate can be used separately or in addition to them to support $data reference. Please note : If the keyword is validating data type that is different from the type(s) in its definition, the validation function will not be called (and expanded macro will not be used), so there is no need to check for data type inside validation function or inside schema returned by macro function (unless you want to enforce a specific type and for some reason do not want to use a separate type keyword for that). In the same way as standard keywords work, if the keyword does not apply to the data type being validated, the validation of this keyword will succeed. See Defining custom keywords for more details. .getKeyword(String keyword) -> Object|Boolean Returns custom keyword definition, true for pre-defined keywords and false if the keyword is unknown. .removeKeyword(String keyword) Removes custom or pre-defined keyword so you can redefine them. While this method can be used to extend pre-defined keywords, it can also be used to completely change their meaning - it may lead to unexpected results. Please note : schemas compiled before the keyword is removed will continue to work without changes. To recompile schemas use removeSchema method and compile them again. .errorsText([Array errors [, Object options]]) -> String Returns the text with all errors in a String. Options can have properties separator (string used to separate errors, \", \" by default) and dataVar (the variable name that dataPaths are prefixed with, \"data\" by default). Options Defaults: { // validation and reporting options: v5: false, allErrors: false, verbose: false, jsonPointers: false, uniqueItems: true, unicode: true, format: 'fast', formats: {}, unknownFormats: 'ignore', schemas: {}, // referenced schema options: missingRefs: true, extendRefs: true, loadSchema: undefined, // function(uri, cb) { /* ... */ cb(err, schema); }, // options to modify validated data: removeAdditional: false, useDefaults: false, coerceTypes: false, // asynchronous validation options: async: undefined, transpile: undefined, // advanced options: meta: true, validateSchema: true, addUsedSchema: true, inlineRefs: true, passContext: false, loopRequired: Infinity, ownProperties: false, multipleOfPrecision: false, errorDataPath: 'object', sourceCode: true, messages: true, beautify: false, cache: new Cache } Validation and reporting options v5 : add keywords switch , constant , contains , patternGroups , patternRequired , formatMaximum / formatMinimum and formatExclusiveMaximum / formatExclusiveMinimum from JSON-schema v5 proposals . With this option added schemas without $schema property are validated against v5 meta-schema . false by default. allErrors : check all rules collecting all errors. Default is to return after the first error. verbose : include the reference to the part of the schema ( schema and parentSchema ) and validated data in errors (false by default). jsonPointers : set dataPath propery of errors using JSON Pointers instead of JavaScript property access notation. uniqueItems : validate uniqueItems keyword (true by default). unicode : calculate correct length of strings with unicode pairs (true by default). Pass false to use .length of strings that is faster, but gives \"incorrect\" lengths of strings with unicode pairs - each unicode pair is counted as two characters. format : formats validation mode ('fast' by default). Pass 'full' for more correct and slow validation or false not to validate formats at all. E.g., 25:00:00 and 2015/14/33 will be invalid time and date in 'full' mode but it will be valid in 'fast' mode. formats : an object with custom formats. Keys and values will be passed to addFormat method. unknownFormats : handling of unknown formats. Option values: true (will be default in 5.0.0) - if the unknown format is encountered the exception is thrown during schema compilation. If format keyword value is v5 $data reference and it is unknown the validation will fail. [String] - an array of unknown format names that will be ignored. This option can be used to allow usage of third party schemas with format(s) for which you don't have definitions, but still fail if some other unknown format is used. If format keyword value is v5 $data reference and it is not in this array the validation will fail. \"ignore\" (default now) - to log warning during schema compilation and always pass validation. This option is not recommended, as it allows to mistype format name. This behaviour is required by JSON-schema specification. schemas : an array or object of schemas that will be added to the instance. If the order is important, pass array. In this case schemas must have IDs in them. Otherwise the object can be passed - addSchema(value, key) will be called for each schema in this object. Referenced schema options missingRefs : handling of missing referenced schemas. Option values: true (default) - if the reference cannot be resolved during compilation the exception is thrown. The thrown error has properties missingRef (with hash fragment) and missingSchema (without it). Both properties are resolved relative to the current base id (usually schema id, unless it was substituted). \"ignore\" - to log error during compilation and always pass validation. \"fail\" - to log error and successfully compile schema but fail validation if this rule is checked. extendRefs : validation of other keywords when $ref is present in the schema. Option values: true (default) - validate all keywords in the schemas with $ref . \"ignore\" - when $ref is used other keywords are ignored (as per JSON Reference standard). A warning will be logged during the schema compilation. \"fail\" - if other validation keywords are used together with $ref the exception will be throw when the schema is compiled. loadSchema : asynchronous function that will be used to load remote schemas when the method compileAsync is used and some reference is missing (option missingRefs should NOT be 'fail' or 'ignore'). This function should accept 2 parameters: remote schema uri and node-style callback. See example in Asynchronous compilation . Options to modify validated data removeAdditional : remove additional properties - see example in Filtering data . This option is not used if schema is added with addMetaSchema method. Option values: false (default) - not to remove additional properties \"all\" - all additional properties are removed, regardless of additionalProperties keyword in schema (and no validation is made for them). true - only additional properties with additionalProperties keyword equal to false are removed. \"failing\" - additional properties that fail schema validation will be removed (where additionalProperties keyword is false or schema). useDefaults : replace missing properties and items with the values from corresponding default keywords. Default behaviour is to ignore default keywords. This option is not used if schema is added with addMetaSchema method. See examples in Assigning defaults . Option values: false (default) - do not use defaults true - insert defaults by value (safer and slower, object literal is used). \"shared\" - insert defaults by reference (faster). If the default is an object, it will be shared by all instances of validated data. If you modify the inserted default in the validated data, it will be modified in the schema as well. coerceTypes : change data type of data to match type keyword. See the example in Coercing data types and coercion rules . Option values: false (default) - no type coercion. true - coerce scalar data types. \"array\" - in addition to coercions between scalar types, coerce scalar data to an array with one element and vice versa (as required by the schema). Asynchronous validation options async : determines how Ajv compiles asynchronous schemas (see Asynchronous validation ) to functions. Option values: \"*\" / \"co*\" - compile to generator function (\"co*\" - wrapped with co.wrap ). If generators are not supported and you don't provide transpile option, the exception will be thrown when Ajv instance is created. \"es7\" - compile to es7 async function. Unless your platform supports them you need to provide transpile option. Currently only MS Edge 13 with flag supports es7 async functions according to compatibility table ). true - if transpile option is not passed Ajv will choose the first supported/installed async/transpile modes in this order: \"co \" (native generator with co.wrap), \"es7\"/\"nodent\", \"co \"/\"regenerator\" during the creation of the Ajv instance. If none of the options is available the exception will be thrown. undefined - Ajv will choose the first available async mode in the same way as with true option but when the first asynchronous schema is compiled. transpile : determines whether Ajv transpiles compiled asynchronous validation function. Option values: \"nodent\" - transpile with nodent . If nodent is not installed, the exception will be thrown. nodent can only transpile es7 async functions; it will enforce this mode. \"regenerator\" - transpile with regenerator . If regenerator is not installed, the exception will be thrown. a function - this function should accept the code of validation function as a string and return transpiled code. This option allows you to use any other transpiler you prefer. Advanced options meta : add meta-schema so it can be used by other schemas (true by default). With option v5: true v5 meta-schema will be added as well. If an object is passed, it will be used as the default meta-schema for schemas that have no $schema keyword. This default meta-schema MUST have $schema keyword. validateSchema : validate added/compiled schemas against meta-schema (true by default). $schema property in the schema can either be http://json-schema.org/schema or http://json-schema.org/draft-04/schema or absent (draft-4 meta-schema will be used) or can be a reference to the schema previously added with addMetaSchema method. Option values: true (default) - if the validation fails, throw the exception. \"log\" - if the validation fails, log error. false - skip schema validation. addUsedSchema : by default methods compile and validate add schemas to the instance if they have id property that doesn't start with \"#\". If id is present and it is not unique the exception will be thrown. Set this option to false to skip adding schemas to the instance and the id uniqueness check when these methods are used. This option does not affect addSchema method. inlineRefs : Affects compilation of referenced schemas. Option values: true (default) - the referenced schemas that don't have refs in them are inlined, regardless of their size - that substantially improves performance at the cost of the bigger size of compiled schema functions. false - to not inline referenced schemas (they will be compiled as separate functions). integer number - to limit the maximum number of keywords of the schema that will be inlined. passContext : pass validation context to custom keyword functions. If this option is true and you pass some context to the compiled validation function with validate.call(context, data) , the context will be available as this in your custom keywords. By default this is Ajv instance. loopRequired : by default required keyword is compiled into a single expression (or a sequence of statements in allErrors mode). In case of a very large number of properties in this keyword it may result in a very big validation function. Pass integer to set the number of properties above which required keyword will be validated in a loop - smaller validation function size but also worse performance. ownProperties : by default ajv iterates over all enumerable object properties; when this option is true only own enumerable object properties (i.e. found directly on the object rather than on its prototype) are iterated. Contributed by @mbroadst. multipleOfPrecision : by default multipleOf keyword is validated by comparing the result of division with parseInt() of that result. It works for dividers that are bigger than 1. For small dividers such as 0.01 the result of the division is usually not integer (even when it should be integer, see issue #84 ). If you need to use fractional dividers set this option to some positive integer N to have multipleOf validated using this formula: Math.abs(Math.round(division) - division) < 1e-N (it is slower but allows for float arithmetics deviations). errorDataPath : set dataPath to point to 'object' (default) or to 'property' when validating keywords required , additionalProperties and dependencies . sourceCode : add sourceCode property to validating function (for debugging; this code can be different from the result of toString call). messages : Include human-readable messages in errors. true by default. false can be passed when custom messages are used (e.g. with ajv-i18n ). beautify : format the generated function with js-beautify (the validating function is generated without line-breaks). npm install js-beautify to use this option. true or js-beautify options can be passed. cache : an optional instance of cache to store compiled schemas using stable-stringified schema as a key. For example, set-associative cache sacjs can be used. If not passed then a simple hash is used which is good enough for the common use case (a limited number of statically defined schemas). Cache should have methods put(key, value) , get(key) , del(key) and clear() . Validation errors In case of validation failure Ajv assigns the array of errors to .errors property of validation function (or to .errors property of Ajv instance in case validate or validateSchema methods were called). In case of asynchronous validation the returned promise is rejected with the exception of the class Ajv.ValidationError that has .errors poperty. Error objects Each error is an object with the following properties: keyword : validation keyword. dataPath : the path to the part of the data that was validated. By default dataPath uses JavaScript property access notation (e.g., \".prop[1].subProp\" ). When the option jsonPointers is true (see Options ) dataPath will be set using JSON pointer standard (e.g., \"/prop/1/subProp\" ). schemaPath : the path (JSON-pointer as a URI fragment) to the schema of the keyword that failed validation. params : the object with the additional information about error that can be used to create custom error messages (e.g., using ajv-i18n package). See below for parameters set by all keywords. message : the standard error message (can be excluded with option messages set to false). schema : the schema of the keyword (added with verbose option). parentSchema : the schema containing the keyword (added with verbose option) data : the data validated by the keyword (added with verbose option). Error parameters Properties of params object in errors depend on the keyword that failed validation. maxItems , minItems , maxLength , minLength , maxProperties , minProperties - property limit (number, the schema of the keyword). additionalItems - property limit (the maximum number of allowed items in case when items keyword is an array of schemas and additionalItems is false). additionalProperties - property additionalProperty (the property not used in properties and patternProperties keywords). patternGroups (with v5 option) - properties: pattern reason (\"minimum\"/\"maximum\"), limit (max/min allowed number of properties matching number) dependencies - properties: property (dependent property), missingProperty (required missing dependency - only the first one is reported currently) deps (required dependencies, comma separated list as a string), depsCount (the number of required dependedncies). format - property format (the schema of the keyword). maximum , minimum - properties: limit (number, the schema of the keyword), exclusive (boolean, the schema of exclusiveMaximum or exclusiveMinimum ), comparison (string, comparison operation to compare the data to the limit, with the data on the left and the limit on the right; can be \"<\", \"<=\", \">\", \">=\") multipleOf - property multipleOf (the schema of the keyword) pattern - property pattern (the schema of the keyword) required - property missingProperty (required property that is missing). patternRequired (with v5 option) - property missingPattern (required pattern that did not match any property). type - property type (required type(s), a string, can be a comma-separated list) uniqueItems - properties i and j (indices of duplicate items). enum - property allowedValues pointing to the array of values (the schema of the keyword). $ref - property ref with the referenced schema URI. custom keywords (in case keyword definition doesn't create errors) - property keyword (the keyword name). Related packages ajv-cli - command line interface for Ajv ajv-i18n - internationalised error messages ajv-merge-patch - keywords $merge and $patch from v5 proposals. ajv-keywords - several custom keywords that can be used with Ajv (typeof, instanceof, range, propertyNames) Some packages using Ajv webpack - a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser jsonscript-js - the interpreter for JSONScript - scripted processing of existing endpoints and services osprey-method-handler - Express middleware for validating requests and responses based on a RAML method object, used in osprey - validating API proxy generated from a RAML definition har-validator - HTTP Archive (HAR) validator jsoneditor - a web-based tool to view, edit, format, and validate JSON http://jsoneditoronline.org JSON Schema Lint - a web tool to validate JSON/YAML document against a single JSON-schema http://jsonschemalint.com objection - SQL-friendly ORM for node.js table - formats data into a string table ripple-lib - a JavaScript API for interacting with Ripple in Node.js and the browser restbase - distributed storage with REST API & dispatcher for backend services built to provide a low-latency & high-throughput API for Wikipedia / Wikimedia content hippie-swagger - Hippie wrapper that provides end to end API testing with swagger validation react-form-controlled - React controlled form components with validation rabbitmq-schema - a schema definition module for RabbitMQ graphs and messages @query/schema - stream filtering with a URI-safe query syntax parsing to JSON Schema chai-ajv-json-schema - chai plugin to us JSON-schema with expect in mocha tests grunt-jsonschema-ajv - Grunt plugin for validating files against JSON-Schema extract-text-webpack-plugin - extract text from bundle into a file electron-builder - a solution to package and build a ready for distribution Electron app addons-linter - Mozilla Add-ons Linter gh-pages-generator - multi-page site generator converting markdown files to GitHub pages Tests npm install git submodule update --init npm test Contributing All validation functions are generated using doT templates in dot folder. Templates are precompiled so doT is not a run-time dependency. npm run build - compiles templates to dotjs folder. npm run watch - automatically compiles templates when files in dot folder change Please see Contributing guidelines Changes history See https://github.com/epoberezkin/ajv/releases Please note : Changes in version 5.0.1-beta . Changes in version 4.6.0 . Changes in version 4.0.0 . Changes in version 3.0.0 . Changes in version 2.0.0 . License MIT","title":"Index"},{"location":"node_modules/ajv/#ajv-another-json-schema-validator","text":"The fastest JSON Schema validator for node.js and browser. Supports v5 proposals . Please note : You can start using NEW beta version 5.0.4 (see migration guide from 4.x.x ) with the support of JSON-Schema draft-06 (not officially published yet): npm install ajv@^5.0.4-beta . Also see docs for 5.0.4.","title":"Ajv: Another JSON Schema Validator"},{"location":"node_modules/ajv/#contents","text":"Performance Features Getting started Frequently Asked Questions Using in browser Command line interface Validation Keywords Formats $data reference NEW: $merge and $patch keywords Defining custom keywords Asynchronous schema compilation Asynchronous validation Modifying data during validation Filtering data Assigning defaults Coercing data types API Methods Options Validation errors Related packages Packages using Ajv Tests, Contributing, History, License","title":"Contents"},{"location":"node_modules/ajv/#performance","text":"Ajv generates code using doT templates to turn JSON schemas into super-fast validation functions that are efficient for v8 optimization. Currently Ajv is the fastest and the most standard compliant validator according to these benchmarks: json-schema-benchmark - 50% faster than the second place jsck benchmark - 20-190% faster z-schema benchmark themis benchmark Performace of different validators by json-schema-benchmark :","title":"Performance"},{"location":"node_modules/ajv/#features","text":"Ajv implements full JSON Schema draft 4 standard: all validation keywords (see JSON-Schema validation keywords ) full support of remote refs (remote schemas have to be added with addSchema or compiled to be available) support of circular references between schemas correct string lengths for strings with unicode pairs (can be turned off) formats defined by JSON Schema draft 4 standard and custom formats (can be turned off) validates schemas against meta-schema supports browsers and nodejs 0.10-6.x asynchronous loading of referenced schemas during compilation \"All errors\" validation mode with option allErrors error messages with parameters describing error reasons to allow creating custom error messages i18n error messages support with ajv-i18n package filtering data from additional properties assigning defaults to missing properties and items coercing data to the types specified in type keywords custom keywords keywords switch , constant , contains , patternGroups , patternRequired , formatMaximum / formatMinimum and formatExclusiveMaximum / formatExclusiveMinimum from JSON-schema v5 proposals with option v5 v5 meta-schema for schemas using v5 keywords v5 $data reference to use values from the validated data as values for the schema keywords asynchronous validation of custom formats and keywords Currently Ajv is the only validator that passes all the tests from JSON Schema Test Suite (according to json-schema-benchmark , apart from the test that requires that 1.0 is not an integer that is impossible to satisfy in JavaScript).","title":"Features"},{"location":"node_modules/ajv/#install","text":"npm install ajv To install a stable beta version 5.0.4 (see migration guide from 4.x.x ): npm install ajv@^5.0.4-beta","title":"Install"},{"location":"node_modules/ajv/#getting-started","text":"Try it in the node REPL: https://tonicdev.com/npm/ajv The fastest validation call: var Ajv = require('ajv'); var ajv = new Ajv(); // options can be passed, e.g. {allErrors: true} var validate = ajv.compile(schema); var valid = validate(data); if (!valid) console.log(validate.errors); or with less code // ... var valid = ajv.validate(schema, data); if (!valid) console.log(ajv.errors); // ... or // ... ajv.addSchema(schema, 'mySchema'); var valid = ajv.validate('mySchema', data); if (!valid) console.log(ajv.errorsText()); // ... See API and Options for more details. Ajv compiles schemas to functions and caches them in all cases (using schema stringified with json-stable-stringify as a key), so that the next time the same schema is used (not necessarily the same object instance) it won't be compiled again. The best performance is achieved when using compiled functions returned by compile or getSchema methods (there is no additional function call). Please note : every time validation function or ajv.validate are called errors property is overwritten. You need to copy errors array reference to another variable if you want to use it later (e.g., in the callback). See Validation errors","title":"Getting started"},{"location":"node_modules/ajv/#using-in-browser","text":"You can require Ajv directly from the code you browserify - in this case Ajv will be a part of your bundle. If you need to use Ajv in several bundles you can create a separate UMD bundle using npm run bundle script (thanks to siddo420 ). Then you need to load Ajv in the browser: This bundle can be used with different module systems or creates global Ajv if no module system is found. The browser bundle is available on cdnjs . Ajv is tested with these browsers: Please note : some frameworks, e.g. Dojo, may redefine global require in such way that is not compatible with CommonJS module format. In such case Ajv bundle has to be loaded before the framework and then you can use global Ajv (see issue #234 ).","title":"Using in browser"},{"location":"node_modules/ajv/#command-line-interface","text":"CLI is available as a separate npm package ajv-cli . It supports: compiling JSON-schemas to test their validity BETA: generating standalone module exporting a validation function to be used without Ajv (using ajv-pack ) validating data file(s) against JSON-schema testing expected validity of data against JSON-schema referenced schemas custom meta-schemas files in JSON and JavaScript format all Ajv options reporting changes in data after validation in JSON-patch format","title":"Command line interface"},{"location":"node_modules/ajv/#validation-keywords","text":"Ajv supports all validation keywords from draft 4 of JSON-schema standard: type for numbers - maximum, minimum, exclusiveMaximum, exclusiveMinimum, multipleOf for strings - maxLength, minLength, pattern, format for arrays - maxItems, minItems, uniqueItems, items, additionalItems for objects - maxProperties, minproperties, required, properties, patternProperties, additionalProperties, dependencies compound keywords - enum, not, oneOf, anyOf, allOf With option v5: true Ajv also supports all validation keywords and $data reference from v5 proposals for JSON-schema standard: switch - conditional validation with a sequence of if/then clauses contains - check that array contains a valid item constant - check that data is equal to some value patternGroups - a more powerful alternative to patternProperties patternRequired - like required but with patterns that some property should match. formatMaximum, formatMinimum, formatExclusiveMaximum, formatExclusiveMinimum - setting limits for date, time, etc. See JSON-Schema validation keywords for more details.","title":"Validation keywords"},{"location":"node_modules/ajv/#formats","text":"The following formats are supported for string validation with \"format\" keyword: date : full-date according to RFC3339 . time : time with optional time-zone. date-time : date-time from the same source (time-zone is mandatory). date , time and date-time validate ranges in full mode and only regexp in fast mode (see options ). uri : full uri with optional protocol. email : email address. hostname : host name acording to RFC1034 . ipv4 : IP address v4. ipv6 : IP address v6. regex : tests whether a string is a valid regular expression by passing it to RegExp constructor. uuid : Universally Unique IDentifier according to RFC4122 . json-pointer : JSON-pointer according to RFC6901 . relative-json-pointer : relative JSON-pointer according to this draft . There are two modes of format validation: fast and full . This mode affects formats date , time , date-time , uri , email , and hostname . See Options for details. You can add additional formats and replace any of the formats above using addFormat method. The option unknownFormats allows to change the behaviour in case an unknown format is encountered - Ajv can either ignore them (default now) or fail schema compilation (will be the default in 5.0.0). You can find patterns used for format validation and the sources that were used in formats.js .","title":"Formats"},{"location":"node_modules/ajv/#data-reference","text":"With v5 option you can use values from the validated data as the values for the schema keywords. See v5 proposal for more information about how it works. $data reference is supported in the keywords: constant, enum, format, maximum/minimum, exclusiveMaximum / exclusiveMinimum, maxLength / minLength, maxItems / minItems, maxProperties / minProperties, formatMaximum / formatMinimum, formatExclusiveMaximum / formatExclusiveMinimum, multipleOf, pattern, required, uniqueItems. The value of \"$data\" should be a JSON-pointer to the data (the root is always the top level data object, even if the $data reference is inside a referenced subschema) or a relative JSON-pointer (it is relative to the current point in data; if the $data reference is inside a referenced subschema it cannot point to the data outside of the root level for this subschema). Examples. This schema requires that the value in property smaller is less or equal than the value in the property larger: var schema = { \"properties\": { \"smaller\": { \"type\": \"number\", \"maximum\": { \"$data\": \"1/larger\" } }, \"larger\": { \"type\": \"number\" } } }; var validData = { smaller: 5, larger: 7 }; This schema requires that the properties have the same format as their field names: var schema = { \"additionalProperties\": { \"type\": \"string\", \"format\": { \"$data\": \"0#\" } } }; var validData = { 'date-time': '1963-06-19T08:30:06.283185Z', email: 'joe.bloggs@example.com' } $data reference is resolved safely - it won't throw even if some property is undefined. If $data resolves to undefined the validation succeeds (with the exclusion of constant keyword). If $data resolves to incorrect type (e.g. not \"number\" for maximum keyword) the validation fails.","title":"$data reference"},{"location":"node_modules/ajv/#merge-and-patch-keywords","text":"With v5 option and the package ajv-merge-patch you can use the keywords $merge and $patch that allow extending JSON-schemas with patches using formats JSON Merge Patch (RFC 7396) and JSON Patch (RFC 6902) . To add keywords $merge and $patch to Ajv instance use this code: require('ajv-merge-patch')(ajv); Examples. Using $merge : { \"$merge\": { \"source\": { \"type\": \"object\", \"properties\": { \"p\": { \"type\": \"string\" } }, \"additionalProperties\": false }, \"with\": { \"properties\": { \"q\": { \"type\": \"number\" } } } } } Using $patch : { \"$patch\": { \"source\": { \"type\": \"object\", \"properties\": { \"p\": { \"type\": \"string\" } }, \"additionalProperties\": false }, \"with\": [ { \"op\": \"add\", \"path\": \"/properties/q\", \"value\": { \"type\": \"number\" } } ] } } The schemas above are equivalent to this schema: { \"type\": \"object\", \"properties\": { \"p\": { \"type\": \"string\" }, \"q\": { \"type\": \"number\" } }, \"additionalProperties\": false } The properties source and with in the keywords $merge and $patch can use absolute or relative $ref to point to other schemas previously added to the Ajv instance or to the fragments of the current schema. See the package ajv-merge-patch for more information.","title":"$merge and $patch keywords"},{"location":"node_modules/ajv/#defining-custom-keywords","text":"The advantages of using custom keywords are: allow creating validation scenarios that cannot be expressed using JSON-Schema simplify your schemas help bringing a bigger part of the validation logic to your schemas make your schemas more expressive, less verbose and closer to your application domain implement custom data processors that modify your data ( modifying option MUST be used in keyword definition) and/or create side effects while the data is being validated If a keyword is used only for side-effects and its validation result is pre-defined, use option valid: true/false in keyword definition to simplify both generated code (no error handling in case of valid: true ) and your keyword functions (no need to return any validation result). The concerns you have to be aware of when extending JSON-schema standard with custom keywords are the portability and understanding of your schemas. You will have to support these custom keywords on other platforms and to properly document these keywords so that everybody can understand them in your schemas. You can define custom keywords with addKeyword method. Keywords are defined on the ajv instance level - new instances will not have previously defined keywords. Ajv allows defining keywords with: - validation function - compilation function - macro function - inline compilation function that should return code (as string) that will be inlined in the currently compiled schema. Example. range and exclusiveRange keywords using compiled schema: ajv.addKeyword('range', { type: 'number', compile: function (sch, parentSchema) { var min = sch[0]; var max = sch[1]; return parentSchema.exclusiveRange === true ? function (data) { return data > min && data < max; } : function (data) { return data >= min && data <= max; } } }); var schema = { \"range\": [2, 4], \"exclusiveRange\": true }; var validate = ajv.compile(schema); console.log(validate(2.01)); // true console.log(validate(3.99)); // true console.log(validate(2)); // false console.log(validate(4)); // false Several custom keywords (typeof, instanceof, range and propertyNames) are defined in ajv-keywords package - they can be used for your schemas and as a starting point for your own custom keywords. See Defining custom keywords for more details.","title":"Defining custom keywords"},{"location":"node_modules/ajv/#asynchronous-compilation","text":"During asynchronous compilation remote references are loaded using supplied function. See compileAsync method and loadSchema option . Example: var ajv = new Ajv({ loadSchema: loadSchema }); ajv.compileAsync(schema, function (err, validate) { if (err) return; var valid = validate(data); }); function loadSchema(uri, callback) { request.json(uri, function(err, res, body) { if (err || res.statusCode >= 400) callback(err || new Error('Loading error: ' + res.statusCode)); else callback(null, body); }); } Please note : Option missingRefs should NOT be set to \"ignore\" or \"fail\" for asynchronous compilation to work.","title":"Asynchronous compilation"},{"location":"node_modules/ajv/#asynchronous-validation","text":"Example in node REPL: https://tonicdev.com/esp/ajv-asynchronous-validation You can define custom formats and keywords that perform validation asyncronously by accessing database or some service. You should add async: true in the keyword or format defnition (see addFormat , addKeyword and Defining custom keywords ). If your schema uses asynchronous formats/keywords or refers to some schema that contains them it should have \"$async\": true keyword so that Ajv can compile it correctly. If asynchronous format/keyword or reference to asynchronous schema is used in the schema without $async keyword Ajv will throw an exception during schema compilation. Please note : all asynchronous subschemas that are referenced from the current or other schemas should have \"$async\": true keyword as well, otherwise the schema compilation will fail. Validation function for an asynchronous custom format/keyword should return a promise that resolves to true or false (or rejects with new Ajv.ValidationError(errors) if you want to return custom errors from the keyword function). Ajv compiles asynchronous schemas to either generator function (default) that can be optionally transpiled with regenerator or to es7 async function that can be transpiled with nodent or with regenerator as well. You can also supply any other transpiler as a function. See Options . The compiled validation function has $async: true property (if the schema is asynchronous), so you can differentiate these functions if you are using both syncronous and asynchronous schemas. If you are using generators, the compiled validation function can be either wrapped with co (default) or returned as generator function, that can be used directly, e.g. in koa 1.0. co is a small library, it is included in Ajv (both as npm dependency and in the browser bundle). Generator functions are currently supported in Chrome, Firefox and node.js (0.11+); if you are using Ajv in other browsers or in older versions of node.js you should use one of available transpiling options. All provided async modes use global Promise class. If your platform does not have Promise you should use a polyfill that defines it. Validation result will be a promise that resolves to true or rejects with an exception Ajv.ValidationError that has the array of validation errors in errors property. Example: /** * without \"async\" and \"transpile\" options (or with option {async: true}) * Ajv will choose the first supported/installed option in this order: * 1. native generator function wrapped with co * 2. es7 async functions transpiled with nodent * 3. es7 async functions transpiled with regenerator */ var ajv = new Ajv; ajv.addKeyword('idExists', { async: true, type: 'number', validate: checkIdExists }); function checkIdExists(schema, data) { return knex(schema.table) .select('id') .where('id', data) .then(function (rows) { return !!rows.length; // true if record is found }); } var schema = { \"$async\": true, \"properties\": { \"userId\": { \"type\": \"integer\", \"idExists\": { \"table\": \"users\" } }, \"postId\": { \"type\": \"integer\", \"idExists\": { \"table\": \"posts\" } } } }; var validate = ajv.compile(schema); validate({ userId: 1, postId: 19 })) .then(function (valid) { // \"valid\" is always true here console.log('Data is valid'); }) .catch(function (err) { if (!(err instanceof Ajv.ValidationError)) throw err; // data is invalid console.log('Validation errors:', err.errors); });","title":"Asynchronous validation"},{"location":"node_modules/ajv/#using-transpilers-with-asyncronous-validation-functions","text":"To use a transpiler you should separately install it (or load its bundle in the browser). Ajv npm package includes minified browser bundles of regenerator and nodent in dist folder.","title":"Using transpilers with asyncronous validation functions."},{"location":"node_modules/ajv/#using-nodent","text":"var ajv = new Ajv({ /* async: 'es7', */ transpile: 'nodent' }); var validate = ajv.compile(schema); // transpiled es7 async function validate(data).then(successFunc).catch(errorFunc); npm install nodent or use nodent.min.js from dist folder of npm package.","title":"Using nodent"},{"location":"node_modules/ajv/#using-regenerator","text":"var ajv = new Ajv({ /* async: 'es7', */ transpile: 'regenerator' }); var validate = ajv.compile(schema); // transpiled es7 async function validate(data).then(successFunc).catch(errorFunc); npm install regenerator or use regenerator.min.js from dist folder of npm package.","title":"Using regenerator"},{"location":"node_modules/ajv/#using-other-transpilers","text":"var ajv = new Ajv({ async: 'es7', transpile: transpileFunc }); var validate = ajv.compile(schema); // transpiled es7 async function validate(data).then(successFunc).catch(errorFunc); See Options .","title":"Using other transpilers"},{"location":"node_modules/ajv/#comparison-of-async-modes","text":"mode transpile speed* run-time speed* bundle size generators (native) - 1.0 - es7.nodent 1.35 1.1 183Kb es7.regenerator 1.0 2.7 322Kb regenerator 1.0 3.2 322Kb * Relative performance in node v.4, smaller is better. nodent has several advantages: much smaller browser bundle than regenerator almost the same performance of generated code as native generators in nodejs and the latest Chrome much better performace than native generators in other browsers works in IE 9 (regenerator does not) regenerator is a more widely adopted alternative.","title":"Comparison of async modes"},{"location":"node_modules/ajv/#filtering-data","text":"With option removeAdditional (added by andyscott ) you can filter data during the validation. This option modifies original data. Example: var ajv = new Ajv({ removeAdditional: true }); var schema = { \"additionalProperties\": false, \"properties\": { \"foo\": { \"type\": \"number\" }, \"bar\": { \"additionalProperties\": { \"type\": \"number\" }, \"properties\": { \"baz\": { \"type\": \"string\" } } } } } var data = { \"foo\": 0, \"additional1\": 1, // will be removed; `additionalProperties` == false \"bar\": { \"baz\": \"abc\", \"additional2\": 2 // will NOT be removed; `additionalProperties` != false }, } var validate = ajv.compile(schema); console.log(validate(data)); // true console.log(data); // { \"foo\": 0, \"bar\": { \"baz\": \"abc\", \"additional2\": 2 } If removeAdditional option in the example above were \"all\" then both additional1 and additional2 properties would have been removed. If the option were \"failing\" then property additional1 would have been removed regardless of its value and property additional2 would have been removed only if its value were failing the schema in the inner additionalProperties (so in the example above it would have stayed because it passes the schema, but any non-number would have been removed). Please note : If you use removeAdditional option with additionalProperties keyword inside anyOf / oneOf keywords your validation can fail with this schema, for example: { \"type\": \"object\", \"oneOf\": [ { \"properties\": { \"foo\": { \"type\": \"string\" } }, \"required\": [ \"foo\" ], \"additionalProperties\": false }, { \"properties\": { \"bar\": { \"type\": \"integer\" } }, \"required\": [ \"bar\" ], \"additionalProperties\": false } ] } The intention of the schema above is to allow objects with either the string property \"foo\" or the integer property \"bar\", but not with both and not with any other properties. With the option removeAdditional: true the validation will pass for the object { \"foo\": \"abc\"} but will fail for the object {\"bar\": 1} . It happens because while the first subschema in oneOf is validated, the property bar is removed because it is an additional property according to the standard (because it is not included in properties keyword in the same schema). While this behaviour is unexpected (issues #129 , #134 ), it is correct. To have the expected behaviour (both objects are allowed and additional properties are removed) the schema has to be refactored in this way: { \"type\": \"object\", \"properties\": { \"foo\": { \"type\": \"string\" }, \"bar\": { \"type\": \"integer\" } }, \"additionalProperties\": false, \"oneOf\": [ { \"required\": [ \"foo\" ] }, { \"required\": [ \"bar\" ] } ] } The schema above is also more efficient - it will compile into a faster function.","title":"Filtering data"},{"location":"node_modules/ajv/#assigning-defaults","text":"With option useDefaults Ajv will assign values from default keyword in the schemas of properties and items (when it is the array of schemas) to the missing properties and items. This option modifies original data. Please note : by default the default value is inserted in the generated validation code as a literal (starting from v4.0), so the value inserted in the data will be the deep clone of the default in the schema. If you need to insert the default value in the data by reference pass the option useDefaults: \"shared\" . Inserting defaults by reference can be faster (in case you have an object in default ) and it allows to have dynamic values in defaults, e.g. timestamp, without recompiling the schema. The side effect is that modifying the default value in any validated data instance will change the default in the schema and in other validated data instances. See example 3 below. Example 1 ( default in properties ): var ajv = new Ajv({ useDefaults: true }); var schema = { \"type\": \"object\", \"properties\": { \"foo\": { \"type\": \"number\" }, \"bar\": { \"type\": \"string\", \"default\": \"baz\" } }, \"required\": [ \"foo\", \"bar\" ] }; var data = { \"foo\": 1 }; var validate = ajv.compile(schema); console.log(validate(data)); // true console.log(data); // { \"foo\": 1, \"bar\": \"baz\" } Example 2 ( default in items ): var schema = { \"type\": \"array\", \"items\": [ { \"type\": \"number\" }, { \"type\": \"string\", \"default\": \"foo\" } ] } var data = [ 1 ]; var validate = ajv.compile(schema); console.log(validate(data)); // true console.log(data); // [ 1, \"foo\" ] Example 3 (inserting \"defaults\" by reference): var ajv = new Ajv({ useDefaults: 'shared' }); var schema = { properties: { foo: { default: { bar: 1 } } } } var validate = ajv.compile(schema); var data = {}; console.log(validate(data)); // true console.log(data); // { foo: { bar: 1 } } data.foo.bar = 2; var data2 = {}; console.log(validate(data2)); // true console.log(data2); // { foo: { bar: 2 } } default keywords in other cases are ignored: not in properties or items subschemas in schemas inside anyOf , oneOf and not (see #42 ) in if subschema of v5 switch keyword in schemas generated by custom macro keywords","title":"Assigning defaults"},{"location":"node_modules/ajv/#coercing-data-types","text":"When you are validating user inputs all your data properties are usually strings. The option coerceTypes allows you to have your data types coerced to the types specified in your schema type keywords, both to pass the validation and to use the correctly typed data afterwards. This option modifies original data. Please note : if you pass a scalar value to the validating function its type will be coerced and it will pass the validation, but the value of the variable you pass won't be updated because scalars are passed by value. Example 1: var ajv = new Ajv({ coerceTypes: true }); var schema = { \"type\": \"object\", \"properties\": { \"foo\": { \"type\": \"number\" }, \"bar\": { \"type\": \"boolean\" } }, \"required\": [ \"foo\", \"bar\" ] }; var data = { \"foo\": \"1\", \"bar\": \"false\" }; var validate = ajv.compile(schema); console.log(validate(data)); // true console.log(data); // { \"foo\": 1, \"bar\": false } Example 2 (array coercions): var ajv = new Ajv({ coerceTypes: 'array' }); var schema = { \"properties\": { \"foo\": { \"type\": \"array\", \"items\": { \"type\": \"number\" } }, \"bar\": { \"type\": \"boolean\" } } }; var data = { \"foo\": \"1\", \"bar\": [\"false\"] }; var validate = ajv.compile(schema); console.log(validate(data)); // true console.log(data); // { \"foo\": [1], \"bar\": false } The coercion rules, as you can see from the example, are different from JavaScript both to validate user input as expected and to have the coercion reversible (to correctly validate cases where different types are defined in subschemas of \"anyOf\" and other compound keywords). See Coercion rules for details.","title":"Coercing data types"},{"location":"node_modules/ajv/#api","text":"","title":"API"},{"location":"node_modules/ajv/#new-ajvobject-options-object","text":"Create Ajv instance. All the instance methods below are bound to the instance, so they can be used without the instance.","title":"new Ajv(Object options) -> Object"},{"location":"node_modules/ajv/#compileobject-schema-functionobject-data","text":"Generate validating function and cache the compiled schema for future use. Validating function returns boolean and has properties errors with the errors from the last validation ( null if there were no errors) and schema with the reference to the original schema. Unless the option validateSchema is false, the schema will be validated against meta-schema and if schema is invalid the error will be thrown. See options .","title":".compile(Object schema) -> Function<Object data>"},{"location":"node_modules/ajv/#compileasyncobject-schema-function-callback","text":"Asyncronous version of compile method that loads missing remote schemas using asynchronous function in options.loadSchema . Callback will always be called with 2 parameters: error (or null) and validating function. Error will be not null in the following cases: missing schema can't be loaded ( loadSchema calls callback with error). the schema containing missing reference is loaded, but the reference cannot be resolved. schema (or some referenced schema) is invalid. The function compiles schema and loads the first missing schema multiple times, until all missing schemas are loaded. See example in Asynchronous compilation .","title":".compileAsync(Object schema, Function callback)"},{"location":"node_modules/ajv/#validateobject-schemastring-keystring-ref-data-boolean","text":"Validate data using passed schema (it will be compiled and cached). Instead of the schema you can use the key that was previously passed to addSchema , the schema id if it was present in the schema or any previously resolved reference. Validation errors will be available in the errors property of Ajv instance ( null if there were no errors). Please note : every time this method is called the errors are overwritten so you need to copy them to another variable if you want to use them later. If the schema is asynchronous (has $async keyword on the top level) this method returns a Promise. See Asynchronous validation .","title":".validate(Object schema|String key|String ref, data) -> Boolean"},{"location":"node_modules/ajv/#addschemaarrayobjectobject-schema-string-key","text":"Add schema(s) to validator instance. This method does not compile schemas (but it still validates them). Because of that dependencies can be added in any order and circular dependencies are supported. It also prevents unnecessary compilation of schemas that are containers for other schemas but not used as a whole. Array of schemas can be passed (schemas should have ids), the second parameter will be ignored. Key can be passed that can be used to reference the schema and will be used as the schema id if there is no id inside the schema. If the key is not passed, the schema id will be used as the key. Once the schema is added, it (and all the references inside it) can be referenced in other schemas and used to validate data. Although addSchema does not compile schemas, explicit compilation is not required - the schema will be compiled when it is used first time. By default the schema is validated against meta-schema before it is added, and if the schema does not pass validation the exception is thrown. This behaviour is controlled by validateSchema option.","title":".addSchema(Array<Object>|Object schema [, String key])"},{"location":"node_modules/ajv/#addmetaschemaarrayobjectobject-schema-string-key","text":"Adds meta schema(s) that can be used to validate other schemas. That function should be used instead of addSchema because there may be instance options that would compile a meta schema incorrectly (at the moment it is removeAdditional option). There is no need to explicitly add draft 4 meta schema (http://json-schema.org/draft-04/schema and http://json-schema.org/schema) - it is added by default, unless option meta is set to false . You only need to use it if you have a changed meta-schema that you want to use to validate your schemas. See validateSchema . With option v5: true meta-schema that includes v5 keywords also added.","title":".addMetaSchema(Array<Object>|Object schema [, String key])"},{"location":"node_modules/ajv/#validateschemaobject-schema-boolean","text":"Validates schema. This method should be used to validate schemas rather than validate due to the inconsistency of uri format in JSON-Schema standard. By default this method is called automatically when the schema is added, so you rarely need to use it directly. If schema doesn't have $schema property it is validated against draft 4 meta-schema (option meta should not be false) or against v5 meta-schema if option v5 is true. If schema has $schema property then the schema with this id (that should be previously added) is used to validate passed schema. Errors will be available at ajv.errors .","title":".validateSchema(Object schema) -> Boolean"},{"location":"node_modules/ajv/#getschemastring-key-functionobject-data","text":"Retrieve compiled schema previously added with addSchema by the key passed to addSchema or by its full reference (id). Returned validating function has schema property with the reference to the original schema.","title":".getSchema(String key) -> Function<Object data>"},{"location":"node_modules/ajv/#removeschemaobject-schemastring-keystring-refregexp-pattern","text":"Remove added/cached schema. Even if schema is referenced by other schemas it can be safely removed as dependent schemas have local references. Schema can be removed using: - key passed to addSchema - it's full reference (id) - RegExp that should match schema id or key (meta-schemas won't be removed) - actual schema object that will be stable-stringified to remove schema from cache If no parameter is passed all schemas but meta-schemas will be removed and the cache will be cleared.","title":".removeSchema([Object schema|String key|String ref|RegExp pattern])"},{"location":"node_modules/ajv/#addformatstring-name-stringregexpfunctionobject-format","text":"Add custom format to validate strings. It can also be used to replace pre-defined formats for Ajv instance. Strings are converted to RegExp. Function should return validation result as true or false . If object is passed it should have properties validate , compare and async : validate : a string, RegExp or a function as described above. compare : an optional comparison function that accepts two strings and compares them according to the format meaning. This function is used with keywords formatMaximum / formatMinimum (from v5 proposals - v5 option should be used). It should return 1 if the first value is bigger than the second value, -1 if it is smaller and 0 if it is equal. async : an optional true value if validate is an asynchronous function; in this case it should return a promise that resolves with a value true or false . Custom formats can be also added via formats option.","title":".addFormat(String name, String|RegExp|Function|Object format)"},{"location":"node_modules/ajv/#addkeywordstring-keyword-object-definition","text":"Add custom validation keyword to Ajv instance. Keyword should be different from all standard JSON schema keywords and different from previously defined keywords. There is no way to redefine keywords or to remove keyword definition from the instance. Keyword must start with a letter, _ or $ , and may continue with letters, numbers, _ , $ , or - . It is recommended to use an application-specific prefix for keywords to avoid current and future name collisions. Example Keywords: - \"xyz-example\" : valid, and uses prefix for the xyz project to avoid name collisions. - \"example\" : valid, but not recommended as it could collide with future versions of JSON schema etc. - \"3-example\" : invalid as numbers are not allowed to be the first character in a keyword Keyword definition is an object with the following properties: type : optional string or array of strings with data type(s) that the keyword applies to. If not present, the keyword will apply to all types. validate : validating function compile : compiling function macro : macro function inline : compiling function that returns code (as string) schema : an optional false value used with \"validate\" keyword to not pass schema metaSchema : an optional meta-schema for keyword schema modifying : true MUST be passed if keyword modifies data valid : pass true / false to pre-define validation result, the result returned from validation function will be ignored. This option cannot be used with macro keywords. $data : an optional true value to support $data reference as the value of custom keyword. The reference will be resolved at validation time. If the keyword has meta-schema it would be extended to allow $data and it will be used to validate the resolved value. Supporting $data reference requires that keyword has validating function (as the only option or in addition to compile, macro or inline function). async : an optional true value if the validation function is asynchronous (whether it is compiled or passed in validate property); in this case it should return a promise that resolves with a value true or false . This option is ignored in case of \"macro\" and \"inline\" keywords. errors : an optional boolean indicating whether keyword returns errors. If this property is not set Ajv will determine if the errors were set in case of failed validation. compile , macro and inline are mutually exclusive, only one should be used at a time. validate can be used separately or in addition to them to support $data reference. Please note : If the keyword is validating data type that is different from the type(s) in its definition, the validation function will not be called (and expanded macro will not be used), so there is no need to check for data type inside validation function or inside schema returned by macro function (unless you want to enforce a specific type and for some reason do not want to use a separate type keyword for that). In the same way as standard keywords work, if the keyword does not apply to the data type being validated, the validation of this keyword will succeed. See Defining custom keywords for more details.","title":".addKeyword(String keyword, Object definition)"},{"location":"node_modules/ajv/#getkeywordstring-keyword-objectboolean","text":"Returns custom keyword definition, true for pre-defined keywords and false if the keyword is unknown.","title":".getKeyword(String keyword) -> Object|Boolean"},{"location":"node_modules/ajv/#removekeywordstring-keyword","text":"Removes custom or pre-defined keyword so you can redefine them. While this method can be used to extend pre-defined keywords, it can also be used to completely change their meaning - it may lead to unexpected results. Please note : schemas compiled before the keyword is removed will continue to work without changes. To recompile schemas use removeSchema method and compile them again.","title":".removeKeyword(String keyword)"},{"location":"node_modules/ajv/#errorstextarrayobject-errors-object-options-string","text":"Returns the text with all errors in a String. Options can have properties separator (string used to separate errors, \", \" by default) and dataVar (the variable name that dataPaths are prefixed with, \"data\" by default).","title":".errorsText([Array<Object> errors [, Object options]]) -> String"},{"location":"node_modules/ajv/#options","text":"Defaults: { // validation and reporting options: v5: false, allErrors: false, verbose: false, jsonPointers: false, uniqueItems: true, unicode: true, format: 'fast', formats: {}, unknownFormats: 'ignore', schemas: {}, // referenced schema options: missingRefs: true, extendRefs: true, loadSchema: undefined, // function(uri, cb) { /* ... */ cb(err, schema); }, // options to modify validated data: removeAdditional: false, useDefaults: false, coerceTypes: false, // asynchronous validation options: async: undefined, transpile: undefined, // advanced options: meta: true, validateSchema: true, addUsedSchema: true, inlineRefs: true, passContext: false, loopRequired: Infinity, ownProperties: false, multipleOfPrecision: false, errorDataPath: 'object', sourceCode: true, messages: true, beautify: false, cache: new Cache }","title":"Options"},{"location":"node_modules/ajv/#validation-and-reporting-options","text":"v5 : add keywords switch , constant , contains , patternGroups , patternRequired , formatMaximum / formatMinimum and formatExclusiveMaximum / formatExclusiveMinimum from JSON-schema v5 proposals . With this option added schemas without $schema property are validated against v5 meta-schema . false by default. allErrors : check all rules collecting all errors. Default is to return after the first error. verbose : include the reference to the part of the schema ( schema and parentSchema ) and validated data in errors (false by default). jsonPointers : set dataPath propery of errors using JSON Pointers instead of JavaScript property access notation. uniqueItems : validate uniqueItems keyword (true by default). unicode : calculate correct length of strings with unicode pairs (true by default). Pass false to use .length of strings that is faster, but gives \"incorrect\" lengths of strings with unicode pairs - each unicode pair is counted as two characters. format : formats validation mode ('fast' by default). Pass 'full' for more correct and slow validation or false not to validate formats at all. E.g., 25:00:00 and 2015/14/33 will be invalid time and date in 'full' mode but it will be valid in 'fast' mode. formats : an object with custom formats. Keys and values will be passed to addFormat method. unknownFormats : handling of unknown formats. Option values: true (will be default in 5.0.0) - if the unknown format is encountered the exception is thrown during schema compilation. If format keyword value is v5 $data reference and it is unknown the validation will fail. [String] - an array of unknown format names that will be ignored. This option can be used to allow usage of third party schemas with format(s) for which you don't have definitions, but still fail if some other unknown format is used. If format keyword value is v5 $data reference and it is not in this array the validation will fail. \"ignore\" (default now) - to log warning during schema compilation and always pass validation. This option is not recommended, as it allows to mistype format name. This behaviour is required by JSON-schema specification. schemas : an array or object of schemas that will be added to the instance. If the order is important, pass array. In this case schemas must have IDs in them. Otherwise the object can be passed - addSchema(value, key) will be called for each schema in this object.","title":"Validation and reporting options"},{"location":"node_modules/ajv/#referenced-schema-options","text":"missingRefs : handling of missing referenced schemas. Option values: true (default) - if the reference cannot be resolved during compilation the exception is thrown. The thrown error has properties missingRef (with hash fragment) and missingSchema (without it). Both properties are resolved relative to the current base id (usually schema id, unless it was substituted). \"ignore\" - to log error during compilation and always pass validation. \"fail\" - to log error and successfully compile schema but fail validation if this rule is checked. extendRefs : validation of other keywords when $ref is present in the schema. Option values: true (default) - validate all keywords in the schemas with $ref . \"ignore\" - when $ref is used other keywords are ignored (as per JSON Reference standard). A warning will be logged during the schema compilation. \"fail\" - if other validation keywords are used together with $ref the exception will be throw when the schema is compiled. loadSchema : asynchronous function that will be used to load remote schemas when the method compileAsync is used and some reference is missing (option missingRefs should NOT be 'fail' or 'ignore'). This function should accept 2 parameters: remote schema uri and node-style callback. See example in Asynchronous compilation .","title":"Referenced schema options"},{"location":"node_modules/ajv/#options-to-modify-validated-data","text":"removeAdditional : remove additional properties - see example in Filtering data . This option is not used if schema is added with addMetaSchema method. Option values: false (default) - not to remove additional properties \"all\" - all additional properties are removed, regardless of additionalProperties keyword in schema (and no validation is made for them). true - only additional properties with additionalProperties keyword equal to false are removed. \"failing\" - additional properties that fail schema validation will be removed (where additionalProperties keyword is false or schema). useDefaults : replace missing properties and items with the values from corresponding default keywords. Default behaviour is to ignore default keywords. This option is not used if schema is added with addMetaSchema method. See examples in Assigning defaults . Option values: false (default) - do not use defaults true - insert defaults by value (safer and slower, object literal is used). \"shared\" - insert defaults by reference (faster). If the default is an object, it will be shared by all instances of validated data. If you modify the inserted default in the validated data, it will be modified in the schema as well. coerceTypes : change data type of data to match type keyword. See the example in Coercing data types and coercion rules . Option values: false (default) - no type coercion. true - coerce scalar data types. \"array\" - in addition to coercions between scalar types, coerce scalar data to an array with one element and vice versa (as required by the schema).","title":"Options to modify validated data"},{"location":"node_modules/ajv/#asynchronous-validation-options","text":"async : determines how Ajv compiles asynchronous schemas (see Asynchronous validation ) to functions. Option values: \"*\" / \"co*\" - compile to generator function (\"co*\" - wrapped with co.wrap ). If generators are not supported and you don't provide transpile option, the exception will be thrown when Ajv instance is created. \"es7\" - compile to es7 async function. Unless your platform supports them you need to provide transpile option. Currently only MS Edge 13 with flag supports es7 async functions according to compatibility table ). true - if transpile option is not passed Ajv will choose the first supported/installed async/transpile modes in this order: \"co \" (native generator with co.wrap), \"es7\"/\"nodent\", \"co \"/\"regenerator\" during the creation of the Ajv instance. If none of the options is available the exception will be thrown. undefined - Ajv will choose the first available async mode in the same way as with true option but when the first asynchronous schema is compiled. transpile : determines whether Ajv transpiles compiled asynchronous validation function. Option values: \"nodent\" - transpile with nodent . If nodent is not installed, the exception will be thrown. nodent can only transpile es7 async functions; it will enforce this mode. \"regenerator\" - transpile with regenerator . If regenerator is not installed, the exception will be thrown. a function - this function should accept the code of validation function as a string and return transpiled code. This option allows you to use any other transpiler you prefer.","title":"Asynchronous validation options"},{"location":"node_modules/ajv/#advanced-options","text":"meta : add meta-schema so it can be used by other schemas (true by default). With option v5: true v5 meta-schema will be added as well. If an object is passed, it will be used as the default meta-schema for schemas that have no $schema keyword. This default meta-schema MUST have $schema keyword. validateSchema : validate added/compiled schemas against meta-schema (true by default). $schema property in the schema can either be http://json-schema.org/schema or http://json-schema.org/draft-04/schema or absent (draft-4 meta-schema will be used) or can be a reference to the schema previously added with addMetaSchema method. Option values: true (default) - if the validation fails, throw the exception. \"log\" - if the validation fails, log error. false - skip schema validation. addUsedSchema : by default methods compile and validate add schemas to the instance if they have id property that doesn't start with \"#\". If id is present and it is not unique the exception will be thrown. Set this option to false to skip adding schemas to the instance and the id uniqueness check when these methods are used. This option does not affect addSchema method. inlineRefs : Affects compilation of referenced schemas. Option values: true (default) - the referenced schemas that don't have refs in them are inlined, regardless of their size - that substantially improves performance at the cost of the bigger size of compiled schema functions. false - to not inline referenced schemas (they will be compiled as separate functions). integer number - to limit the maximum number of keywords of the schema that will be inlined. passContext : pass validation context to custom keyword functions. If this option is true and you pass some context to the compiled validation function with validate.call(context, data) , the context will be available as this in your custom keywords. By default this is Ajv instance. loopRequired : by default required keyword is compiled into a single expression (or a sequence of statements in allErrors mode). In case of a very large number of properties in this keyword it may result in a very big validation function. Pass integer to set the number of properties above which required keyword will be validated in a loop - smaller validation function size but also worse performance. ownProperties : by default ajv iterates over all enumerable object properties; when this option is true only own enumerable object properties (i.e. found directly on the object rather than on its prototype) are iterated. Contributed by @mbroadst. multipleOfPrecision : by default multipleOf keyword is validated by comparing the result of division with parseInt() of that result. It works for dividers that are bigger than 1. For small dividers such as 0.01 the result of the division is usually not integer (even when it should be integer, see issue #84 ). If you need to use fractional dividers set this option to some positive integer N to have multipleOf validated using this formula: Math.abs(Math.round(division) - division) < 1e-N (it is slower but allows for float arithmetics deviations). errorDataPath : set dataPath to point to 'object' (default) or to 'property' when validating keywords required , additionalProperties and dependencies . sourceCode : add sourceCode property to validating function (for debugging; this code can be different from the result of toString call). messages : Include human-readable messages in errors. true by default. false can be passed when custom messages are used (e.g. with ajv-i18n ). beautify : format the generated function with js-beautify (the validating function is generated without line-breaks). npm install js-beautify to use this option. true or js-beautify options can be passed. cache : an optional instance of cache to store compiled schemas using stable-stringified schema as a key. For example, set-associative cache sacjs can be used. If not passed then a simple hash is used which is good enough for the common use case (a limited number of statically defined schemas). Cache should have methods put(key, value) , get(key) , del(key) and clear() .","title":"Advanced options"},{"location":"node_modules/ajv/#validation-errors","text":"In case of validation failure Ajv assigns the array of errors to .errors property of validation function (or to .errors property of Ajv instance in case validate or validateSchema methods were called). In case of asynchronous validation the returned promise is rejected with the exception of the class Ajv.ValidationError that has .errors poperty.","title":"Validation errors"},{"location":"node_modules/ajv/#error-objects","text":"Each error is an object with the following properties: keyword : validation keyword. dataPath : the path to the part of the data that was validated. By default dataPath uses JavaScript property access notation (e.g., \".prop[1].subProp\" ). When the option jsonPointers is true (see Options ) dataPath will be set using JSON pointer standard (e.g., \"/prop/1/subProp\" ). schemaPath : the path (JSON-pointer as a URI fragment) to the schema of the keyword that failed validation. params : the object with the additional information about error that can be used to create custom error messages (e.g., using ajv-i18n package). See below for parameters set by all keywords. message : the standard error message (can be excluded with option messages set to false). schema : the schema of the keyword (added with verbose option). parentSchema : the schema containing the keyword (added with verbose option) data : the data validated by the keyword (added with verbose option).","title":"Error objects"},{"location":"node_modules/ajv/#error-parameters","text":"Properties of params object in errors depend on the keyword that failed validation. maxItems , minItems , maxLength , minLength , maxProperties , minProperties - property limit (number, the schema of the keyword). additionalItems - property limit (the maximum number of allowed items in case when items keyword is an array of schemas and additionalItems is false). additionalProperties - property additionalProperty (the property not used in properties and patternProperties keywords). patternGroups (with v5 option) - properties: pattern reason (\"minimum\"/\"maximum\"), limit (max/min allowed number of properties matching number) dependencies - properties: property (dependent property), missingProperty (required missing dependency - only the first one is reported currently) deps (required dependencies, comma separated list as a string), depsCount (the number of required dependedncies). format - property format (the schema of the keyword). maximum , minimum - properties: limit (number, the schema of the keyword), exclusive (boolean, the schema of exclusiveMaximum or exclusiveMinimum ), comparison (string, comparison operation to compare the data to the limit, with the data on the left and the limit on the right; can be \"<\", \"<=\", \">\", \">=\") multipleOf - property multipleOf (the schema of the keyword) pattern - property pattern (the schema of the keyword) required - property missingProperty (required property that is missing). patternRequired (with v5 option) - property missingPattern (required pattern that did not match any property). type - property type (required type(s), a string, can be a comma-separated list) uniqueItems - properties i and j (indices of duplicate items). enum - property allowedValues pointing to the array of values (the schema of the keyword). $ref - property ref with the referenced schema URI. custom keywords (in case keyword definition doesn't create errors) - property keyword (the keyword name).","title":"Error parameters"},{"location":"node_modules/ajv/#related-packages","text":"ajv-cli - command line interface for Ajv ajv-i18n - internationalised error messages ajv-merge-patch - keywords $merge and $patch from v5 proposals. ajv-keywords - several custom keywords that can be used with Ajv (typeof, instanceof, range, propertyNames)","title":"Related packages"},{"location":"node_modules/ajv/#some-packages-using-ajv","text":"webpack - a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser jsonscript-js - the interpreter for JSONScript - scripted processing of existing endpoints and services osprey-method-handler - Express middleware for validating requests and responses based on a RAML method object, used in osprey - validating API proxy generated from a RAML definition har-validator - HTTP Archive (HAR) validator jsoneditor - a web-based tool to view, edit, format, and validate JSON http://jsoneditoronline.org JSON Schema Lint - a web tool to validate JSON/YAML document against a single JSON-schema http://jsonschemalint.com objection - SQL-friendly ORM for node.js table - formats data into a string table ripple-lib - a JavaScript API for interacting with Ripple in Node.js and the browser restbase - distributed storage with REST API & dispatcher for backend services built to provide a low-latency & high-throughput API for Wikipedia / Wikimedia content hippie-swagger - Hippie wrapper that provides end to end API testing with swagger validation react-form-controlled - React controlled form components with validation rabbitmq-schema - a schema definition module for RabbitMQ graphs and messages @query/schema - stream filtering with a URI-safe query syntax parsing to JSON Schema chai-ajv-json-schema - chai plugin to us JSON-schema with expect in mocha tests grunt-jsonschema-ajv - Grunt plugin for validating files against JSON-Schema extract-text-webpack-plugin - extract text from bundle into a file electron-builder - a solution to package and build a ready for distribution Electron app addons-linter - Mozilla Add-ons Linter gh-pages-generator - multi-page site generator converting markdown files to GitHub pages","title":"Some packages using Ajv"},{"location":"node_modules/ajv/#tests","text":"npm install git submodule update --init npm test","title":"Tests"},{"location":"node_modules/ajv/#contributing","text":"All validation functions are generated using doT templates in dot folder. Templates are precompiled so doT is not a run-time dependency. npm run build - compiles templates to dotjs folder. npm run watch - automatically compiles templates when files in dot folder change Please see Contributing guidelines","title":"Contributing"},{"location":"node_modules/ajv/#changes-history","text":"See https://github.com/epoberezkin/ajv/releases Please note : Changes in version 5.0.1-beta . Changes in version 4.6.0 . Changes in version 4.0.0 . Changes in version 3.0.0 . Changes in version 2.0.0 .","title":"Changes history"},{"location":"node_modules/ajv/#license","text":"MIT","title":"License"},{"location":"node_modules/ajv/lib/dotjs/","text":"These files are compiled dot templates from dot folder. Do NOT edit them directly, edit the templates and run npm run build from main ajv folder.","title":"Index"},{"location":"node_modules/argparse/","text":"argparse CLI arguments parser for node.js. Javascript port of python's argparse module (original version 3.2). That's a full port, except some very rare options, recorded in issue tracker. NB. Difference with original. Method names changed to camelCase. See generated docs . Use defaultValue instead of default . Use argparse.Const.REMAINDER instead of argparse.REMAINDER , and similarly for constant values OPTIONAL , ZERO_OR_MORE , and ONE_OR_MORE (aliases for nargs values '?' , '*' , '+' , respectively), and SUPPRESS . Example test.js file: #!/usr/bin/env node 'use strict'; var ArgumentParser = require('../lib/argparse').ArgumentParser; var parser = new ArgumentParser({ version: '0.0.1', addHelp:true, description: 'Argparse example' }); parser.addArgument( [ '-f', '--foo' ], { help: 'foo bar' } ); parser.addArgument( [ '-b', '--bar' ], { help: 'bar foo' } ); parser.addArgument( '--baz', { help: 'baz bar' } ); var args = parser.parseArgs(); console.dir(args); Display help: $ ./test.js -h usage: example.js [-h] [-v] [-f FOO] [-b BAR] [--baz BAZ] Argparse example Optional arguments: -h, --help Show this help message and exit. -v, --version Show program's version number and exit. -f FOO, --foo FOO foo bar -b BAR, --bar BAR bar foo --baz BAZ baz bar Parse arguments: $ ./test.js -f=3 --bar=4 --baz 5 { foo: '3', bar: '4', baz: '5' } More examples . ArgumentParser objects new ArgumentParser({parameters hash}); Creates a new ArgumentParser object. Supported params: description - Text to display before the argument help. epilog - Text to display after the argument help. addHelp - Add a -h/\u2013help option to the parser. (default: true) argumentDefault - Set the global default value for arguments. (default: null) parents - A list of ArgumentParser objects whose arguments should also be included. prefixChars - The set of characters that prefix optional arguments. (default: \u2018-\u2018) formatterClass - A class for customizing the help output. prog - The name of the program (default: path.basename(process.argv[1]) ) usage - The string describing the program usage (default: generated) conflictHandler - Usually unnecessary, defines strategy for resolving conflicting optionals. Not supported yet fromfilePrefixChars - The set of characters that prefix files from which additional arguments should be read. Details in original ArgumentParser guide addArgument() method ArgumentParser.addArgument(name or flag or [name] or [flags...], {options}) Defines how a single command-line argument should be parsed. name or flag or [name] or [flags...] - Either a positional name (e.g., 'foo' ), a single option (e.g., '-f' or '--foo' ), an array of a single positional name (e.g., ['foo'] ), or an array of options (e.g., ['-f', '--foo'] ). Options: action - The basic type of action to be taken when this argument is encountered at the command line. nargs - The number of command-line arguments that should be consumed. constant - A constant value required by some action and nargs selections. defaultValue - The value produced if the argument is absent from the command line. type - The type to which the command-line argument should be converted. choices - A container of the allowable values for the argument. required - Whether or not the command-line option may be omitted (optionals only). help - A brief description of what the argument does. metavar - A name for the argument in usage messages. dest - The name of the attribute to be added to the object returned by parseArgs(). Details in original add_argument guide Action (some details) ArgumentParser objects associate command-line arguments with actions. These actions can do just about anything with the command-line arguments associated with them, though most actions simply add an attribute to the object returned by parseArgs(). The action keyword argument specifies how the command-line arguments should be handled. The supported actions are: store - Just stores the argument\u2019s value. This is the default action. storeConst - Stores value, specified by the const keyword argument. (Note that the const keyword argument defaults to the rather unhelpful None.) The 'storeConst' action is most commonly used with optional arguments, that specify some sort of flag. storeTrue and storeFalse - Stores values True and False respectively. These are special cases of 'storeConst'. append - Stores a list, and appends each argument value to the list. This is useful to allow an option to be specified multiple times. appendConst - Stores a list, and appends value, specified by the const keyword argument to the list. (Note, that the const keyword argument defaults is None.) The 'appendConst' action is typically used when multiple arguments need to store constants to the same list. count - Counts the number of times a keyword argument occurs. For example, used for increasing verbosity levels. help - Prints a complete help message for all the options in the current parser and then exits. By default a help action is automatically added to the parser. See ArgumentParser for details of how the output is created. version - Prints version information and exit. Expects a version= keyword argument in the addArgument() call. Details in original action guide Sub-commands ArgumentParser.addSubparsers() Many programs split their functionality into a number of sub-commands, for example, the svn program can invoke sub-commands like svn checkout , svn update , and svn commit . Splitting up functionality this way can be a particularly good idea when a program performs several different functions which require different kinds of command-line arguments. ArgumentParser supports creation of such sub-commands with addSubparsers() method. The addSubparsers() method is normally called with no arguments and returns an special action object. This object has a single method addParser() , which takes a command name and any ArgumentParser constructor arguments, and returns an ArgumentParser object that can be modified as usual. Example: sub_commands.js #!/usr/bin/env node 'use strict'; var ArgumentParser = require('../lib/argparse').ArgumentParser; var parser = new ArgumentParser({ version: '0.0.1', addHelp:true, description: 'Argparse examples: sub-commands', }); var subparsers = parser.addSubparsers({ title:'subcommands', dest:\"subcommand_name\" }); var bar = subparsers.addParser('c1', {addHelp:true}); bar.addArgument( [ '-f', '--foo' ], { action: 'store', help: 'foo3 bar3' } ); var bar = subparsers.addParser( 'c2', {aliases:['co'], addHelp:true} ); bar.addArgument( [ '-b', '--bar' ], { action: 'store', type: 'int', help: 'foo3 bar3' } ); var args = parser.parseArgs(); console.dir(args); Details in original sub-commands guide Contributors Eugene Shkuropat Paul Jacobson others License Copyright (c) 2012 Vitaly Puzrin . Released under the MIT license. See LICENSE for details.","title":"argparse"},{"location":"node_modules/argparse/#argparse","text":"CLI arguments parser for node.js. Javascript port of python's argparse module (original version 3.2). That's a full port, except some very rare options, recorded in issue tracker. NB. Difference with original. Method names changed to camelCase. See generated docs . Use defaultValue instead of default . Use argparse.Const.REMAINDER instead of argparse.REMAINDER , and similarly for constant values OPTIONAL , ZERO_OR_MORE , and ONE_OR_MORE (aliases for nargs values '?' , '*' , '+' , respectively), and SUPPRESS .","title":"argparse"},{"location":"node_modules/argparse/#example","text":"test.js file: #!/usr/bin/env node 'use strict'; var ArgumentParser = require('../lib/argparse').ArgumentParser; var parser = new ArgumentParser({ version: '0.0.1', addHelp:true, description: 'Argparse example' }); parser.addArgument( [ '-f', '--foo' ], { help: 'foo bar' } ); parser.addArgument( [ '-b', '--bar' ], { help: 'bar foo' } ); parser.addArgument( '--baz', { help: 'baz bar' } ); var args = parser.parseArgs(); console.dir(args); Display help: $ ./test.js -h usage: example.js [-h] [-v] [-f FOO] [-b BAR] [--baz BAZ] Argparse example Optional arguments: -h, --help Show this help message and exit. -v, --version Show program's version number and exit. -f FOO, --foo FOO foo bar -b BAR, --bar BAR bar foo --baz BAZ baz bar Parse arguments: $ ./test.js -f=3 --bar=4 --baz 5 { foo: '3', bar: '4', baz: '5' } More examples .","title":"Example"},{"location":"node_modules/argparse/#argumentparser-objects","text":"new ArgumentParser({parameters hash}); Creates a new ArgumentParser object. Supported params: description - Text to display before the argument help. epilog - Text to display after the argument help. addHelp - Add a -h/\u2013help option to the parser. (default: true) argumentDefault - Set the global default value for arguments. (default: null) parents - A list of ArgumentParser objects whose arguments should also be included. prefixChars - The set of characters that prefix optional arguments. (default: \u2018-\u2018) formatterClass - A class for customizing the help output. prog - The name of the program (default: path.basename(process.argv[1]) ) usage - The string describing the program usage (default: generated) conflictHandler - Usually unnecessary, defines strategy for resolving conflicting optionals. Not supported yet fromfilePrefixChars - The set of characters that prefix files from which additional arguments should be read. Details in original ArgumentParser guide","title":"ArgumentParser objects"},{"location":"node_modules/argparse/#addargument-method","text":"ArgumentParser.addArgument(name or flag or [name] or [flags...], {options}) Defines how a single command-line argument should be parsed. name or flag or [name] or [flags...] - Either a positional name (e.g., 'foo' ), a single option (e.g., '-f' or '--foo' ), an array of a single positional name (e.g., ['foo'] ), or an array of options (e.g., ['-f', '--foo'] ). Options: action - The basic type of action to be taken when this argument is encountered at the command line. nargs - The number of command-line arguments that should be consumed. constant - A constant value required by some action and nargs selections. defaultValue - The value produced if the argument is absent from the command line. type - The type to which the command-line argument should be converted. choices - A container of the allowable values for the argument. required - Whether or not the command-line option may be omitted (optionals only). help - A brief description of what the argument does. metavar - A name for the argument in usage messages. dest - The name of the attribute to be added to the object returned by parseArgs(). Details in original add_argument guide","title":"addArgument() method"},{"location":"node_modules/argparse/#action-some-details","text":"ArgumentParser objects associate command-line arguments with actions. These actions can do just about anything with the command-line arguments associated with them, though most actions simply add an attribute to the object returned by parseArgs(). The action keyword argument specifies how the command-line arguments should be handled. The supported actions are: store - Just stores the argument\u2019s value. This is the default action. storeConst - Stores value, specified by the const keyword argument. (Note that the const keyword argument defaults to the rather unhelpful None.) The 'storeConst' action is most commonly used with optional arguments, that specify some sort of flag. storeTrue and storeFalse - Stores values True and False respectively. These are special cases of 'storeConst'. append - Stores a list, and appends each argument value to the list. This is useful to allow an option to be specified multiple times. appendConst - Stores a list, and appends value, specified by the const keyword argument to the list. (Note, that the const keyword argument defaults is None.) The 'appendConst' action is typically used when multiple arguments need to store constants to the same list. count - Counts the number of times a keyword argument occurs. For example, used for increasing verbosity levels. help - Prints a complete help message for all the options in the current parser and then exits. By default a help action is automatically added to the parser. See ArgumentParser for details of how the output is created. version - Prints version information and exit. Expects a version= keyword argument in the addArgument() call. Details in original action guide","title":"Action (some details)"},{"location":"node_modules/argparse/#sub-commands","text":"ArgumentParser.addSubparsers() Many programs split their functionality into a number of sub-commands, for example, the svn program can invoke sub-commands like svn checkout , svn update , and svn commit . Splitting up functionality this way can be a particularly good idea when a program performs several different functions which require different kinds of command-line arguments. ArgumentParser supports creation of such sub-commands with addSubparsers() method. The addSubparsers() method is normally called with no arguments and returns an special action object. This object has a single method addParser() , which takes a command name and any ArgumentParser constructor arguments, and returns an ArgumentParser object that can be modified as usual. Example: sub_commands.js #!/usr/bin/env node 'use strict'; var ArgumentParser = require('../lib/argparse').ArgumentParser; var parser = new ArgumentParser({ version: '0.0.1', addHelp:true, description: 'Argparse examples: sub-commands', }); var subparsers = parser.addSubparsers({ title:'subcommands', dest:\"subcommand_name\" }); var bar = subparsers.addParser('c1', {addHelp:true}); bar.addArgument( [ '-f', '--foo' ], { action: 'store', help: 'foo3 bar3' } ); var bar = subparsers.addParser( 'c2', {aliases:['co'], addHelp:true} ); bar.addArgument( [ '-b', '--bar' ], { action: 'store', type: 'int', help: 'foo3 bar3' } ); var args = parser.parseArgs(); console.dir(args); Details in original sub-commands guide","title":"Sub-commands"},{"location":"node_modules/argparse/#contributors","text":"Eugene Shkuropat Paul Jacobson others","title":"Contributors"},{"location":"node_modules/argparse/#license","text":"Copyright (c) 2012 Vitaly Puzrin . Released under the MIT license. See LICENSE for details.","title":"License"},{"location":"node_modules/asn1/","text":"node-asn1 is a library for encoding and decoding ASN.1 datatypes in pure JS. Currently BER encoding is supported; at some point I'll likely have to do DER. Usage Mostly, if you're actually needing to read and write ASN.1, you probably don't need this readme to explain what and why. If you have no idea what ASN.1 is, see this: ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc The source is pretty much self-explanatory, and has read/write methods for the common types out there. Decoding The following reads an ASN.1 sequence with a boolean. var Ber = require('asn1').Ber; var reader = new Ber.Reader(Buffer.from([0x30, 0x03, 0x01, 0x01, 0xff])); reader.readSequence(); console.log('Sequence len: ' + reader.length); if (reader.peek() === Ber.Boolean) console.log(reader.readBoolean()); Encoding The following generates the same payload as above. var Ber = require('asn1').Ber; var writer = new Ber.Writer(); writer.startSequence(); writer.writeBoolean(true); writer.endSequence(); console.log(writer.buffer); Installation npm install asn1 License MIT. Bugs See https://github.com/joyent/node-asn1/issues .","title":"Index"},{"location":"node_modules/asn1/#usage","text":"Mostly, if you're actually needing to read and write ASN.1, you probably don't need this readme to explain what and why. If you have no idea what ASN.1 is, see this: ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc The source is pretty much self-explanatory, and has read/write methods for the common types out there.","title":"Usage"},{"location":"node_modules/asn1/#decoding","text":"The following reads an ASN.1 sequence with a boolean. var Ber = require('asn1').Ber; var reader = new Ber.Reader(Buffer.from([0x30, 0x03, 0x01, 0x01, 0xff])); reader.readSequence(); console.log('Sequence len: ' + reader.length); if (reader.peek() === Ber.Boolean) console.log(reader.readBoolean());","title":"Decoding"},{"location":"node_modules/asn1/#encoding","text":"The following generates the same payload as above. var Ber = require('asn1').Ber; var writer = new Ber.Writer(); writer.startSequence(); writer.writeBoolean(true); writer.endSequence(); console.log(writer.buffer);","title":"Encoding"},{"location":"node_modules/asn1/#installation","text":"npm install asn1","title":"Installation"},{"location":"node_modules/asn1/#license","text":"MIT.","title":"License"},{"location":"node_modules/asn1/#bugs","text":"See https://github.com/joyent/node-asn1/issues .","title":"Bugs"},{"location":"node_modules/assert-plus/","text":"assert-plus This library is a super small wrapper over node's assert module that has two things: (1) the ability to disable assertions with the environment variable NODE_NDEBUG, and (2) some API wrappers for argument testing. Like assert.string(myArg, 'myArg') . As a simple example, most of my code looks like this: var assert = require('assert-plus'); function fooAccount(options, callback) { assert.object(options, 'options'); assert.number(options.id, 'options.id'); assert.bool(options.isManager, 'options.isManager'); assert.string(options.name, 'options.name'); assert.arrayOfString(options.email, 'options.email'); assert.func(callback, 'callback'); // Do stuff callback(null, {}); } API All methods that aren't part of node's core assert API are simply assumed to take an argument, and then a string 'name' that's not a message; AssertionError will be thrown if the assertion fails with a message like: AssertionError: foo (string) is required at test (/home/mark/work/foo/foo.js:3:9) at Object. (/home/mark/work/foo/foo.js:15:1) at Module._compile (module.js:446:26) at Object..js (module.js:464:10) at Module.load (module.js:353:31) at Function._load (module.js:311:12) at Array.0 (module.js:484:10) at EventEmitter._tickCallback (node.js:190:38) from: function test(foo) { assert.string(foo, 'foo'); } There you go. You can check that arrays are of a homogeneous type with Arrayof$Type : function test(foo) { assert.arrayOfString(foo, 'foo'); } You can assert IFF an argument is not undefined (i.e., an optional arg): assert.optionalString(foo, 'foo'); Lastly, you can opt-out of assertion checking altogether by setting the environment variable NODE_NDEBUG=1 . This is pseudo-useful if you have lots of assertions, and don't want to pay typeof () taxes to v8 in production. Be advised: The standard functions re-exported from assert are also disabled in assert-plus if NDEBUG is specified. Using them directly from the assert module avoids this behavior. The complete list of APIs is: assert.array assert.bool assert.buffer assert.func assert.number assert.object assert.string assert.stream assert.date assert.regex assert.uuid assert.arrayOfArray assert.arrayOfBool assert.arrayOfBuffer assert.arrayOfFunc assert.arrayOfNumber assert.arrayOfObject assert.arrayOfString assert.arrayOfStream assert.arrayOfDate assert.arrayOfUuid assert.optionalArray assert.optionalBool assert.optionalBuffer assert.optionalFunc assert.optionalNumber assert.optionalObject assert.optionalString assert.optionalStream assert.optionalDate assert.optionalUuid assert.optionalArrayOfArray assert.optionalArrayOfBool assert.optionalArrayOfBuffer assert.optionalArrayOfFunc assert.optionalArrayOfNumber assert.optionalArrayOfObject assert.optionalArrayOfString assert.optionalArrayOfStream assert.optionalArrayOfDate assert.optionalArrayOfUuid assert.AssertionError assert.fail assert.ok assert.equal assert.notEqual assert.deepEqual assert.notDeepEqual assert.strictEqual assert.notStrictEqual assert.throws assert.doesNotThrow assert.ifError Installation npm install assert-plus License The MIT License (MIT) Copyright (c) 2012 Mark Cavage Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Bugs See https://github.com/mcavage/node-assert-plus/issues .","title":"assert-plus"},{"location":"node_modules/assert-plus/#assert-plus","text":"This library is a super small wrapper over node's assert module that has two things: (1) the ability to disable assertions with the environment variable NODE_NDEBUG, and (2) some API wrappers for argument testing. Like assert.string(myArg, 'myArg') . As a simple example, most of my code looks like this: var assert = require('assert-plus'); function fooAccount(options, callback) { assert.object(options, 'options'); assert.number(options.id, 'options.id'); assert.bool(options.isManager, 'options.isManager'); assert.string(options.name, 'options.name'); assert.arrayOfString(options.email, 'options.email'); assert.func(callback, 'callback'); // Do stuff callback(null, {}); }","title":"assert-plus"},{"location":"node_modules/assert-plus/#api","text":"All methods that aren't part of node's core assert API are simply assumed to take an argument, and then a string 'name' that's not a message; AssertionError will be thrown if the assertion fails with a message like: AssertionError: foo (string) is required at test (/home/mark/work/foo/foo.js:3:9) at Object. (/home/mark/work/foo/foo.js:15:1) at Module._compile (module.js:446:26) at Object..js (module.js:464:10) at Module.load (module.js:353:31) at Function._load (module.js:311:12) at Array.0 (module.js:484:10) at EventEmitter._tickCallback (node.js:190:38) from: function test(foo) { assert.string(foo, 'foo'); } There you go. You can check that arrays are of a homogeneous type with Arrayof$Type : function test(foo) { assert.arrayOfString(foo, 'foo'); } You can assert IFF an argument is not undefined (i.e., an optional arg): assert.optionalString(foo, 'foo'); Lastly, you can opt-out of assertion checking altogether by setting the environment variable NODE_NDEBUG=1 . This is pseudo-useful if you have lots of assertions, and don't want to pay typeof () taxes to v8 in production. Be advised: The standard functions re-exported from assert are also disabled in assert-plus if NDEBUG is specified. Using them directly from the assert module avoids this behavior. The complete list of APIs is: assert.array assert.bool assert.buffer assert.func assert.number assert.object assert.string assert.stream assert.date assert.regex assert.uuid assert.arrayOfArray assert.arrayOfBool assert.arrayOfBuffer assert.arrayOfFunc assert.arrayOfNumber assert.arrayOfObject assert.arrayOfString assert.arrayOfStream assert.arrayOfDate assert.arrayOfUuid assert.optionalArray assert.optionalBool assert.optionalBuffer assert.optionalFunc assert.optionalNumber assert.optionalObject assert.optionalString assert.optionalStream assert.optionalDate assert.optionalUuid assert.optionalArrayOfArray assert.optionalArrayOfBool assert.optionalArrayOfBuffer assert.optionalArrayOfFunc assert.optionalArrayOfNumber assert.optionalArrayOfObject assert.optionalArrayOfString assert.optionalArrayOfStream assert.optionalArrayOfDate assert.optionalArrayOfUuid assert.AssertionError assert.fail assert.ok assert.equal assert.notEqual assert.deepEqual assert.notDeepEqual assert.strictEqual assert.notStrictEqual assert.throws assert.doesNotThrow assert.ifError","title":"API"},{"location":"node_modules/assert-plus/#installation","text":"npm install assert-plus","title":"Installation"},{"location":"node_modules/assert-plus/#license","text":"The MIT License (MIT) Copyright (c) 2012 Mark Cavage Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","title":"License"},{"location":"node_modules/assert-plus/#bugs","text":"See https://github.com/mcavage/node-assert-plus/issues .","title":"Bugs"},{"location":"node_modules/assert-plus/CHANGES/","text":"assert-plus Changelog 0.2.0 Fix assert.object(null) so it throws Fix optional/arrayOf exports for non-type-of asserts Add optiona/arrayOf exports for Stream/Date/Regex/uuid Add basic unit test coverage","title":"assert-plus Changelog"},{"location":"node_modules/assert-plus/CHANGES/#assert-plus-changelog","text":"","title":"assert-plus Changelog"},{"location":"node_modules/assert-plus/CHANGES/#020","text":"Fix assert.object(null) so it throws Fix optional/arrayOf exports for non-type-of asserts Add optiona/arrayOf exports for Stream/Date/Regex/uuid Add basic unit test coverage","title":"0.2.0"},{"location":"node_modules/async/","text":"Async.js Async is a utility module which provides straight-forward, powerful functions for working with asynchronous JavaScript. Although originally designed for use with Node.js and installable via npm install async , it can also be used directly in the browser. Async is also installable via: bower : bower install async component : component install caolan/async jam : jam install async spm : spm install async Async provides around 20 functions that include the usual 'functional' suspects ( map , reduce , filter , each \u2026) as well as some common patterns for asynchronous control flow ( parallel , series , waterfall \u2026). All these functions assume you follow the Node.js convention of providing a single callback as the last argument of your async function. Quick Examples async.map(['file1','file2','file3'], fs.stat, function(err, results){ // results is now an array of stats for each file }); async.filter(['file1','file2','file3'], fs.exists, function(results){ // results now equals an array of the existing files }); async.parallel([ function(){ ... }, function(){ ... } ], callback); async.series([ function(){ ... }, function(){ ... } ]); There are many more functions available so take a look at the docs below for a full list. This module aims to be comprehensive, so if you feel anything is missing please create a GitHub issue for it. Common Pitfalls (StackOverflow) Synchronous iteration functions If you get an error like RangeError: Maximum call stack size exceeded. or other stack overflow issues when using async, you are likely using a synchronous iterator. By synchronous we mean a function that calls its callback on the same tick in the javascript event loop, without doing any I/O or using any timers. Calling many callbacks iteratively will quickly overflow the stack. If you run into this issue, just defer your callback with async.setImmediate to start a new call stack on the next tick of the event loop. This can also arise by accident if you callback early in certain cases: async.eachSeries(hugeArray, function iterator(item, callback) { if (inCache(item)) { callback(null, cache[item]); // if many items are cached, you'll overflow } else { doSomeIO(item, callback); } }, function done() { //... }); Just change it to: async.eachSeries(hugeArray, function iterator(item, callback) { if (inCache(item)) { async.setImmediate(function () { callback(null, cache[item]); }); } else { doSomeIO(item, callback); //... Async guards against synchronous functions in some, but not all, cases. If you are still running into stack overflows, you can defer as suggested above, or wrap functions with async.ensureAsync Functions that are asynchronous by their nature do not have this problem and don't need the extra callback deferral. If JavaScript's event loop is still a bit nebulous, check out this article or this talk for more detailed information about how it works. Multiple callbacks Make sure to always return when calling a callback early, otherwise you will cause multiple callbacks and unpredictable behavior in many cases. async.waterfall([ function (callback) { getSomething(options, function (err, result) { if (err) { callback(new Error(\"failed getting something:\" + err.message)); // we should return here } // since we did not return, this callback still will be called and // `processData` will be called twice callback(null, result); }); }, processData ], done) It is always good practice to return callback(err, result) whenever a callback call is not the last statement of a function. Binding a context to an iterator This section is really about bind , not about async . If you are wondering how to make async execute your iterators in a given context, or are confused as to why a method of another library isn't working as an iterator, study this example: // Here is a simple object with an (unnecessarily roundabout) squaring method var AsyncSquaringLibrary = { squareExponent: 2, square: function(number, callback){ var result = Math.pow(number, this.squareExponent); setTimeout(function(){ callback(null, result); }, 200); } }; async.map([1, 2, 3], AsyncSquaringLibrary.square, function(err, result){ // result is [NaN, NaN, NaN] // This fails because the `this.squareExponent` expression in the square // function is not evaluated in the context of AsyncSquaringLibrary, and is // therefore undefined. }); async.map([1, 2, 3], AsyncSquaringLibrary.square.bind(AsyncSquaringLibrary), function(err, result){ // result is [1, 4, 9] // With the help of bind we can attach a context to the iterator before // passing it to async. Now the square function will be executed in its // 'home' AsyncSquaringLibrary context and the value of `this.squareExponent` // will be as expected. }); Download The source is available for download from GitHub . Alternatively, you can install using Node Package Manager ( npm ): npm install async As well as using Bower: bower install async Development: async.js - 29.6kb Uncompressed In the Browser So far it's been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. Usage: Documentation Some functions are also available in the following forms: * Series - the same as but runs only a single async operation at a time * Limit - the same as but runs a maximum of limit async operations at a time Collections each , eachSeries , eachLimit forEachOf , forEachOfSeries , forEachOfLimit map , mapSeries , mapLimit filter , filterSeries , filterLimit reject , rejectSeries , rejectLimit reduce , reduceRight detect , detectSeries , detectLimit sortBy some , someLimit every , everyLimit concat , concatSeries Control Flow series parallel , parallelLimit whilst , doWhilst until , doUntil during , doDuring forever waterfall compose seq applyEach , applyEachSeries queue , priorityQueue cargo auto retry iterator times , timesSeries , timesLimit Utils apply nextTick memoize unmemoize ensureAsync constant asyncify wrapSync log dir noConflict Collections each(arr, iterator, [callback]) Applies the function iterator to each item in arr , in parallel. The iterator is called with an item from the list, and a callback for when it has finished. If the iterator passes an error to its callback , the main callback (for the each function) is immediately called with the error. Note, that since this function applies iterator to each item in parallel, there is no guarantee that the iterator functions will complete in order. Arguments arr - An array to iterate over. iterator(item, callback) - A function to apply to each item in arr . The iterator is passed a callback(err) which must be called once it has completed. If no error has occurred, the callback should be run without arguments or with an explicit null argument. The array index is not passed to the iterator. If you need the index, use forEachOf . callback(err) - Optional A callback which is called when all iterator functions have finished, or an error occurs. Examples // assuming openFiles is an array of file names and saveFile is a function // to save the modified contents of that file: async.each(openFiles, saveFile, function(err){ // if any of the saves produced an error, err would equal that error }); // assuming openFiles is an array of file names async.each(openFiles, function(file, callback) { // Perform operation on file here. console.log('Processing file ' + file); if( file.length > 32 ) { console.log('This file name is too long'); callback('File name too long'); } else { // Do work to process file here console.log('File processed'); callback(); } }, function(err){ // if any of the file processing produced an error, err would equal that error if( err ) { // One of the iterations produced an error. // All processing will now stop. console.log('A file failed to process'); } else { console.log('All files have been processed successfully'); } }); Related eachSeries(arr, iterator, [callback]) eachLimit(arr, limit, iterator, [callback]) forEachOf(obj, iterator, [callback]) Like each , except that it iterates over objects, and passes the key as the second argument to the iterator. Arguments obj - An object or array to iterate over. iterator(item, key, callback) - A function to apply to each item in obj . The key is the item's key, or index in the case of an array. The iterator is passed a callback(err) which must be called once it has completed. If no error has occurred, the callback should be run without arguments or with an explicit null argument. callback(err) - Optional A callback which is called when all iterator functions have finished, or an error occurs. Example var obj = {dev: \"/dev.json\", test: \"/test.json\", prod: \"/prod.json\"}; var configs = {}; async.forEachOf(obj, function (value, key, callback) { fs.readFile(__dirname + value, \"utf8\", function (err, data) { if (err) return callback(err); try { configs[key] = JSON.parse(data); } catch (e) { return callback(e); } callback(); }) }, function (err) { if (err) console.error(err.message); // configs is now a map of JSON data doSomethingWith(configs); }) Related forEachOfSeries(obj, iterator, [callback]) forEachOfLimit(obj, limit, iterator, [callback]) map(arr, iterator, [callback]) Produces a new array of values by mapping each value in arr through the iterator function. The iterator is called with an item from arr and a callback for when it has finished processing. Each of these callback takes 2 arguments: an error , and the transformed item from arr . If iterator passes an error to its callback, the main callback (for the map function) is immediately called with the error. Note, that since this function applies the iterator to each item in parallel, there is no guarantee that the iterator functions will complete in order. However, the results array will be in the same order as the original arr . Arguments arr - An array to iterate over. iterator(item, callback) - A function to apply to each item in arr . The iterator is passed a callback(err, transformed) which must be called once it has completed with an error (which can be null ) and a transformed item. callback(err, results) - Optional A callback which is called when all iterator functions have finished, or an error occurs. Results is an array of the transformed items from the arr . Example async.map(['file1','file2','file3'], fs.stat, function(err, results){ // results is now an array of stats for each file }); Related * mapSeries(arr, iterator, [callback]) * mapLimit(arr, limit, iterator, [callback]) filter(arr, iterator, [callback]) Alias: select Returns a new array of all the values in arr which pass an async truth test. The callback for each iterator call only accepts a single argument of true or false ; it does not accept an error argument first! This is in-line with the way node libraries work with truth tests like fs.exists . This operation is performed in parallel, but the results array will be in the same order as the original. Arguments arr - An array to iterate over. iterator(item, callback) - A truth test to apply to each item in arr . The iterator is passed a callback(truthValue) , which must be called with a boolean argument once it has completed. callback(results) - Optional A callback which is called after all the iterator functions have finished. Example async.filter(['file1','file2','file3'], fs.exists, function(results){ // results now equals an array of the existing files }); Related filterSeries(arr, iterator, [callback]) filterLimit(arr, limit, iterator, [callback]) reject(arr, iterator, [callback]) The opposite of filter . Removes values that pass an async truth test. Related rejectSeries(arr, iterator, [callback]) rejectLimit(arr, limit, iterator, [callback]) reduce(arr, memo, iterator, [callback]) Aliases: inject , foldl Reduces arr into a single value using an async iterator to return each successive step. memo is the initial state of the reduction. This function only operates in series. For performance reasons, it may make sense to split a call to this function into a parallel map, and then use the normal Array.prototype.reduce on the results. This function is for situations where each step in the reduction needs to be async; if you can get the data before reducing it, then it's probably a good idea to do so. Arguments arr - An array to iterate over. memo - The initial state of the reduction. iterator(memo, item, callback) - A function applied to each item in the array to produce the next step in the reduction. The iterator is passed a callback(err, reduction) which accepts an optional error as its first argument, and the state of the reduction as the second. If an error is passed to the callback, the reduction is stopped and the main callback is immediately called with the error. callback(err, result) - Optional A callback which is called after all the iterator functions have finished. Result is the reduced value. Example async.reduce([1,2,3], 0, function(memo, item, callback){ // pointless async: process.nextTick(function(){ callback(null, memo + item) }); }, function(err, result){ // result is now equal to the last value of memo, which is 6 }); reduceRight(arr, memo, iterator, [callback]) Alias: foldr Same as reduce , only operates on arr in reverse order. detect(arr, iterator, [callback]) Returns the first value in arr that passes an async truth test. The iterator is applied in parallel, meaning the first iterator to return true will fire the detect callback with that result. That means the result might not be the first item in the original arr (in terms of order) that passes the test. If order within the original arr is important, then look at detectSeries . Arguments arr - An array to iterate over. iterator(item, callback) - A truth test to apply to each item in arr . The iterator is passed a callback(truthValue) which must be called with a boolean argument once it has completed. Note: this callback does not take an error as its first argument. callback(result) - Optional A callback which is called as soon as any iterator returns true , or after all the iterator functions have finished. Result will be the first item in the array that passes the truth test (iterator) or the value undefined if none passed. Note: this callback does not take an error as its first argument. Example async.detect(['file1','file2','file3'], fs.exists, function(result){ // result now equals the first file in the list that exists }); Related detectSeries(arr, iterator, [callback]) detectLimit(arr, limit, iterator, [callback]) sortBy(arr, iterator, [callback]) Sorts a list by the results of running each arr value through an async iterator . Arguments arr - An array to iterate over. iterator(item, callback) - A function to apply to each item in arr . The iterator is passed a callback(err, sortValue) which must be called once it has completed with an error (which can be null ) and a value to use as the sort criteria. callback(err, results) - Optional A callback which is called after all the iterator functions have finished, or an error occurs. Results is the items from the original arr sorted by the values returned by the iterator calls. Example async.sortBy(['file1','file2','file3'], function(file, callback){ fs.stat(file, function(err, stats){ callback(err, stats.mtime); }); }, function(err, results){ // results is now the original array of files sorted by // modified date }); Sort Order By modifying the callback parameter the sorting order can be influenced: //ascending order async.sortBy([1,9,3,5], function(x, callback){ callback(null, x); }, function(err,result){ //result callback } ); //descending order async.sortBy([1,9,3,5], function(x, callback){ callback(null, x*-1); //<- x*-1 instead of x, turns the order around }, function(err,result){ //result callback } ); some(arr, iterator, [callback]) Alias: any Returns true if at least one element in the arr satisfies an async test. The callback for each iterator call only accepts a single argument of true or false ; it does not accept an error argument first! This is in-line with the way node libraries work with truth tests like fs.exists . Once any iterator call returns true , the main callback is immediately called. Arguments arr - An array to iterate over. iterator(item, callback) - A truth test to apply to each item in the array in parallel. The iterator is passed a `callback(truthValue)`` which must be called with a boolean argument once it has completed. callback(result) - Optional A callback which is called as soon as any iterator returns true , or after all the iterator functions have finished. Result will be either true or false depending on the values of the async tests. Note: the callbacks do not take an error as their first argument. Example async.some(['file1','file2','file3'], fs.exists, function(result){ // if result is true then at least one of the files exists }); Related someLimit(arr, limit, iterator, callback) every(arr, iterator, [callback]) Alias: all Returns true if every element in arr satisfies an async test. The callback for each iterator call only accepts a single argument of true or false ; it does not accept an error argument first! This is in-line with the way node libraries work with truth tests like fs.exists . Arguments arr - An array to iterate over. iterator(item, callback) - A truth test to apply to each item in the array in parallel. The iterator is passed a callback(truthValue) which must be called with a boolean argument once it has completed. callback(result) - Optional A callback which is called as soon as any iterator returns false , or after all the iterator functions have finished. Result will be either true or false depending on the values of the async tests. Note: the callbacks do not take an error as their first argument. Example async.every(['file1','file2','file3'], fs.exists, function(result){ // if result is true then every file exists }); Related everyLimit(arr, limit, iterator, callback) concat(arr, iterator, [callback]) Applies iterator to each item in arr , concatenating the results. Returns the concatenated list. The iterator s are called in parallel, and the results are concatenated as they return. There is no guarantee that the results array will be returned in the original order of arr passed to the iterator function. Arguments arr - An array to iterate over. iterator(item, callback) - A function to apply to each item in arr . The iterator is passed a callback(err, results) which must be called once it has completed with an error (which can be null ) and an array of results. callback(err, results) - Optional A callback which is called after all the iterator functions have finished, or an error occurs. Results is an array containing the concatenated results of the iterator function. Example async.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){ // files is now a list of filenames that exist in the 3 directories }); Related concatSeries(arr, iterator, [callback]) Control Flow series(tasks, [callback]) Run the functions in the tasks array in series, each one running once the previous function has completed. If any functions in the series pass an error to its callback, no more functions are run, and callback is immediately called with the value of the error. Otherwise, callback receives an array of results when tasks have completed. It is also possible to use an object instead of an array. Each property will be run as a function, and the results will be passed to the final callback as an object instead of an array. This can be a more readable way of handling results from series . Note that while many implementations preserve the order of object properties, the ECMAScript Language Specification explicitly states that The mechanics and order of enumerating the properties is not specified. So if you rely on the order in which your series of functions are executed, and want this to work on all platforms, consider using an array. Arguments tasks - An array or object containing functions to run, each function is passed a callback(err, result) it must call on completion with an error err (which can be null ) and an optional result value. callback(err, results) - An optional callback to run once all the functions have completed. This function gets a results array (or object) containing all the result arguments passed to the task callbacks. Example async.series([ function(callback){ // do some stuff ... callback(null, 'one'); }, function(callback){ // do some more stuff ... callback(null, 'two'); } ], // optional callback function(err, results){ // results is now equal to ['one', 'two'] }); // an example using an object instead of an array async.series({ one: function(callback){ setTimeout(function(){ callback(null, 1); }, 200); }, two: function(callback){ setTimeout(function(){ callback(null, 2); }, 100); } }, function(err, results) { // results is now equal to: {one: 1, two: 2} }); parallel(tasks, [callback]) Run the tasks array of functions in parallel, without waiting until the previous function has completed. If any of the functions pass an error to its callback, the main callback is immediately called with the value of the error. Once the tasks have completed, the results are passed to the final callback as an array. Note: parallel is about kicking-off I/O tasks in parallel, not about parallel execution of code. If your tasks do not use any timers or perform any I/O, they will actually be executed in series. Any synchronous setup sections for each task will happen one after the other. JavaScript remains single-threaded. It is also possible to use an object instead of an array. Each property will be run as a function and the results will be passed to the final callback as an object instead of an array. This can be a more readable way of handling results from parallel . Arguments tasks - An array or object containing functions to run. Each function is passed a callback(err, result) which it must call on completion with an error err (which can be null ) and an optional result value. callback(err, results) - An optional callback to run once all the functions have completed successfully. This function gets a results array (or object) containing all the result arguments passed to the task callbacks. Example async.parallel([ function(callback){ setTimeout(function(){ callback(null, 'one'); }, 200); }, function(callback){ setTimeout(function(){ callback(null, 'two'); }, 100); } ], // optional callback function(err, results){ // the results array will equal ['one','two'] even though // the second function had a shorter timeout. }); // an example using an object instead of an array async.parallel({ one: function(callback){ setTimeout(function(){ callback(null, 1); }, 200); }, two: function(callback){ setTimeout(function(){ callback(null, 2); }, 100); } }, function(err, results) { // results is now equals to: {one: 1, two: 2} }); Related parallelLimit(tasks, limit, [callback]) whilst(test, fn, callback) Repeatedly call fn , while test returns true . Calls callback when stopped, or an error occurs. Arguments test() - synchronous truth test to perform before each execution of fn . fn(callback) - A function which is called each time test passes. The function is passed a callback(err) , which must be called once it has completed with an optional err argument. callback(err, [results]) - A callback which is called after the test function has failed and repeated execution of fn has stopped. callback will be passed an error and any arguments passed to the final fn 's callback. Example var count = 0; async.whilst( function () { return count < 5; }, function (callback) { count++; setTimeout(function () { callback(null, count); }, 1000); }, function (err, n) { // 5 seconds have passed, n = 5 } ); doWhilst(fn, test, callback) The post-check version of whilst . To reflect the difference in the order of operations, the arguments test and fn are switched. doWhilst is to whilst as do while is to while in plain JavaScript. until(test, fn, callback) Repeatedly call fn until test returns true . Calls callback when stopped, or an error occurs. callback will be passed an error and any arguments passed to the final fn 's callback. The inverse of whilst . doUntil(fn, test, callback) Like doWhilst , except the test is inverted. Note the argument ordering differs from until . during(test, fn, callback) Like whilst , except the test is an asynchronous function that is passed a callback in the form of function (err, truth) . If error is passed to test or fn , the main callback is immediately called with the value of the error. Example var count = 0; async.during( function (callback) { return callback(null, count < 5); }, function (callback) { count++; setTimeout(callback, 1000); }, function (err) { // 5 seconds have passed } ); doDuring(fn, test, callback) The post-check version of during . To reflect the difference in the order of operations, the arguments test and fn are switched. Also a version of doWhilst with asynchronous test function. forever(fn, [errback]) Calls the asynchronous function fn with a callback parameter that allows it to call itself again, in series, indefinitely. If an error is passed to the callback then errback is called with the error, and execution stops, otherwise it will never be called. async.forever( function(next) { // next is suitable for passing to things that need a callback(err [, whatever]); // it will result in this function being called again. }, function(err) { // if next is called with a value in its first parameter, it will appear // in here as 'err', and execution will stop. } ); waterfall(tasks, [callback]) Runs the tasks array of functions in series, each passing their results to the next in the array. However, if any of the tasks pass an error to their own callback, the next function is not executed, and the main callback is immediately called with the error. Arguments tasks - An array of functions to run, each function is passed a callback(err, result1, result2, ...) it must call on completion. The first argument is an error (which can be null ) and any further arguments will be passed as arguments in order to the next task. callback(err, [results]) - An optional callback to run once all the functions have completed. This will be passed the results of the last task's callback. Example async.waterfall([ function(callback) { callback(null, 'one', 'two'); }, function(arg1, arg2, callback) { // arg1 now equals 'one' and arg2 now equals 'two' callback(null, 'three'); }, function(arg1, callback) { // arg1 now equals 'three' callback(null, 'done'); } ], function (err, result) { // result now equals 'done' }); Or, with named functions: async.waterfall([ myFirstFunction, mySecondFunction, myLastFunction, ], function (err, result) { // result now equals 'done' }); function myFirstFunction(callback) { callback(null, 'one', 'two'); } function mySecondFunction(arg1, arg2, callback) { // arg1 now equals 'one' and arg2 now equals 'two' callback(null, 'three'); } function myLastFunction(arg1, callback) { // arg1 now equals 'three' callback(null, 'done'); } Or, if you need to pass any argument to the first function: async.waterfall([ async.apply(myFirstFunction, 'zero'), mySecondFunction, myLastFunction, ], function (err, result) { // result now equals 'done' }); function myFirstFunction(arg1, callback) { // arg1 now equals 'zero' callback(null, 'one', 'two'); } function mySecondFunction(arg1, arg2, callback) { // arg1 now equals 'one' and arg2 now equals 'two' callback(null, 'three'); } function myLastFunction(arg1, callback) { // arg1 now equals 'three' callback(null, 'done'); } compose(fn1, fn2...) Creates a function which is a composition of the passed asynchronous functions. Each function consumes the return value of the function that follows. Composing functions f() , g() , and h() would produce the result of f(g(h())) , only this version uses callbacks to obtain the return values. Each function is executed with the this binding of the composed function. Arguments functions... - the asynchronous functions to compose Example function add1(n, callback) { setTimeout(function () { callback(null, n + 1); }, 10); } function mul3(n, callback) { setTimeout(function () { callback(null, n * 3); }, 10); } var add1mul3 = async.compose(mul3, add1); add1mul3(4, function (err, result) { // result now equals 15 }); seq(fn1, fn2...) Version of the compose function that is more natural to read. Each function consumes the return value of the previous function. It is the equivalent of compose with the arguments reversed. Each function is executed with the this binding of the composed function. Arguments functions... - the asynchronous functions to compose Example // Requires lodash (or underscore), express3 and dresende's orm2. // Part of an app, that fetches cats of the logged user. // This example uses `seq` function to avoid overnesting and error // handling clutter. app.get('/cats', function(request, response) { var User = request.models.User; async.seq( _.bind(User.get, User), // 'User.get' has signature (id, callback(err, data)) function(user, fn) { user.getCats(fn); // 'getCats' has signature (callback(err, data)) } )(req.session.user_id, function (err, cats) { if (err) { console.error(err); response.json({ status: 'error', message: err.message }); } else { response.json({ status: 'ok', message: 'Cats found', data: cats }); } }); }); applyEach(fns, args..., callback) Applies the provided arguments to each function in the array, calling callback after all functions have completed. If you only provide the first argument, then it will return a function which lets you pass in the arguments as if it were a single function call. Arguments fns - the asynchronous functions to all call with the same arguments args... - any number of separate arguments to pass to the function callback - the final argument should be the callback, called when all functions have completed processing Example async.applyEach([enableSearch, updateSchema], 'bucket', callback); // partial application example: async.each( buckets, async.applyEach([enableSearch, updateSchema]), callback ); Related applyEachSeries(tasks, args..., [callback]) queue(worker, [concurrency]) Creates a queue object with the specified concurrency . Tasks added to the queue are processed in parallel (up to the concurrency limit). If all worker s are in progress, the task is queued until one becomes available. Once a worker completes a task , that task 's callback is called. Arguments worker(task, callback) - An asynchronous function for processing a queued task, which must call its callback(err) argument when finished, with an optional error as an argument. If you want to handle errors from an individual task, pass a callback to q.push() . concurrency - An integer for determining how many worker functions should be run in parallel. If omitted, the concurrency defaults to 1 . If the concurrency is 0 , an error is thrown. Queue objects The queue object returned by this function has the following properties and methods: length() - a function returning the number of items waiting to be processed. started - a function returning whether or not any items have been pushed and processed by the queue running() - a function returning the number of items currently being processed. workersList() - a function returning the array of items currently being processed. idle() - a function returning false if there are items waiting or being processed, or true if not. concurrency - an integer for determining how many worker functions should be run in parallel. This property can be changed after a queue is created to alter the concurrency on-the-fly. push(task, [callback]) - add a new task to the queue . Calls callback once the worker has finished processing the task. Instead of a single task, a tasks array can be submitted. The respective callback is used for every task in the list. unshift(task, [callback]) - add a new task to the front of the queue . saturated - a callback that is called when the queue length hits the concurrency limit, and further tasks will be queued. empty - a callback that is called when the last item from the queue is given to a worker . drain - a callback that is called when the last item from the queue has returned from the worker . paused - a boolean for determining whether the queue is in a paused state pause() - a function that pauses the processing of tasks until resume() is called. resume() - a function that resumes the processing of queued tasks when the queue is paused. kill() - a function that removes the drain callback and empties remaining tasks from the queue forcing it to go idle. Example // create a queue object with concurrency 2 var q = async.queue(function (task, callback) { console.log('hello ' + task.name); callback(); }, 2); // assign a callback q.drain = function() { console.log('all items have been processed'); } // add some items to the queue q.push({name: 'foo'}, function (err) { console.log('finished processing foo'); }); q.push({name: 'bar'}, function (err) { console.log('finished processing bar'); }); // add some items to the queue (batch-wise) q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) { console.log('finished processing item'); }); // add some items to the front of the queue q.unshift({name: 'bar'}, function (err) { console.log('finished processing bar'); }); priorityQueue(worker, concurrency) The same as queue only tasks are assigned a priority and completed in ascending priority order. There are two differences between queue and priorityQueue objects: push(task, priority, [callback]) - priority should be a number. If an array of tasks is given, all tasks will be assigned the same priority. The unshift method was removed. cargo(worker, [payload]) Creates a cargo object with the specified payload. Tasks added to the cargo will be processed altogether (up to the payload limit). If the worker is in progress, the task is queued until it becomes available. Once the worker has completed some tasks, each callback of those tasks is called. Check out these animations for how cargo and queue work. While queue passes only one task to one of a group of workers at a time, cargo passes an array of tasks to a single worker, repeating when the worker is finished. Arguments worker(tasks, callback) - An asynchronous function for processing an array of queued tasks, which must call its callback(err) argument when finished, with an optional err argument. payload - An optional integer for determining how many tasks should be processed per round; if omitted, the default is unlimited. Cargo objects The cargo object returned by this function has the following properties and methods: length() - A function returning the number of items waiting to be processed. payload - An integer for determining how many tasks should be process per round. This property can be changed after a cargo is created to alter the payload on-the-fly. push(task, [callback]) - Adds task to the queue . The callback is called once the worker has finished processing the task. Instead of a single task, an array of tasks can be submitted. The respective callback is used for every task in the list. saturated - A callback that is called when the queue.length() hits the concurrency and further tasks will be queued. empty - A callback that is called when the last item from the queue is given to a worker . drain - A callback that is called when the last item from the queue has returned from the worker . idle() , pause() , resume() , kill() - cargo inherits all of the same methods and event calbacks as queue Example // create a cargo object with payload 2 var cargo = async.cargo(function (tasks, callback) { for(var i=0; i var iterator2 = iterator(); 'one' node> var iterator3 = iterator2(); 'two' node> iterator3(); 'three' node> var nextfn = iterator2.next(); node> nextfn(); 'three' apply(function, arguments..) Creates a continuation function with some arguments already applied. Useful as a shorthand when combined with other control flow functions. Any arguments passed to the returned function are added to the arguments originally passed to apply. Arguments function - The function you want to eventually apply all arguments to. arguments... - Any number of arguments to automatically apply when the continuation is called. Example // using apply async.parallel([ async.apply(fs.writeFile, 'testfile1', 'test1'), async.apply(fs.writeFile, 'testfile2', 'test2'), ]); // the same process without using apply async.parallel([ function(callback){ fs.writeFile('testfile1', 'test1', callback); }, function(callback){ fs.writeFile('testfile2', 'test2', callback); } ]); It's possible to pass any number of additional arguments when calling the continuation: node> var fn = async.apply(sys.puts, 'one'); node> fn('two', 'three'); one two three nextTick(callback), setImmediate(callback) Calls callback on a later loop around the event loop. In Node.js this just calls process.nextTick ; in the browser it falls back to setImmediate(callback) if available, otherwise setTimeout(callback, 0) , which means other higher priority events may precede the execution of callback . This is used internally for browser-compatibility purposes. Arguments callback - The function to call on a later loop around the event loop. Example var call_order = []; async.nextTick(function(){ call_order.push('two'); // call_order now equals ['one','two'] }); call_order.push('one') times(n, iterator, [callback]) Calls the iterator function n times, and accumulates results in the same manner you would use with map . Arguments n - The number of times to run the function. iterator - The function to call n times. callback - see map Example // Pretend this is some complicated async factory var createUser = function(id, callback) { callback(null, { id: 'user' + id }) } // generate 5 users async.times(5, function(n, next){ createUser(n, function(err, user) { next(err, user) }) }, function(err, users) { // we should now have 5 users }); Related timesSeries(n, iterator, [callback]) timesLimit(n, limit, iterator, [callback]) Utils memoize(fn, [hasher]) Caches the results of an async function. When creating a hash to store function results against, the callback is omitted from the hash and an optional hash function can be used. If no hash function is specified, the first argument is used as a hash key, which may work reasonably if it is a string or a data type that converts to a distinct string. Note that objects and arrays will not behave reasonably. Neither will cases where the other arguments are significant. In such cases, specify your own hash function. The cache of results is exposed as the memo property of the function returned by memoize . Arguments fn - The function to proxy and cache results from. hasher - An optional function for generating a custom hash for storing results. It has all the arguments applied to it apart from the callback, and must be synchronous. Example var slow_fn = function (name, callback) { // do something callback(null, result); }; var fn = async.memoize(slow_fn); // fn can now be used as if it were slow_fn fn('some name', function () { // callback }); unmemoize(fn) Undoes a memoize d function, reverting it to the original, unmemoized form. Handy for testing. Arguments fn - the memoized function ensureAsync(fn) Wrap an async function and ensure it calls its callback on a later tick of the event loop. If the function already calls its callback on a next tick, no extra deferral is added. This is useful for preventing stack overflows ( RangeError: Maximum call stack size exceeded ) and generally keeping Zalgo contained. Arguments fn - an async function, one that expects a node-style callback as its last argument Returns a wrapped function with the exact same call signature as the function passed in. Example function sometimesAsync(arg, callback) { if (cache[arg]) { return callback(null, cache[arg]); // this would be synchronous!! } else { doSomeIO(arg, callback); // this IO would be asynchronous } } // this has a risk of stack overflows if many results are cached in a row async.mapSeries(args, sometimesAsync, done); // this will defer sometimesAsync's callback if necessary, // preventing stack overflows async.mapSeries(args, async.ensureAsync(sometimesAsync), done); constant(values...) Returns a function that when called, calls-back with the values provided. Useful as the first function in a waterfall , or for plugging values in to auto . Example async.waterfall([ async.constant(42), function (value, next) { // value === 42 }, //... ], callback); async.waterfall([ async.constant(filename, \"utf8\"), fs.readFile, function (fileData, next) { //... } //... ], callback); async.auto({ hostname: async.constant(\"https://server.net/\"), port: findFreePort, launchServer: [\"hostname\", \"port\", function (cb, options) { startServer(options, cb); }], //... }, callback); asyncify(func) Alias: wrapSync Take a sync function and make it async, passing its return value to a callback. This is useful for plugging sync functions into a waterfall, series, or other async functions. Any arguments passed to the generated function will be passed to the wrapped function (except for the final callback argument). Errors thrown will be passed to the callback. Example async.waterfall([ async.apply(fs.readFile, filename, \"utf8\"), async.asyncify(JSON.parse), function (data, next) { // data is the result of parsing the text. // If there was a parsing error, it would have been caught. } ], callback) If the function passed to asyncify returns a Promise, that promises's resolved/rejected state will be used to call the callback, rather than simply the synchronous return value. Example: async.waterfall([ async.apply(fs.readFile, filename, \"utf8\"), async.asyncify(function (contents) { return db.model.create(contents); }), function (model, next) { // `model` is the instantiated model object. // If there was an error, this function would be skipped. } ], callback) This also means you can asyncify ES2016 async functions. var q = async.queue(async.asyncify(async function (file) { var intermediateStep = await processFile(file); return await somePromise(intermediateStep) })); q.push(files); log(function, arguments) Logs the result of an async function to the console . Only works in Node.js or in browsers that support console.log and console.error (such as FF and Chrome). If multiple arguments are returned from the async function, console.log is called on each argument in order. Arguments function - The function you want to eventually apply all arguments to. arguments... - Any number of arguments to apply to the function. Example var hello = function(name, callback){ setTimeout(function(){ callback(null, 'hello ' + name); }, 1000); }; node> async.log(hello, 'world'); 'hello world' dir(function, arguments) Logs the result of an async function to the console using console.dir to display the properties of the resulting object. Only works in Node.js or in browsers that support console.dir and console.error (such as FF and Chrome). If multiple arguments are returned from the async function, console.dir is called on each argument in order. Arguments function - The function you want to eventually apply all arguments to. arguments... - Any number of arguments to apply to the function. Example var hello = function(name, callback){ setTimeout(function(){ callback(null, {hello: name}); }, 1000); }; node> async.dir(hello, 'world'); {hello: 'world'} noConflict() Changes the value of async back to its original value, returning a reference to the async object.","title":"Async.js"},{"location":"node_modules/async/#asyncjs","text":"Async is a utility module which provides straight-forward, powerful functions for working with asynchronous JavaScript. Although originally designed for use with Node.js and installable via npm install async , it can also be used directly in the browser. Async is also installable via: bower : bower install async component : component install caolan/async jam : jam install async spm : spm install async Async provides around 20 functions that include the usual 'functional' suspects ( map , reduce , filter , each \u2026) as well as some common patterns for asynchronous control flow ( parallel , series , waterfall \u2026). All these functions assume you follow the Node.js convention of providing a single callback as the last argument of your async function.","title":"Async.js"},{"location":"node_modules/async/#quick-examples","text":"async.map(['file1','file2','file3'], fs.stat, function(err, results){ // results is now an array of stats for each file }); async.filter(['file1','file2','file3'], fs.exists, function(results){ // results now equals an array of the existing files }); async.parallel([ function(){ ... }, function(){ ... } ], callback); async.series([ function(){ ... }, function(){ ... } ]); There are many more functions available so take a look at the docs below for a full list. This module aims to be comprehensive, so if you feel anything is missing please create a GitHub issue for it.","title":"Quick Examples"},{"location":"node_modules/async/#common-pitfalls-stackoverflow","text":"","title":"Common Pitfalls (StackOverflow)"},{"location":"node_modules/async/#synchronous-iteration-functions","text":"If you get an error like RangeError: Maximum call stack size exceeded. or other stack overflow issues when using async, you are likely using a synchronous iterator. By synchronous we mean a function that calls its callback on the same tick in the javascript event loop, without doing any I/O or using any timers. Calling many callbacks iteratively will quickly overflow the stack. If you run into this issue, just defer your callback with async.setImmediate to start a new call stack on the next tick of the event loop. This can also arise by accident if you callback early in certain cases: async.eachSeries(hugeArray, function iterator(item, callback) { if (inCache(item)) { callback(null, cache[item]); // if many items are cached, you'll overflow } else { doSomeIO(item, callback); } }, function done() { //... }); Just change it to: async.eachSeries(hugeArray, function iterator(item, callback) { if (inCache(item)) { async.setImmediate(function () { callback(null, cache[item]); }); } else { doSomeIO(item, callback); //... Async guards against synchronous functions in some, but not all, cases. If you are still running into stack overflows, you can defer as suggested above, or wrap functions with async.ensureAsync Functions that are asynchronous by their nature do not have this problem and don't need the extra callback deferral. If JavaScript's event loop is still a bit nebulous, check out this article or this talk for more detailed information about how it works.","title":"Synchronous iteration functions"},{"location":"node_modules/async/#multiple-callbacks","text":"Make sure to always return when calling a callback early, otherwise you will cause multiple callbacks and unpredictable behavior in many cases. async.waterfall([ function (callback) { getSomething(options, function (err, result) { if (err) { callback(new Error(\"failed getting something:\" + err.message)); // we should return here } // since we did not return, this callback still will be called and // `processData` will be called twice callback(null, result); }); }, processData ], done) It is always good practice to return callback(err, result) whenever a callback call is not the last statement of a function.","title":"Multiple callbacks"},{"location":"node_modules/async/#binding-a-context-to-an-iterator","text":"This section is really about bind , not about async . If you are wondering how to make async execute your iterators in a given context, or are confused as to why a method of another library isn't working as an iterator, study this example: // Here is a simple object with an (unnecessarily roundabout) squaring method var AsyncSquaringLibrary = { squareExponent: 2, square: function(number, callback){ var result = Math.pow(number, this.squareExponent); setTimeout(function(){ callback(null, result); }, 200); } }; async.map([1, 2, 3], AsyncSquaringLibrary.square, function(err, result){ // result is [NaN, NaN, NaN] // This fails because the `this.squareExponent` expression in the square // function is not evaluated in the context of AsyncSquaringLibrary, and is // therefore undefined. }); async.map([1, 2, 3], AsyncSquaringLibrary.square.bind(AsyncSquaringLibrary), function(err, result){ // result is [1, 4, 9] // With the help of bind we can attach a context to the iterator before // passing it to async. Now the square function will be executed in its // 'home' AsyncSquaringLibrary context and the value of `this.squareExponent` // will be as expected. });","title":"Binding a context to an iterator"},{"location":"node_modules/async/#download","text":"The source is available for download from GitHub . Alternatively, you can install using Node Package Manager ( npm ): npm install async As well as using Bower: bower install async Development: async.js - 29.6kb Uncompressed","title":"Download"},{"location":"node_modules/async/#in-the-browser","text":"So far it's been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. Usage: ","title":"In the Browser"},{"location":"node_modules/async/#documentation","text":"Some functions are also available in the following forms: * Series - the same as but runs only a single async operation at a time * Limit - the same as but runs a maximum of limit async operations at a time","title":"Documentation"},{"location":"node_modules/async/#collections","text":"each , eachSeries , eachLimit forEachOf , forEachOfSeries , forEachOfLimit map , mapSeries , mapLimit filter , filterSeries , filterLimit reject , rejectSeries , rejectLimit reduce , reduceRight detect , detectSeries , detectLimit sortBy some , someLimit every , everyLimit concat , concatSeries","title":"Collections"},{"location":"node_modules/async/#control-flow","text":"series parallel , parallelLimit whilst , doWhilst until , doUntil during , doDuring forever waterfall compose seq applyEach , applyEachSeries queue , priorityQueue cargo auto retry iterator times , timesSeries , timesLimit","title":"Control Flow"},{"location":"node_modules/async/#utils","text":"apply nextTick memoize unmemoize ensureAsync constant asyncify wrapSync log dir noConflict","title":"Utils"},{"location":"node_modules/async/#collections_1","text":"","title":"Collections"},{"location":"node_modules/async/#eacharr-iterator-callback","text":"Applies the function iterator to each item in arr , in parallel. The iterator is called with an item from the list, and a callback for when it has finished. If the iterator passes an error to its callback , the main callback (for the each function) is immediately called with the error. Note, that since this function applies iterator to each item in parallel, there is no guarantee that the iterator functions will complete in order. Arguments arr - An array to iterate over. iterator(item, callback) - A function to apply to each item in arr . The iterator is passed a callback(err) which must be called once it has completed. If no error has occurred, the callback should be run without arguments or with an explicit null argument. The array index is not passed to the iterator. If you need the index, use forEachOf . callback(err) - Optional A callback which is called when all iterator functions have finished, or an error occurs. Examples // assuming openFiles is an array of file names and saveFile is a function // to save the modified contents of that file: async.each(openFiles, saveFile, function(err){ // if any of the saves produced an error, err would equal that error }); // assuming openFiles is an array of file names async.each(openFiles, function(file, callback) { // Perform operation on file here. console.log('Processing file ' + file); if( file.length > 32 ) { console.log('This file name is too long'); callback('File name too long'); } else { // Do work to process file here console.log('File processed'); callback(); } }, function(err){ // if any of the file processing produced an error, err would equal that error if( err ) { // One of the iterations produced an error. // All processing will now stop. console.log('A file failed to process'); } else { console.log('All files have been processed successfully'); } }); Related eachSeries(arr, iterator, [callback]) eachLimit(arr, limit, iterator, [callback])","title":"each(arr, iterator, [callback])"},{"location":"node_modules/async/#foreachofobj-iterator-callback","text":"Like each , except that it iterates over objects, and passes the key as the second argument to the iterator. Arguments obj - An object or array to iterate over. iterator(item, key, callback) - A function to apply to each item in obj . The key is the item's key, or index in the case of an array. The iterator is passed a callback(err) which must be called once it has completed. If no error has occurred, the callback should be run without arguments or with an explicit null argument. callback(err) - Optional A callback which is called when all iterator functions have finished, or an error occurs. Example var obj = {dev: \"/dev.json\", test: \"/test.json\", prod: \"/prod.json\"}; var configs = {}; async.forEachOf(obj, function (value, key, callback) { fs.readFile(__dirname + value, \"utf8\", function (err, data) { if (err) return callback(err); try { configs[key] = JSON.parse(data); } catch (e) { return callback(e); } callback(); }) }, function (err) { if (err) console.error(err.message); // configs is now a map of JSON data doSomethingWith(configs); }) Related forEachOfSeries(obj, iterator, [callback]) forEachOfLimit(obj, limit, iterator, [callback])","title":"forEachOf(obj, iterator, [callback])"},{"location":"node_modules/async/#maparr-iterator-callback","text":"Produces a new array of values by mapping each value in arr through the iterator function. The iterator is called with an item from arr and a callback for when it has finished processing. Each of these callback takes 2 arguments: an error , and the transformed item from arr . If iterator passes an error to its callback, the main callback (for the map function) is immediately called with the error. Note, that since this function applies the iterator to each item in parallel, there is no guarantee that the iterator functions will complete in order. However, the results array will be in the same order as the original arr . Arguments arr - An array to iterate over. iterator(item, callback) - A function to apply to each item in arr . The iterator is passed a callback(err, transformed) which must be called once it has completed with an error (which can be null ) and a transformed item. callback(err, results) - Optional A callback which is called when all iterator functions have finished, or an error occurs. Results is an array of the transformed items from the arr . Example async.map(['file1','file2','file3'], fs.stat, function(err, results){ // results is now an array of stats for each file }); Related * mapSeries(arr, iterator, [callback]) * mapLimit(arr, limit, iterator, [callback])","title":"map(arr, iterator, [callback])"},{"location":"node_modules/async/#filterarr-iterator-callback","text":"Alias: select Returns a new array of all the values in arr which pass an async truth test. The callback for each iterator call only accepts a single argument of true or false ; it does not accept an error argument first! This is in-line with the way node libraries work with truth tests like fs.exists . This operation is performed in parallel, but the results array will be in the same order as the original. Arguments arr - An array to iterate over. iterator(item, callback) - A truth test to apply to each item in arr . The iterator is passed a callback(truthValue) , which must be called with a boolean argument once it has completed. callback(results) - Optional A callback which is called after all the iterator functions have finished. Example async.filter(['file1','file2','file3'], fs.exists, function(results){ // results now equals an array of the existing files }); Related filterSeries(arr, iterator, [callback]) filterLimit(arr, limit, iterator, [callback])","title":"filter(arr, iterator, [callback])"},{"location":"node_modules/async/#rejectarr-iterator-callback","text":"The opposite of filter . Removes values that pass an async truth test. Related rejectSeries(arr, iterator, [callback]) rejectLimit(arr, limit, iterator, [callback])","title":"reject(arr, iterator, [callback])"},{"location":"node_modules/async/#reducearr-memo-iterator-callback","text":"Aliases: inject , foldl Reduces arr into a single value using an async iterator to return each successive step. memo is the initial state of the reduction. This function only operates in series. For performance reasons, it may make sense to split a call to this function into a parallel map, and then use the normal Array.prototype.reduce on the results. This function is for situations where each step in the reduction needs to be async; if you can get the data before reducing it, then it's probably a good idea to do so. Arguments arr - An array to iterate over. memo - The initial state of the reduction. iterator(memo, item, callback) - A function applied to each item in the array to produce the next step in the reduction. The iterator is passed a callback(err, reduction) which accepts an optional error as its first argument, and the state of the reduction as the second. If an error is passed to the callback, the reduction is stopped and the main callback is immediately called with the error. callback(err, result) - Optional A callback which is called after all the iterator functions have finished. Result is the reduced value. Example async.reduce([1,2,3], 0, function(memo, item, callback){ // pointless async: process.nextTick(function(){ callback(null, memo + item) }); }, function(err, result){ // result is now equal to the last value of memo, which is 6 });","title":"reduce(arr, memo, iterator, [callback])"},{"location":"node_modules/async/#reducerightarr-memo-iterator-callback","text":"Alias: foldr Same as reduce , only operates on arr in reverse order.","title":"reduceRight(arr, memo, iterator, [callback])"},{"location":"node_modules/async/#detectarr-iterator-callback","text":"Returns the first value in arr that passes an async truth test. The iterator is applied in parallel, meaning the first iterator to return true will fire the detect callback with that result. That means the result might not be the first item in the original arr (in terms of order) that passes the test. If order within the original arr is important, then look at detectSeries . Arguments arr - An array to iterate over. iterator(item, callback) - A truth test to apply to each item in arr . The iterator is passed a callback(truthValue) which must be called with a boolean argument once it has completed. Note: this callback does not take an error as its first argument. callback(result) - Optional A callback which is called as soon as any iterator returns true , or after all the iterator functions have finished. Result will be the first item in the array that passes the truth test (iterator) or the value undefined if none passed. Note: this callback does not take an error as its first argument. Example async.detect(['file1','file2','file3'], fs.exists, function(result){ // result now equals the first file in the list that exists }); Related detectSeries(arr, iterator, [callback]) detectLimit(arr, limit, iterator, [callback])","title":"detect(arr, iterator, [callback])"},{"location":"node_modules/async/#sortbyarr-iterator-callback","text":"Sorts a list by the results of running each arr value through an async iterator . Arguments arr - An array to iterate over. iterator(item, callback) - A function to apply to each item in arr . The iterator is passed a callback(err, sortValue) which must be called once it has completed with an error (which can be null ) and a value to use as the sort criteria. callback(err, results) - Optional A callback which is called after all the iterator functions have finished, or an error occurs. Results is the items from the original arr sorted by the values returned by the iterator calls. Example async.sortBy(['file1','file2','file3'], function(file, callback){ fs.stat(file, function(err, stats){ callback(err, stats.mtime); }); }, function(err, results){ // results is now the original array of files sorted by // modified date }); Sort Order By modifying the callback parameter the sorting order can be influenced: //ascending order async.sortBy([1,9,3,5], function(x, callback){ callback(null, x); }, function(err,result){ //result callback } ); //descending order async.sortBy([1,9,3,5], function(x, callback){ callback(null, x*-1); //<- x*-1 instead of x, turns the order around }, function(err,result){ //result callback } );","title":"sortBy(arr, iterator, [callback])"},{"location":"node_modules/async/#somearr-iterator-callback","text":"Alias: any Returns true if at least one element in the arr satisfies an async test. The callback for each iterator call only accepts a single argument of true or false ; it does not accept an error argument first! This is in-line with the way node libraries work with truth tests like fs.exists . Once any iterator call returns true , the main callback is immediately called. Arguments arr - An array to iterate over. iterator(item, callback) - A truth test to apply to each item in the array in parallel. The iterator is passed a `callback(truthValue)`` which must be called with a boolean argument once it has completed. callback(result) - Optional A callback which is called as soon as any iterator returns true , or after all the iterator functions have finished. Result will be either true or false depending on the values of the async tests. Note: the callbacks do not take an error as their first argument. Example async.some(['file1','file2','file3'], fs.exists, function(result){ // if result is true then at least one of the files exists }); Related someLimit(arr, limit, iterator, callback)","title":"some(arr, iterator, [callback])"},{"location":"node_modules/async/#everyarr-iterator-callback","text":"Alias: all Returns true if every element in arr satisfies an async test. The callback for each iterator call only accepts a single argument of true or false ; it does not accept an error argument first! This is in-line with the way node libraries work with truth tests like fs.exists . Arguments arr - An array to iterate over. iterator(item, callback) - A truth test to apply to each item in the array in parallel. The iterator is passed a callback(truthValue) which must be called with a boolean argument once it has completed. callback(result) - Optional A callback which is called as soon as any iterator returns false , or after all the iterator functions have finished. Result will be either true or false depending on the values of the async tests. Note: the callbacks do not take an error as their first argument. Example async.every(['file1','file2','file3'], fs.exists, function(result){ // if result is true then every file exists }); Related everyLimit(arr, limit, iterator, callback)","title":"every(arr, iterator, [callback])"},{"location":"node_modules/async/#concatarr-iterator-callback","text":"Applies iterator to each item in arr , concatenating the results. Returns the concatenated list. The iterator s are called in parallel, and the results are concatenated as they return. There is no guarantee that the results array will be returned in the original order of arr passed to the iterator function. Arguments arr - An array to iterate over. iterator(item, callback) - A function to apply to each item in arr . The iterator is passed a callback(err, results) which must be called once it has completed with an error (which can be null ) and an array of results. callback(err, results) - Optional A callback which is called after all the iterator functions have finished, or an error occurs. Results is an array containing the concatenated results of the iterator function. Example async.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){ // files is now a list of filenames that exist in the 3 directories }); Related concatSeries(arr, iterator, [callback])","title":"concat(arr, iterator, [callback])"},{"location":"node_modules/async/#control-flow_1","text":"","title":"Control Flow"},{"location":"node_modules/async/#seriestasks-callback","text":"Run the functions in the tasks array in series, each one running once the previous function has completed. If any functions in the series pass an error to its callback, no more functions are run, and callback is immediately called with the value of the error. Otherwise, callback receives an array of results when tasks have completed. It is also possible to use an object instead of an array. Each property will be run as a function, and the results will be passed to the final callback as an object instead of an array. This can be a more readable way of handling results from series . Note that while many implementations preserve the order of object properties, the ECMAScript Language Specification explicitly states that The mechanics and order of enumerating the properties is not specified. So if you rely on the order in which your series of functions are executed, and want this to work on all platforms, consider using an array. Arguments tasks - An array or object containing functions to run, each function is passed a callback(err, result) it must call on completion with an error err (which can be null ) and an optional result value. callback(err, results) - An optional callback to run once all the functions have completed. This function gets a results array (or object) containing all the result arguments passed to the task callbacks. Example async.series([ function(callback){ // do some stuff ... callback(null, 'one'); }, function(callback){ // do some more stuff ... callback(null, 'two'); } ], // optional callback function(err, results){ // results is now equal to ['one', 'two'] }); // an example using an object instead of an array async.series({ one: function(callback){ setTimeout(function(){ callback(null, 1); }, 200); }, two: function(callback){ setTimeout(function(){ callback(null, 2); }, 100); } }, function(err, results) { // results is now equal to: {one: 1, two: 2} });","title":"series(tasks, [callback])"},{"location":"node_modules/async/#paralleltasks-callback","text":"Run the tasks array of functions in parallel, without waiting until the previous function has completed. If any of the functions pass an error to its callback, the main callback is immediately called with the value of the error. Once the tasks have completed, the results are passed to the final callback as an array. Note: parallel is about kicking-off I/O tasks in parallel, not about parallel execution of code. If your tasks do not use any timers or perform any I/O, they will actually be executed in series. Any synchronous setup sections for each task will happen one after the other. JavaScript remains single-threaded. It is also possible to use an object instead of an array. Each property will be run as a function and the results will be passed to the final callback as an object instead of an array. This can be a more readable way of handling results from parallel . Arguments tasks - An array or object containing functions to run. Each function is passed a callback(err, result) which it must call on completion with an error err (which can be null ) and an optional result value. callback(err, results) - An optional callback to run once all the functions have completed successfully. This function gets a results array (or object) containing all the result arguments passed to the task callbacks. Example async.parallel([ function(callback){ setTimeout(function(){ callback(null, 'one'); }, 200); }, function(callback){ setTimeout(function(){ callback(null, 'two'); }, 100); } ], // optional callback function(err, results){ // the results array will equal ['one','two'] even though // the second function had a shorter timeout. }); // an example using an object instead of an array async.parallel({ one: function(callback){ setTimeout(function(){ callback(null, 1); }, 200); }, two: function(callback){ setTimeout(function(){ callback(null, 2); }, 100); } }, function(err, results) { // results is now equals to: {one: 1, two: 2} }); Related parallelLimit(tasks, limit, [callback])","title":"parallel(tasks, [callback])"},{"location":"node_modules/async/#whilsttest-fn-callback","text":"Repeatedly call fn , while test returns true . Calls callback when stopped, or an error occurs. Arguments test() - synchronous truth test to perform before each execution of fn . fn(callback) - A function which is called each time test passes. The function is passed a callback(err) , which must be called once it has completed with an optional err argument. callback(err, [results]) - A callback which is called after the test function has failed and repeated execution of fn has stopped. callback will be passed an error and any arguments passed to the final fn 's callback. Example var count = 0; async.whilst( function () { return count < 5; }, function (callback) { count++; setTimeout(function () { callback(null, count); }, 1000); }, function (err, n) { // 5 seconds have passed, n = 5 } );","title":"whilst(test, fn, callback)"},{"location":"node_modules/async/#dowhilstfn-test-callback","text":"The post-check version of whilst . To reflect the difference in the order of operations, the arguments test and fn are switched. doWhilst is to whilst as do while is to while in plain JavaScript.","title":"doWhilst(fn, test, callback)"},{"location":"node_modules/async/#untiltest-fn-callback","text":"Repeatedly call fn until test returns true . Calls callback when stopped, or an error occurs. callback will be passed an error and any arguments passed to the final fn 's callback. The inverse of whilst .","title":"until(test, fn, callback)"},{"location":"node_modules/async/#dountilfn-test-callback","text":"Like doWhilst , except the test is inverted. Note the argument ordering differs from until .","title":"doUntil(fn, test, callback)"},{"location":"node_modules/async/#duringtest-fn-callback","text":"Like whilst , except the test is an asynchronous function that is passed a callback in the form of function (err, truth) . If error is passed to test or fn , the main callback is immediately called with the value of the error. Example var count = 0; async.during( function (callback) { return callback(null, count < 5); }, function (callback) { count++; setTimeout(callback, 1000); }, function (err) { // 5 seconds have passed } );","title":"during(test, fn, callback)"},{"location":"node_modules/async/#doduringfn-test-callback","text":"The post-check version of during . To reflect the difference in the order of operations, the arguments test and fn are switched. Also a version of doWhilst with asynchronous test function.","title":"doDuring(fn, test, callback)"},{"location":"node_modules/async/#foreverfn-errback","text":"Calls the asynchronous function fn with a callback parameter that allows it to call itself again, in series, indefinitely. If an error is passed to the callback then errback is called with the error, and execution stops, otherwise it will never be called. async.forever( function(next) { // next is suitable for passing to things that need a callback(err [, whatever]); // it will result in this function being called again. }, function(err) { // if next is called with a value in its first parameter, it will appear // in here as 'err', and execution will stop. } );","title":"forever(fn, [errback])"},{"location":"node_modules/async/#waterfalltasks-callback","text":"Runs the tasks array of functions in series, each passing their results to the next in the array. However, if any of the tasks pass an error to their own callback, the next function is not executed, and the main callback is immediately called with the error. Arguments tasks - An array of functions to run, each function is passed a callback(err, result1, result2, ...) it must call on completion. The first argument is an error (which can be null ) and any further arguments will be passed as arguments in order to the next task. callback(err, [results]) - An optional callback to run once all the functions have completed. This will be passed the results of the last task's callback. Example async.waterfall([ function(callback) { callback(null, 'one', 'two'); }, function(arg1, arg2, callback) { // arg1 now equals 'one' and arg2 now equals 'two' callback(null, 'three'); }, function(arg1, callback) { // arg1 now equals 'three' callback(null, 'done'); } ], function (err, result) { // result now equals 'done' }); Or, with named functions: async.waterfall([ myFirstFunction, mySecondFunction, myLastFunction, ], function (err, result) { // result now equals 'done' }); function myFirstFunction(callback) { callback(null, 'one', 'two'); } function mySecondFunction(arg1, arg2, callback) { // arg1 now equals 'one' and arg2 now equals 'two' callback(null, 'three'); } function myLastFunction(arg1, callback) { // arg1 now equals 'three' callback(null, 'done'); } Or, if you need to pass any argument to the first function: async.waterfall([ async.apply(myFirstFunction, 'zero'), mySecondFunction, myLastFunction, ], function (err, result) { // result now equals 'done' }); function myFirstFunction(arg1, callback) { // arg1 now equals 'zero' callback(null, 'one', 'two'); } function mySecondFunction(arg1, arg2, callback) { // arg1 now equals 'one' and arg2 now equals 'two' callback(null, 'three'); } function myLastFunction(arg1, callback) { // arg1 now equals 'three' callback(null, 'done'); }","title":"waterfall(tasks, [callback])"},{"location":"node_modules/async/#composefn1-fn2","text":"Creates a function which is a composition of the passed asynchronous functions. Each function consumes the return value of the function that follows. Composing functions f() , g() , and h() would produce the result of f(g(h())) , only this version uses callbacks to obtain the return values. Each function is executed with the this binding of the composed function. Arguments functions... - the asynchronous functions to compose Example function add1(n, callback) { setTimeout(function () { callback(null, n + 1); }, 10); } function mul3(n, callback) { setTimeout(function () { callback(null, n * 3); }, 10); } var add1mul3 = async.compose(mul3, add1); add1mul3(4, function (err, result) { // result now equals 15 });","title":"compose(fn1, fn2...)"},{"location":"node_modules/async/#seqfn1-fn2","text":"Version of the compose function that is more natural to read. Each function consumes the return value of the previous function. It is the equivalent of compose with the arguments reversed. Each function is executed with the this binding of the composed function. Arguments functions... - the asynchronous functions to compose Example // Requires lodash (or underscore), express3 and dresende's orm2. // Part of an app, that fetches cats of the logged user. // This example uses `seq` function to avoid overnesting and error // handling clutter. app.get('/cats', function(request, response) { var User = request.models.User; async.seq( _.bind(User.get, User), // 'User.get' has signature (id, callback(err, data)) function(user, fn) { user.getCats(fn); // 'getCats' has signature (callback(err, data)) } )(req.session.user_id, function (err, cats) { if (err) { console.error(err); response.json({ status: 'error', message: err.message }); } else { response.json({ status: 'ok', message: 'Cats found', data: cats }); } }); });","title":"seq(fn1, fn2...)"},{"location":"node_modules/async/#applyeachfns-args-callback","text":"Applies the provided arguments to each function in the array, calling callback after all functions have completed. If you only provide the first argument, then it will return a function which lets you pass in the arguments as if it were a single function call. Arguments fns - the asynchronous functions to all call with the same arguments args... - any number of separate arguments to pass to the function callback - the final argument should be the callback, called when all functions have completed processing Example async.applyEach([enableSearch, updateSchema], 'bucket', callback); // partial application example: async.each( buckets, async.applyEach([enableSearch, updateSchema]), callback ); Related applyEachSeries(tasks, args..., [callback])","title":"applyEach(fns, args..., callback)"},{"location":"node_modules/async/#queueworker-concurrency","text":"Creates a queue object with the specified concurrency . Tasks added to the queue are processed in parallel (up to the concurrency limit). If all worker s are in progress, the task is queued until one becomes available. Once a worker completes a task , that task 's callback is called. Arguments worker(task, callback) - An asynchronous function for processing a queued task, which must call its callback(err) argument when finished, with an optional error as an argument. If you want to handle errors from an individual task, pass a callback to q.push() . concurrency - An integer for determining how many worker functions should be run in parallel. If omitted, the concurrency defaults to 1 . If the concurrency is 0 , an error is thrown. Queue objects The queue object returned by this function has the following properties and methods: length() - a function returning the number of items waiting to be processed. started - a function returning whether or not any items have been pushed and processed by the queue running() - a function returning the number of items currently being processed. workersList() - a function returning the array of items currently being processed. idle() - a function returning false if there are items waiting or being processed, or true if not. concurrency - an integer for determining how many worker functions should be run in parallel. This property can be changed after a queue is created to alter the concurrency on-the-fly. push(task, [callback]) - add a new task to the queue . Calls callback once the worker has finished processing the task. Instead of a single task, a tasks array can be submitted. The respective callback is used for every task in the list. unshift(task, [callback]) - add a new task to the front of the queue . saturated - a callback that is called when the queue length hits the concurrency limit, and further tasks will be queued. empty - a callback that is called when the last item from the queue is given to a worker . drain - a callback that is called when the last item from the queue has returned from the worker . paused - a boolean for determining whether the queue is in a paused state pause() - a function that pauses the processing of tasks until resume() is called. resume() - a function that resumes the processing of queued tasks when the queue is paused. kill() - a function that removes the drain callback and empties remaining tasks from the queue forcing it to go idle. Example // create a queue object with concurrency 2 var q = async.queue(function (task, callback) { console.log('hello ' + task.name); callback(); }, 2); // assign a callback q.drain = function() { console.log('all items have been processed'); } // add some items to the queue q.push({name: 'foo'}, function (err) { console.log('finished processing foo'); }); q.push({name: 'bar'}, function (err) { console.log('finished processing bar'); }); // add some items to the queue (batch-wise) q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) { console.log('finished processing item'); }); // add some items to the front of the queue q.unshift({name: 'bar'}, function (err) { console.log('finished processing bar'); });","title":"queue(worker, [concurrency])"},{"location":"node_modules/async/#priorityqueueworker-concurrency","text":"The same as queue only tasks are assigned a priority and completed in ascending priority order. There are two differences between queue and priorityQueue objects: push(task, priority, [callback]) - priority should be a number. If an array of tasks is given, all tasks will be assigned the same priority. The unshift method was removed.","title":"priorityQueue(worker, concurrency)"},{"location":"node_modules/async/#cargoworker-payload","text":"Creates a cargo object with the specified payload. Tasks added to the cargo will be processed altogether (up to the payload limit). If the worker is in progress, the task is queued until it becomes available. Once the worker has completed some tasks, each callback of those tasks is called. Check out these animations for how cargo and queue work. While queue passes only one task to one of a group of workers at a time, cargo passes an array of tasks to a single worker, repeating when the worker is finished. Arguments worker(tasks, callback) - An asynchronous function for processing an array of queued tasks, which must call its callback(err) argument when finished, with an optional err argument. payload - An optional integer for determining how many tasks should be processed per round; if omitted, the default is unlimited. Cargo objects The cargo object returned by this function has the following properties and methods: length() - A function returning the number of items waiting to be processed. payload - An integer for determining how many tasks should be process per round. This property can be changed after a cargo is created to alter the payload on-the-fly. push(task, [callback]) - Adds task to the queue . The callback is called once the worker has finished processing the task. Instead of a single task, an array of tasks can be submitted. The respective callback is used for every task in the list. saturated - A callback that is called when the queue.length() hits the concurrency and further tasks will be queued. empty - A callback that is called when the last item from the queue is given to a worker . drain - A callback that is called when the last item from the queue has returned from the worker . idle() , pause() , resume() , kill() - cargo inherits all of the same methods and event calbacks as queue Example // create a cargo object with payload 2 var cargo = async.cargo(function (tasks, callback) { for(var i=0; i var iterator2 = iterator(); 'one' node> var iterator3 = iterator2(); 'two' node> iterator3(); 'three' node> var nextfn = iterator2.next(); node> nextfn(); 'three'","title":"iterator(tasks)"},{"location":"node_modules/async/#applyfunction-arguments","text":"Creates a continuation function with some arguments already applied. Useful as a shorthand when combined with other control flow functions. Any arguments passed to the returned function are added to the arguments originally passed to apply. Arguments function - The function you want to eventually apply all arguments to. arguments... - Any number of arguments to automatically apply when the continuation is called. Example // using apply async.parallel([ async.apply(fs.writeFile, 'testfile1', 'test1'), async.apply(fs.writeFile, 'testfile2', 'test2'), ]); // the same process without using apply async.parallel([ function(callback){ fs.writeFile('testfile1', 'test1', callback); }, function(callback){ fs.writeFile('testfile2', 'test2', callback); } ]); It's possible to pass any number of additional arguments when calling the continuation: node> var fn = async.apply(sys.puts, 'one'); node> fn('two', 'three'); one two three","title":"apply(function, arguments..)"},{"location":"node_modules/async/#nexttickcallback-setimmediatecallback","text":"Calls callback on a later loop around the event loop. In Node.js this just calls process.nextTick ; in the browser it falls back to setImmediate(callback) if available, otherwise setTimeout(callback, 0) , which means other higher priority events may precede the execution of callback . This is used internally for browser-compatibility purposes. Arguments callback - The function to call on a later loop around the event loop. Example var call_order = []; async.nextTick(function(){ call_order.push('two'); // call_order now equals ['one','two'] }); call_order.push('one')","title":"nextTick(callback), setImmediate(callback)"},{"location":"node_modules/async/#timesn-iterator-callback","text":"Calls the iterator function n times, and accumulates results in the same manner you would use with map . Arguments n - The number of times to run the function. iterator - The function to call n times. callback - see map Example // Pretend this is some complicated async factory var createUser = function(id, callback) { callback(null, { id: 'user' + id }) } // generate 5 users async.times(5, function(n, next){ createUser(n, function(err, user) { next(err, user) }) }, function(err, users) { // we should now have 5 users }); Related timesSeries(n, iterator, [callback]) timesLimit(n, limit, iterator, [callback])","title":"times(n, iterator, [callback])"},{"location":"node_modules/async/#utils_1","text":"","title":"Utils"},{"location":"node_modules/async/#memoizefn-hasher","text":"Caches the results of an async function. When creating a hash to store function results against, the callback is omitted from the hash and an optional hash function can be used. If no hash function is specified, the first argument is used as a hash key, which may work reasonably if it is a string or a data type that converts to a distinct string. Note that objects and arrays will not behave reasonably. Neither will cases where the other arguments are significant. In such cases, specify your own hash function. The cache of results is exposed as the memo property of the function returned by memoize . Arguments fn - The function to proxy and cache results from. hasher - An optional function for generating a custom hash for storing results. It has all the arguments applied to it apart from the callback, and must be synchronous. Example var slow_fn = function (name, callback) { // do something callback(null, result); }; var fn = async.memoize(slow_fn); // fn can now be used as if it were slow_fn fn('some name', function () { // callback });","title":"memoize(fn, [hasher])"},{"location":"node_modules/async/#unmemoizefn","text":"Undoes a memoize d function, reverting it to the original, unmemoized form. Handy for testing. Arguments fn - the memoized function","title":"unmemoize(fn)"},{"location":"node_modules/async/#ensureasyncfn","text":"Wrap an async function and ensure it calls its callback on a later tick of the event loop. If the function already calls its callback on a next tick, no extra deferral is added. This is useful for preventing stack overflows ( RangeError: Maximum call stack size exceeded ) and generally keeping Zalgo contained. Arguments fn - an async function, one that expects a node-style callback as its last argument Returns a wrapped function with the exact same call signature as the function passed in. Example function sometimesAsync(arg, callback) { if (cache[arg]) { return callback(null, cache[arg]); // this would be synchronous!! } else { doSomeIO(arg, callback); // this IO would be asynchronous } } // this has a risk of stack overflows if many results are cached in a row async.mapSeries(args, sometimesAsync, done); // this will defer sometimesAsync's callback if necessary, // preventing stack overflows async.mapSeries(args, async.ensureAsync(sometimesAsync), done);","title":"ensureAsync(fn)"},{"location":"node_modules/async/#constantvalues","text":"Returns a function that when called, calls-back with the values provided. Useful as the first function in a waterfall , or for plugging values in to auto . Example async.waterfall([ async.constant(42), function (value, next) { // value === 42 }, //... ], callback); async.waterfall([ async.constant(filename, \"utf8\"), fs.readFile, function (fileData, next) { //... } //... ], callback); async.auto({ hostname: async.constant(\"https://server.net/\"), port: findFreePort, launchServer: [\"hostname\", \"port\", function (cb, options) { startServer(options, cb); }], //... }, callback);","title":"constant(values...)"},{"location":"node_modules/async/#asyncifyfunc","text":"Alias: wrapSync Take a sync function and make it async, passing its return value to a callback. This is useful for plugging sync functions into a waterfall, series, or other async functions. Any arguments passed to the generated function will be passed to the wrapped function (except for the final callback argument). Errors thrown will be passed to the callback. Example async.waterfall([ async.apply(fs.readFile, filename, \"utf8\"), async.asyncify(JSON.parse), function (data, next) { // data is the result of parsing the text. // If there was a parsing error, it would have been caught. } ], callback) If the function passed to asyncify returns a Promise, that promises's resolved/rejected state will be used to call the callback, rather than simply the synchronous return value. Example: async.waterfall([ async.apply(fs.readFile, filename, \"utf8\"), async.asyncify(function (contents) { return db.model.create(contents); }), function (model, next) { // `model` is the instantiated model object. // If there was an error, this function would be skipped. } ], callback) This also means you can asyncify ES2016 async functions. var q = async.queue(async.asyncify(async function (file) { var intermediateStep = await processFile(file); return await somePromise(intermediateStep) })); q.push(files);","title":"asyncify(func)"},{"location":"node_modules/async/#logfunction-arguments","text":"Logs the result of an async function to the console . Only works in Node.js or in browsers that support console.log and console.error (such as FF and Chrome). If multiple arguments are returned from the async function, console.log is called on each argument in order. Arguments function - The function you want to eventually apply all arguments to. arguments... - Any number of arguments to apply to the function. Example var hello = function(name, callback){ setTimeout(function(){ callback(null, 'hello ' + name); }, 1000); }; node> async.log(hello, 'world'); 'hello world'","title":"log(function, arguments)"},{"location":"node_modules/async/#dirfunction-arguments","text":"Logs the result of an async function to the console using console.dir to display the properties of the resulting object. Only works in Node.js or in browsers that support console.dir and console.error (such as FF and Chrome). If multiple arguments are returned from the async function, console.dir is called on each argument in order. Arguments function - The function you want to eventually apply all arguments to. arguments... - Any number of arguments to apply to the function. Example var hello = function(name, callback){ setTimeout(function(){ callback(null, {hello: name}); }, 1000); }; node> async.dir(hello, 'world'); {hello: 'world'}","title":"dir(function, arguments)"},{"location":"node_modules/async/#noconflict","text":"Changes the value of async back to its original value, returning a reference to the async object.","title":"noConflict()"},{"location":"node_modules/async/CHANGELOG/","text":"v1.5.2 Allow using \"consructor\" as an argument in memoize (#998) Give a better error messsage when auto dependency checking fails (#994) Various doc updates (#936, #956, #979, #1002) v1.5.1 Fix issue with pause in queue with concurrency enabled (#946) while and until now pass the final result to callback (#963) auto will properly handle concurrency when there is no callback (#966) auto will now properly stop execution when an error occurs (#988, #993) Various doc fixes (#971, #980) v1.5.0 Added transform , analogous to _.transform (#892) map now returns an object when an object is passed in, rather than array with non-numeric keys. map will begin always returning an array with numeric indexes in the next major release. (#873) auto now accepts an optional concurrency argument to limit the number of running tasks (#637) Added queue#workersList() , to retrieve the list of currently running tasks. (#891) Various code simplifications (#896, #904) Various doc fixes :scroll: (#890, #894, #903, #905, #912) v1.4.2 Ensure coverage files don't get published on npm (#879) v1.4.1 Add in overlooked detectLimit method (#866) Removed unnecessary files from npm releases (#861) Removed usage of a reserved word to prevent :boom: in older environments (#870) v1.4.0 asyncify now supports promises (#840) Added Limit versions of filter and reject (#836) Add Limit versions of detect , some and every (#828, #829) some , every and detect now short circuit early (#828, #829) Improve detection of the global object (#804), enabling use in WebWorkers whilst now called with arguments from iterator (#823) during now gets called with arguments from iterator (#824) Code simplifications and optimizations aplenty ( diff ) v1.3.0 New Features: - Added constant - Added asyncify / wrapSync for making sync functions work with callbacks. (#671, #806) - Added during and doDuring , which are like whilst with an async truth test. (#800) - retry now accepts an interval parameter to specify a delay between retries. (#793) - async should work better in Web Workers due to better root detection (#804) - Callbacks are now optional in whilst , doWhilst , until , and doUntil (#642) - Various internal updates (#786, #801, #802, #803) - Various doc fixes (#790, #794) Bug Fixes: - cargo now exposes the payload size, and cargo.payload can be changed on the fly after the cargo is created. (#740, #744, #783) v1.2.1 Bug Fix: Small regression with synchronous iterator behavior in eachSeries with a 1-element array. Before 1.1.0, eachSeries 's callback was called on the same tick, which this patch restores. In 2.0.0, it will be called on the next tick. (#782) v1.2.0 New Features: Added timesLimit (#743) concurrency can be changed after initialization in queue by setting q.concurrency . The new concurrency will be reflected the next time a task is processed. (#747, #772) Bug Fixes: Fixed a regression in each and family with empty arrays that have additional properties. (#775, #777) v1.1.1 Bug Fix: Small regression with synchronous iterator behavior in eachSeries with a 1-element array. Before 1.1.0, eachSeries 's callback was called on the same tick, which this patch restores. In 2.0.0, it will be called on the next tick. (#782) v1.1.0 New Features: cargo now supports all of the same methods and event callbacks as queue . Added ensureAsync - A wrapper that ensures an async function calls its callback on a later tick. (#769) Optimized map , eachOf , and waterfall families of functions Passing a null or undefined array to map , each , parallel and families will be treated as an empty array (#667). The callback is now optional for the composed results of compose and seq . (#618) Reduced file size by 4kb, (minified version by 1kb) Added code coverage through nyc and coveralls (#768) Bug Fixes: forever will no longer stack overflow with a synchronous iterator (#622) eachLimit and other limit functions will stop iterating once an error occurs (#754) Always pass null in callbacks when there is no error (#439) Ensure proper conditions when calling drain() after pushing an empty data set to a queue (#668) each and family will properly handle an empty array (#578) eachSeries and family will finish if the underlying array is modified during execution (#557) queue will throw if a non-function is passed to q.push() (#593) Doc fixes (#629, #766) v1.0.0 No known breaking changes, we are simply complying with semver from here on out. Changes: Start using a changelog! Add forEachOf for iterating over Objects (or to iterate Arrays with indexes available) (#168 #704 #321) Detect deadlocks in auto (#663) Better support for require.js (#527) Throw if queue created with concurrency 0 (#714) Fix unneeded iteration in queue.resume() (#758) Guard against timer mocking overriding setImmediate (#609 #611) Miscellaneous doc fixes (#542 #596 #615 #628 #631 #690 #729) Use single noop function internally (#546) Optimize internal _each , _map and _keys functions.","title":"v1.5.2"},{"location":"node_modules/async/CHANGELOG/#v152","text":"Allow using \"consructor\" as an argument in memoize (#998) Give a better error messsage when auto dependency checking fails (#994) Various doc updates (#936, #956, #979, #1002)","title":"v1.5.2"},{"location":"node_modules/async/CHANGELOG/#v151","text":"Fix issue with pause in queue with concurrency enabled (#946) while and until now pass the final result to callback (#963) auto will properly handle concurrency when there is no callback (#966) auto will now properly stop execution when an error occurs (#988, #993) Various doc fixes (#971, #980)","title":"v1.5.1"},{"location":"node_modules/async/CHANGELOG/#v150","text":"Added transform , analogous to _.transform (#892) map now returns an object when an object is passed in, rather than array with non-numeric keys. map will begin always returning an array with numeric indexes in the next major release. (#873) auto now accepts an optional concurrency argument to limit the number of running tasks (#637) Added queue#workersList() , to retrieve the list of currently running tasks. (#891) Various code simplifications (#896, #904) Various doc fixes :scroll: (#890, #894, #903, #905, #912)","title":"v1.5.0"},{"location":"node_modules/async/CHANGELOG/#v142","text":"Ensure coverage files don't get published on npm (#879)","title":"v1.4.2"},{"location":"node_modules/async/CHANGELOG/#v141","text":"Add in overlooked detectLimit method (#866) Removed unnecessary files from npm releases (#861) Removed usage of a reserved word to prevent :boom: in older environments (#870)","title":"v1.4.1"},{"location":"node_modules/async/CHANGELOG/#v140","text":"asyncify now supports promises (#840) Added Limit versions of filter and reject (#836) Add Limit versions of detect , some and every (#828, #829) some , every and detect now short circuit early (#828, #829) Improve detection of the global object (#804), enabling use in WebWorkers whilst now called with arguments from iterator (#823) during now gets called with arguments from iterator (#824) Code simplifications and optimizations aplenty ( diff )","title":"v1.4.0"},{"location":"node_modules/async/CHANGELOG/#v130","text":"New Features: - Added constant - Added asyncify / wrapSync for making sync functions work with callbacks. (#671, #806) - Added during and doDuring , which are like whilst with an async truth test. (#800) - retry now accepts an interval parameter to specify a delay between retries. (#793) - async should work better in Web Workers due to better root detection (#804) - Callbacks are now optional in whilst , doWhilst , until , and doUntil (#642) - Various internal updates (#786, #801, #802, #803) - Various doc fixes (#790, #794) Bug Fixes: - cargo now exposes the payload size, and cargo.payload can be changed on the fly after the cargo is created. (#740, #744, #783)","title":"v1.3.0"},{"location":"node_modules/async/CHANGELOG/#v121","text":"Bug Fix: Small regression with synchronous iterator behavior in eachSeries with a 1-element array. Before 1.1.0, eachSeries 's callback was called on the same tick, which this patch restores. In 2.0.0, it will be called on the next tick. (#782)","title":"v1.2.1"},{"location":"node_modules/async/CHANGELOG/#v120","text":"New Features: Added timesLimit (#743) concurrency can be changed after initialization in queue by setting q.concurrency . The new concurrency will be reflected the next time a task is processed. (#747, #772) Bug Fixes: Fixed a regression in each and family with empty arrays that have additional properties. (#775, #777)","title":"v1.2.0"},{"location":"node_modules/async/CHANGELOG/#v111","text":"Bug Fix: Small regression with synchronous iterator behavior in eachSeries with a 1-element array. Before 1.1.0, eachSeries 's callback was called on the same tick, which this patch restores. In 2.0.0, it will be called on the next tick. (#782)","title":"v1.1.1"},{"location":"node_modules/async/CHANGELOG/#v110","text":"New Features: cargo now supports all of the same methods and event callbacks as queue . Added ensureAsync - A wrapper that ensures an async function calls its callback on a later tick. (#769) Optimized map , eachOf , and waterfall families of functions Passing a null or undefined array to map , each , parallel and families will be treated as an empty array (#667). The callback is now optional for the composed results of compose and seq . (#618) Reduced file size by 4kb, (minified version by 1kb) Added code coverage through nyc and coveralls (#768) Bug Fixes: forever will no longer stack overflow with a synchronous iterator (#622) eachLimit and other limit functions will stop iterating once an error occurs (#754) Always pass null in callbacks when there is no error (#439) Ensure proper conditions when calling drain() after pushing an empty data set to a queue (#668) each and family will properly handle an empty array (#578) eachSeries and family will finish if the underlying array is modified during execution (#557) queue will throw if a non-function is passed to q.push() (#593) Doc fixes (#629, #766)","title":"v1.1.0"},{"location":"node_modules/async/CHANGELOG/#v100","text":"No known breaking changes, we are simply complying with semver from here on out. Changes: Start using a changelog! Add forEachOf for iterating over Objects (or to iterate Arrays with indexes available) (#168 #704 #321) Detect deadlocks in auto (#663) Better support for require.js (#527) Throw if queue created with concurrency 0 (#714) Fix unneeded iteration in queue.resume() (#758) Guard against timer mocking overriding setImmediate (#609 #611) Miscellaneous doc fixes (#542 #596 #615 #628 #631 #690 #729) Use single noop function internally (#546) Optimize internal _each , _map and _keys functions.","title":"v1.0.0"},{"location":"node_modules/asynckit/","text":"asynckit Minimal async jobs utility library, with streams support. AsyncKit provides harness for parallel and serial iterators over list of items represented by arrays or objects. Optionally it accepts abort function (should be synchronously return by iterator for each item), and terminates left over jobs upon an error event. For specific iteration order built-in ( ascending and descending ) and custom sort helpers also supported, via asynckit.serialOrdered method. It ensures async operations to keep behavior more stable and prevent Maximum call stack size exceeded errors, from sync iterators. compression size asynckit.js 12.34 kB asynckit.min.js 4.11 kB asynckit.min.js.gz 1.47 kB Install $ npm install --save asynckit Examples Parallel Jobs Runs iterator over provided array in parallel. Stores output in the result array, on the matching positions. In unlikely event of an error from one of the jobs, will terminate rest of the active jobs (if abort function is provided) and return error along with salvaged data to the main callback function. Input Array var parallel = require('asynckit').parallel , assert = require('assert') ; var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ] , target = [] ; parallel(source, asyncJob, function(err, result) { assert.deepEqual(result, expectedResult); assert.deepEqual(target, expectedTarget); }); // async job accepts one element from the array // and a callback function function asyncJob(item, cb) { // different delays (in ms) per item var delay = item * 25; // pretend different jobs take different time to finish // and not in consequential order var timeoutId = setTimeout(function() { target.push(item); cb(null, item * 2); }, delay); // allow to cancel \"leftover\" jobs upon error // return function, invoking of which will abort this job return clearTimeout.bind(null, timeoutId); } More examples could be found in test/test-parallel-array.js . Input Object Also it supports named jobs, listed via object. var parallel = require('asynckit/parallel') , assert = require('assert') ; var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 } , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 } , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ] , expectedKeys = [ 'first', 'one', 'two', 'four', 'eight', 'sixteen', 'thirtyTwo', 'sixtyFour' ] , target = [] , keys = [] ; parallel(source, asyncJob, function(err, result) { assert.deepEqual(result, expectedResult); assert.deepEqual(target, expectedTarget); assert.deepEqual(keys, expectedKeys); }); // supports full value, key, callback (shortcut) interface function asyncJob(item, key, cb) { // different delays (in ms) per item var delay = item * 25; // pretend different jobs take different time to finish // and not in consequential order var timeoutId = setTimeout(function() { keys.push(key); target.push(item); cb(null, item * 2); }, delay); // allow to cancel \"leftover\" jobs upon error // return function, invoking of which will abort this job return clearTimeout.bind(null, timeoutId); } More examples could be found in test/test-parallel-object.js . Serial Jobs Runs iterator over provided array sequentially. Stores output in the result array, on the matching positions. In unlikely event of an error from one of the jobs, will not proceed to the rest of the items in the list and return error along with salvaged data to the main callback function. Input Array var serial = require('asynckit/serial') , assert = require('assert') ; var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ] , target = [] ; serial(source, asyncJob, function(err, result) { assert.deepEqual(result, expectedResult); assert.deepEqual(target, expectedTarget); }); // extended interface (item, key, callback) // also supported for arrays function asyncJob(item, key, cb) { target.push(key); // it will be automatically made async // even it iterator \"returns\" in the same event loop cb(null, item * 2); } More examples could be found in test/test-serial-array.js . Input Object Also it supports named jobs, listed via object. var serial = require('asynckit').serial , assert = require('assert') ; var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ] , target = [] ; var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 } , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 } , expectedTarget = [ 1, 1, 4, 16, 64, 32, 8, 2 ] , target = [] ; serial(source, asyncJob, function(err, result) { assert.deepEqual(result, expectedResult); assert.deepEqual(target, expectedTarget); }); // shortcut interface (item, callback) // works for object as well as for the arrays function asyncJob(item, cb) { target.push(item); // it will be automatically made async // even it iterator \"returns\" in the same event loop cb(null, item * 2); } More examples could be found in test/test-serial-object.js . Note: Since _object is an unordered collection of properties, it may produce unexpected results with sequential iterations. Whenever order of the jobs' execution is important please use serialOrdered method._ Ordered Serial Iterations TBD For example compare-property package. Streaming interface TBD Want to Know More? More examples can be found in test folder . Or open an issue with questions and/or suggestions. License AsyncKit is licensed under the MIT license.","title":"asynckit "},{"location":"node_modules/asynckit/#asynckit","text":"Minimal async jobs utility library, with streams support. AsyncKit provides harness for parallel and serial iterators over list of items represented by arrays or objects. Optionally it accepts abort function (should be synchronously return by iterator for each item), and terminates left over jobs upon an error event. For specific iteration order built-in ( ascending and descending ) and custom sort helpers also supported, via asynckit.serialOrdered method. It ensures async operations to keep behavior more stable and prevent Maximum call stack size exceeded errors, from sync iterators. compression size asynckit.js 12.34 kB asynckit.min.js 4.11 kB asynckit.min.js.gz 1.47 kB","title":"asynckit"},{"location":"node_modules/asynckit/#install","text":"$ npm install --save asynckit","title":"Install"},{"location":"node_modules/asynckit/#examples","text":"","title":"Examples"},{"location":"node_modules/asynckit/#parallel-jobs","text":"Runs iterator over provided array in parallel. Stores output in the result array, on the matching positions. In unlikely event of an error from one of the jobs, will terminate rest of the active jobs (if abort function is provided) and return error along with salvaged data to the main callback function.","title":"Parallel Jobs"},{"location":"node_modules/asynckit/#input-array","text":"var parallel = require('asynckit').parallel , assert = require('assert') ; var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ] , target = [] ; parallel(source, asyncJob, function(err, result) { assert.deepEqual(result, expectedResult); assert.deepEqual(target, expectedTarget); }); // async job accepts one element from the array // and a callback function function asyncJob(item, cb) { // different delays (in ms) per item var delay = item * 25; // pretend different jobs take different time to finish // and not in consequential order var timeoutId = setTimeout(function() { target.push(item); cb(null, item * 2); }, delay); // allow to cancel \"leftover\" jobs upon error // return function, invoking of which will abort this job return clearTimeout.bind(null, timeoutId); } More examples could be found in test/test-parallel-array.js .","title":"Input Array"},{"location":"node_modules/asynckit/#input-object","text":"Also it supports named jobs, listed via object. var parallel = require('asynckit/parallel') , assert = require('assert') ; var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 } , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 } , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ] , expectedKeys = [ 'first', 'one', 'two', 'four', 'eight', 'sixteen', 'thirtyTwo', 'sixtyFour' ] , target = [] , keys = [] ; parallel(source, asyncJob, function(err, result) { assert.deepEqual(result, expectedResult); assert.deepEqual(target, expectedTarget); assert.deepEqual(keys, expectedKeys); }); // supports full value, key, callback (shortcut) interface function asyncJob(item, key, cb) { // different delays (in ms) per item var delay = item * 25; // pretend different jobs take different time to finish // and not in consequential order var timeoutId = setTimeout(function() { keys.push(key); target.push(item); cb(null, item * 2); }, delay); // allow to cancel \"leftover\" jobs upon error // return function, invoking of which will abort this job return clearTimeout.bind(null, timeoutId); } More examples could be found in test/test-parallel-object.js .","title":"Input Object"},{"location":"node_modules/asynckit/#serial-jobs","text":"Runs iterator over provided array sequentially. Stores output in the result array, on the matching positions. In unlikely event of an error from one of the jobs, will not proceed to the rest of the items in the list and return error along with salvaged data to the main callback function.","title":"Serial Jobs"},{"location":"node_modules/asynckit/#input-array_1","text":"var serial = require('asynckit/serial') , assert = require('assert') ; var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ] , target = [] ; serial(source, asyncJob, function(err, result) { assert.deepEqual(result, expectedResult); assert.deepEqual(target, expectedTarget); }); // extended interface (item, key, callback) // also supported for arrays function asyncJob(item, key, cb) { target.push(key); // it will be automatically made async // even it iterator \"returns\" in the same event loop cb(null, item * 2); } More examples could be found in test/test-serial-array.js .","title":"Input Array"},{"location":"node_modules/asynckit/#input-object_1","text":"Also it supports named jobs, listed via object. var serial = require('asynckit').serial , assert = require('assert') ; var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ] , target = [] ; var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 } , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 } , expectedTarget = [ 1, 1, 4, 16, 64, 32, 8, 2 ] , target = [] ; serial(source, asyncJob, function(err, result) { assert.deepEqual(result, expectedResult); assert.deepEqual(target, expectedTarget); }); // shortcut interface (item, callback) // works for object as well as for the arrays function asyncJob(item, cb) { target.push(item); // it will be automatically made async // even it iterator \"returns\" in the same event loop cb(null, item * 2); } More examples could be found in test/test-serial-object.js . Note: Since _object is an unordered collection of properties, it may produce unexpected results with sequential iterations. Whenever order of the jobs' execution is important please use serialOrdered method._","title":"Input Object"},{"location":"node_modules/asynckit/#ordered-serial-iterations","text":"TBD For example compare-property package.","title":"Ordered Serial Iterations"},{"location":"node_modules/asynckit/#streaming-interface","text":"TBD","title":"Streaming interface"},{"location":"node_modules/asynckit/#want-to-know-more","text":"More examples can be found in test folder . Or open an issue with questions and/or suggestions.","title":"Want to Know More?"},{"location":"node_modules/asynckit/#license","text":"AsyncKit is licensed under the MIT license.","title":"License"},{"location":"node_modules/autolinker/","text":"Autolinker.js Because I had so much trouble finding a good auto-linking implementation out in the wild, I decided to roll my own. It seemed that everything I found out there was either an implementation that didn't cover every case, or was just limited in one way or another. So, this utility attempts to handle everything. It: Autolinks URLs, whether or not they start with the protocol (i.e. 'http://'). In other words, it will automatically link the text \"google.com\", as well as \"http://google.com\". Will properly handle URLs with special characters Will properly handle URLs with query parameters or a named anchor (i.e. hash) Will autolink email addresses. Will autolink phone numbers. Will autolink Twitter handles. Will autolink hashtags. Will properly handle HTML input. The utility will not change the href attribute inside anchor () tags (or any other tag/attribute for that matter), and will not accidentally wrap the inner text of an anchor tag with a new one (which would cause doubly-nested anchor tags). Hope that this utility helps you as well! Full API Docs: http://gregjacobs.github.io/Autolinker.js/docs/ Live Example: http://gregjacobs.github.io/Autolinker.js/examples/live-example/ Installation Download Simply clone or download the zip of the project, and link to either dist/Autolinker.js or dist/Autolinker.min.js with a script tag: Using with the Bower package manager: Command line: bower install Autolinker.js --save Using with Node.js via npm : Command Line: npm install autolinker --save JavaScript: var Autolinker = require( 'autolinker' ); // note: npm wants an all-lowercase package name, but the utility is a class and // should be aliased with a capital letter Usage Using the static link() method: var linkedText = Autolinker.link( textToAutolink[, options] ); Using as a class: var autolinker = new Autolinker( [ options ] ); var linkedText = autolinker.link( textToAutoLink ); Note: if using the same options to autolink multiple pieces of html/text, it is slightly more efficient to create a single Autolinker instance, and run the link() method repeatedly (i.e. use the \"class\" form above). Example: var linkedText = Autolinker.link( \"Check out google.com\", { className: \"myLink\" } ); // Produces: \"Check out google.com\" Options These are the options which may be specified for linking. These are specified by providing an Object as the second parameter to Autolinker.link() . These include: newWindow : Boolean true to have the links should open in a new window when clicked, false otherwise. Defaults to true . stripPrefix : Boolean true to have the 'http://' or 'https://' and/or the 'www.' stripped from the beginning of links, false otherwise. Defaults to true . truncate : Number/Object A number for how many characters long URLs/emails/Twitter handles/Twitter hashtags should be truncated to inside the text of a link. If the match is over the number of characters, it will be truncated to this length by replacing the end of the string with a two period ellipsis ('..'). Example: a url like 'http://www.yahoo.com/some/long/path/to/a/file' truncated to 25 characters may look like this: 'yahoo.com/some/long/pat..' In the object form, both length and location may be specified to perform truncation. Available options for location are: 'end' (default), 'middle', or 'smart'. Example usage: ```javascript truncate: { length: 32, location: 'middle' } ``` The 'smart' truncation option is for URLs where the algorithm attempts to strip out unnecessary parts of the URL (such as the 'www.', then URL scheme, hash, etc.) before trying to find a good point to insert the ellipsis if it is still too long. For details, see source code of: TruncateSmart - className : String A CSS class name to add to the generated anchor tags. This class will be added to all links, as well as this class plus \"url\"/\"email\"/\"phone\"/\"twitter\"/\"hashtag\" suffixes for styling url/email/phone/twitter/hashtag links differently. For example, if this config is provided as \"myLink\", then: 1) URL links will have the CSS classes: \"myLink myLink-url\" 2) Email links will have the CSS classes: \"myLink myLink-email\" 3) Phone links will have the CSS classes: \"myLink myLink-phone\" 4) Twitter links will have the CSS classes: \"myLink myLink-twitter\" 5) Hashtag links will have the CSS classes: \"myLink myLink-hashtag\" urls : Boolean/Object true to have URLs auto-linked, false to skip auto-linking of URLs. Defaults to true . This option also accepts an Object form with 3 properties, to allow for more customization of what exactly gets linked. All default to true : - schemeMatches (Boolean): `true` to match URLs found prefixed with a scheme, i.e. `http://google.com`, or `other+scheme://google.com`, `false` to prevent these types of matches. - wwwMatches (Boolean): `true` to match urls found prefixed with `'www.'`, i.e. `www.google.com`. `false` to prevent these types of matches. Note that if the URL had a prefixed scheme, and `schemeMatches` is true, it will still be linked. - tldMatches: `true` to match URLs with known top level domains (.com, .net, etc.) that are not prefixed with a scheme or `'www.'`. Ex: `google.com`, `asdf.org/?page=1`, etc. `false` to prevent these types of matches.
Example usage: urls: { schemeMatches: true, wwwMatches: true, tldMatches: false } email : Boolean true to have email addresses auto-linked, false to skip auto-linking of email addresses. Defaults to true . phone : Boolean true to have phone numbers auto-linked, false to skip auto-linking of phone numbers. Defaults to true . twitter : Boolean true to have Twitter handles auto-linked, false to skip auto-linking of Twitter handles. Defaults to true . hashtag : Boolean/String A string for the service name to have hashtags auto-linked to. Supported values at this time are 'twitter', 'facebook' and 'instagram'. Pass false to skip auto-linking of hashtags. Defaults to false . replaceFn : Function A function to use to programmatically make replacements of matches in the input string, one at a time. See the section Custom Replacement Function for more details. For example, if you wanted to disable links from opening in new windows , you could do: var linkedText = Autolinker.link( \"Check out google.com\", { newWindow: false } ); // Produces: \"Check out google.com\" And if you wanted to truncate the length of URLs (while also not opening in a new window), you could do: var linkedText = Autolinker.link( \"http://www.yahoo.com/some/long/path/to/a/file\", { truncate: 25, newWindow: false } ); // Produces: \"yahoo.com/some/long/pat..\" More Examples One could update an entire DOM element that has unlinked text to auto-link them as such: var myTextEl = document.getElementById( 'text' ); myTextEl.innerHTML = Autolinker.link( myTextEl.innerHTML ); Using the same pre-configured Autolinker instance in multiple locations of a codebase (usually by dependency injection): var autolinker = new Autolinker( { newWindow: false, truncate: 25 } ); //... autolinker.link( \"Check out http://www.yahoo.com/some/long/path/to/a/file\" ); // Produces: \"Check out yahoo.com/some/long/pat..\" //... autolinker.link( \"Go to www.google.com\" ); // Produces: \"Go to google.com\" Custom Replacement Function A custom replacement function ( replaceFn ) may be provided to replace url/email/phone/Twitter handle/hashtag matches on an individual basis, based on the return from this function. Full example, for purposes of documenting the API: var input = \"...\"; // string with URLs, Email Addresses, Twitter Handles, and Hashtags var linkedText = Autolinker.link( input, { replaceFn : function( autolinker, match ) { console.log( \"href = \", match.getAnchorHref() ); console.log( \"text = \", match.getAnchorText() ); switch( match.getType() ) { case 'url' : console.log( \"url: \", match.getUrl() ); return true; // let Autolinker perform its normal anchor tag replacement case 'email' : var email = match.getEmail(); console.log( \"email: \", email ); if( email === \"my@own.address\" ) { return false; // don't auto-link this particular email address; leave as-is } else { return; // no return value will have Autolinker perform its normal anchor tag replacement (same as returning `true`) } case 'phone' : console.log( \"Phone Number: \", match.getNumber() ); return '' + match.getNumber() + ''; case 'twitter' : console.log( \"Twitter Handle: \", match.getTwitterHandle() ); return '' + match.getTwitterHandle() + ''; case 'hashtag' : console.log( \"Hashtag: \", match.getHashtag() ); return '' + match.getHashtag() + ''; } } } ); Modifying the default generated anchor tag var input = \"...\"; // string with URLs, Email Addresses, Twitter Handles, and Hashtags var linkedText = Autolinker.link( input, { replaceFn : function( autolinker, match ) { console.log( \"href = \", match.getAnchorHref() ); console.log( \"text = \", match.getAnchorText() ); var tag = match.buildTag(); // returns an `Autolinker.HtmlTag` instance for an tag tag.setAttr( 'rel', 'nofollow' ); // adds a 'rel' attribute tag.addClass( 'external-link' ); // adds a CSS class tag.setInnerHtml( 'Click here!' ); // sets the inner html for the anchor tag return tag; } } ); The replaceFn is provided two arguments: The Autolinker instance that is performing replacements. An Autolinker.match.Match object which details the match that is to be replaced. A replacement of the match is made based on the return value of the function. The following return values may be provided: No return value ( undefined ), or true (Boolean): Delegate back to Autolinker to replace the match as it normally would. false (Boolean): Do not replace the current match at all - leave as-is. Any String: If a string is returned from the function, the string will be used directly as the replacement HTML for the match. An Autolinker.HtmlTag instance, which can be used to build/modify an HTML tag before writing out its HTML text. Full API Docs The full API docs for Autolinker may be referenced at: http://gregjacobs.github.io/Autolinker.js/docs/ Live Example http://gregjacobs.github.io/Autolinker.js/examples/live-example/ Contributing Pull requests definitely welcome. Make sure to add tests to cover your new functionality/bugfix. Run the gulp command to build/test (or alternatively, open the tests/index.html file to run the tests). When committing, please omit checking in the files in the dist/ folder after building/testing. These are only committed to the repository for users downloading Autolinker via Bower. I will build these files and assign them a version number when merging your PR. Please use tabs for indents! Tabs are better for everybody (individuals can set their editors to different tab sizes based on their visual preferences). Changelog See Releases","title":"Autolinker.js"},{"location":"node_modules/autolinker/#autolinkerjs","text":"Because I had so much trouble finding a good auto-linking implementation out in the wild, I decided to roll my own. It seemed that everything I found out there was either an implementation that didn't cover every case, or was just limited in one way or another. So, this utility attempts to handle everything. It: Autolinks URLs, whether or not they start with the protocol (i.e. 'http://'). In other words, it will automatically link the text \"google.com\", as well as \"http://google.com\". Will properly handle URLs with special characters Will properly handle URLs with query parameters or a named anchor (i.e. hash) Will autolink email addresses. Will autolink phone numbers. Will autolink Twitter handles. Will autolink hashtags. Will properly handle HTML input. The utility will not change the href attribute inside anchor () tags (or any other tag/attribute for that matter), and will not accidentally wrap the inner text of an anchor tag with a new one (which would cause doubly-nested anchor tags). Hope that this utility helps you as well! Full API Docs: http://gregjacobs.github.io/Autolinker.js/docs/ Live Example: http://gregjacobs.github.io/Autolinker.js/examples/live-example/","title":"Autolinker.js"},{"location":"node_modules/autolinker/#installation","text":"","title":"Installation"},{"location":"node_modules/autolinker/#download","text":"Simply clone or download the zip of the project, and link to either dist/Autolinker.js or dist/Autolinker.min.js with a script tag: ","title":"Download"},{"location":"node_modules/autolinker/#using-with-the-bower-package-manager","text":"Command line: bower install Autolinker.js --save","title":"Using with the Bower package manager:"},{"location":"node_modules/autolinker/#using-with-nodejs-via-npm","text":"Command Line: npm install autolinker --save JavaScript: var Autolinker = require( 'autolinker' ); // note: npm wants an all-lowercase package name, but the utility is a class and // should be aliased with a capital letter","title":"Using with Node.js via npm:"},{"location":"node_modules/autolinker/#usage","text":"Using the static link() method: var linkedText = Autolinker.link( textToAutolink[, options] ); Using as a class: var autolinker = new Autolinker( [ options ] ); var linkedText = autolinker.link( textToAutoLink ); Note: if using the same options to autolink multiple pieces of html/text, it is slightly more efficient to create a single Autolinker instance, and run the link() method repeatedly (i.e. use the \"class\" form above).","title":"Usage"},{"location":"node_modules/autolinker/#example","text":"var linkedText = Autolinker.link( \"Check out google.com\", { className: \"myLink\" } ); // Produces: \"Check out google.com\"","title":"Example:"},{"location":"node_modules/autolinker/#options","text":"These are the options which may be specified for linking. These are specified by providing an Object as the second parameter to Autolinker.link() . These include: newWindow : Boolean true to have the links should open in a new window when clicked, false otherwise. Defaults to true . stripPrefix : Boolean true to have the 'http://' or 'https://' and/or the 'www.' stripped from the beginning of links, false otherwise. Defaults to true . truncate : Number/Object A number for how many characters long URLs/emails/Twitter handles/Twitter hashtags should be truncated to inside the text of a link. If the match is over the number of characters, it will be truncated to this length by replacing the end of the string with a two period ellipsis ('..'). Example: a url like 'http://www.yahoo.com/some/long/path/to/a/file' truncated to 25 characters may look like this: 'yahoo.com/some/long/pat..' In the object form, both length and location may be specified to perform truncation. Available options for location are: 'end' (default), 'middle', or 'smart'. Example usage: ```javascript truncate: { length: 32, location: 'middle' } ``` The 'smart' truncation option is for URLs where the algorithm attempts to strip out unnecessary parts of the URL (such as the 'www.', then URL scheme, hash, etc.) before trying to find a good point to insert the ellipsis if it is still too long. For details, see source code of: TruncateSmart - className : String A CSS class name to add to the generated anchor tags. This class will be added to all links, as well as this class plus \"url\"/\"email\"/\"phone\"/\"twitter\"/\"hashtag\" suffixes for styling url/email/phone/twitter/hashtag links differently. For example, if this config is provided as \"myLink\", then: 1) URL links will have the CSS classes: \"myLink myLink-url\" 2) Email links will have the CSS classes: \"myLink myLink-email\" 3) Phone links will have the CSS classes: \"myLink myLink-phone\" 4) Twitter links will have the CSS classes: \"myLink myLink-twitter\" 5) Hashtag links will have the CSS classes: \"myLink myLink-hashtag\" urls : Boolean/Object true to have URLs auto-linked, false to skip auto-linking of URLs. Defaults to true . This option also accepts an Object form with 3 properties, to allow for more customization of what exactly gets linked. All default to true : - schemeMatches (Boolean): `true` to match URLs found prefixed with a scheme, i.e. `http://google.com`, or `other+scheme://google.com`, `false` to prevent these types of matches. - wwwMatches (Boolean): `true` to match urls found prefixed with `'www.'`, i.e. `www.google.com`. `false` to prevent these types of matches. Note that if the URL had a prefixed scheme, and `schemeMatches` is true, it will still be linked. - tldMatches: `true` to match URLs with known top level domains (.com, .net, etc.) that are not prefixed with a scheme or `'www.'`. Ex: `google.com`, `asdf.org/?page=1`, etc. `false` to prevent these types of matches.
Example usage: urls: { schemeMatches: true, wwwMatches: true, tldMatches: false } email : Boolean true to have email addresses auto-linked, false to skip auto-linking of email addresses. Defaults to true . phone : Boolean true to have phone numbers auto-linked, false to skip auto-linking of phone numbers. Defaults to true . twitter : Boolean true to have Twitter handles auto-linked, false to skip auto-linking of Twitter handles. Defaults to true . hashtag : Boolean/String A string for the service name to have hashtags auto-linked to. Supported values at this time are 'twitter', 'facebook' and 'instagram'. Pass false to skip auto-linking of hashtags. Defaults to false . replaceFn : Function A function to use to programmatically make replacements of matches in the input string, one at a time. See the section Custom Replacement Function for more details. For example, if you wanted to disable links from opening in new windows , you could do: var linkedText = Autolinker.link( \"Check out google.com\", { newWindow: false } ); // Produces: \"Check out google.com\" And if you wanted to truncate the length of URLs (while also not opening in a new window), you could do: var linkedText = Autolinker.link( \"http://www.yahoo.com/some/long/path/to/a/file\", { truncate: 25, newWindow: false } ); // Produces: \"yahoo.com/some/long/pat..\"","title":"Options"},{"location":"node_modules/autolinker/#more-examples","text":"One could update an entire DOM element that has unlinked text to auto-link them as such: var myTextEl = document.getElementById( 'text' ); myTextEl.innerHTML = Autolinker.link( myTextEl.innerHTML ); Using the same pre-configured Autolinker instance in multiple locations of a codebase (usually by dependency injection): var autolinker = new Autolinker( { newWindow: false, truncate: 25 } ); //... autolinker.link( \"Check out http://www.yahoo.com/some/long/path/to/a/file\" ); // Produces: \"Check out yahoo.com/some/long/pat..\" //... autolinker.link( \"Go to www.google.com\" ); // Produces: \"Go to google.com\"","title":"More Examples"},{"location":"node_modules/autolinker/#custom-replacement-function","text":"A custom replacement function ( replaceFn ) may be provided to replace url/email/phone/Twitter handle/hashtag matches on an individual basis, based on the return from this function.","title":"Custom Replacement Function"},{"location":"node_modules/autolinker/#full-example-for-purposes-of-documenting-the-api","text":"var input = \"...\"; // string with URLs, Email Addresses, Twitter Handles, and Hashtags var linkedText = Autolinker.link( input, { replaceFn : function( autolinker, match ) { console.log( \"href = \", match.getAnchorHref() ); console.log( \"text = \", match.getAnchorText() ); switch( match.getType() ) { case 'url' : console.log( \"url: \", match.getUrl() ); return true; // let Autolinker perform its normal anchor tag replacement case 'email' : var email = match.getEmail(); console.log( \"email: \", email ); if( email === \"my@own.address\" ) { return false; // don't auto-link this particular email address; leave as-is } else { return; // no return value will have Autolinker perform its normal anchor tag replacement (same as returning `true`) } case 'phone' : console.log( \"Phone Number: \", match.getNumber() ); return '' + match.getNumber() + ''; case 'twitter' : console.log( \"Twitter Handle: \", match.getTwitterHandle() ); return '' + match.getTwitterHandle() + ''; case 'hashtag' : console.log( \"Hashtag: \", match.getHashtag() ); return '' + match.getHashtag() + ''; } } } );","title":"Full example, for purposes of documenting the API:"},{"location":"node_modules/autolinker/#modifying-the-default-generated-anchor-tag","text":"var input = \"...\"; // string with URLs, Email Addresses, Twitter Handles, and Hashtags var linkedText = Autolinker.link( input, { replaceFn : function( autolinker, match ) { console.log( \"href = \", match.getAnchorHref() ); console.log( \"text = \", match.getAnchorText() ); var tag = match.buildTag(); // returns an `Autolinker.HtmlTag` instance for an tag tag.setAttr( 'rel', 'nofollow' ); // adds a 'rel' attribute tag.addClass( 'external-link' ); // adds a CSS class tag.setInnerHtml( 'Click here!' ); // sets the inner html for the anchor tag return tag; } } ); The replaceFn is provided two arguments: The Autolinker instance that is performing replacements. An Autolinker.match.Match object which details the match that is to be replaced. A replacement of the match is made based on the return value of the function. The following return values may be provided: No return value ( undefined ), or true (Boolean): Delegate back to Autolinker to replace the match as it normally would. false (Boolean): Do not replace the current match at all - leave as-is. Any String: If a string is returned from the function, the string will be used directly as the replacement HTML for the match. An Autolinker.HtmlTag instance, which can be used to build/modify an HTML tag before writing out its HTML text.","title":"Modifying the default generated anchor tag"},{"location":"node_modules/autolinker/#full-api-docs","text":"The full API docs for Autolinker may be referenced at: http://gregjacobs.github.io/Autolinker.js/docs/","title":"Full API Docs"},{"location":"node_modules/autolinker/#live-example","text":"http://gregjacobs.github.io/Autolinker.js/examples/live-example/","title":"Live Example"},{"location":"node_modules/autolinker/#contributing","text":"Pull requests definitely welcome. Make sure to add tests to cover your new functionality/bugfix. Run the gulp command to build/test (or alternatively, open the tests/index.html file to run the tests). When committing, please omit checking in the files in the dist/ folder after building/testing. These are only committed to the repository for users downloading Autolinker via Bower. I will build these files and assign them a version number when merging your PR. Please use tabs for indents! Tabs are better for everybody (individuals can set their editors to different tab sizes based on their visual preferences).","title":"Contributing"},{"location":"node_modules/autolinker/#changelog","text":"See Releases","title":"Changelog"},{"location":"node_modules/aws-sign2/","text":"aws-sign AWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module.","title":"aws-sign"},{"location":"node_modules/aws-sign2/#aws-sign","text":"AWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module.","title":"aws-sign"},{"location":"node_modules/aws4/","text":"aws4 A small utility to sign vanilla node.js http(s) request options using Amazon's AWS Signature Version 4 . Can also be used in the browser . This signature is supported by nearly all Amazon services, including S3 , EC2 , DynamoDB , Kinesis , Lambda , SQS , SNS , IAM , STS , RDS , CloudWatch , CloudWatch Logs , CodeDeploy , CloudFront , CloudTrail , ElastiCache , EMR , Glacier , CloudSearch , Elastic Load Balancing , Elastic Transcoder , CloudFormation , Elastic Beanstalk , Storage Gateway , Data Pipeline , Direct Connect , Redshift , OpsWorks , SES , SWF , AutoScaling , Mobile Analytics , Cognito Identity , Cognito Sync , Container Service , AppStream , Key Management Service , Config , CloudHSM , Route53 and Route53 Domains . Indeed, the only AWS services that don't support v4 as of 2014-12-30 are Import/Export and SimpleDB (they only support AWS Signature Version 2 ). It also provides defaults for a number of core AWS headers and request parameters, making it very easy to query AWS services, or build out a fully-featured AWS library. Example var http = require('http'), https = require('https'), aws4 = require('aws4') // given an options object you could pass to http.request var opts = {host: 'sqs.us-east-1.amazonaws.com', path: '/?Action=ListQueues'} // alternatively (as aws4 can infer the host): opts = {service: 'sqs', region: 'us-east-1', path: '/?Action=ListQueues'} // alternatively (as us-east-1 is default): opts = {service: 'sqs', path: '/?Action=ListQueues'} aws4.sign(opts) // assumes AWS credentials are available in process.env console.log(opts) /* { host: 'sqs.us-east-1.amazonaws.com', path: '/?Action=ListQueues', headers: { Host: 'sqs.us-east-1.amazonaws.com', 'X-Amz-Date': '20121226T061030Z', Authorization: 'AWS4-HMAC-SHA256 Credential=ABCDEF/20121226/us-east-1/sqs/aws4_request, ...' } } */ // we can now use this to query AWS using the standard node.js http API http.request(opts, function(res) { res.pipe(process.stdout) }).end() /* ... */ More options // you can also pass AWS credentials in explicitly (otherwise taken from process.env) aws4.sign(opts, {accessKeyId: '', secretAccessKey: ''}) // can also add the signature to query strings aws4.sign({service: 's3', path: '/my-bucket?X-Amz-Expires=12345', signQuery: true}) // create a utility function to pipe to stdout (with https this time) function request(o) { https.request(o, function(res) { res.pipe(process.stdout) }).end(o.body || '') } // aws4 can infer the HTTP method if a body is passed in // method will be POST and Content-Type: 'application/x-www-form-urlencoded; charset=utf-8' request(aws4.sign({service: 'iam', body: 'Action=ListGroups&Version=2010-05-08'})) /* ... */ // can specify any custom option or header as per usual request(aws4.sign({ service: 'dynamodb', region: 'ap-southeast-2', method: 'POST', path: '/', headers: { 'Content-Type': 'application/x-amz-json-1.0', 'X-Amz-Target': 'DynamoDB_20120810.ListTables' }, body: '{}' })) /* {\"TableNames\":[]} ... */ // works with all other services that support Signature Version 4 request(aws4.sign({service: 's3', path: '/', signQuery: true})) /* ... */ request(aws4.sign({service: 'ec2', path: '/?Action=DescribeRegions&Version=2014-06-15'})) /* ... */ request(aws4.sign({service: 'sns', path: '/?Action=ListTopics&Version=2010-03-31'})) /* ... */ request(aws4.sign({service: 'sts', path: '/?Action=GetSessionToken&Version=2011-06-15'})) /* ... */ request(aws4.sign({service: 'cloudsearch', path: '/?Action=ListDomainNames&Version=2013-01-01'})) /* ... */ request(aws4.sign({service: 'ses', path: '/?Action=ListIdentities&Version=2010-12-01'})) /* ... */ request(aws4.sign({service: 'autoscaling', path: '/?Action=DescribeAutoScalingInstances&Version=2011-01-01'})) /* ... */ request(aws4.sign({service: 'elasticloadbalancing', path: '/?Action=DescribeLoadBalancers&Version=2012-06-01'})) /* ... */ request(aws4.sign({service: 'cloudformation', path: '/?Action=ListStacks&Version=2010-05-15'})) /* ... */ request(aws4.sign({service: 'elasticbeanstalk', path: '/?Action=ListAvailableSolutionStacks&Version=2010-12-01'})) /* ... */ request(aws4.sign({service: 'rds', path: '/?Action=DescribeDBInstances&Version=2012-09-17'})) /* ... */ request(aws4.sign({service: 'monitoring', path: '/?Action=ListMetrics&Version=2010-08-01'})) /* ... */ request(aws4.sign({service: 'redshift', path: '/?Action=DescribeClusters&Version=2012-12-01'})) /* ... */ request(aws4.sign({service: 'cloudfront', path: '/2014-05-31/distribution'})) /* ... */ request(aws4.sign({service: 'elasticache', path: '/?Action=DescribeCacheClusters&Version=2014-07-15'})) /* ... */ request(aws4.sign({service: 'elasticmapreduce', path: '/?Action=DescribeJobFlows&Version=2009-03-31'})) /* ... */ request(aws4.sign({service: 'route53', path: '/2013-04-01/hostedzone'})) /* ... */ request(aws4.sign({service: 'appstream', path: '/applications'})) /* {\"_links\":{\"curie\":[{\"href\":\"http://docs.aws.amazon.com/appstream/latest/... ... */ request(aws4.sign({service: 'cognito-sync', path: '/identitypools'})) /* {\"Count\":0,\"IdentityPoolUsages\":[],\"MaxResults\":16,\"NextToken\":null} ... */ request(aws4.sign({service: 'elastictranscoder', path: '/2012-09-25/pipelines'})) /* {\"NextPageToken\":null,\"Pipelines\":[]} ... */ request(aws4.sign({service: 'lambda', path: '/2014-11-13/functions/'})) /* {\"Functions\":[],\"NextMarker\":null} ... */ request(aws4.sign({service: 'ecs', path: '/?Action=ListClusters&Version=2014-11-13'})) /* ... */ request(aws4.sign({service: 'glacier', path: '/-/vaults', headers: {'X-Amz-Glacier-Version': '2012-06-01'}})) /* {\"Marker\":null,\"VaultList\":[]} ... */ request(aws4.sign({service: 'storagegateway', body: '{}', headers: { 'Content-Type': 'application/x-amz-json-1.1', 'X-Amz-Target': 'StorageGateway_20120630.ListGateways' }})) /* {\"Gateways\":[]} ... */ request(aws4.sign({service: 'datapipeline', body: '{}', headers: { 'Content-Type': 'application/x-amz-json-1.1', 'X-Amz-Target': 'DataPipeline.ListPipelines' }})) /* {\"hasMoreResults\":false,\"pipelineIdList\":[]} ... */ request(aws4.sign({service: 'opsworks', body: '{}', headers: { 'Content-Type': 'application/x-amz-json-1.1', 'X-Amz-Target': 'OpsWorks_20130218.DescribeStacks' }})) /* {\"Stacks\":[]} ... */ request(aws4.sign({service: 'route53domains', body: '{}', headers: { 'Content-Type': 'application/x-amz-json-1.1', 'X-Amz-Target': 'Route53Domains_v20140515.ListDomains' }})) /* {\"Domains\":[]} ... */ request(aws4.sign({service: 'kinesis', body: '{}', headers: { 'Content-Type': 'application/x-amz-json-1.1', 'X-Amz-Target': 'Kinesis_20131202.ListStreams' }})) /* {\"HasMoreStreams\":false,\"StreamNames\":[]} ... */ request(aws4.sign({service: 'cloudtrail', body: '{}', headers: { 'Content-Type': 'application/x-amz-json-1.1', 'X-Amz-Target': 'CloudTrail_20131101.DescribeTrails' }})) /* {\"trailList\":[]} ... */ request(aws4.sign({service: 'logs', body: '{}', headers: { 'Content-Type': 'application/x-amz-json-1.1', 'X-Amz-Target': 'Logs_20140328.DescribeLogGroups' }})) /* {\"logGroups\":[]} ... */ request(aws4.sign({service: 'codedeploy', body: '{}', headers: { 'Content-Type': 'application/x-amz-json-1.1', 'X-Amz-Target': 'CodeDeploy_20141006.ListApplications' }})) /* {\"applications\":[]} ... */ request(aws4.sign({service: 'directconnect', body: '{}', headers: { 'Content-Type': 'application/x-amz-json-1.1', 'X-Amz-Target': 'OvertureService.DescribeConnections' }})) /* {\"connections\":[]} ... */ request(aws4.sign({service: 'kms', body: '{}', headers: { 'Content-Type': 'application/x-amz-json-1.1', 'X-Amz-Target': 'TrentService.ListKeys' }})) /* {\"Keys\":[],\"Truncated\":false} ... */ request(aws4.sign({service: 'config', body: '{}', headers: { 'Content-Type': 'application/x-amz-json-1.1', 'X-Amz-Target': 'StarlingDoveService.DescribeDeliveryChannels' }})) /* {\"DeliveryChannels\":[]} ... */ request(aws4.sign({service: 'cloudhsm', body: '{}', headers: { 'Content-Type': 'application/x-amz-json-1.1', 'X-Amz-Target': 'CloudHsmFrontendService.ListAvailableZones' }})) /* {\"AZList\":[\"us-east-1a\",\"us-east-1b\",\"us-east-1c\"]} ... */ request(aws4.sign({ service: 'swf', body: '{\"registrationStatus\":\"REGISTERED\"}', headers: { 'Content-Type': 'application/x-amz-json-1.0', 'X-Amz-Target': 'SimpleWorkflowService.ListDomains' } })) /* {\"domainInfos\":[]} ... */ request(aws4.sign({ service: 'cognito-identity', body: '{\"MaxResults\": 1}', headers: { 'Content-Type': 'application/x-amz-json-1.1', 'X-Amz-Target': 'AWSCognitoIdentityService.ListIdentityPools' } })) /* {\"IdentityPools\":[]} ... */ request(aws4.sign({ service: 'mobileanalytics', path: '/2014-06-05/events', body: JSON.stringify({events:[{ eventType: 'a', timestamp: new Date().toISOString(), session: {}, }]}), headers: { 'Content-Type': 'application/json', 'X-Amz-Client-Context': JSON.stringify({ client: {client_id: 'a', app_title: 'a'}, custom: {}, env: {platform: 'a'}, services: {}, }), } })) /* (HTTP 202, empty response) */ // Generate CodeCommit Git access password var signer = new aws4.RequestSigner({ service: 'codecommit', host: 'git-codecommit.us-east-1.amazonaws.com', method: 'GIT', path: '/v1/repos/MyAwesomeRepo', }) var password = signer.getDateTime() + 'Z' + signer.signature() API aws4.sign(requestOptions, [credentials]) This calculates and populates the Authorization header of requestOptions , and any other necessary AWS headers and/or request options. Returns requestOptions as a convenience for chaining. requestOptions is an object holding the same options that the node.js http.request function takes. The following properties of requestOptions are used in the signing or populated if they don't already exist: hostname or host (will be determined from service and region if not given) method (will use 'GET' if not given or 'POST' if there is a body ) path (will use '/' if not given) body (will use '' if not given) service (will be calculated from hostname or host if not given) region (will be calculated from hostname or host or use 'us-east-1' if not given) headers['Host'] (will use hostname or host or be calculated if not given) headers['Content-Type'] (will use 'application/x-www-form-urlencoded; charset=utf-8' if not given and there is a body ) headers['Date'] (used to calculate the signature date if given, otherwise new Date is used) Your AWS credentials (which can be found in your AWS console ) can be specified in one of two ways: As the second argument, like this: aws4.sign(requestOptions, { secretAccessKey: \"\", accessKeyId: \"\", sessionToken: \"\" }) From process.env , such as this: export AWS_SECRET_ACCESS_KEY=\"\" export AWS_ACCESS_KEY_ID=\"\" export AWS_SESSION_TOKEN=\"\" (will also use AWS_ACCESS_KEY and AWS_SECRET_KEY if available) The sessionToken property and AWS_SESSION_TOKEN environment variable are optional for signing with IAM STS temporary credentials . Installation With npm do: npm install aws4 Can also be used in the browser . Thanks Thanks to @jed for his dynamo-client lib where I first committed and subsequently extracted this code. Also thanks to the official node.js AWS SDK for giving me a start on implementing the v4 signature.","title":"Index"},{"location":"node_modules/aws4/#aws4","text":"A small utility to sign vanilla node.js http(s) request options using Amazon's AWS Signature Version 4 . Can also be used in the browser . This signature is supported by nearly all Amazon services, including S3 , EC2 , DynamoDB , Kinesis , Lambda , SQS , SNS , IAM , STS , RDS , CloudWatch , CloudWatch Logs , CodeDeploy , CloudFront , CloudTrail , ElastiCache , EMR , Glacier , CloudSearch , Elastic Load Balancing , Elastic Transcoder , CloudFormation , Elastic Beanstalk , Storage Gateway , Data Pipeline , Direct Connect , Redshift , OpsWorks , SES , SWF , AutoScaling , Mobile Analytics , Cognito Identity , Cognito Sync , Container Service , AppStream , Key Management Service , Config , CloudHSM , Route53 and Route53 Domains . Indeed, the only AWS services that don't support v4 as of 2014-12-30 are Import/Export and SimpleDB (they only support AWS Signature Version 2 ). It also provides defaults for a number of core AWS headers and request parameters, making it very easy to query AWS services, or build out a fully-featured AWS library.","title":"aws4"},{"location":"node_modules/aws4/#example","text":"var http = require('http'), https = require('https'), aws4 = require('aws4') // given an options object you could pass to http.request var opts = {host: 'sqs.us-east-1.amazonaws.com', path: '/?Action=ListQueues'} // alternatively (as aws4 can infer the host): opts = {service: 'sqs', region: 'us-east-1', path: '/?Action=ListQueues'} // alternatively (as us-east-1 is default): opts = {service: 'sqs', path: '/?Action=ListQueues'} aws4.sign(opts) // assumes AWS credentials are available in process.env console.log(opts) /* { host: 'sqs.us-east-1.amazonaws.com', path: '/?Action=ListQueues', headers: { Host: 'sqs.us-east-1.amazonaws.com', 'X-Amz-Date': '20121226T061030Z', Authorization: 'AWS4-HMAC-SHA256 Credential=ABCDEF/20121226/us-east-1/sqs/aws4_request, ...' } } */ // we can now use this to query AWS using the standard node.js http API http.request(opts, function(res) { res.pipe(process.stdout) }).end() /* ... */","title":"Example"},{"location":"node_modules/aws4/#more-options","text":"// you can also pass AWS credentials in explicitly (otherwise taken from process.env) aws4.sign(opts, {accessKeyId: '', secretAccessKey: ''}) // can also add the signature to query strings aws4.sign({service: 's3', path: '/my-bucket?X-Amz-Expires=12345', signQuery: true}) // create a utility function to pipe to stdout (with https this time) function request(o) { https.request(o, function(res) { res.pipe(process.stdout) }).end(o.body || '') } // aws4 can infer the HTTP method if a body is passed in // method will be POST and Content-Type: 'application/x-www-form-urlencoded; charset=utf-8' request(aws4.sign({service: 'iam', body: 'Action=ListGroups&Version=2010-05-08'})) /* ... */ // can specify any custom option or header as per usual request(aws4.sign({ service: 'dynamodb', region: 'ap-southeast-2', method: 'POST', path: '/', headers: { 'Content-Type': 'application/x-amz-json-1.0', 'X-Amz-Target': 'DynamoDB_20120810.ListTables' }, body: '{}' })) /* {\"TableNames\":[]} ... */ // works with all other services that support Signature Version 4 request(aws4.sign({service: 's3', path: '/', signQuery: true})) /* ... */ request(aws4.sign({service: 'ec2', path: '/?Action=DescribeRegions&Version=2014-06-15'})) /* ... */ request(aws4.sign({service: 'sns', path: '/?Action=ListTopics&Version=2010-03-31'})) /* ... */ request(aws4.sign({service: 'sts', path: '/?Action=GetSessionToken&Version=2011-06-15'})) /* ... */ request(aws4.sign({service: 'cloudsearch', path: '/?Action=ListDomainNames&Version=2013-01-01'})) /* ... */ request(aws4.sign({service: 'ses', path: '/?Action=ListIdentities&Version=2010-12-01'})) /* ... */ request(aws4.sign({service: 'autoscaling', path: '/?Action=DescribeAutoScalingInstances&Version=2011-01-01'})) /* ... */ request(aws4.sign({service: 'elasticloadbalancing', path: '/?Action=DescribeLoadBalancers&Version=2012-06-01'})) /* ... */ request(aws4.sign({service: 'cloudformation', path: '/?Action=ListStacks&Version=2010-05-15'})) /* ... */ request(aws4.sign({service: 'elasticbeanstalk', path: '/?Action=ListAvailableSolutionStacks&Version=2010-12-01'})) /* ... */ request(aws4.sign({service: 'rds', path: '/?Action=DescribeDBInstances&Version=2012-09-17'})) /* ... */ request(aws4.sign({service: 'monitoring', path: '/?Action=ListMetrics&Version=2010-08-01'})) /* ... */ request(aws4.sign({service: 'redshift', path: '/?Action=DescribeClusters&Version=2012-12-01'})) /* ... */ request(aws4.sign({service: 'cloudfront', path: '/2014-05-31/distribution'})) /* ... */ request(aws4.sign({service: 'elasticache', path: '/?Action=DescribeCacheClusters&Version=2014-07-15'})) /* ... */ request(aws4.sign({service: 'elasticmapreduce', path: '/?Action=DescribeJobFlows&Version=2009-03-31'})) /* ... */ request(aws4.sign({service: 'route53', path: '/2013-04-01/hostedzone'})) /* ... */ request(aws4.sign({service: 'appstream', path: '/applications'})) /* {\"_links\":{\"curie\":[{\"href\":\"http://docs.aws.amazon.com/appstream/latest/... ... */ request(aws4.sign({service: 'cognito-sync', path: '/identitypools'})) /* {\"Count\":0,\"IdentityPoolUsages\":[],\"MaxResults\":16,\"NextToken\":null} ... */ request(aws4.sign({service: 'elastictranscoder', path: '/2012-09-25/pipelines'})) /* {\"NextPageToken\":null,\"Pipelines\":[]} ... */ request(aws4.sign({service: 'lambda', path: '/2014-11-13/functions/'})) /* {\"Functions\":[],\"NextMarker\":null} ... */ request(aws4.sign({service: 'ecs', path: '/?Action=ListClusters&Version=2014-11-13'})) /* ... */ request(aws4.sign({service: 'glacier', path: '/-/vaults', headers: {'X-Amz-Glacier-Version': '2012-06-01'}})) /* {\"Marker\":null,\"VaultList\":[]} ... */ request(aws4.sign({service: 'storagegateway', body: '{}', headers: { 'Content-Type': 'application/x-amz-json-1.1', 'X-Amz-Target': 'StorageGateway_20120630.ListGateways' }})) /* {\"Gateways\":[]} ... */ request(aws4.sign({service: 'datapipeline', body: '{}', headers: { 'Content-Type': 'application/x-amz-json-1.1', 'X-Amz-Target': 'DataPipeline.ListPipelines' }})) /* {\"hasMoreResults\":false,\"pipelineIdList\":[]} ... */ request(aws4.sign({service: 'opsworks', body: '{}', headers: { 'Content-Type': 'application/x-amz-json-1.1', 'X-Amz-Target': 'OpsWorks_20130218.DescribeStacks' }})) /* {\"Stacks\":[]} ... */ request(aws4.sign({service: 'route53domains', body: '{}', headers: { 'Content-Type': 'application/x-amz-json-1.1', 'X-Amz-Target': 'Route53Domains_v20140515.ListDomains' }})) /* {\"Domains\":[]} ... */ request(aws4.sign({service: 'kinesis', body: '{}', headers: { 'Content-Type': 'application/x-amz-json-1.1', 'X-Amz-Target': 'Kinesis_20131202.ListStreams' }})) /* {\"HasMoreStreams\":false,\"StreamNames\":[]} ... */ request(aws4.sign({service: 'cloudtrail', body: '{}', headers: { 'Content-Type': 'application/x-amz-json-1.1', 'X-Amz-Target': 'CloudTrail_20131101.DescribeTrails' }})) /* {\"trailList\":[]} ... */ request(aws4.sign({service: 'logs', body: '{}', headers: { 'Content-Type': 'application/x-amz-json-1.1', 'X-Amz-Target': 'Logs_20140328.DescribeLogGroups' }})) /* {\"logGroups\":[]} ... */ request(aws4.sign({service: 'codedeploy', body: '{}', headers: { 'Content-Type': 'application/x-amz-json-1.1', 'X-Amz-Target': 'CodeDeploy_20141006.ListApplications' }})) /* {\"applications\":[]} ... */ request(aws4.sign({service: 'directconnect', body: '{}', headers: { 'Content-Type': 'application/x-amz-json-1.1', 'X-Amz-Target': 'OvertureService.DescribeConnections' }})) /* {\"connections\":[]} ... */ request(aws4.sign({service: 'kms', body: '{}', headers: { 'Content-Type': 'application/x-amz-json-1.1', 'X-Amz-Target': 'TrentService.ListKeys' }})) /* {\"Keys\":[],\"Truncated\":false} ... */ request(aws4.sign({service: 'config', body: '{}', headers: { 'Content-Type': 'application/x-amz-json-1.1', 'X-Amz-Target': 'StarlingDoveService.DescribeDeliveryChannels' }})) /* {\"DeliveryChannels\":[]} ... */ request(aws4.sign({service: 'cloudhsm', body: '{}', headers: { 'Content-Type': 'application/x-amz-json-1.1', 'X-Amz-Target': 'CloudHsmFrontendService.ListAvailableZones' }})) /* {\"AZList\":[\"us-east-1a\",\"us-east-1b\",\"us-east-1c\"]} ... */ request(aws4.sign({ service: 'swf', body: '{\"registrationStatus\":\"REGISTERED\"}', headers: { 'Content-Type': 'application/x-amz-json-1.0', 'X-Amz-Target': 'SimpleWorkflowService.ListDomains' } })) /* {\"domainInfos\":[]} ... */ request(aws4.sign({ service: 'cognito-identity', body: '{\"MaxResults\": 1}', headers: { 'Content-Type': 'application/x-amz-json-1.1', 'X-Amz-Target': 'AWSCognitoIdentityService.ListIdentityPools' } })) /* {\"IdentityPools\":[]} ... */ request(aws4.sign({ service: 'mobileanalytics', path: '/2014-06-05/events', body: JSON.stringify({events:[{ eventType: 'a', timestamp: new Date().toISOString(), session: {}, }]}), headers: { 'Content-Type': 'application/json', 'X-Amz-Client-Context': JSON.stringify({ client: {client_id: 'a', app_title: 'a'}, custom: {}, env: {platform: 'a'}, services: {}, }), } })) /* (HTTP 202, empty response) */ // Generate CodeCommit Git access password var signer = new aws4.RequestSigner({ service: 'codecommit', host: 'git-codecommit.us-east-1.amazonaws.com', method: 'GIT', path: '/v1/repos/MyAwesomeRepo', }) var password = signer.getDateTime() + 'Z' + signer.signature()","title":"More options"},{"location":"node_modules/aws4/#api","text":"","title":"API"},{"location":"node_modules/aws4/#aws4signrequestoptions-credentials","text":"This calculates and populates the Authorization header of requestOptions , and any other necessary AWS headers and/or request options. Returns requestOptions as a convenience for chaining. requestOptions is an object holding the same options that the node.js http.request function takes. The following properties of requestOptions are used in the signing or populated if they don't already exist: hostname or host (will be determined from service and region if not given) method (will use 'GET' if not given or 'POST' if there is a body ) path (will use '/' if not given) body (will use '' if not given) service (will be calculated from hostname or host if not given) region (will be calculated from hostname or host or use 'us-east-1' if not given) headers['Host'] (will use hostname or host or be calculated if not given) headers['Content-Type'] (will use 'application/x-www-form-urlencoded; charset=utf-8' if not given and there is a body ) headers['Date'] (used to calculate the signature date if given, otherwise new Date is used) Your AWS credentials (which can be found in your AWS console ) can be specified in one of two ways: As the second argument, like this: aws4.sign(requestOptions, { secretAccessKey: \"\", accessKeyId: \"\", sessionToken: \"\" }) From process.env , such as this: export AWS_SECRET_ACCESS_KEY=\"\" export AWS_ACCESS_KEY_ID=\"\" export AWS_SESSION_TOKEN=\"\" (will also use AWS_ACCESS_KEY and AWS_SECRET_KEY if available) The sessionToken property and AWS_SESSION_TOKEN environment variable are optional for signing with IAM STS temporary credentials .","title":"aws4.sign(requestOptions, [credentials])"},{"location":"node_modules/aws4/#installation","text":"With npm do: npm install aws4 Can also be used in the browser .","title":"Installation"},{"location":"node_modules/aws4/#thanks","text":"Thanks to @jed for his dynamo-client lib where I first committed and subsequently extracted this code. Also thanks to the official node.js AWS SDK for giving me a start on implementing the v4 signature.","title":"Thanks"},{"location":"node_modules/bcrypt-pbkdf/","text":"Port of the OpenBSD bcrypt_pbkdf function to pure Javascript. npm -ified version of Devi Mandiri's port , with some minor performance improvements. The code is copied verbatim (and un-styled) from Devi's work. This product includes software developed by Niels Provos. API bcrypt_pbkdf.pbkdf(pass, passlen, salt, saltlen, key, keylen, rounds) Derive a cryptographic key of arbitrary length from a given password and salt, using the OpenBSD bcrypt_pbkdf function. This is a combination of Blowfish and SHA-512. See this article for further information. Parameters: pass , a Uint8Array of length passlen passlen , an integer Number salt , a Uint8Array of length saltlen saltlen , an integer Number key , a Uint8Array of length keylen , will be filled with output keylen , an integer Number rounds , an integer Number, number of rounds of the PBKDF to run bcrypt_pbkdf.hash(sha2pass, sha2salt, out) Calculate a Blowfish hash, given SHA2-512 output of a password and salt. Used as part of the inner round function in the PBKDF. Parameters: sha2pass , a Uint8Array of length 64 sha2salt , a Uint8Array of length 64 out , a Uint8Array of length 32, will be filled with output License This source form is a 1:1 port from the OpenBSD blowfish.c and bcrypt_pbkdf.c . As a result, it retains the original copyright and license. The two files are under slightly different (but compatible) licenses, and are here combined in one file. For each of the full license texts see LICENSE .","title":"Index"},{"location":"node_modules/bcrypt-pbkdf/#api","text":"","title":"API"},{"location":"node_modules/bcrypt-pbkdf/#bcrypt_pbkdfpbkdfpass-passlen-salt-saltlen-key-keylen-rounds","text":"Derive a cryptographic key of arbitrary length from a given password and salt, using the OpenBSD bcrypt_pbkdf function. This is a combination of Blowfish and SHA-512. See this article for further information. Parameters: pass , a Uint8Array of length passlen passlen , an integer Number salt , a Uint8Array of length saltlen saltlen , an integer Number key , a Uint8Array of length keylen , will be filled with output keylen , an integer Number rounds , an integer Number, number of rounds of the PBKDF to run","title":"bcrypt_pbkdf.pbkdf(pass, passlen, salt, saltlen, key, keylen, rounds)"},{"location":"node_modules/bcrypt-pbkdf/#bcrypt_pbkdfhashsha2pass-sha2salt-out","text":"Calculate a Blowfish hash, given SHA2-512 output of a password and salt. Used as part of the inner round function in the PBKDF. Parameters: sha2pass , a Uint8Array of length 64 sha2salt , a Uint8Array of length 64 out , a Uint8Array of length 32, will be filled with output","title":"bcrypt_pbkdf.hash(sha2pass, sha2salt, out)"},{"location":"node_modules/bcrypt-pbkdf/#license","text":"This source form is a 1:1 port from the OpenBSD blowfish.c and bcrypt_pbkdf.c . As a result, it retains the original copyright and license. The two files are under slightly different (but compatible) licenses, and are here combined in one file. For each of the full license texts see LICENSE .","title":"License"},{"location":"node_modules/boom/","text":"HTTP-friendly error objects Lead Maintainer: Adam Bretz boom provides a set of utilities for returning HTTP errors. Each utility returns a Boom error response object (instance of Error ) which includes the following properties: - isBoom - if true , indicates this is a Boom object instance. - isServer - convenience bool indicating status code >= 500. - message - the error message. - output - the formatted response. Can be directly manipulated after object construction to return a custom error response. Allowed root keys: - statusCode - the HTTP status code (typically 4xx or 5xx). - headers - an object containing any HTTP headers where each key is a header name and value is the header content. - payload - the formatted object used as the response payload (stringified). Can be directly manipulated but any changes will be lost if reformat() is called. Any content allowed and by default includes the following content: - statusCode - the HTTP status code, derived from error.output.statusCode . - error - the HTTP status message (e.g. 'Bad Request', 'Internal Server Error') derived from statusCode . - message - the error message derived from error.message . - inherited Error properties. The Boom object also supports the following method: - reformat() - rebuilds error.output using the other object properties. Overview Helper methods wrap(error, [statusCode], [message]) create(statusCode, [message], [data]) HTTP 4xx Errors 400: Boom.badRequest([message], [data]) 401: Boom.unauthorized([message], [scheme], [attributes]) 403: Boom.forbidden([message], [data]) 404: Boom.notFound([message], [data]) 405: Boom.methodNotAllowed([message], [data]) 406: Boom.notAcceptable([message], [data]) 407: Boom.proxyAuthRequired([message], [data]) 408: Boom.clientTimeout([message], [data]) 409: Boom.conflict([message], [data]) 410: Boom.resourceGone([message], [data]) 411: Boom.lengthRequired([message], [data]) 412: Boom.preconditionFailed([message], [data]) 413: Boom.entityTooLarge([message], [data]) 414: Boom.uriTooLong([message], [data]) 415: Boom.unsupportedMediaType([message], [data]) 416: Boom.rangeNotSatisfiable([message], [data]) 417: Boom.expectationFailed([message], [data]) 422: Boom.badData([message], [data]) 428: Boom.preconditionRequired([message], [data]) 429: Boom.tooManyRequests([message], [data]) HTTP 5xx Errors 500: Boom.badImplementation([message], [data]) 501: Boom.notImplemented([message], [data]) 502: Boom.badGateway([message], [data]) 503: Boom.serverTimeout([message], [data]) 504: Boom.gatewayTimeout([message], [data]) FAQ Helper Methods wrap(error, [statusCode], [message]) Decorates an error with the boom properties where: - error - the error object to wrap. If error is already a boom object, returns back the same object. - statusCode - optional HTTP status code. Defaults to 500 . - message - optional message string. If the error already has a message, it adds the message as a prefix. Defaults to no message. var error = new Error('Unexpected input'); Boom.wrap(error, 400); create(statusCode, [message], [data]) Generates an Error object with the boom decorations where: - statusCode - an HTTP error code number. Must be greater or equal 400. - message - optional message string. - data - additional error data set to error.data property. var error = Boom.create(400, 'Bad request', { timestamp: Date.now() }); HTTP 4xx Errors Boom.badRequest([message], [data]) Returns a 400 Bad Request error where: - message - optional message. - data - optional additional error data. Boom.badRequest('invalid query'); Generates the following response payload: { \"statusCode\": 400, \"error\": \"Bad Request\", \"message\": \"invalid query\" } Boom.unauthorized([message], [scheme], [attributes]) Returns a 401 Unauthorized error where: - message - optional message. - scheme can be one of the following: - an authentication scheme name - an array of string values. These values will be separated by ', ' and set to the 'WWW-Authenticate' header. - attributes - an object of values to use while setting the 'WWW-Authenticate' header. This value is only used when schema is a string, otherwise it is ignored. Every key/value pair will be included in the 'WWW-Authenticate' in the format of 'key=\"value\"' as well as in the response payload under the attributes key. null and undefined will be replaced with an empty string. If attributes is set, message will be used as the 'error' segment of the 'WWW-Authenticate' header. If message is unset, the 'error' segment of the header will not be present and isMissing will be true on the error object. If either scheme or attributes are set, the resultant Boom object will have the 'WWW-Authenticate' header set for the response. Boom.unauthorized('invalid password'); Generates the following response: \"payload\": { \"statusCode\": 401, \"error\": \"Unauthorized\", \"message\": \"invalid password\" }, \"headers\" {} Boom.unauthorized('invalid password', 'sample'); Generates the following response: \"payload\": { \"statusCode\": 401, \"error\": \"Unauthorized\", \"message\": \"invalid password\", \"attributes\": { \"error\": \"invalid password\" } }, \"headers\" { \"WWW-Authenticate\": \"sample error=\\\"invalid password\\\"\" } Boom.unauthorized('invalid password', 'sample', { ttl: 0, cache: null, foo: 'bar' }); Generates the following response: \"payload\": { \"statusCode\": 401, \"error\": \"Unauthorized\", \"message\": \"invalid password\", \"attributes\": { \"error\": \"invalid password\", \"ttl\": 0, \"cache\": \"\", \"foo\": \"bar\" } }, \"headers\" { \"WWW-Authenticate\": \"sample ttl=\\\"0\\\", cache=\\\"\\\", foo=\\\"bar\\\", error=\\\"invalid password\\\"\" } Boom.forbidden([message], [data]) Returns a 403 Forbidden error where: - message - optional message. - data - optional additional error data. Boom.forbidden('try again some time'); Generates the following response payload: { \"statusCode\": 403, \"error\": \"Forbidden\", \"message\": \"try again some time\" } Boom.notFound([message], [data]) Returns a 404 Not Found error where: - message - optional message. - data - optional additional error data. Boom.notFound('missing'); Generates the following response payload: { \"statusCode\": 404, \"error\": \"Not Found\", \"message\": \"missing\" } Boom.methodNotAllowed([message], [data]) Returns a 405 Method Not Allowed error where: - message - optional message. - data - optional additional error data. Boom.methodNotAllowed('that method is not allowed'); Generates the following response payload: { \"statusCode\": 405, \"error\": \"Method Not Allowed\", \"message\": \"that method is not allowed\" } Boom.notAcceptable([message], [data]) Returns a 406 Not Acceptable error where: - message - optional message. - data - optional additional error data. Boom.notAcceptable('unacceptable'); Generates the following response payload: { \"statusCode\": 406, \"error\": \"Not Acceptable\", \"message\": \"unacceptable\" } Boom.proxyAuthRequired([message], [data]) Returns a 407 Proxy Authentication Required error where: - message - optional message. - data - optional additional error data. Boom.proxyAuthRequired('auth missing'); Generates the following response payload: { \"statusCode\": 407, \"error\": \"Proxy Authentication Required\", \"message\": \"auth missing\" } Boom.clientTimeout([message], [data]) Returns a 408 Request Time-out error where: - message - optional message. - data - optional additional error data. Boom.clientTimeout('timed out'); Generates the following response payload: { \"statusCode\": 408, \"error\": \"Request Time-out\", \"message\": \"timed out\" } Boom.conflict([message], [data]) Returns a 409 Conflict error where: - message - optional message. - data - optional additional error data. Boom.conflict('there was a conflict'); Generates the following response payload: { \"statusCode\": 409, \"error\": \"Conflict\", \"message\": \"there was a conflict\" } Boom.resourceGone([message], [data]) Returns a 410 Gone error where: - message - optional message. - data - optional additional error data. Boom.resourceGone('it is gone'); Generates the following response payload: { \"statusCode\": 410, \"error\": \"Gone\", \"message\": \"it is gone\" } Boom.lengthRequired([message], [data]) Returns a 411 Length Required error where: - message - optional message. - data - optional additional error data. Boom.lengthRequired('length needed'); Generates the following response payload: { \"statusCode\": 411, \"error\": \"Length Required\", \"message\": \"length needed\" } Boom.preconditionFailed([message], [data]) Returns a 412 Precondition Failed error where: - message - optional message. - data - optional additional error data. Boom.preconditionFailed(); Generates the following response payload: { \"statusCode\": 412, \"error\": \"Precondition Failed\" } Boom.entityTooLarge([message], [data]) Returns a 413 Request Entity Too Large error where: - message - optional message. - data - optional additional error data. Boom.entityTooLarge('too big'); Generates the following response payload: { \"statusCode\": 413, \"error\": \"Request Entity Too Large\", \"message\": \"too big\" } Boom.uriTooLong([message], [data]) Returns a 414 Request-URI Too Large error where: - message - optional message. - data - optional additional error data. Boom.uriTooLong('uri is too long'); Generates the following response payload: { \"statusCode\": 414, \"error\": \"Request-URI Too Large\", \"message\": \"uri is too long\" } Boom.unsupportedMediaType([message], [data]) Returns a 415 Unsupported Media Type error where: - message - optional message. - data - optional additional error data. Boom.unsupportedMediaType('that media is not supported'); Generates the following response payload: { \"statusCode\": 415, \"error\": \"Unsupported Media Type\", \"message\": \"that media is not supported\" } Boom.rangeNotSatisfiable([message], [data]) Returns a 416 Requested Range Not Satisfiable error where: - message - optional message. - data - optional additional error data. Boom.rangeNotSatisfiable(); Generates the following response payload: { \"statusCode\": 416, \"error\": \"Requested Range Not Satisfiable\" } Boom.expectationFailed([message], [data]) Returns a 417 Expectation Failed error where: - message - optional message. - data - optional additional error data. Boom.expectationFailed('expected this to work'); Generates the following response payload: { \"statusCode\": 417, \"error\": \"Expectation Failed\", \"message\": \"expected this to work\" } Boom.badData([message], [data]) Returns a 422 Unprocessable Entity error where: - message - optional message. - data - optional additional error data. Boom.badData('your data is bad and you should feel bad'); Generates the following response payload: { \"statusCode\": 422, \"error\": \"Unprocessable Entity\", \"message\": \"your data is bad and you should feel bad\" } Boom.preconditionRequired([message], [data]) Returns a 428 Precondition Required error where: - message - optional message. - data - optional additional error data. Boom.preconditionRequired('you must supply an If-Match header'); Generates the following response payload: { \"statusCode\": 428, \"error\": \"Precondition Required\", \"message\": \"you must supply an If-Match header\" } Boom.tooManyRequests([message], [data]) Returns a 429 Too Many Requests error where: - message - optional message. - data - optional additional error data. Boom.tooManyRequests('you have exceeded your request limit'); Generates the following response payload: { \"statusCode\": 429, \"error\": \"Too Many Requests\", \"message\": \"you have exceeded your request limit\" } HTTP 5xx Errors All 500 errors hide your message from the end user. Your message is recorded in the server log. Boom.badImplementation([message], [data]) Returns a 500 Internal Server Error error where: - message - optional message. - data - optional additional error data. Boom.badImplementation('terrible implementation'); Generates the following response payload: { \"statusCode\": 500, \"error\": \"Internal Server Error\", \"message\": \"An internal server error occurred\" } Boom.notImplemented([message], [data]) Returns a 501 Not Implemented error where: - message - optional message. - data - optional additional error data. Boom.notImplemented('method not implemented'); Generates the following response payload: { \"statusCode\": 501, \"error\": \"Not Implemented\", \"message\": \"method not implemented\" } Boom.badGateway([message], [data]) Returns a 502 Bad Gateway error where: - message - optional message. - data - optional additional error data. Boom.badGateway('that is a bad gateway'); Generates the following response payload: { \"statusCode\": 502, \"error\": \"Bad Gateway\", \"message\": \"that is a bad gateway\" } Boom.serverTimeout([message], [data]) Returns a 503 Service Unavailable error where: - message - optional message. - data - optional additional error data. Boom.serverTimeout('unavailable'); Generates the following response payload: { \"statusCode\": 503, \"error\": \"Service Unavailable\", \"message\": \"unavailable\" } Boom.gatewayTimeout([message], [data]) Returns a 504 Gateway Time-out error where: - message - optional message. - data - optional additional error data. Boom.gatewayTimeout(); Generates the following response payload: { \"statusCode\": 504, \"error\": \"Gateway Time-out\" } F.A.Q. How do I include extra information in my responses? output.payload is missing data , what gives? There is a reason the values passed back in the response payloads are pretty locked down. It's mostly for security and to not leak any important information back to the client. This means you will need to put in a little more effort to include extra information about your custom error. Check out the \"Error transformation\" section in the hapi documentation.","title":"Index"},{"location":"node_modules/boom/#overview","text":"Helper methods wrap(error, [statusCode], [message]) create(statusCode, [message], [data]) HTTP 4xx Errors 400: Boom.badRequest([message], [data]) 401: Boom.unauthorized([message], [scheme], [attributes]) 403: Boom.forbidden([message], [data]) 404: Boom.notFound([message], [data]) 405: Boom.methodNotAllowed([message], [data]) 406: Boom.notAcceptable([message], [data]) 407: Boom.proxyAuthRequired([message], [data]) 408: Boom.clientTimeout([message], [data]) 409: Boom.conflict([message], [data]) 410: Boom.resourceGone([message], [data]) 411: Boom.lengthRequired([message], [data]) 412: Boom.preconditionFailed([message], [data]) 413: Boom.entityTooLarge([message], [data]) 414: Boom.uriTooLong([message], [data]) 415: Boom.unsupportedMediaType([message], [data]) 416: Boom.rangeNotSatisfiable([message], [data]) 417: Boom.expectationFailed([message], [data]) 422: Boom.badData([message], [data]) 428: Boom.preconditionRequired([message], [data]) 429: Boom.tooManyRequests([message], [data]) HTTP 5xx Errors 500: Boom.badImplementation([message], [data]) 501: Boom.notImplemented([message], [data]) 502: Boom.badGateway([message], [data]) 503: Boom.serverTimeout([message], [data]) 504: Boom.gatewayTimeout([message], [data]) FAQ","title":"Overview"},{"location":"node_modules/boom/#helper-methods","text":"","title":"Helper Methods"},{"location":"node_modules/boom/#wraperror-statuscode-message","text":"Decorates an error with the boom properties where: - error - the error object to wrap. If error is already a boom object, returns back the same object. - statusCode - optional HTTP status code. Defaults to 500 . - message - optional message string. If the error already has a message, it adds the message as a prefix. Defaults to no message. var error = new Error('Unexpected input'); Boom.wrap(error, 400);","title":"wrap(error, [statusCode], [message])"},{"location":"node_modules/boom/#createstatuscode-message-data","text":"Generates an Error object with the boom decorations where: - statusCode - an HTTP error code number. Must be greater or equal 400. - message - optional message string. - data - additional error data set to error.data property. var error = Boom.create(400, 'Bad request', { timestamp: Date.now() });","title":"create(statusCode, [message], [data])"},{"location":"node_modules/boom/#http-4xx-errors","text":"","title":"HTTP 4xx Errors"},{"location":"node_modules/boom/#boombadrequestmessage-data","text":"Returns a 400 Bad Request error where: - message - optional message. - data - optional additional error data. Boom.badRequest('invalid query'); Generates the following response payload: { \"statusCode\": 400, \"error\": \"Bad Request\", \"message\": \"invalid query\" }","title":"Boom.badRequest([message], [data])"},{"location":"node_modules/boom/#boomunauthorizedmessage-scheme-attributes","text":"Returns a 401 Unauthorized error where: - message - optional message. - scheme can be one of the following: - an authentication scheme name - an array of string values. These values will be separated by ', ' and set to the 'WWW-Authenticate' header. - attributes - an object of values to use while setting the 'WWW-Authenticate' header. This value is only used when schema is a string, otherwise it is ignored. Every key/value pair will be included in the 'WWW-Authenticate' in the format of 'key=\"value\"' as well as in the response payload under the attributes key. null and undefined will be replaced with an empty string. If attributes is set, message will be used as the 'error' segment of the 'WWW-Authenticate' header. If message is unset, the 'error' segment of the header will not be present and isMissing will be true on the error object. If either scheme or attributes are set, the resultant Boom object will have the 'WWW-Authenticate' header set for the response. Boom.unauthorized('invalid password'); Generates the following response: \"payload\": { \"statusCode\": 401, \"error\": \"Unauthorized\", \"message\": \"invalid password\" }, \"headers\" {} Boom.unauthorized('invalid password', 'sample'); Generates the following response: \"payload\": { \"statusCode\": 401, \"error\": \"Unauthorized\", \"message\": \"invalid password\", \"attributes\": { \"error\": \"invalid password\" } }, \"headers\" { \"WWW-Authenticate\": \"sample error=\\\"invalid password\\\"\" } Boom.unauthorized('invalid password', 'sample', { ttl: 0, cache: null, foo: 'bar' }); Generates the following response: \"payload\": { \"statusCode\": 401, \"error\": \"Unauthorized\", \"message\": \"invalid password\", \"attributes\": { \"error\": \"invalid password\", \"ttl\": 0, \"cache\": \"\", \"foo\": \"bar\" } }, \"headers\" { \"WWW-Authenticate\": \"sample ttl=\\\"0\\\", cache=\\\"\\\", foo=\\\"bar\\\", error=\\\"invalid password\\\"\" }","title":"Boom.unauthorized([message], [scheme], [attributes])"},{"location":"node_modules/boom/#boomforbiddenmessage-data","text":"Returns a 403 Forbidden error where: - message - optional message. - data - optional additional error data. Boom.forbidden('try again some time'); Generates the following response payload: { \"statusCode\": 403, \"error\": \"Forbidden\", \"message\": \"try again some time\" }","title":"Boom.forbidden([message], [data])"},{"location":"node_modules/boom/#boomnotfoundmessage-data","text":"Returns a 404 Not Found error where: - message - optional message. - data - optional additional error data. Boom.notFound('missing'); Generates the following response payload: { \"statusCode\": 404, \"error\": \"Not Found\", \"message\": \"missing\" }","title":"Boom.notFound([message], [data])"},{"location":"node_modules/boom/#boommethodnotallowedmessage-data","text":"Returns a 405 Method Not Allowed error where: - message - optional message. - data - optional additional error data. Boom.methodNotAllowed('that method is not allowed'); Generates the following response payload: { \"statusCode\": 405, \"error\": \"Method Not Allowed\", \"message\": \"that method is not allowed\" }","title":"Boom.methodNotAllowed([message], [data])"},{"location":"node_modules/boom/#boomnotacceptablemessage-data","text":"Returns a 406 Not Acceptable error where: - message - optional message. - data - optional additional error data. Boom.notAcceptable('unacceptable'); Generates the following response payload: { \"statusCode\": 406, \"error\": \"Not Acceptable\", \"message\": \"unacceptable\" }","title":"Boom.notAcceptable([message], [data])"},{"location":"node_modules/boom/#boomproxyauthrequiredmessage-data","text":"Returns a 407 Proxy Authentication Required error where: - message - optional message. - data - optional additional error data. Boom.proxyAuthRequired('auth missing'); Generates the following response payload: { \"statusCode\": 407, \"error\": \"Proxy Authentication Required\", \"message\": \"auth missing\" }","title":"Boom.proxyAuthRequired([message], [data])"},{"location":"node_modules/boom/#boomclienttimeoutmessage-data","text":"Returns a 408 Request Time-out error where: - message - optional message. - data - optional additional error data. Boom.clientTimeout('timed out'); Generates the following response payload: { \"statusCode\": 408, \"error\": \"Request Time-out\", \"message\": \"timed out\" }","title":"Boom.clientTimeout([message], [data])"},{"location":"node_modules/boom/#boomconflictmessage-data","text":"Returns a 409 Conflict error where: - message - optional message. - data - optional additional error data. Boom.conflict('there was a conflict'); Generates the following response payload: { \"statusCode\": 409, \"error\": \"Conflict\", \"message\": \"there was a conflict\" }","title":"Boom.conflict([message], [data])"},{"location":"node_modules/boom/#boomresourcegonemessage-data","text":"Returns a 410 Gone error where: - message - optional message. - data - optional additional error data. Boom.resourceGone('it is gone'); Generates the following response payload: { \"statusCode\": 410, \"error\": \"Gone\", \"message\": \"it is gone\" }","title":"Boom.resourceGone([message], [data])"},{"location":"node_modules/boom/#boomlengthrequiredmessage-data","text":"Returns a 411 Length Required error where: - message - optional message. - data - optional additional error data. Boom.lengthRequired('length needed'); Generates the following response payload: { \"statusCode\": 411, \"error\": \"Length Required\", \"message\": \"length needed\" }","title":"Boom.lengthRequired([message], [data])"},{"location":"node_modules/boom/#boompreconditionfailedmessage-data","text":"Returns a 412 Precondition Failed error where: - message - optional message. - data - optional additional error data. Boom.preconditionFailed(); Generates the following response payload: { \"statusCode\": 412, \"error\": \"Precondition Failed\" }","title":"Boom.preconditionFailed([message], [data])"},{"location":"node_modules/boom/#boomentitytoolargemessage-data","text":"Returns a 413 Request Entity Too Large error where: - message - optional message. - data - optional additional error data. Boom.entityTooLarge('too big'); Generates the following response payload: { \"statusCode\": 413, \"error\": \"Request Entity Too Large\", \"message\": \"too big\" }","title":"Boom.entityTooLarge([message], [data])"},{"location":"node_modules/boom/#boomuritoolongmessage-data","text":"Returns a 414 Request-URI Too Large error where: - message - optional message. - data - optional additional error data. Boom.uriTooLong('uri is too long'); Generates the following response payload: { \"statusCode\": 414, \"error\": \"Request-URI Too Large\", \"message\": \"uri is too long\" }","title":"Boom.uriTooLong([message], [data])"},{"location":"node_modules/boom/#boomunsupportedmediatypemessage-data","text":"Returns a 415 Unsupported Media Type error where: - message - optional message. - data - optional additional error data. Boom.unsupportedMediaType('that media is not supported'); Generates the following response payload: { \"statusCode\": 415, \"error\": \"Unsupported Media Type\", \"message\": \"that media is not supported\" }","title":"Boom.unsupportedMediaType([message], [data])"},{"location":"node_modules/boom/#boomrangenotsatisfiablemessage-data","text":"Returns a 416 Requested Range Not Satisfiable error where: - message - optional message. - data - optional additional error data. Boom.rangeNotSatisfiable(); Generates the following response payload: { \"statusCode\": 416, \"error\": \"Requested Range Not Satisfiable\" }","title":"Boom.rangeNotSatisfiable([message], [data])"},{"location":"node_modules/boom/#boomexpectationfailedmessage-data","text":"Returns a 417 Expectation Failed error where: - message - optional message. - data - optional additional error data. Boom.expectationFailed('expected this to work'); Generates the following response payload: { \"statusCode\": 417, \"error\": \"Expectation Failed\", \"message\": \"expected this to work\" }","title":"Boom.expectationFailed([message], [data])"},{"location":"node_modules/boom/#boombaddatamessage-data","text":"Returns a 422 Unprocessable Entity error where: - message - optional message. - data - optional additional error data. Boom.badData('your data is bad and you should feel bad'); Generates the following response payload: { \"statusCode\": 422, \"error\": \"Unprocessable Entity\", \"message\": \"your data is bad and you should feel bad\" }","title":"Boom.badData([message], [data])"},{"location":"node_modules/boom/#boompreconditionrequiredmessage-data","text":"Returns a 428 Precondition Required error where: - message - optional message. - data - optional additional error data. Boom.preconditionRequired('you must supply an If-Match header'); Generates the following response payload: { \"statusCode\": 428, \"error\": \"Precondition Required\", \"message\": \"you must supply an If-Match header\" }","title":"Boom.preconditionRequired([message], [data])"},{"location":"node_modules/boom/#boomtoomanyrequestsmessage-data","text":"Returns a 429 Too Many Requests error where: - message - optional message. - data - optional additional error data. Boom.tooManyRequests('you have exceeded your request limit'); Generates the following response payload: { \"statusCode\": 429, \"error\": \"Too Many Requests\", \"message\": \"you have exceeded your request limit\" }","title":"Boom.tooManyRequests([message], [data])"},{"location":"node_modules/boom/#http-5xx-errors","text":"All 500 errors hide your message from the end user. Your message is recorded in the server log.","title":"HTTP 5xx Errors"},{"location":"node_modules/boom/#boombadimplementationmessage-data","text":"Returns a 500 Internal Server Error error where: - message - optional message. - data - optional additional error data. Boom.badImplementation('terrible implementation'); Generates the following response payload: { \"statusCode\": 500, \"error\": \"Internal Server Error\", \"message\": \"An internal server error occurred\" }","title":"Boom.badImplementation([message], [data])"},{"location":"node_modules/boom/#boomnotimplementedmessage-data","text":"Returns a 501 Not Implemented error where: - message - optional message. - data - optional additional error data. Boom.notImplemented('method not implemented'); Generates the following response payload: { \"statusCode\": 501, \"error\": \"Not Implemented\", \"message\": \"method not implemented\" }","title":"Boom.notImplemented([message], [data])"},{"location":"node_modules/boom/#boombadgatewaymessage-data","text":"Returns a 502 Bad Gateway error where: - message - optional message. - data - optional additional error data. Boom.badGateway('that is a bad gateway'); Generates the following response payload: { \"statusCode\": 502, \"error\": \"Bad Gateway\", \"message\": \"that is a bad gateway\" }","title":"Boom.badGateway([message], [data])"},{"location":"node_modules/boom/#boomservertimeoutmessage-data","text":"Returns a 503 Service Unavailable error where: - message - optional message. - data - optional additional error data. Boom.serverTimeout('unavailable'); Generates the following response payload: { \"statusCode\": 503, \"error\": \"Service Unavailable\", \"message\": \"unavailable\" }","title":"Boom.serverTimeout([message], [data])"},{"location":"node_modules/boom/#boomgatewaytimeoutmessage-data","text":"Returns a 504 Gateway Time-out error where: - message - optional message. - data - optional additional error data. Boom.gatewayTimeout(); Generates the following response payload: { \"statusCode\": 504, \"error\": \"Gateway Time-out\" }","title":"Boom.gatewayTimeout([message], [data])"},{"location":"node_modules/boom/#faq","text":"","title":"F.A.Q."},{"location":"node_modules/boom/#how-do-i-include-extra-information-in-my-responses-outputpayload-is-missing-data-what-gives","text":"There is a reason the values passed back in the response payloads are pretty locked down. It's mostly for security and to not leak any important information back to the client. This means you will need to put in a little more effort to include extra information about your custom error. Check out the \"Error transformation\" section in the hapi documentation.","title":"How do I include extra information in my responses? output.payload is missing data, what gives?"},{"location":"node_modules/boom/CONTRIBUTING/","text":"Please view our hapijs contributing guide .","title":"CONTRIBUTING"},{"location":"node_modules/caseless/","text":"Caseless -- wrap an object to set and get property with caseless semantics but also preserve caseing. This library is incredibly useful when working with HTTP headers. It allows you to get/set/check for headers in a caseless manner while also preserving the caseing of headers the first time they are set. Usage var headers = {} , c = caseless(headers) ; c.set('a-Header', 'asdf') c.get('a-header') === 'asdf' has(key) Has takes a name and if it finds a matching header will return that header name with the preserved caseing it was set with. c.has('a-header') === 'a-Header' set(key, value[, clobber=true]) Set is fairly straight forward except that if the header exists and clobber is disabled it will add ','+value to the existing header. c.set('a-Header', 'fdas') c.set('a-HEADER', 'more', false) c.get('a-header') === 'fdsa,more' swap(key) Swaps the casing of a header with the new one that is passed in. var headers = {} , c = caseless(headers) ; c.set('a-Header', 'fdas') c.swap('a-HEADER') c.has('a-header') === 'a-HEADER' headers === {'a-HEADER': 'fdas'}","title":"Index"},{"location":"node_modules/caseless/#caseless-wrap-an-object-to-set-and-get-property-with-caseless-semantics-but-also-preserve-caseing","text":"This library is incredibly useful when working with HTTP headers. It allows you to get/set/check for headers in a caseless manner while also preserving the caseing of headers the first time they are set.","title":"Caseless -- wrap an object to set and get property with caseless semantics but also preserve caseing."},{"location":"node_modules/caseless/#usage","text":"var headers = {} , c = caseless(headers) ; c.set('a-Header', 'asdf') c.get('a-header') === 'asdf'","title":"Usage"},{"location":"node_modules/caseless/#haskey","text":"Has takes a name and if it finds a matching header will return that header name with the preserved caseing it was set with. c.has('a-header') === 'a-Header'","title":"has(key)"},{"location":"node_modules/caseless/#setkey-value-clobbertrue","text":"Set is fairly straight forward except that if the header exists and clobber is disabled it will add ','+value to the existing header. c.set('a-Header', 'fdas') c.set('a-HEADER', 'more', false) c.get('a-header') === 'fdsa,more'","title":"set(key, value[, clobber=true])"},{"location":"node_modules/caseless/#swapkey","text":"Swaps the casing of a header with the new one that is passed in. var headers = {} , c = caseless(headers) ; c.set('a-Header', 'fdas') c.swap('a-HEADER') c.has('a-header') === 'a-HEADER' headers === {'a-HEADER': 'fdas'}","title":"swap(key)"},{"location":"node_modules/co/History/","text":"4.6.0 / 2015-07-09 support passing the rest of the arguments to co into the generator js function *gen(...args) { } co(gen, ...args); 4.5.0 / 2015-03-17 support regular functions (that return promises) 4.4.0 / 2015-02-14 refactor isGeneratorFunction expose generator function from co.wrap() drop support for node < 0.12 4.3.0 / 2015-02-05 check for generator functions in a ES5-transpiler-friendly way 4.2.0 / 2015-01-20 support comparing generator functions with ES6 transpilers 4.1.0 / 2014-12-26 fix memory leak #180 4.0.2 / 2014-12-18 always return a global promise implementation 4.0.1 / 2014-11-30 friendlier ES6 module exports 4.0.0 / 2014-11-15 co now returns a promise and uses promises underneath co.wrap() for wrapping generator functions 3.1.0 / 2014-06-30 remove setImmediate() shim for node 0.8. semi-backwards breaking. Users are expected to shim themselves. Also returns CommonJS browser support. added key order preservation for objects. thanks @greim replace q with bluebird in benchmarks and tests 3.0.6 / 2014-05-03 add setImmediate() fallback to process.nextTick remove duplicate code in toThunk update thunkify 3.0.5 / 2014-03-17 fix object/array test failure which tries to enumerate dates. Closes #98 fix final callback error propagation. Closes #92 3.0.4 / 2014-02-17 fix toThunk object check regression. Closes #89 3.0.3 / 2014-02-08 refactor: arrayToThunk @AutoSponge #88 3.0.2 / 2014-01-01 fixed: nil arguments replaced with error fn 3.0.1 / 2013-12-19 fixed: callback passed as an argument to generators 3.0.0 / 2013-12-19 fixed: callback passed as an argument to generators change: co(function *(){}) now returns a reusable thunk change: this must now be passed through the returned thunk, ex. co(function *(){}).call(this) fix \"generator already finished\" errors 2.3.0 / 2013-11-12 add yield object support 2.2.0 / 2013-11-05 change: make the isGenerator() function more generic 2.1.0 / 2013-10-21 add passing of arguments into the generator. closes #33. 2.0.0 / 2013-10-14 remove callback in favour of thunk-only co(). Closes #30 [breaking change] remove co.wrap() [breaking change] 1.5.2 / 2013-09-02 fix: preserve receiver with co.wrap() 1.5.1 / 2013-08-11 remove setImmediate() usage - ~110% perf increase. Closes #14 0.5.0 / 2013-08-10 add receiver propagation support examples: update streams.js example to use http.get() and streams2 API 1.4.1 / 2013-07-01 fix gen.next(val) for latest v8. Closes #8 1.4.0 / 2013-06-21 add promise support to joins add yield generatorFunction support add yield generator support add nested join support 1.3.0 / 2013-06-10 add passing of arguments 1.2.1 / 2013-06-08 fix join() of zero thunks 1.2.0 / 2013-06-08 add array yielding support. great suggestion by @domenic 1.1.0 / 2013-06-06 add promise support change nextTick to setImmediate","title":"4.6.0 / 2015-07-09"},{"location":"node_modules/co/History/#460-2015-07-09","text":"support passing the rest of the arguments to co into the generator js function *gen(...args) { } co(gen, ...args);","title":"4.6.0 / 2015-07-09"},{"location":"node_modules/co/History/#450-2015-03-17","text":"support regular functions (that return promises)","title":"4.5.0 / 2015-03-17"},{"location":"node_modules/co/History/#440-2015-02-14","text":"refactor isGeneratorFunction expose generator function from co.wrap() drop support for node < 0.12","title":"4.4.0 / 2015-02-14"},{"location":"node_modules/co/History/#430-2015-02-05","text":"check for generator functions in a ES5-transpiler-friendly way","title":"4.3.0 / 2015-02-05"},{"location":"node_modules/co/History/#420-2015-01-20","text":"support comparing generator functions with ES6 transpilers","title":"4.2.0 / 2015-01-20"},{"location":"node_modules/co/History/#410-2014-12-26","text":"fix memory leak #180","title":"4.1.0 / 2014-12-26"},{"location":"node_modules/co/History/#402-2014-12-18","text":"always return a global promise implementation","title":"4.0.2 / 2014-12-18"},{"location":"node_modules/co/History/#401-2014-11-30","text":"friendlier ES6 module exports","title":"4.0.1 / 2014-11-30"},{"location":"node_modules/co/History/#400-2014-11-15","text":"co now returns a promise and uses promises underneath co.wrap() for wrapping generator functions","title":"4.0.0 / 2014-11-15"},{"location":"node_modules/co/History/#310-2014-06-30","text":"remove setImmediate() shim for node 0.8. semi-backwards breaking. Users are expected to shim themselves. Also returns CommonJS browser support. added key order preservation for objects. thanks @greim replace q with bluebird in benchmarks and tests","title":"3.1.0 / 2014-06-30"},{"location":"node_modules/co/History/#306-2014-05-03","text":"add setImmediate() fallback to process.nextTick remove duplicate code in toThunk update thunkify","title":"3.0.6 / 2014-05-03"},{"location":"node_modules/co/History/#305-2014-03-17","text":"fix object/array test failure which tries to enumerate dates. Closes #98 fix final callback error propagation. Closes #92","title":"3.0.5 / 2014-03-17"},{"location":"node_modules/co/History/#304-2014-02-17","text":"fix toThunk object check regression. Closes #89","title":"3.0.4 / 2014-02-17"},{"location":"node_modules/co/History/#303-2014-02-08","text":"refactor: arrayToThunk @AutoSponge #88","title":"3.0.3 / 2014-02-08"},{"location":"node_modules/co/History/#302-2014-01-01","text":"fixed: nil arguments replaced with error fn","title":"3.0.2 / 2014-01-01"},{"location":"node_modules/co/History/#301-2013-12-19","text":"fixed: callback passed as an argument to generators","title":"3.0.1 / 2013-12-19"},{"location":"node_modules/co/History/#300-2013-12-19","text":"fixed: callback passed as an argument to generators change: co(function *(){}) now returns a reusable thunk change: this must now be passed through the returned thunk, ex. co(function *(){}).call(this) fix \"generator already finished\" errors","title":"3.0.0 / 2013-12-19"},{"location":"node_modules/co/History/#230-2013-11-12","text":"add yield object support","title":"2.3.0 / 2013-11-12"},{"location":"node_modules/co/History/#220-2013-11-05","text":"change: make the isGenerator() function more generic","title":"2.2.0 / 2013-11-05"},{"location":"node_modules/co/History/#210-2013-10-21","text":"add passing of arguments into the generator. closes #33.","title":"2.1.0 / 2013-10-21"},{"location":"node_modules/co/History/#200-2013-10-14","text":"remove callback in favour of thunk-only co(). Closes #30 [breaking change] remove co.wrap() [breaking change]","title":"2.0.0 / 2013-10-14"},{"location":"node_modules/co/History/#152-2013-09-02","text":"fix: preserve receiver with co.wrap()","title":"1.5.2 / 2013-09-02"},{"location":"node_modules/co/History/#151-2013-08-11","text":"remove setImmediate() usage - ~110% perf increase. Closes #14","title":"1.5.1 / 2013-08-11"},{"location":"node_modules/co/History/#050-2013-08-10","text":"add receiver propagation support examples: update streams.js example to use http.get() and streams2 API","title":"0.5.0 / 2013-08-10"},{"location":"node_modules/co/History/#141-2013-07-01","text":"fix gen.next(val) for latest v8. Closes #8","title":"1.4.1 / 2013-07-01"},{"location":"node_modules/co/History/#140-2013-06-21","text":"add promise support to joins add yield generatorFunction support add yield generator support add nested join support","title":"1.4.0 / 2013-06-21"},{"location":"node_modules/co/History/#130-2013-06-10","text":"add passing of arguments","title":"1.3.0 / 2013-06-10"},{"location":"node_modules/co/History/#121-2013-06-08","text":"fix join() of zero thunks","title":"1.2.1 / 2013-06-08"},{"location":"node_modules/co/History/#120-2013-06-08","text":"add array yielding support. great suggestion by @domenic","title":"1.2.0 / 2013-06-08"},{"location":"node_modules/co/History/#110-2013-06-06","text":"add promise support change nextTick to setImmediate","title":"1.1.0 / 2013-06-06"},{"location":"node_modules/co/Readme/","text":"co Generator based control flow goodness for nodejs and the browser, using promises, letting you write non-blocking code in a nice-ish way. Co v4 co@4.0.0 has been released, which now relies on promises. It is a stepping stone towards ES7 async/await . The primary API change is how co() is invoked. Before, co returned a \"thunk\", which you then called with a callback and optional arguments. Now, co() returns a promise. co(function* () { var result = yield Promise.resolve(true); return result; }).then(function (value) { console.log(value); }, function (err) { console.error(err.stack); }); If you want to convert a co -generator-function into a regular function that returns a promise, you now use co.wrap(fn*) . var fn = co.wrap(function* (val) { return yield Promise.resolve(val); }); fn(true).then(function (val) { }); Platform Compatibility co@4+ requires a Promise implementation. For versions of node < 0.11 and for many older browsers, you should/must include your own Promise polyfill. When using node 0.11.x or greater, you must use the --harmony-generators flag or just --harmony to get access to generators. When using node 0.10.x and lower or browsers without generator support, you must use gnode and/or regenerator . io.js is supported out of the box, you can use co without flags or polyfills. Installation $ npm install co Associated libraries Any library that returns promises work well with co . mz - wrap all of node's code libraries as promises. View the wiki for more libraries. Examples var co = require('co'); co(function *(){ // yield any promise var result = yield Promise.resolve(true); }).catch(onerror); co(function *(){ // resolve multiple promises in parallel var a = Promise.resolve(1); var b = Promise.resolve(2); var c = Promise.resolve(3); var res = yield [a, b, c]; console.log(res); // => [1, 2, 3] }).catch(onerror); // errors can be try/catched co(function *(){ try { yield Promise.reject(new Error('boom')); } catch (err) { console.error(err.message); // \"boom\" } }).catch(onerror); function onerror(err) { // log any uncaught errors // co will not throw any errors you do not handle!!! // HANDLE ALL YOUR ERRORS!!! console.error(err.stack); } Yieldables The yieldable objects currently supported are: promises thunks (functions) array (parallel execution) objects (parallel execution) generators (delegation) generator functions (delegation) Nested yieldable objects are supported, meaning you can nest promises within objects within arrays, and so on! Promises Read more on promises! Thunks Thunks are functions that only have a single argument, a callback. Thunk support only remains for backwards compatibility and may be removed in future versions of co . Arrays yield ing an array will resolve all the yieldables in parallel. co(function* () { var res = yield [ Promise.resolve(1), Promise.resolve(2), Promise.resolve(3), ]; console.log(res); // => [1, 2, 3] }).catch(onerror); Objects Just like arrays, objects resolve all yieldable s in parallel. co(function* () { var res = yield { 1: Promise.resolve(1), 2: Promise.resolve(2), }; console.log(res); // => { 1: 1, 2: 2 } }).catch(onerror); Generators and Generator Functions Any generator or generator function you can pass into co can be yielded as well. This should generally be avoided as we should be moving towards spec-compliant Promise s instead. API co(fn*).then( val => ) Returns a promise that resolves a generator, generator function, or any function that returns a generator. co(function* () { return yield Promise.resolve(true); }).then(function (val) { console.log(val); }, function (err) { console.error(err.stack); }); var fn = co.wrap(fn*) Convert a generator into a regular function that returns a Promise . var fn = co.wrap(function* (val) { return yield Promise.resolve(val); }); fn(true).then(function (val) { }); License MIT","title":"co"},{"location":"node_modules/co/Readme/#co","text":"Generator based control flow goodness for nodejs and the browser, using promises, letting you write non-blocking code in a nice-ish way.","title":"co"},{"location":"node_modules/co/Readme/#co-v4","text":"co@4.0.0 has been released, which now relies on promises. It is a stepping stone towards ES7 async/await . The primary API change is how co() is invoked. Before, co returned a \"thunk\", which you then called with a callback and optional arguments. Now, co() returns a promise. co(function* () { var result = yield Promise.resolve(true); return result; }).then(function (value) { console.log(value); }, function (err) { console.error(err.stack); }); If you want to convert a co -generator-function into a regular function that returns a promise, you now use co.wrap(fn*) . var fn = co.wrap(function* (val) { return yield Promise.resolve(val); }); fn(true).then(function (val) { });","title":"Co v4"},{"location":"node_modules/co/Readme/#platform-compatibility","text":"co@4+ requires a Promise implementation. For versions of node < 0.11 and for many older browsers, you should/must include your own Promise polyfill. When using node 0.11.x or greater, you must use the --harmony-generators flag or just --harmony to get access to generators. When using node 0.10.x and lower or browsers without generator support, you must use gnode and/or regenerator . io.js is supported out of the box, you can use co without flags or polyfills.","title":"Platform Compatibility"},{"location":"node_modules/co/Readme/#installation","text":"$ npm install co","title":"Installation"},{"location":"node_modules/co/Readme/#associated-libraries","text":"Any library that returns promises work well with co . mz - wrap all of node's code libraries as promises. View the wiki for more libraries.","title":"Associated libraries"},{"location":"node_modules/co/Readme/#examples","text":"var co = require('co'); co(function *(){ // yield any promise var result = yield Promise.resolve(true); }).catch(onerror); co(function *(){ // resolve multiple promises in parallel var a = Promise.resolve(1); var b = Promise.resolve(2); var c = Promise.resolve(3); var res = yield [a, b, c]; console.log(res); // => [1, 2, 3] }).catch(onerror); // errors can be try/catched co(function *(){ try { yield Promise.reject(new Error('boom')); } catch (err) { console.error(err.message); // \"boom\" } }).catch(onerror); function onerror(err) { // log any uncaught errors // co will not throw any errors you do not handle!!! // HANDLE ALL YOUR ERRORS!!! console.error(err.stack); }","title":"Examples"},{"location":"node_modules/co/Readme/#yieldables","text":"The yieldable objects currently supported are: promises thunks (functions) array (parallel execution) objects (parallel execution) generators (delegation) generator functions (delegation) Nested yieldable objects are supported, meaning you can nest promises within objects within arrays, and so on!","title":"Yieldables"},{"location":"node_modules/co/Readme/#promises","text":"Read more on promises!","title":"Promises"},{"location":"node_modules/co/Readme/#thunks","text":"Thunks are functions that only have a single argument, a callback. Thunk support only remains for backwards compatibility and may be removed in future versions of co .","title":"Thunks"},{"location":"node_modules/co/Readme/#arrays","text":"yield ing an array will resolve all the yieldables in parallel. co(function* () { var res = yield [ Promise.resolve(1), Promise.resolve(2), Promise.resolve(3), ]; console.log(res); // => [1, 2, 3] }).catch(onerror);","title":"Arrays"},{"location":"node_modules/co/Readme/#objects","text":"Just like arrays, objects resolve all yieldable s in parallel. co(function* () { var res = yield { 1: Promise.resolve(1), 2: Promise.resolve(2), }; console.log(res); // => { 1: 1, 2: 2 } }).catch(onerror);","title":"Objects"},{"location":"node_modules/co/Readme/#generators-and-generator-functions","text":"Any generator or generator function you can pass into co can be yielded as well. This should generally be avoided as we should be moving towards spec-compliant Promise s instead.","title":"Generators and Generator Functions"},{"location":"node_modules/co/Readme/#api","text":"","title":"API"},{"location":"node_modules/co/Readme/#cofnthen-val","text":"Returns a promise that resolves a generator, generator function, or any function that returns a generator. co(function* () { return yield Promise.resolve(true); }).then(function (val) { console.log(val); }, function (err) { console.error(err.stack); });","title":"co(fn*).then( val => )"},{"location":"node_modules/co/Readme/#var-fn-cowrapfn","text":"Convert a generator into a regular function that returns a Promise . var fn = co.wrap(function* (val) { return yield Promise.resolve(val); }); fn(true).then(function (val) { });","title":"var fn = co.wrap(fn*)"},{"location":"node_modules/co/Readme/#license","text":"MIT","title":"License"},{"location":"node_modules/combined-stream/Readme/","text":"combined-stream A stream that emits multiple other streams one after another. NB Currently combined-stream works with streams vesrion 1 only. There is ongoing effort to switch this library to streams version 2. Any help is welcome. :) Meanwhile you can explore other libraries that provide streams2 support with more or less compatability with combined-stream . combined-stream2 : A drop-in streams2-compatible replacement for the combined-stream module. multistream : A stream that emits multiple other streams one after another. Installation npm install combined-stream Usage Here is a simple example that shows how you can use combined-stream to combine two files into one: var CombinedStream = require('combined-stream'); var fs = require('fs'); var combinedStream = CombinedStream.create(); combinedStream.append(fs.createReadStream('file1.txt')); combinedStream.append(fs.createReadStream('file2.txt')); combinedStream.pipe(fs.createWriteStream('combined.txt')); While the example above works great, it will pause all source streams until they are needed. If you don't want that to happen, you can set pauseStreams to false : var CombinedStream = require('combined-stream'); var fs = require('fs'); var combinedStream = CombinedStream.create({pauseStreams: false}); combinedStream.append(fs.createReadStream('file1.txt')); combinedStream.append(fs.createReadStream('file2.txt')); combinedStream.pipe(fs.createWriteStream('combined.txt')); However, what if you don't have all the source streams yet, or you don't want to allocate the resources (file descriptors, memory, etc.) for them right away? Well, in that case you can simply provide a callback that supplies the stream by calling a next() function: var CombinedStream = require('combined-stream'); var fs = require('fs'); var combinedStream = CombinedStream.create(); combinedStream.append(function(next) { next(fs.createReadStream('file1.txt')); }); combinedStream.append(function(next) { next(fs.createReadStream('file2.txt')); }); combinedStream.pipe(fs.createWriteStream('combined.txt')); API CombinedStream.create([options]) Returns a new combined stream object. Available options are: maxDataSize pauseStreams The effect of those options is described below. combinedStream.pauseStreams = true Whether to apply back pressure to the underlaying streams. If set to false , the underlaying streams will never be paused. If set to true , the underlaying streams will be paused right after being appended, as well as when delayedStream.pipe() wants to throttle. combinedStream.maxDataSize = 2 * 1024 * 1024 The maximum amount of bytes (or characters) to buffer for all source streams. If this value is exceeded, combinedStream emits an 'error' event. combinedStream.dataSize = 0 The amount of bytes (or characters) currently buffered by combinedStream . combinedStream.append(stream) Appends the given stream to the combinedStream object. If pauseStreams is set to `true, this stream will also be paused right away. streams can also be a function that takes one parameter called next . next is a function that must be invoked in order to provide the next stream, see example above. Regardless of how the stream is appended, combined-stream always attaches an 'error' listener to it, so you don't have to do that manually. Special case: stream can also be a String or Buffer. combinedStream.write(data) You should not call this, combinedStream takes care of piping the appended streams into itself for you. combinedStream.resume() Causes combinedStream to start drain the streams it manages. The function is idempotent, and also emits a 'resume' event each time which usually goes to the stream that is currently being drained. combinedStream.pause(); If combinedStream.pauseStreams is set to false , this does nothing. Otherwise a 'pause' event is emitted, this goes to the stream that is currently being drained, so you can use it to apply back pressure. combinedStream.end(); Sets combinedStream.writable to false, emits an 'end' event, and removes all streams from the queue. combinedStream.destroy(); Same as combinedStream.end() , except it emits a 'close' event instead of 'end' . License combined-stream is licensed under the MIT license.","title":"combined-stream"},{"location":"node_modules/combined-stream/Readme/#combined-stream","text":"A stream that emits multiple other streams one after another. NB Currently combined-stream works with streams vesrion 1 only. There is ongoing effort to switch this library to streams version 2. Any help is welcome. :) Meanwhile you can explore other libraries that provide streams2 support with more or less compatability with combined-stream . combined-stream2 : A drop-in streams2-compatible replacement for the combined-stream module. multistream : A stream that emits multiple other streams one after another.","title":"combined-stream"},{"location":"node_modules/combined-stream/Readme/#installation","text":"npm install combined-stream","title":"Installation"},{"location":"node_modules/combined-stream/Readme/#usage","text":"Here is a simple example that shows how you can use combined-stream to combine two files into one: var CombinedStream = require('combined-stream'); var fs = require('fs'); var combinedStream = CombinedStream.create(); combinedStream.append(fs.createReadStream('file1.txt')); combinedStream.append(fs.createReadStream('file2.txt')); combinedStream.pipe(fs.createWriteStream('combined.txt')); While the example above works great, it will pause all source streams until they are needed. If you don't want that to happen, you can set pauseStreams to false : var CombinedStream = require('combined-stream'); var fs = require('fs'); var combinedStream = CombinedStream.create({pauseStreams: false}); combinedStream.append(fs.createReadStream('file1.txt')); combinedStream.append(fs.createReadStream('file2.txt')); combinedStream.pipe(fs.createWriteStream('combined.txt')); However, what if you don't have all the source streams yet, or you don't want to allocate the resources (file descriptors, memory, etc.) for them right away? Well, in that case you can simply provide a callback that supplies the stream by calling a next() function: var CombinedStream = require('combined-stream'); var fs = require('fs'); var combinedStream = CombinedStream.create(); combinedStream.append(function(next) { next(fs.createReadStream('file1.txt')); }); combinedStream.append(function(next) { next(fs.createReadStream('file2.txt')); }); combinedStream.pipe(fs.createWriteStream('combined.txt'));","title":"Usage"},{"location":"node_modules/combined-stream/Readme/#api","text":"","title":"API"},{"location":"node_modules/combined-stream/Readme/#combinedstreamcreateoptions","text":"Returns a new combined stream object. Available options are: maxDataSize pauseStreams The effect of those options is described below.","title":"CombinedStream.create([options])"},{"location":"node_modules/combined-stream/Readme/#combinedstreampausestreams-true","text":"Whether to apply back pressure to the underlaying streams. If set to false , the underlaying streams will never be paused. If set to true , the underlaying streams will be paused right after being appended, as well as when delayedStream.pipe() wants to throttle.","title":"combinedStream.pauseStreams = true"},{"location":"node_modules/combined-stream/Readme/#combinedstreammaxdatasize-2-1024-1024","text":"The maximum amount of bytes (or characters) to buffer for all source streams. If this value is exceeded, combinedStream emits an 'error' event.","title":"combinedStream.maxDataSize = 2 * 1024 * 1024"},{"location":"node_modules/combined-stream/Readme/#combinedstreamdatasize-0","text":"The amount of bytes (or characters) currently buffered by combinedStream .","title":"combinedStream.dataSize = 0"},{"location":"node_modules/combined-stream/Readme/#combinedstreamappendstream","text":"Appends the given stream to the combinedStream object. If pauseStreams is set to `true, this stream will also be paused right away. streams can also be a function that takes one parameter called next . next is a function that must be invoked in order to provide the next stream, see example above. Regardless of how the stream is appended, combined-stream always attaches an 'error' listener to it, so you don't have to do that manually. Special case: stream can also be a String or Buffer.","title":"combinedStream.append(stream)"},{"location":"node_modules/combined-stream/Readme/#combinedstreamwritedata","text":"You should not call this, combinedStream takes care of piping the appended streams into itself for you.","title":"combinedStream.write(data)"},{"location":"node_modules/combined-stream/Readme/#combinedstreamresume","text":"Causes combinedStream to start drain the streams it manages. The function is idempotent, and also emits a 'resume' event each time which usually goes to the stream that is currently being drained.","title":"combinedStream.resume()"},{"location":"node_modules/combined-stream/Readme/#combinedstreampause","text":"If combinedStream.pauseStreams is set to false , this does nothing. Otherwise a 'pause' event is emitted, this goes to the stream that is currently being drained, so you can use it to apply back pressure.","title":"combinedStream.pause();"},{"location":"node_modules/combined-stream/Readme/#combinedstreamend","text":"Sets combinedStream.writable to false, emits an 'end' event, and removes all streams from the queue.","title":"combinedStream.end();"},{"location":"node_modules/combined-stream/Readme/#combinedstreamdestroy","text":"Same as combinedStream.end() , except it emits a 'close' event instead of 'end' .","title":"combinedStream.destroy();"},{"location":"node_modules/combined-stream/Readme/#license","text":"combined-stream is licensed under the MIT license.","title":"License"},{"location":"node_modules/commander/History/","text":"2.11.0 / 2017-07-03 Fix help section order and padding (#652) feature: support for signals to subcommands (#632) Fixed #37, --help should not display first (#447) Fix translation errors. (#570) Add package-lock.json Remove engines Upgrade package version Prefix events to prevent conflicts between commands and options (#494) Removing dependency on graceful-readlink Support setting name in #name function and make it chainable Add .vscode directory to .gitignore (Visual Studio Code metadata) Updated link to ruby commander in readme files 2.10.0 / 2017-06-19 Update .travis.yml. drop support for older node.js versions. Fix require arguments in README.md On SemVer you do not start from 0.0.1 Add missing semi colon in readme Add save param to npm install node v6 travis test Update Readme_zh-CN.md Allow literal '--' to be passed-through as an argument Test subcommand alias help link build badge to master branch Support the alias of Git style sub-command added keyword commander for better search result on npm Fix Sub-Subcommands test node.js stable Fixes TypeError when a command has an option called --description Update README.md to make it beginner friendly and elaborate on the difference between angled and square brackets. Add chinese Readme file 2.9.0 / 2015-10-13 Add option isDefault to set default subcommand #415 @Qix- Add callback to allow filtering or post-processing of help text #434 @djulien Fix undefined text in help information close #414 #416 @zhiyelee 2.8.1 / 2015-04-22 Back out support multiline description Close #396 #397 2.8.0 / 2015-04-07 Add process.execArg support, execution args like --harmony will be passed to sub-commands #387 @DigitalIO @zhiyelee Fix bug in Git-style sub-commands #372 @zhiyelee Allow commands to be hidden from help #383 @tonylukasavage When git-style sub-commands are in use, yet none are called, display help #382 @claylo Add ability to specify arguments syntax for top-level command #258 @rrthomas Support multiline descriptions #208 @zxqfox 2.7.1 / 2015-03-11 Revert #347 (fix collisions when option and first arg have same name) which causes a bug in #367. 2.7.0 / 2015-03-09 Fix git-style bug when installed globally. Close #335 #349 @zhiyelee Fix collisions when option and first arg have same name. Close #346 #347 @tonylukasavage Add support for camelCase on opts() . Close #353 @nkzawa Add node.js 0.12 and io.js to travis.yml Allow RegEx options. #337 @palanik Fixes exit code when sub-command failing. Close #260 #332 @pirelenito git-style bin files in $PATH make sense. Close #196 #327 @zhiyelee 2.6.0 / 2014-12-30 added Command#allowUnknownOption method. Close #138 #318 @doozr @zhiyelee Add application description to the help msg. Close #112 @dalssoft 2.5.1 / 2014-12-15 fixed two bugs incurred by variadic arguments. Close #291 @Quentin01 #302 @zhiyelee 2.5.0 / 2014-10-24 add support for variadic arguments. Closes #277 @whitlockjc 2.4.0 / 2014-10-17 fixed a bug on executing the coercion function of subcommands option. Closes #270 added Command.prototype.name to retrieve command name. Closes #264 #266 @tonylukasavage added Command.prototype.opts to retrieve all the options as a simple object of key-value pairs. Closes #262 @tonylukasavage fixed a bug on subcommand name. Closes #248 @jonathandelgado fixed function normalize doesn\u2019t honor option terminator. Closes #216 @abbr 2.3.0 / 2014-07-16 add command alias'. Closes PR #210 fix: Typos. Closes #99 fix: Unused fs module. Closes #217 2.2.0 / 2014-03-29 add passing of previous option value fix: support subcommands on windows. Closes #142 Now the defaultValue passed as the second argument of the coercion function. 2.1.0 / 2013-11-21 add: allow cflag style option params, unit test, fixes #174 2.0.0 / 2013-07-18 remove input methods (.prompt, .confirm, etc) 1.3.2 / 2013-07-18 add support for sub-commands to co-exist with the original command 1.3.1 / 2013-07-18 add quick .runningCommand hack so you can opt-out of other logic when running a sub command 1.3.0 / 2013-07-09 add EACCES error handling fix sub-command --help 1.2.0 / 2013-06-13 allow \"-\" hyphen as an option argument support for RegExp coercion 1.1.1 / 2012-11-20 add more sub-command padding fix .usage() when args are present. Closes #106 1.1.0 / 2012-11-16 add git-style executable subcommand support. Closes #94 1.0.5 / 2012-10-09 fix --name clobbering. Closes #92 fix examples/help. Closes #89 1.0.4 / 2012-09-03 add outputHelp() method. 1.0.3 / 2012-08-30 remove invalid .version() defaulting 1.0.2 / 2012-08-24 add --foo=bar support [arv] fix password on node 0.8.8. Make backward compatible with 0.6 [focusaurus] 1.0.1 / 2012-08-03 fix issue #56 fix tty.setRawMode(mode) was moved to tty.ReadStream#setRawMode() (i.e. process.stdin.setRawMode()) 1.0.0 / 2012-07-05 add support for optional option descriptions add defaulting of .version() to package.json's version 0.6.1 / 2012-06-01 Added: append (yes or no) on confirmation Added: allow node.js v0.7.x 0.6.0 / 2012-04-10 Added .prompt(obj, callback) support. Closes #49 Added default support to .choose(). Closes #41 Fixed the choice example 0.5.1 / 2011-12-20 Fixed password() for recent nodes. Closes #36 0.5.0 / 2011-12-04 Added sub-command option support [itay] 0.4.3 / 2011-12-04 Fixed custom help ordering. Closes #32 0.4.2 / 2011-11-24 Added travis support Fixed: line-buffered input automatically trimmed. Closes #31 0.4.1 / 2011-11-18 Removed listening for \"close\" on --help 0.4.0 / 2011-11-15 Added support for -- . Closes #24 0.3.3 / 2011-11-14 Fixed: wait for close event when writing help info [Jerry Hamlet] 0.3.2 / 2011-11-01 Fixed long flag definitions with values [felixge] 0.3.1 / 2011-10-31 Changed --version short flag to -V from -v Changed .version() so it's configurable [felixge] 0.3.0 / 2011-10-31 Added support for long flags only. Closes #18 0.2.1 / 2011-10-24 \"node\": \">= 0.4.x < 0.7.0\". Closes #20 0.2.0 / 2011-09-26 Allow for defaults that are not just boolean. Default peassignment only occurs for --no-*, optional, and required arguments. [Jim Isaacs] 0.1.0 / 2011-08-24 Added support for custom --help output 0.0.5 / 2011-08-18 Changed: when the user enters nothing prompt for password again Fixed issue with passwords beginning with numbers [NuckChorris] 0.0.4 / 2011-08-15 Fixed Commander#args 0.0.3 / 2011-08-15 Added default option value support 0.0.2 / 2011-08-15 Added mask support to Command#password(str[, mask], fn) Added Command#password(str, fn) 0.0.1 / 2010-01-03 Initial release","title":"2.11.0 / 2017-07-03"},{"location":"node_modules/commander/History/#2110-2017-07-03","text":"Fix help section order and padding (#652) feature: support for signals to subcommands (#632) Fixed #37, --help should not display first (#447) Fix translation errors. (#570) Add package-lock.json Remove engines Upgrade package version Prefix events to prevent conflicts between commands and options (#494) Removing dependency on graceful-readlink Support setting name in #name function and make it chainable Add .vscode directory to .gitignore (Visual Studio Code metadata) Updated link to ruby commander in readme files","title":"2.11.0 / 2017-07-03"},{"location":"node_modules/commander/History/#2100-2017-06-19","text":"Update .travis.yml. drop support for older node.js versions. Fix require arguments in README.md On SemVer you do not start from 0.0.1 Add missing semi colon in readme Add save param to npm install node v6 travis test Update Readme_zh-CN.md Allow literal '--' to be passed-through as an argument Test subcommand alias help link build badge to master branch Support the alias of Git style sub-command added keyword commander for better search result on npm Fix Sub-Subcommands test node.js stable Fixes TypeError when a command has an option called --description Update README.md to make it beginner friendly and elaborate on the difference between angled and square brackets. Add chinese Readme file","title":"2.10.0 / 2017-06-19"},{"location":"node_modules/commander/History/#290-2015-10-13","text":"Add option isDefault to set default subcommand #415 @Qix- Add callback to allow filtering or post-processing of help text #434 @djulien Fix undefined text in help information close #414 #416 @zhiyelee","title":"2.9.0 / 2015-10-13"},{"location":"node_modules/commander/History/#281-2015-04-22","text":"Back out support multiline description Close #396 #397","title":"2.8.1 / 2015-04-22"},{"location":"node_modules/commander/History/#280-2015-04-07","text":"Add process.execArg support, execution args like --harmony will be passed to sub-commands #387 @DigitalIO @zhiyelee Fix bug in Git-style sub-commands #372 @zhiyelee Allow commands to be hidden from help #383 @tonylukasavage When git-style sub-commands are in use, yet none are called, display help #382 @claylo Add ability to specify arguments syntax for top-level command #258 @rrthomas Support multiline descriptions #208 @zxqfox","title":"2.8.0 / 2015-04-07"},{"location":"node_modules/commander/History/#271-2015-03-11","text":"Revert #347 (fix collisions when option and first arg have same name) which causes a bug in #367.","title":"2.7.1 / 2015-03-11"},{"location":"node_modules/commander/History/#270-2015-03-09","text":"Fix git-style bug when installed globally. Close #335 #349 @zhiyelee Fix collisions when option and first arg have same name. Close #346 #347 @tonylukasavage Add support for camelCase on opts() . Close #353 @nkzawa Add node.js 0.12 and io.js to travis.yml Allow RegEx options. #337 @palanik Fixes exit code when sub-command failing. Close #260 #332 @pirelenito git-style bin files in $PATH make sense. Close #196 #327 @zhiyelee","title":"2.7.0 / 2015-03-09"},{"location":"node_modules/commander/History/#260-2014-12-30","text":"added Command#allowUnknownOption method. Close #138 #318 @doozr @zhiyelee Add application description to the help msg. Close #112 @dalssoft","title":"2.6.0 / 2014-12-30"},{"location":"node_modules/commander/History/#251-2014-12-15","text":"fixed two bugs incurred by variadic arguments. Close #291 @Quentin01 #302 @zhiyelee","title":"2.5.1 / 2014-12-15"},{"location":"node_modules/commander/History/#250-2014-10-24","text":"add support for variadic arguments. Closes #277 @whitlockjc","title":"2.5.0 / 2014-10-24"},{"location":"node_modules/commander/History/#240-2014-10-17","text":"fixed a bug on executing the coercion function of subcommands option. Closes #270 added Command.prototype.name to retrieve command name. Closes #264 #266 @tonylukasavage added Command.prototype.opts to retrieve all the options as a simple object of key-value pairs. Closes #262 @tonylukasavage fixed a bug on subcommand name. Closes #248 @jonathandelgado fixed function normalize doesn\u2019t honor option terminator. Closes #216 @abbr","title":"2.4.0 / 2014-10-17"},{"location":"node_modules/commander/History/#230-2014-07-16","text":"add command alias'. Closes PR #210 fix: Typos. Closes #99 fix: Unused fs module. Closes #217","title":"2.3.0 / 2014-07-16"},{"location":"node_modules/commander/History/#220-2014-03-29","text":"add passing of previous option value fix: support subcommands on windows. Closes #142 Now the defaultValue passed as the second argument of the coercion function.","title":"2.2.0 / 2014-03-29"},{"location":"node_modules/commander/History/#210-2013-11-21","text":"add: allow cflag style option params, unit test, fixes #174","title":"2.1.0 / 2013-11-21"},{"location":"node_modules/commander/History/#200-2013-07-18","text":"remove input methods (.prompt, .confirm, etc)","title":"2.0.0 / 2013-07-18"},{"location":"node_modules/commander/History/#132-2013-07-18","text":"add support for sub-commands to co-exist with the original command","title":"1.3.2 / 2013-07-18"},{"location":"node_modules/commander/History/#131-2013-07-18","text":"add quick .runningCommand hack so you can opt-out of other logic when running a sub command","title":"1.3.1 / 2013-07-18"},{"location":"node_modules/commander/History/#130-2013-07-09","text":"add EACCES error handling fix sub-command --help","title":"1.3.0 / 2013-07-09"},{"location":"node_modules/commander/History/#120-2013-06-13","text":"allow \"-\" hyphen as an option argument support for RegExp coercion","title":"1.2.0 / 2013-06-13"},{"location":"node_modules/commander/History/#111-2012-11-20","text":"add more sub-command padding fix .usage() when args are present. Closes #106","title":"1.1.1 / 2012-11-20"},{"location":"node_modules/commander/History/#110-2012-11-16","text":"add git-style executable subcommand support. Closes #94","title":"1.1.0 / 2012-11-16"},{"location":"node_modules/commander/History/#105-2012-10-09","text":"fix --name clobbering. Closes #92 fix examples/help. Closes #89","title":"1.0.5 / 2012-10-09"},{"location":"node_modules/commander/History/#104-2012-09-03","text":"add outputHelp() method.","title":"1.0.4 / 2012-09-03"},{"location":"node_modules/commander/History/#103-2012-08-30","text":"remove invalid .version() defaulting","title":"1.0.3 / 2012-08-30"},{"location":"node_modules/commander/History/#102-2012-08-24","text":"add --foo=bar support [arv] fix password on node 0.8.8. Make backward compatible with 0.6 [focusaurus]","title":"1.0.2 / 2012-08-24"},{"location":"node_modules/commander/History/#101-2012-08-03","text":"fix issue #56 fix tty.setRawMode(mode) was moved to tty.ReadStream#setRawMode() (i.e. process.stdin.setRawMode())","title":"1.0.1 / 2012-08-03"},{"location":"node_modules/commander/History/#100-2012-07-05","text":"add support for optional option descriptions add defaulting of .version() to package.json's version","title":"1.0.0 / 2012-07-05"},{"location":"node_modules/commander/History/#061-2012-06-01","text":"Added: append (yes or no) on confirmation Added: allow node.js v0.7.x","title":"0.6.1 / 2012-06-01"},{"location":"node_modules/commander/History/#060-2012-04-10","text":"Added .prompt(obj, callback) support. Closes #49 Added default support to .choose(). Closes #41 Fixed the choice example","title":"0.6.0 / 2012-04-10"},{"location":"node_modules/commander/History/#051-2011-12-20","text":"Fixed password() for recent nodes. Closes #36","title":"0.5.1 / 2011-12-20"},{"location":"node_modules/commander/History/#050-2011-12-04","text":"Added sub-command option support [itay]","title":"0.5.0 / 2011-12-04"},{"location":"node_modules/commander/History/#043-2011-12-04","text":"Fixed custom help ordering. Closes #32","title":"0.4.3 / 2011-12-04"},{"location":"node_modules/commander/History/#042-2011-11-24","text":"Added travis support Fixed: line-buffered input automatically trimmed. Closes #31","title":"0.4.2 / 2011-11-24"},{"location":"node_modules/commander/History/#041-2011-11-18","text":"Removed listening for \"close\" on --help","title":"0.4.1 / 2011-11-18"},{"location":"node_modules/commander/History/#040-2011-11-15","text":"Added support for -- . Closes #24","title":"0.4.0 / 2011-11-15"},{"location":"node_modules/commander/History/#033-2011-11-14","text":"Fixed: wait for close event when writing help info [Jerry Hamlet]","title":"0.3.3 / 2011-11-14"},{"location":"node_modules/commander/History/#032-2011-11-01","text":"Fixed long flag definitions with values [felixge]","title":"0.3.2 / 2011-11-01"},{"location":"node_modules/commander/History/#031-2011-10-31","text":"Changed --version short flag to -V from -v Changed .version() so it's configurable [felixge]","title":"0.3.1 / 2011-10-31"},{"location":"node_modules/commander/History/#030-2011-10-31","text":"Added support for long flags only. Closes #18","title":"0.3.0 / 2011-10-31"},{"location":"node_modules/commander/History/#021-2011-10-24","text":"\"node\": \">= 0.4.x < 0.7.0\". Closes #20","title":"0.2.1 / 2011-10-24"},{"location":"node_modules/commander/History/#020-2011-09-26","text":"Allow for defaults that are not just boolean. Default peassignment only occurs for --no-*, optional, and required arguments. [Jim Isaacs]","title":"0.2.0 / 2011-09-26"},{"location":"node_modules/commander/History/#010-2011-08-24","text":"Added support for custom --help output","title":"0.1.0 / 2011-08-24"},{"location":"node_modules/commander/History/#005-2011-08-18","text":"Changed: when the user enters nothing prompt for password again Fixed issue with passwords beginning with numbers [NuckChorris]","title":"0.0.5 / 2011-08-18"},{"location":"node_modules/commander/History/#004-2011-08-15","text":"Fixed Commander#args","title":"0.0.4 / 2011-08-15"},{"location":"node_modules/commander/History/#003-2011-08-15","text":"Added default option value support","title":"0.0.3 / 2011-08-15"},{"location":"node_modules/commander/History/#002-2011-08-15","text":"Added mask support to Command#password(str[, mask], fn) Added Command#password(str, fn)","title":"0.0.2 / 2011-08-15"},{"location":"node_modules/commander/History/#001-2010-01-03","text":"Initial release","title":"0.0.1 / 2010-01-03"},{"location":"node_modules/commander/Readme/","text":"Commander.js The complete solution for node.js command-line interfaces, inspired by Ruby's commander . API documentation Installation $ npm install commander --save Option parsing Options with commander are defined with the .option() method, also serving as documentation for the options. The example below parses args and options from process.argv , leaving remaining args as the program.args array which were not consumed by options. #!/usr/bin/env node /** * Module dependencies. */ var program = require('commander'); program .version('0.1.0') .option('-p, --peppers', 'Add peppers') .option('-P, --pineapple', 'Add pineapple') .option('-b, --bbq-sauce', 'Add bbq sauce') .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble') .parse(process.argv); console.log('you ordered a pizza with:'); if (program.peppers) console.log(' - peppers'); if (program.pineapple) console.log(' - pineapple'); if (program.bbqSauce) console.log(' - bbq'); console.log(' - %s cheese', program.cheese); Short flags may be passed as a single arg, for example -abc is equivalent to -a -b -c . Multi-word options such as \"--template-engine\" are camel-cased, becoming program.templateEngine etc. Coercion function range(val) { return val.split('..').map(Number); } function list(val) { return val.split(','); } function collect(val, memo) { memo.push(val); return memo; } function increaseVerbosity(v, total) { return total + 1; } program .version('0.1.0') .usage('[options] ') .option('-i, --integer ', 'An integer argument', parseInt) .option('-f, --float ', 'A float argument', parseFloat) .option('-r, --range ..', 'A range', range) .option('-l, --list ', 'A list', list) .option('-o, --optional [value]', 'An optional value') .option('-c, --collect [value]', 'A repeatable value', collect, []) .option('-v, --verbose', 'A value that can be increased', increaseVerbosity, 0) .parse(process.argv); console.log(' int: %j', program.integer); console.log(' float: %j', program.float); console.log(' optional: %j', program.optional); program.range = program.range || []; console.log(' range: %j..%j', program.range[0], program.range[1]); console.log(' list: %j', program.list); console.log(' collect: %j', program.collect); console.log(' verbosity: %j', program.verbose); console.log(' args: %j', program.args); Regular Expression program .version('0.1.0') .option('-s --size ', 'Pizza size', /^(large|medium|small)$/i, 'medium') .option('-d --drink [drink]', 'Drink', /^(coke|pepsi|izze)$/i) .parse(process.argv); console.log(' size: %j', program.size); console.log(' drink: %j', program.drink); Variadic arguments The last argument of a command can be variadic, and only the last argument. To make an argument variadic you have to append ... to the argument name. Here is an example: #!/usr/bin/env node /** * Module dependencies. */ var program = require('commander'); program .version('0.1.0') .command('rmdir [otherDirs...]') .action(function (dir, otherDirs) { console.log('rmdir %s', dir); if (otherDirs) { otherDirs.forEach(function (oDir) { console.log('rmdir %s', oDir); }); } }); program.parse(process.argv); An Array is used for the value of a variadic argument. This applies to program.args as well as the argument passed to your action as demonstrated above. Specify the argument syntax #!/usr/bin/env node var program = require('commander'); program .version('0.1.0') .arguments(' [env]') .action(function (cmd, env) { cmdValue = cmd; envValue = env; }); program.parse(process.argv); if (typeof cmdValue === 'undefined') { console.error('no command given!'); process.exit(1); } console.log('command:', cmdValue); console.log('environment:', envValue || \"no environment given\"); Angled brackets (e.g. ) indicate required input. Square brackets (e.g. [env] ) indicate optional input. Git-style sub-commands // file: ./examples/pm var program = require('commander'); program .version('0.1.0') .command('install [name]', 'install one or more packages') .command('search [query]', 'search with optional query') .command('list', 'list packages installed', {isDefault: true}) .parse(process.argv); When .command() is invoked with a description argument, no .action(callback) should be called to handle sub-commands, otherwise there will be an error. This tells commander that you're going to use separate executables for sub-commands, much like git(1) and other popular tools. The commander will try to search the executables in the directory of the entry script (like ./examples/pm ) with the name program-command , like pm-install , pm-search . Options can be passed with the call to .command() . Specifying true for opts.noHelp will remove the option from the generated help output. Specifying true for opts.isDefault will run the subcommand if no other subcommand is specified. If the program is designed to be installed globally, make sure the executables have proper modes, like 755 . --harmony You can enable --harmony option in two ways: * Use #! /usr/bin/env node --harmony in the sub-commands scripts. Note some os version don\u2019t support this pattern. * Use the --harmony option when call the command, like node --harmony examples/pm publish . The --harmony option will be preserved when spawning sub-command process. Automated --help The help information is auto-generated based on the information commander already knows about your program, so the following --help info is for free: $ ./examples/pizza --help Usage: pizza [options] An application for pizzas ordering Options: -h, --help output usage information -V, --version output the version number -p, --peppers Add peppers -P, --pineapple Add pineapple -b, --bbq Add bbq sauce -c, --cheese Add the specified type of cheese [marble] -C, --no-cheese You do not want any cheese Custom help You can display arbitrary -h, --help information by listening for \"--help\". Commander will automatically exit once you are done so that the remainder of your program does not execute causing undesired behaviours, for example in the following executable \"stuff\" will not output when --help is used. #!/usr/bin/env node /** * Module dependencies. */ var program = require('commander'); program .version('0.1.0') .option('-f, --foo', 'enable some foo') .option('-b, --bar', 'enable some bar') .option('-B, --baz', 'enable some baz'); // must be before .parse() since // node's emit() is immediate program.on('--help', function(){ console.log(' Examples:'); console.log(''); console.log(' $ custom-help --help'); console.log(' $ custom-help -h'); console.log(''); }); program.parse(process.argv); console.log('stuff'); Yields the following help output when node script-name.js -h or node script-name.js --help are run: Usage: custom-help [options] Options: -h, --help output usage information -V, --version output the version number -f, --foo enable some foo -b, --bar enable some bar -B, --baz enable some baz Examples: $ custom-help --help $ custom-help -h .outputHelp(cb) Output help information without exiting. Optional callback cb allows post-processing of help text before it is displayed. If you want to display help by default (e.g. if no command was provided), you can use something like: var program = require('commander'); var colors = require('colors'); program .version('0.1.0') .command('getstream [url]', 'get stream URL') .parse(process.argv); if (!process.argv.slice(2).length) { program.outputHelp(make_red); } function make_red(txt) { return colors.red(txt); //display the help text in red on the console } .help(cb) Output help information and exit immediately. Optional callback cb allows post-processing of help text before it is displayed. Examples var program = require('commander'); program .version('0.1.0') .option('-C, --chdir ', 'change the working directory') .option('-c, --config ', 'set config path. defaults to ./deploy.conf') .option('-T, --no-tests', 'ignore test hook'); program .command('setup [env]') .description('run setup commands for all envs') .option(\"-s, --setup_mode [mode]\", \"Which setup mode to use\") .action(function(env, options){ var mode = options.setup_mode || \"normal\"; env = env || 'all'; console.log('setup for %s env(s) with %s mode', env, mode); }); program .command('exec ') .alias('ex') .description('execute the given remote cmd') .option(\"-e, --exec_mode \", \"Which exec mode to use\") .action(function(cmd, options){ console.log('exec \"%s\" using %s mode', cmd, options.exec_mode); }).on('--help', function() { console.log(' Examples:'); console.log(); console.log(' $ deploy exec sequential'); console.log(' $ deploy exec async'); console.log(); }); program .command('*') .action(function(env){ console.log('deploying \"%s\"', env); }); program.parse(process.argv); More Demos can be found in the examples directory. License MIT","title":"Commander.js"},{"location":"node_modules/commander/Readme/#commanderjs","text":"The complete solution for node.js command-line interfaces, inspired by Ruby's commander . API documentation","title":"Commander.js"},{"location":"node_modules/commander/Readme/#installation","text":"$ npm install commander --save","title":"Installation"},{"location":"node_modules/commander/Readme/#option-parsing","text":"Options with commander are defined with the .option() method, also serving as documentation for the options. The example below parses args and options from process.argv , leaving remaining args as the program.args array which were not consumed by options. #!/usr/bin/env node /** * Module dependencies. */ var program = require('commander'); program .version('0.1.0') .option('-p, --peppers', 'Add peppers') .option('-P, --pineapple', 'Add pineapple') .option('-b, --bbq-sauce', 'Add bbq sauce') .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble') .parse(process.argv); console.log('you ordered a pizza with:'); if (program.peppers) console.log(' - peppers'); if (program.pineapple) console.log(' - pineapple'); if (program.bbqSauce) console.log(' - bbq'); console.log(' - %s cheese', program.cheese); Short flags may be passed as a single arg, for example -abc is equivalent to -a -b -c . Multi-word options such as \"--template-engine\" are camel-cased, becoming program.templateEngine etc.","title":"Option parsing"},{"location":"node_modules/commander/Readme/#coercion","text":"function range(val) { return val.split('..').map(Number); } function list(val) { return val.split(','); } function collect(val, memo) { memo.push(val); return memo; } function increaseVerbosity(v, total) { return total + 1; } program .version('0.1.0') .usage('[options] ') .option('-i, --integer ', 'An integer argument', parseInt) .option('-f, --float ', 'A float argument', parseFloat) .option('-r, --range ..', 'A range', range) .option('-l, --list ', 'A list', list) .option('-o, --optional [value]', 'An optional value') .option('-c, --collect [value]', 'A repeatable value', collect, []) .option('-v, --verbose', 'A value that can be increased', increaseVerbosity, 0) .parse(process.argv); console.log(' int: %j', program.integer); console.log(' float: %j', program.float); console.log(' optional: %j', program.optional); program.range = program.range || []; console.log(' range: %j..%j', program.range[0], program.range[1]); console.log(' list: %j', program.list); console.log(' collect: %j', program.collect); console.log(' verbosity: %j', program.verbose); console.log(' args: %j', program.args);","title":"Coercion"},{"location":"node_modules/commander/Readme/#regular-expression","text":"program .version('0.1.0') .option('-s --size ', 'Pizza size', /^(large|medium|small)$/i, 'medium') .option('-d --drink [drink]', 'Drink', /^(coke|pepsi|izze)$/i) .parse(process.argv); console.log(' size: %j', program.size); console.log(' drink: %j', program.drink);","title":"Regular Expression"},{"location":"node_modules/commander/Readme/#variadic-arguments","text":"The last argument of a command can be variadic, and only the last argument. To make an argument variadic you have to append ... to the argument name. Here is an example: #!/usr/bin/env node /** * Module dependencies. */ var program = require('commander'); program .version('0.1.0') .command('rmdir [otherDirs...]') .action(function (dir, otherDirs) { console.log('rmdir %s', dir); if (otherDirs) { otherDirs.forEach(function (oDir) { console.log('rmdir %s', oDir); }); } }); program.parse(process.argv); An Array is used for the value of a variadic argument. This applies to program.args as well as the argument passed to your action as demonstrated above.","title":"Variadic arguments"},{"location":"node_modules/commander/Readme/#specify-the-argument-syntax","text":"#!/usr/bin/env node var program = require('commander'); program .version('0.1.0') .arguments(' [env]') .action(function (cmd, env) { cmdValue = cmd; envValue = env; }); program.parse(process.argv); if (typeof cmdValue === 'undefined') { console.error('no command given!'); process.exit(1); } console.log('command:', cmdValue); console.log('environment:', envValue || \"no environment given\"); Angled brackets (e.g. ) indicate required input. Square brackets (e.g. [env] ) indicate optional input.","title":"Specify the argument syntax"},{"location":"node_modules/commander/Readme/#git-style-sub-commands","text":"// file: ./examples/pm var program = require('commander'); program .version('0.1.0') .command('install [name]', 'install one or more packages') .command('search [query]', 'search with optional query') .command('list', 'list packages installed', {isDefault: true}) .parse(process.argv); When .command() is invoked with a description argument, no .action(callback) should be called to handle sub-commands, otherwise there will be an error. This tells commander that you're going to use separate executables for sub-commands, much like git(1) and other popular tools. The commander will try to search the executables in the directory of the entry script (like ./examples/pm ) with the name program-command , like pm-install , pm-search . Options can be passed with the call to .command() . Specifying true for opts.noHelp will remove the option from the generated help output. Specifying true for opts.isDefault will run the subcommand if no other subcommand is specified. If the program is designed to be installed globally, make sure the executables have proper modes, like 755 .","title":"Git-style sub-commands"},{"location":"node_modules/commander/Readme/#-harmony","text":"You can enable --harmony option in two ways: * Use #! /usr/bin/env node --harmony in the sub-commands scripts. Note some os version don\u2019t support this pattern. * Use the --harmony option when call the command, like node --harmony examples/pm publish . The --harmony option will be preserved when spawning sub-command process.","title":"--harmony"},{"location":"node_modules/commander/Readme/#automated-help","text":"The help information is auto-generated based on the information commander already knows about your program, so the following --help info is for free: $ ./examples/pizza --help Usage: pizza [options] An application for pizzas ordering Options: -h, --help output usage information -V, --version output the version number -p, --peppers Add peppers -P, --pineapple Add pineapple -b, --bbq Add bbq sauce -c, --cheese Add the specified type of cheese [marble] -C, --no-cheese You do not want any cheese","title":"Automated --help"},{"location":"node_modules/commander/Readme/#custom-help","text":"You can display arbitrary -h, --help information by listening for \"--help\". Commander will automatically exit once you are done so that the remainder of your program does not execute causing undesired behaviours, for example in the following executable \"stuff\" will not output when --help is used. #!/usr/bin/env node /** * Module dependencies. */ var program = require('commander'); program .version('0.1.0') .option('-f, --foo', 'enable some foo') .option('-b, --bar', 'enable some bar') .option('-B, --baz', 'enable some baz'); // must be before .parse() since // node's emit() is immediate program.on('--help', function(){ console.log(' Examples:'); console.log(''); console.log(' $ custom-help --help'); console.log(' $ custom-help -h'); console.log(''); }); program.parse(process.argv); console.log('stuff'); Yields the following help output when node script-name.js -h or node script-name.js --help are run: Usage: custom-help [options] Options: -h, --help output usage information -V, --version output the version number -f, --foo enable some foo -b, --bar enable some bar -B, --baz enable some baz Examples: $ custom-help --help $ custom-help -h","title":"Custom help"},{"location":"node_modules/commander/Readme/#outputhelpcb","text":"Output help information without exiting. Optional callback cb allows post-processing of help text before it is displayed. If you want to display help by default (e.g. if no command was provided), you can use something like: var program = require('commander'); var colors = require('colors'); program .version('0.1.0') .command('getstream [url]', 'get stream URL') .parse(process.argv); if (!process.argv.slice(2).length) { program.outputHelp(make_red); } function make_red(txt) { return colors.red(txt); //display the help text in red on the console }","title":".outputHelp(cb)"},{"location":"node_modules/commander/Readme/#helpcb","text":"Output help information and exit immediately. Optional callback cb allows post-processing of help text before it is displayed.","title":".help(cb)"},{"location":"node_modules/commander/Readme/#examples","text":"var program = require('commander'); program .version('0.1.0') .option('-C, --chdir ', 'change the working directory') .option('-c, --config ', 'set config path. defaults to ./deploy.conf') .option('-T, --no-tests', 'ignore test hook'); program .command('setup [env]') .description('run setup commands for all envs') .option(\"-s, --setup_mode [mode]\", \"Which setup mode to use\") .action(function(env, options){ var mode = options.setup_mode || \"normal\"; env = env || 'all'; console.log('setup for %s env(s) with %s mode', env, mode); }); program .command('exec ') .alias('ex') .description('execute the given remote cmd') .option(\"-e, --exec_mode \", \"Which exec mode to use\") .action(function(cmd, options){ console.log('exec \"%s\" using %s mode', cmd, options.exec_mode); }).on('--help', function() { console.log(' Examples:'); console.log(); console.log(' $ deploy exec sequential'); console.log(' $ deploy exec async'); console.log(); }); program .command('*') .action(function(env){ console.log('deploying \"%s\"', env); }); program.parse(process.argv); More Demos can be found in the examples directory.","title":"Examples"},{"location":"node_modules/commander/Readme/#license","text":"MIT","title":"License"},{"location":"node_modules/concat-stream/readme/","text":"concat-stream Writable stream that concatenates all the data from a stream and calls a callback with the result. Use this when you want to collect all the data from a stream into a single buffer. description Streams emit many buffers. If you want to collect all of the buffers, and when the stream ends concatenate all of the buffers together and receive a single buffer then this is the module for you. Only use this if you know you can fit all of the output of your stream into a single Buffer (e.g. in RAM). There are also objectMode streams that emit things other than Buffers, and you can concatenate these too. See below for details. Related concat-stream is part of the mississippi stream utility collection which includes more useful stream modules similar to this one. examples Buffers var fs = require('fs') var concat = require('concat-stream') var readStream = fs.createReadStream('cat.png') var concatStream = concat(gotPicture) readStream.on('error', handleError) readStream.pipe(concatStream) function gotPicture(imageBuffer) { // imageBuffer is all of `cat.png` as a node.js Buffer } function handleError(err) { // handle your error appropriately here, e.g.: console.error(err) // print the error to STDERR process.exit(1) // exit program with non-zero exit code } Arrays var write = concat(function(data) {}) write.write([1,2,3]) write.write([4,5,6]) write.end() // data will be [1,2,3,4,5,6] in the above callback Uint8Arrays var write = concat(function(data) {}) var a = new Uint8Array(3) a[0] = 97; a[1] = 98; a[2] = 99 write.write(a) write.write('!') write.end(Buffer('!!1')) See test/ for more examples methods var concat = require('concat-stream') var writable = concat(opts={}, cb) Return a writable stream that will fire cb(data) with all of the data that was written to the stream. Data can be written to writable as strings, Buffers, arrays of byte integers, and Uint8Arrays. By default concat-stream will give you back the same data type as the type of the first buffer written to the stream. Use opts.encoding to set what format data should be returned as, e.g. if you if you don't want to rely on the built-in type checking or for some other reason. string - get a string buffer - get back a Buffer array - get an array of byte integers uint8array , u8 , uint8 - get back a Uint8Array object , get back an array of Objects If you don't specify an encoding, and the types can't be inferred (e.g. you write things that aren't in the list above), it will try to convert concat them into a Buffer . If nothing is written to writable then data will be an empty array [] . error handling concat-stream does not handle errors for you, so you must handle errors on whatever streams you pipe into concat-stream . This is a general rule when programming with node.js streams: always handle errors on each and every stream. Since concat-stream is not itself a stream it does not emit errors. We recommend using end-of-stream or pump for writing error tolerant stream code. license MIT LICENSE","title":"concat-stream"},{"location":"node_modules/concat-stream/readme/#concat-stream","text":"Writable stream that concatenates all the data from a stream and calls a callback with the result. Use this when you want to collect all the data from a stream into a single buffer.","title":"concat-stream"},{"location":"node_modules/concat-stream/readme/#description","text":"Streams emit many buffers. If you want to collect all of the buffers, and when the stream ends concatenate all of the buffers together and receive a single buffer then this is the module for you. Only use this if you know you can fit all of the output of your stream into a single Buffer (e.g. in RAM). There are also objectMode streams that emit things other than Buffers, and you can concatenate these too. See below for details.","title":"description"},{"location":"node_modules/concat-stream/readme/#related","text":"concat-stream is part of the mississippi stream utility collection which includes more useful stream modules similar to this one.","title":"Related"},{"location":"node_modules/concat-stream/readme/#examples","text":"","title":"examples"},{"location":"node_modules/concat-stream/readme/#buffers","text":"var fs = require('fs') var concat = require('concat-stream') var readStream = fs.createReadStream('cat.png') var concatStream = concat(gotPicture) readStream.on('error', handleError) readStream.pipe(concatStream) function gotPicture(imageBuffer) { // imageBuffer is all of `cat.png` as a node.js Buffer } function handleError(err) { // handle your error appropriately here, e.g.: console.error(err) // print the error to STDERR process.exit(1) // exit program with non-zero exit code }","title":"Buffers"},{"location":"node_modules/concat-stream/readme/#arrays","text":"var write = concat(function(data) {}) write.write([1,2,3]) write.write([4,5,6]) write.end() // data will be [1,2,3,4,5,6] in the above callback","title":"Arrays"},{"location":"node_modules/concat-stream/readme/#uint8arrays","text":"var write = concat(function(data) {}) var a = new Uint8Array(3) a[0] = 97; a[1] = 98; a[2] = 99 write.write(a) write.write('!') write.end(Buffer('!!1')) See test/ for more examples","title":"Uint8Arrays"},{"location":"node_modules/concat-stream/readme/#methods","text":"var concat = require('concat-stream')","title":"methods"},{"location":"node_modules/concat-stream/readme/#var-writable-concatopts-cb","text":"Return a writable stream that will fire cb(data) with all of the data that was written to the stream. Data can be written to writable as strings, Buffers, arrays of byte integers, and Uint8Arrays. By default concat-stream will give you back the same data type as the type of the first buffer written to the stream. Use opts.encoding to set what format data should be returned as, e.g. if you if you don't want to rely on the built-in type checking or for some other reason. string - get a string buffer - get back a Buffer array - get an array of byte integers uint8array , u8 , uint8 - get back a Uint8Array object , get back an array of Objects If you don't specify an encoding, and the types can't be inferred (e.g. you write things that aren't in the list above), it will try to convert concat them into a Buffer . If nothing is written to writable then data will be an empty array [] .","title":"var writable = concat(opts={}, cb)"},{"location":"node_modules/concat-stream/readme/#error-handling","text":"concat-stream does not handle errors for you, so you must handle errors on whatever streams you pipe into concat-stream . This is a general rule when programming with node.js streams: always handle errors on each and every stream. Since concat-stream is not itself a stream it does not emit errors. We recommend using end-of-stream or pump for writing error tolerant stream code.","title":"error handling"},{"location":"node_modules/concat-stream/readme/#license","text":"MIT LICENSE","title":"license"},{"location":"node_modules/core-util-is/","text":"core-util-is The util.is* functions introduced in Node v0.12.","title":"core-util-is"},{"location":"node_modules/core-util-is/#core-util-is","text":"The util.is* functions introduced in Node v0.12.","title":"core-util-is"},{"location":"node_modules/cryptiles/","text":"cryptiles General purpose crypto utilities Lead Maintainer - C J Silverio Methods randomString( size) Returns a cryptographically strong pseudo-random data string. Takes a size argument for the length of the string. fixedTimeComparison( a, b) Compare two strings using fixed time algorithm (to prevent time-based analysis of MAC digest match). Returns true if the strings match, false if they differ.","title":"cryptiles"},{"location":"node_modules/cryptiles/#cryptiles","text":"General purpose crypto utilities Lead Maintainer - C J Silverio","title":"cryptiles"},{"location":"node_modules/cryptiles/#methods","text":"","title":"Methods"},{"location":"node_modules/cryptiles/#randomstringnumber-size","text":"Returns a cryptographically strong pseudo-random data string. Takes a size argument for the length of the string.","title":"randomString(<Number> size)"},{"location":"node_modules/cryptiles/#fixedtimecomparisonstring-a-string-b","text":"Compare two strings using fixed time algorithm (to prevent time-based analysis of MAC digest match). Returns true if the strings match, false if they differ.","title":"fixedTimeComparison(<String> a, <String> b)"},{"location":"node_modules/dashdash/","text":"A light, featureful and explicit option parsing library for node.js. Why another one? See below . tl;dr: The others I've tried are one of too loosey goosey (not explicit), too big/too many deps, or ill specified. YMMV. Follow @trentmick for updates to node-dashdash. Install npm install dashdash Usage var dashdash = require('dashdash'); // Specify the options. Minimally `name` (or `names`) and `type` // must be given for each. var options = [ { // `names` or a single `name`. First element is the `opts.KEY`. names: ['help', 'h'], // See \"Option specs\" below for types. type: 'bool', help: 'Print this help and exit.' } ]; // Shortcut form. As called it infers `process.argv`. See below for // the longer form to use methods like `.help()` on the Parser object. var opts = dashdash.parse({options: options}); console.log(\"opts:\", opts); console.log(\"args:\", opts._args); Longer Example A more realistic starter script \"foo.js\" is as follows. This also shows using parser.help() for formatted option help. var dashdash = require('./lib/dashdash'); var options = [ { name: 'version', type: 'bool', help: 'Print tool version and exit.' }, { names: ['help', 'h'], type: 'bool', help: 'Print this help and exit.' }, { names: ['verbose', 'v'], type: 'arrayOfBool', help: 'Verbose output. Use multiple times for more verbose.' }, { names: ['file', 'f'], type: 'string', help: 'File to process', helpArg: 'FILE' } ]; var parser = dashdash.createParser({options: options}); try { var opts = parser.parse(process.argv); } catch (e) { console.error('foo: error: %s', e.message); process.exit(1); } console.log(\"# opts:\", opts); console.log(\"# args:\", opts._args); // Use `parser.help()` for formatted options help. if (opts.help) { var help = parser.help({includeEnv: true}).trimRight(); console.log('usage: node foo.js [OPTIONS]\\n' + 'options:\\n' + help); process.exit(0); } // ... Some example output from this script (foo.js): $ node foo.js -h # opts: { help: true, _order: [ { name: 'help', value: true, from: 'argv' } ], _args: [] } # args: [] usage: node foo.js [OPTIONS] options: --version Print tool version and exit. -h, --help Print this help and exit. -v, --verbose Verbose output. Use multiple times for more verbose. -f FILE, --file=FILE File to process $ node foo.js -v # opts: { verbose: [ true ], _order: [ { name: 'verbose', value: true, from: 'argv' } ], _args: [] } # args: [] $ node foo.js --version arg1 # opts: { version: true, _order: [ { name: 'version', value: true, from: 'argv' } ], _args: [ 'arg1' ] } # args: [ 'arg1' ] $ node foo.js -f bar.txt # opts: { file: 'bar.txt', _order: [ { name: 'file', value: 'bar.txt', from: 'argv' } ], _args: [] } # args: [] $ node foo.js -vvv --file=blah # opts: { verbose: [ true, true, true ], file: 'blah', _order: [ { name: 'verbose', value: true, from: 'argv' }, { name: 'verbose', value: true, from: 'argv' }, { name: 'verbose', value: true, from: 'argv' }, { name: 'file', value: 'blah', from: 'argv' } ], _args: [] } # args: [] See the \"examples\" dir for a number of starter examples using some of dashdash's features. Environment variable integration If you want to allow environment variables to specify options to your tool, dashdash makes this easy. We can change the 'verbose' option in the example above to include an 'env' field: { names: ['verbose', 'v'], type: 'arrayOfBool', env: 'FOO_VERBOSE', // <--- add this line help: 'Verbose output. Use multiple times for more verbose.' }, then the \"FOO_VERBOSE\" environment variable can be used to set this option: $ FOO_VERBOSE=1 node foo.js # opts: { verbose: [ true ], _order: [ { name: 'verbose', value: true, from: 'env' } ], _args: [] } # args: [] Boolean options will interpret the empty string as unset, '0' as false and anything else as true. $ FOO_VERBOSE= node examples/foo.js # not set # opts: { _order: [], _args: [] } # args: [] $ FOO_VERBOSE=0 node examples/foo.js # '0' is false # opts: { verbose: [ false ], _order: [ { key: 'verbose', value: false, from: 'env' } ], _args: [] } # args: [] $ FOO_VERBOSE=1 node examples/foo.js # true # opts: { verbose: [ true ], _order: [ { key: 'verbose', value: true, from: 'env' } ], _args: [] } # args: [] $ FOO_VERBOSE=boogabooga node examples/foo.js # true # opts: { verbose: [ true ], _order: [ { key: 'verbose', value: true, from: 'env' } ], _args: [] } # args: [] Non-booleans can be used as well. Strings: $ FOO_FILE=data.txt node examples/foo.js # opts: { file: 'data.txt', _order: [ { key: 'file', value: 'data.txt', from: 'env' } ], _args: [] } # args: [] Numbers: $ FOO_TIMEOUT=5000 node examples/foo.js # opts: { timeout: 5000, _order: [ { key: 'timeout', value: 5000, from: 'env' } ], _args: [] } # args: [] $ FOO_TIMEOUT=blarg node examples/foo.js foo: error: arg for \"FOO_TIMEOUT\" is not a positive integer: \"blarg\" With the includeEnv: true config to parser.help() the environment variable can also be included in help output : usage: node foo.js [OPTIONS] options: --version Print tool version and exit. -h, --help Print this help and exit. -v, --verbose Verbose output. Use multiple times for more verbose. Environment: FOO_VERBOSE=1 -f FILE, --file=FILE File to process Bash completion Dashdash provides a simple way to create a Bash completion file that you can place in your \"bash_completion.d\" directory -- sometimes that is \"/usr/local/etc/bash_completion.d/\"). Features: Support for short and long opts Support for knowing which options take arguments Support for subcommands (e.g. 'git log ' to show just options for the log subcommand). See node-cmdln for how to integrate that. Does the right thing with \"--\" to stop options. Custom optarg and arg types for custom completions. Dashdash will return bash completion file content given a parser instance: var parser = dashdash.createParser({options: options}); console.log( parser.bashCompletion({name: 'mycli'}) ); or directly from a options array of options specs: var code = dashdash.bashCompletionFromOptions({ name: 'mycli', options: OPTIONS }); Write that content to \"/usr/local/etc/bash_completion.d/mycli\" and you will have Bash completions for mycli . Alternatively you can write it to any file (e.g. \"~/.bashrc\") and source it. You could add a --completion hidden option to your tool that emits the completion content and document for your users to call that to install Bash completions. See examples/ddcompletion.js for a complete example, including how one can define bash functions for completion of custom option types. Also see node-cmdln for how it uses this for Bash completion for full multi-subcommand tools. TODO: document specExtra TODO: document includeHidden TODO: document custom types, function complete\\_FOO guide, completionType TODO: document argtypes Parser config Parser construction (i.e. dashdash.createParser(CONFIG) ) takes the following fields: options (Array of option specs). Required. See the Option specs section below. interspersed (Boolean). Optional. Default is true. If true this allows interspersed arguments and options. I.e.: node ./tool.js -v arg1 arg2 -h # '-h' is after interspersed args Set it to false to have '-h' not get parsed as an option in the above example. allowUnknown (Boolean). Optional. Default is false. If false, this causes unknown arguments to throw an error. I.e.: node ./tool.js -v arg1 --afe8asefksjefhas Set it to true to treat the unknown option as a positional argument. Caveat : When a shortopt group, such as -xaz contains a mix of known and unknown options, the entire group is passed through unmolested as a positional argument. Consider if you have a known short option -a , and parse the following command line: node ./tool.js -xaz where -x and -z are unknown. There are multiple ways to interpret this: 1. `-x` takes a value: `{x: 'az'}` 2. `-x` and `-z` are both booleans: `{x:true,a:true,z:true}` Since dashdash does not know what -x and -z are, it can't know if you'd prefer to receive {a:true,_args:['-x','-z']} or {x:'az'} , or {_args:['-xaz']} . Leaving the positional arg unprocessed is the easiest mistake for the user to recover from. Option specs Example using all fields (required fields are noted): { names: ['file', 'f'], // Required (one of `names` or `name`). type: 'string', // Required. completionType: 'filename', env: 'MYTOOL_FILE', help: 'Config file to load before running \"mytool\"', helpArg: 'PATH', helpWrap: false, default: path.resolve(process.env.HOME, '.mytoolrc') } Each option spec in the options array must/can have the following fields: name (String) or names (Array). Required. These give the option name and aliases. The first name (if more than one given) is the key for the parsed opts object. type (String). Required. One of: bool string number integer positiveInteger date (epoch seconds, e.g. 1396031701, or ISO 8601 format YYYY-MM-DD[THH:MM:SS[.sss][Z]] , e.g. \"2014-03-28T18:35:01.489Z\") arrayOfBool arrayOfString arrayOfNumber arrayOfInteger arrayOfPositiveInteger arrayOfDate FWIW, these names attempt to match with asserts on assert-plus . You can add your own custom option types with dashdash.addOptionType . See below. completionType (String). Optional. This is used for Bash completion for an option argument. If not specified, then the value of type is used. Any string may be specified, but only the following values have meaning: none : Provide no completions. file : Bash's default completion (i.e. complete -o default ), which includes filenames. Any string FOO for which a function complete_FOO Bash function is defined. This is for custom completions for a given tool. Typically these custom functions are provided in the specExtra argument to dashdash.bashCompletionFromOptions() . See \"examples/ddcompletion.js\" for an example. env (String or Array of String). Optional. An environment variable name (or names) that can be used as a fallback for this option. For example, given a \"foo.js\" like this: var options = [{names: ['dry-run', 'n'], env: 'FOO_DRY_RUN'}]; var opts = dashdash.parse({options: options}); Both node foo.js --dry-run and FOO_DRY_RUN=1 node foo.js would result in opts.dry_run = true . An environment variable is only used as a fallback, i.e. it is ignored if the associated option is given in argv . help (String). Optional. Used for parser.help() output. helpArg (String). Optional. Used in help output as the placeholder for the option argument, e.g. the \"PATH\" in: ... -f PATH, --file=PATH File to process ... helpWrap (Boolean). Optional, default true. Set this to false to have that option's help not be text wrapped in .help() output. default . Optional. A default value used for this option, if the option isn't specified in argv. hidden (Boolean). Optional, default false. If true, help output will not include this option. See also the includeHidden option to bashCompletionFromOptions() for Bash completion . Option group headings You can add headings between option specs in the options array. To do so, simply add an object with only a group property -- the string to print as the heading for the subsequent options in the array. For example: var options = [ { group: 'Armament Options' }, { names: [ 'weapon', 'w' ], type: 'string' }, { group: 'General Options' }, { names: [ 'help', 'h' ], type: 'bool' } ]; ... Note: You can use an empty string, {group: ''} , to get a blank line in help output between groups of options. Help config The parser.help(...) function is configurable as follows: Options: Armament Options: ^^ -w WEAPON, --weapon=WEAPON Weapon with which to crush. One of: | / sword, spear, maul | / General Options: | / -h, --help Print this help and exit. | / ^^^^ ^ | \\ `-- indent `-- helpCol maxCol ---' `-- headingIndent indent (Number or String). Default 4. Set to a number (for that many spaces) or a string for the literal indent. headingIndent (Number or String). Default half length of indent . Set to a number (for that many spaces) or a string for the literal indent. This indent applies to group heading lines, between normal option lines. nameSort (String). Default is 'length'. By default the names are sorted to put the short opts first (i.e. '-h, --help' preferred to '--help, -h'). Set to 'none' to not do this sorting. maxCol (Number). Default 80. Note that reflow is just done on whitespace so a long token in the option help can overflow maxCol. helpCol (Number). If not set a reasonable value will be determined between minHelpCol and maxHelpCol . minHelpCol (Number). Default 20. maxHelpCol (Number). Default 40. helpWrap (Boolean). Default true. Set to false to have option help strings not be textwrapped to the helpCol..maxCol range. includeEnv (Boolean). Default false. If the option has associated environment variables (via the env option spec attribute), then append mentioned of those envvars to the help string. includeDefault (Boolean). Default false. If the option has a default value (via the default option spec attribute, or a default on the option's type), then a \"Default: VALUE\" string will be appended to the help string. Custom option types Dashdash includes a good starter set of option types that it will parse for you. However, you can add your own via: var dashdash = require('dashdash'); dashdash.addOptionType({ name: '...', takesArg: true, helpArg: '...', parseArg: function (option, optstr, arg) { ... }, array: false, // optional arrayFlatten: false, // optional default: ..., // optional completionType: ... // optional }); For example, a simple option type that accepts 'yes', 'y', 'no' or 'n' as a boolean argument would look like: var dashdash = require('dashdash'); function parseYesNo(option, optstr, arg) { var argLower = arg.toLowerCase() if (~['yes', 'y'].indexOf(argLower)) { return true; } else if (~['no', 'n'].indexOf(argLower)) { return false; } else { throw new Error(format( 'arg for \"%s\" is not \"yes\" or \"no\": \"%s\"', optstr, arg)); } } dashdash.addOptionType({ name: 'yesno' takesArg: true, helpArg: '', parseArg: parseYesNo }); var options = { {names: ['answer', 'a'], type: 'yesno'} }; var opts = dashdash.parse({options: options}); See \"examples/custom-option-*.js\" for other examples. See the addOptionType block comment in \"lib/dashdash.js\" for more details. Please let me know with an issue if you write a generally useful one. Why Why another node.js option parsing lib? nopt really is just for \"tools like npm\". Implicit opts (e.g. '--no-foo' works for every '--foo'). Can't disable abbreviated opts. Can't do multiple usages of same opt, e.g. '-vvv' (I think). Can't do grouped short opts. optimist has surprise interpretation of options (at least to me). Implicit opts mean ambiguities and poor error handling for fat-fingering. process.exit calls makes it hard to use as a libary. optparse Incomplete docs. Is this an attempted clone of Python's optparse . Not clear. Some divergence. parser.on(\"name\", ...) API is weird. argparse Dep on underscore. No thanks just for option processing. find lib | wc -l -> 26 . Overkill. Argparse is a bit different anyway. Not sure I want that. posix-getopt No type validation. Though that isn't a killer. AFAIK can't have a long opt without a short alias. I.e. no getopt_long semantics. Also, no whizbang features like generated help output. \"commander.js\" : I wrote a critique a while back. It seems fine, but last I checked had an outstanding bug that would prevent me from using it. License MIT. See LICENSE.txt.","title":"Index"},{"location":"node_modules/dashdash/#install","text":"npm install dashdash","title":"Install"},{"location":"node_modules/dashdash/#usage","text":"var dashdash = require('dashdash'); // Specify the options. Minimally `name` (or `names`) and `type` // must be given for each. var options = [ { // `names` or a single `name`. First element is the `opts.KEY`. names: ['help', 'h'], // See \"Option specs\" below for types. type: 'bool', help: 'Print this help and exit.' } ]; // Shortcut form. As called it infers `process.argv`. See below for // the longer form to use methods like `.help()` on the Parser object. var opts = dashdash.parse({options: options}); console.log(\"opts:\", opts); console.log(\"args:\", opts._args);","title":"Usage"},{"location":"node_modules/dashdash/#longer-example","text":"A more realistic starter script \"foo.js\" is as follows. This also shows using parser.help() for formatted option help. var dashdash = require('./lib/dashdash'); var options = [ { name: 'version', type: 'bool', help: 'Print tool version and exit.' }, { names: ['help', 'h'], type: 'bool', help: 'Print this help and exit.' }, { names: ['verbose', 'v'], type: 'arrayOfBool', help: 'Verbose output. Use multiple times for more verbose.' }, { names: ['file', 'f'], type: 'string', help: 'File to process', helpArg: 'FILE' } ]; var parser = dashdash.createParser({options: options}); try { var opts = parser.parse(process.argv); } catch (e) { console.error('foo: error: %s', e.message); process.exit(1); } console.log(\"# opts:\", opts); console.log(\"# args:\", opts._args); // Use `parser.help()` for formatted options help. if (opts.help) { var help = parser.help({includeEnv: true}).trimRight(); console.log('usage: node foo.js [OPTIONS]\\n' + 'options:\\n' + help); process.exit(0); } // ... Some example output from this script (foo.js): $ node foo.js -h # opts: { help: true, _order: [ { name: 'help', value: true, from: 'argv' } ], _args: [] } # args: [] usage: node foo.js [OPTIONS] options: --version Print tool version and exit. -h, --help Print this help and exit. -v, --verbose Verbose output. Use multiple times for more verbose. -f FILE, --file=FILE File to process $ node foo.js -v # opts: { verbose: [ true ], _order: [ { name: 'verbose', value: true, from: 'argv' } ], _args: [] } # args: [] $ node foo.js --version arg1 # opts: { version: true, _order: [ { name: 'version', value: true, from: 'argv' } ], _args: [ 'arg1' ] } # args: [ 'arg1' ] $ node foo.js -f bar.txt # opts: { file: 'bar.txt', _order: [ { name: 'file', value: 'bar.txt', from: 'argv' } ], _args: [] } # args: [] $ node foo.js -vvv --file=blah # opts: { verbose: [ true, true, true ], file: 'blah', _order: [ { name: 'verbose', value: true, from: 'argv' }, { name: 'verbose', value: true, from: 'argv' }, { name: 'verbose', value: true, from: 'argv' }, { name: 'file', value: 'blah', from: 'argv' } ], _args: [] } # args: [] See the \"examples\" dir for a number of starter examples using some of dashdash's features.","title":"Longer Example"},{"location":"node_modules/dashdash/#environment-variable-integration","text":"If you want to allow environment variables to specify options to your tool, dashdash makes this easy. We can change the 'verbose' option in the example above to include an 'env' field: { names: ['verbose', 'v'], type: 'arrayOfBool', env: 'FOO_VERBOSE', // <--- add this line help: 'Verbose output. Use multiple times for more verbose.' }, then the \"FOO_VERBOSE\" environment variable can be used to set this option: $ FOO_VERBOSE=1 node foo.js # opts: { verbose: [ true ], _order: [ { name: 'verbose', value: true, from: 'env' } ], _args: [] } # args: [] Boolean options will interpret the empty string as unset, '0' as false and anything else as true. $ FOO_VERBOSE= node examples/foo.js # not set # opts: { _order: [], _args: [] } # args: [] $ FOO_VERBOSE=0 node examples/foo.js # '0' is false # opts: { verbose: [ false ], _order: [ { key: 'verbose', value: false, from: 'env' } ], _args: [] } # args: [] $ FOO_VERBOSE=1 node examples/foo.js # true # opts: { verbose: [ true ], _order: [ { key: 'verbose', value: true, from: 'env' } ], _args: [] } # args: [] $ FOO_VERBOSE=boogabooga node examples/foo.js # true # opts: { verbose: [ true ], _order: [ { key: 'verbose', value: true, from: 'env' } ], _args: [] } # args: [] Non-booleans can be used as well. Strings: $ FOO_FILE=data.txt node examples/foo.js # opts: { file: 'data.txt', _order: [ { key: 'file', value: 'data.txt', from: 'env' } ], _args: [] } # args: [] Numbers: $ FOO_TIMEOUT=5000 node examples/foo.js # opts: { timeout: 5000, _order: [ { key: 'timeout', value: 5000, from: 'env' } ], _args: [] } # args: [] $ FOO_TIMEOUT=blarg node examples/foo.js foo: error: arg for \"FOO_TIMEOUT\" is not a positive integer: \"blarg\" With the includeEnv: true config to parser.help() the environment variable can also be included in help output : usage: node foo.js [OPTIONS] options: --version Print tool version and exit. -h, --help Print this help and exit. -v, --verbose Verbose output. Use multiple times for more verbose. Environment: FOO_VERBOSE=1 -f FILE, --file=FILE File to process","title":"Environment variable integration"},{"location":"node_modules/dashdash/#bash-completion","text":"Dashdash provides a simple way to create a Bash completion file that you can place in your \"bash_completion.d\" directory -- sometimes that is \"/usr/local/etc/bash_completion.d/\"). Features: Support for short and long opts Support for knowing which options take arguments Support for subcommands (e.g. 'git log ' to show just options for the log subcommand). See node-cmdln for how to integrate that. Does the right thing with \"--\" to stop options. Custom optarg and arg types for custom completions. Dashdash will return bash completion file content given a parser instance: var parser = dashdash.createParser({options: options}); console.log( parser.bashCompletion({name: 'mycli'}) ); or directly from a options array of options specs: var code = dashdash.bashCompletionFromOptions({ name: 'mycli', options: OPTIONS }); Write that content to \"/usr/local/etc/bash_completion.d/mycli\" and you will have Bash completions for mycli . Alternatively you can write it to any file (e.g. \"~/.bashrc\") and source it. You could add a --completion hidden option to your tool that emits the completion content and document for your users to call that to install Bash completions. See examples/ddcompletion.js for a complete example, including how one can define bash functions for completion of custom option types. Also see node-cmdln for how it uses this for Bash completion for full multi-subcommand tools. TODO: document specExtra TODO: document includeHidden TODO: document custom types, function complete\\_FOO guide, completionType TODO: document argtypes","title":"Bash completion"},{"location":"node_modules/dashdash/#parser-config","text":"Parser construction (i.e. dashdash.createParser(CONFIG) ) takes the following fields: options (Array of option specs). Required. See the Option specs section below. interspersed (Boolean). Optional. Default is true. If true this allows interspersed arguments and options. I.e.: node ./tool.js -v arg1 arg2 -h # '-h' is after interspersed args Set it to false to have '-h' not get parsed as an option in the above example. allowUnknown (Boolean). Optional. Default is false. If false, this causes unknown arguments to throw an error. I.e.: node ./tool.js -v arg1 --afe8asefksjefhas Set it to true to treat the unknown option as a positional argument. Caveat : When a shortopt group, such as -xaz contains a mix of known and unknown options, the entire group is passed through unmolested as a positional argument. Consider if you have a known short option -a , and parse the following command line: node ./tool.js -xaz where -x and -z are unknown. There are multiple ways to interpret this: 1. `-x` takes a value: `{x: 'az'}` 2. `-x` and `-z` are both booleans: `{x:true,a:true,z:true}` Since dashdash does not know what -x and -z are, it can't know if you'd prefer to receive {a:true,_args:['-x','-z']} or {x:'az'} , or {_args:['-xaz']} . Leaving the positional arg unprocessed is the easiest mistake for the user to recover from.","title":"Parser config"},{"location":"node_modules/dashdash/#option-specs","text":"Example using all fields (required fields are noted): { names: ['file', 'f'], // Required (one of `names` or `name`). type: 'string', // Required. completionType: 'filename', env: 'MYTOOL_FILE', help: 'Config file to load before running \"mytool\"', helpArg: 'PATH', helpWrap: false, default: path.resolve(process.env.HOME, '.mytoolrc') } Each option spec in the options array must/can have the following fields: name (String) or names (Array). Required. These give the option name and aliases. The first name (if more than one given) is the key for the parsed opts object. type (String). Required. One of: bool string number integer positiveInteger date (epoch seconds, e.g. 1396031701, or ISO 8601 format YYYY-MM-DD[THH:MM:SS[.sss][Z]] , e.g. \"2014-03-28T18:35:01.489Z\") arrayOfBool arrayOfString arrayOfNumber arrayOfInteger arrayOfPositiveInteger arrayOfDate FWIW, these names attempt to match with asserts on assert-plus . You can add your own custom option types with dashdash.addOptionType . See below. completionType (String). Optional. This is used for Bash completion for an option argument. If not specified, then the value of type is used. Any string may be specified, but only the following values have meaning: none : Provide no completions. file : Bash's default completion (i.e. complete -o default ), which includes filenames. Any string FOO for which a function complete_FOO Bash function is defined. This is for custom completions for a given tool. Typically these custom functions are provided in the specExtra argument to dashdash.bashCompletionFromOptions() . See \"examples/ddcompletion.js\" for an example. env (String or Array of String). Optional. An environment variable name (or names) that can be used as a fallback for this option. For example, given a \"foo.js\" like this: var options = [{names: ['dry-run', 'n'], env: 'FOO_DRY_RUN'}]; var opts = dashdash.parse({options: options}); Both node foo.js --dry-run and FOO_DRY_RUN=1 node foo.js would result in opts.dry_run = true . An environment variable is only used as a fallback, i.e. it is ignored if the associated option is given in argv . help (String). Optional. Used for parser.help() output. helpArg (String). Optional. Used in help output as the placeholder for the option argument, e.g. the \"PATH\" in: ... -f PATH, --file=PATH File to process ... helpWrap (Boolean). Optional, default true. Set this to false to have that option's help not be text wrapped in .help() output. default . Optional. A default value used for this option, if the option isn't specified in argv. hidden (Boolean). Optional, default false. If true, help output will not include this option. See also the includeHidden option to bashCompletionFromOptions() for Bash completion .","title":"Option specs"},{"location":"node_modules/dashdash/#option-group-headings","text":"You can add headings between option specs in the options array. To do so, simply add an object with only a group property -- the string to print as the heading for the subsequent options in the array. For example: var options = [ { group: 'Armament Options' }, { names: [ 'weapon', 'w' ], type: 'string' }, { group: 'General Options' }, { names: [ 'help', 'h' ], type: 'bool' } ]; ... Note: You can use an empty string, {group: ''} , to get a blank line in help output between groups of options.","title":"Option group headings"},{"location":"node_modules/dashdash/#help-config","text":"The parser.help(...) function is configurable as follows: Options: Armament Options: ^^ -w WEAPON, --weapon=WEAPON Weapon with which to crush. One of: | / sword, spear, maul | / General Options: | / -h, --help Print this help and exit. | / ^^^^ ^ | \\ `-- indent `-- helpCol maxCol ---' `-- headingIndent indent (Number or String). Default 4. Set to a number (for that many spaces) or a string for the literal indent. headingIndent (Number or String). Default half length of indent . Set to a number (for that many spaces) or a string for the literal indent. This indent applies to group heading lines, between normal option lines. nameSort (String). Default is 'length'. By default the names are sorted to put the short opts first (i.e. '-h, --help' preferred to '--help, -h'). Set to 'none' to not do this sorting. maxCol (Number). Default 80. Note that reflow is just done on whitespace so a long token in the option help can overflow maxCol. helpCol (Number). If not set a reasonable value will be determined between minHelpCol and maxHelpCol . minHelpCol (Number). Default 20. maxHelpCol (Number). Default 40. helpWrap (Boolean). Default true. Set to false to have option help strings not be textwrapped to the helpCol..maxCol range. includeEnv (Boolean). Default false. If the option has associated environment variables (via the env option spec attribute), then append mentioned of those envvars to the help string. includeDefault (Boolean). Default false. If the option has a default value (via the default option spec attribute, or a default on the option's type), then a \"Default: VALUE\" string will be appended to the help string.","title":"Help config"},{"location":"node_modules/dashdash/#custom-option-types","text":"Dashdash includes a good starter set of option types that it will parse for you. However, you can add your own via: var dashdash = require('dashdash'); dashdash.addOptionType({ name: '...', takesArg: true, helpArg: '...', parseArg: function (option, optstr, arg) { ... }, array: false, // optional arrayFlatten: false, // optional default: ..., // optional completionType: ... // optional }); For example, a simple option type that accepts 'yes', 'y', 'no' or 'n' as a boolean argument would look like: var dashdash = require('dashdash'); function parseYesNo(option, optstr, arg) { var argLower = arg.toLowerCase() if (~['yes', 'y'].indexOf(argLower)) { return true; } else if (~['no', 'n'].indexOf(argLower)) { return false; } else { throw new Error(format( 'arg for \"%s\" is not \"yes\" or \"no\": \"%s\"', optstr, arg)); } } dashdash.addOptionType({ name: 'yesno' takesArg: true, helpArg: '', parseArg: parseYesNo }); var options = { {names: ['answer', 'a'], type: 'yesno'} }; var opts = dashdash.parse({options: options}); See \"examples/custom-option-*.js\" for other examples. See the addOptionType block comment in \"lib/dashdash.js\" for more details. Please let me know with an issue if you write a generally useful one.","title":"Custom option types"},{"location":"node_modules/dashdash/#why","text":"Why another node.js option parsing lib? nopt really is just for \"tools like npm\". Implicit opts (e.g. '--no-foo' works for every '--foo'). Can't disable abbreviated opts. Can't do multiple usages of same opt, e.g. '-vvv' (I think). Can't do grouped short opts. optimist has surprise interpretation of options (at least to me). Implicit opts mean ambiguities and poor error handling for fat-fingering. process.exit calls makes it hard to use as a libary. optparse Incomplete docs. Is this an attempted clone of Python's optparse . Not clear. Some divergence. parser.on(\"name\", ...) API is weird. argparse Dep on underscore. No thanks just for option processing. find lib | wc -l -> 26 . Overkill. Argparse is a bit different anyway. Not sure I want that. posix-getopt No type validation. Though that isn't a killer. AFAIK can't have a long opt without a short alias. I.e. no getopt_long semantics. Also, no whizbang features like generated help output. \"commander.js\" : I wrote a critique a while back. It seems fine, but last I checked had an outstanding bug that would prevent me from using it.","title":"Why"},{"location":"node_modules/dashdash/#license","text":"MIT. See LICENSE.txt.","title":"License"},{"location":"node_modules/dashdash/CHANGES/","text":"node-dashdash changelog not yet released (nothing yet) 1.14.1 [issue #30] Change the output used by dashdash's Bash completion support to indicate \"there are no completions for this argument\" to cope with different sorting rules on different Bash/platforms. For example: $ triton -v -p test2 package get # before ##-no -tritonpackage- completions-## $ triton -v -p test2 package get # after ##-no-completion- -results-## 1.14.0 New synopsisFromOpt(