WPC8h 2BV[Z #|d2cpi (M)LtTddd,dp@~rQ@HP LaserJet IIIDHPLASIII.PRSdp@~rQ,\,Bj@#|d2 M ZOvp(HP LaserJet IIIHPLASIII.PRSx  @,\,BjX@a8DocumentgDocument Style StyleXX` `  ` a4DocumentgDocument Style Style . 2kk,v<a6DocumentgDocument Style Style GX  a5DocumentgDocument Style Style }X(# a2DocumentgDocument Style Style<o   ?  A.  a7DocumentgDocument Style StyleyXX` ` (#` 2<tX  BibliogrphyBibliography:X (# a1Right ParRight-Aligned Paragraph Numbers:`S@ I.  X(# a2Right ParRight-Aligned Paragraph Numbers C @` A. ` ` (#` a3DocumentgDocument Style Style B b  ?  1.  2V n   a3Right ParRight-Aligned Paragraph Numbers L! ` ` @P 1. ` `  (# a4Right ParRight-Aligned Paragraph Numbers Uj` `  @ a. ` (# a5Right ParRight-Aligned Paragraph Numbers _o` `  @h(1)  hh#(#h a6Right ParRight-Aligned Paragraph Numbersh` `  hh#@$(a) hh#((# 2( X 1 + a7Right ParRight-Aligned Paragraph NumberspfJ` `  hh#(@*i) (h-(# a8Right ParRight-Aligned Paragraph NumbersyW"3!` `  hh#(-@p/a) -pp2(#p a1DocumentgDocument Style StyleXqq   l ^) I. ׃  Doc InitInitialize Document Style  0*0*  I. A. 1. a.(1)(a) i) a) I. 1. A. a.(1)(a) i) a)Documentg2ZZhTech InitInitialize Technical Style. k I. A. 1. a.(1)(a) i) a) 1 .1 .1 .1 .1 .1 .1 .1 Technicala5TechnicalTechnical Document Style)WD (1) . a6TechnicalTechnical Document Style)D (a) . a2TechnicalTechnical Document Style<6  ?  A.   2HWa3TechnicalTechnical Document Style9Wg  2  1.   a4TechnicalTechnical Document Style8bv{ 2  a.   a1TechnicalTechnical Document StyleF!<  ?  I.   a7TechnicalTechnical Document Style(@D i) . 2!Ca8TechnicalTechnical Document Style(D a) . PleadingHeader for numbered pleading paperP@n   $] X X` hp x (#%'0*,.8135@8:``((Z(````;S>`]]]PJSJ8iiiii8888iiiiiiSif({Z{Z{Z{Z{ZuZ`Z`Z`Z`Z.(.(.(.(x`````x`x`x`x`r]{Zx```r]x`c`{Z{Z{ZuZuZuZuZx``Z`Z`Z`Z{`{`{`{`{`{`x`x`.(.(.(.(P]oZZ(Z(Z(Z=Z(x`xrx`x```l;l;l;lSlSlSlSi>i>i>x`x`x`x`x`x`r]fPfPfPx`Z(x`l;lSi>r]r]x``x`8SS888/NxxxSii8V]]iiiDDiAASSiA88SSi>>iiffSSxSrff]8SSA"xxSxXxxS姧 S88xcxxxxxxxxxxx8S{i]ix{S8ixSi`xlxxxxxxxxxxZxxxxxxofxGcxxxxxxxSxxxxxxxJxxxxJxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8xxx8xxx8xxx8xxxxxxxxxxxxx{]iZ]S{Z`MfGx`Z.(oS{V]x]iG`x`cZccJiMrZuxPr{]M`((`ZZZ]rr88iiiiiii]]]]]]]]]]]]]]]]]]]MMMMMMM````````````````````((((((((((((```````ZZZZZZZZZZZZ8`{`x.r{SJ8"m'^88Vii888i8888iiiiiiiiii88V{iux`]{x.]oZxcllixxxrf888SS8Z`Z`Z>``((Z(````;S>`]]]PSSS8iiiii8888iiiiiiSif({Z{Z{Z{Z{ZuZ`Z`Z`Z`Z.(.(.(.(x`````x`x`x`x`r]{Zx```r]x`c`{Z{Z{ZuZuZuZuZx``Z`Z`Z`Z{`{`{`{`{`{`x`x`.(.(.(.(P]oZZ(Z(Z(ZAZ.x`xxx`x```l;l;l;lSlSlSlSi>i>i>x`x`x`x`x`x`r]fPfPfPx`Z(x`l;lSi>r]r]x``x`8SS888/NxxxSii8V]]iiiDDiAASSiA88SSi>>iiffSSxSrff]8SSA"xxSx]xxS姧 S88xfxxxxxxxxxxx8S{ici{P8ix]i`xrxxxxxxxxxxSxxxxxxofxGcxxxxxxxSxxxxxxxSxxxxSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8xxx8xxx8xxx8xxxxxxxxxxxxx{`ic]S{``SfMx`f.+oS{Scx]xP`fc`flMiMrcxx]x`S`++`cc`lrx88iiiiiii```````````````````SSSSSSS````````````````````++++++++++++```````cccccccccccc8f{`x.rSJ824 "& v+ !0"m'^88Sii888i8888iiiiiiiiii88V{iux`]{x.]oZxcllixxxrf888SS8Z`Z`Z>``((Z(````;S>`]]]PJSJ8 iiiii8888iiiiiiSif({Z{Z{Z{Z{ZuZ`Z`Z`Z`Z.(.(.(.(x`````x`x`x`x`r]{Zx```r]x`c`{Z{Z{ZuZuZuZuZx``Z`Z`Z`Z{`{`{`{`{`{`x`x`.(.(.(.(P]oZZ(Z(Z(Z4Z(x`x{x`x```l;l;l;lSlSlSlSi>i>i>x`x`x`x`x`x`r]fPfPfPx`Z(x`l;lSi>r]r]x``x`8SS888/NxxxSii8V]]iiiDDiAASSiA88SSi>>iiffSSxSrff]8SSA"xxSx[xxS姧S88xcxxxxxxxxxxx8S{i]ix{S8ixSi`xlxxxxxxxxxxZxxxxxxofxGcxxxxxxxSxxxxxxxJxxxxJxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8xxx8xxx8xxx8xxxxxxxxxxxxx{]iZ]S{Z`MfGx`Z.(oS{V]x]iG`x`cZccJiMrZuxPr{]M`((`ZZZ]rr88iiiiiii]]]]]]]]]]]]]]]]]]]MMMMMMM````````````````````((((((((((((```````ZZZZZZZZZZZZ8`{`x.r{SJ8"m'^!.22YN!!!2Y!!!!2222222222!!dYd,YH?EJ?;HJ!'F?[JH9HC6?JH^HHA!!!22!,2,2,!222N2222%'22H22,,2,d!22222!!!!222222222H,H,H,H,H,YCE,?,?,?,?,!!!!J2H2H2H2H2J2J2J2J2H2H,J2H2H2H2J292H,H,H,E,E,E,E,J2?,?,?,?,H2H2H2H2H2H2J2J2!!!!I8'F2?????J2J;J2J2H2H2YHC%C%C%6'6'6'6'???J2J2J2J2J2J2^HH2A,A,A,J2?J2C%6'?H2H2J2H2J2!22!!!/ddddddddddddddddddddddddddddddddddddddddddddddddNHHH222!,))22X222YY2#2222Y#!!442Ydd22==Ld2d2H2;SS88Y8!42^x#"ddddHHddd2Hdd4HHYYddd2YYddd Y2!!dddddH=dYHHHHHHHHHHx!d2H282YdHdC2!2H,29HNAddHHHHHHHHHHddddd.dHHHHdddddddddddddddddddHHddddddSC=NdHddd+;HHHHddddddHHH2HHdHHdddHHH,HHHH,HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH!HHH!HHH!HHH!HHHHHHHHHHHHHH=?8=8C,?'A,J2H,!F,C8[8J,C2H,H=92=22?,H,C=H8N===='2,,,=,====!!2222222==================='''''''22222222222222222222,,,,,,,,,,,,,,,,,,,====================!9H?J!HH=2,!x"m'^CCd~~ȘCCC~CCCC~~~~~~~~~~CChȔ~so8okw~ȐzCCCddCkskskJss00k0ssssFdJsooo`YdYC~~~~~CCCC~~~~~~d~z0kkkkkĪksksksksk80808080sssssssssoksssoswskkkkkkksskskskskssssssss80808080`okk0k0k0kIk0sssssȵFFFdddd~J~J~JssssssȮoz`z`z`sk0sFd~JoosssCddCCC/Nd~~Choo~~~QQ~NNdd~NCCdd~JJ~~zzdddzzpCddN"Ȑdjd dCCȐwȐxCd~o~ȐȔdC~d~sȐkȐȐȧzȐUwŐdȐYYCCCCΔo~kodks]zUsk80dhoo~UsswkwwY~]k`o]s00skkkoCC~~~~~~~ooooooooooooooooooo]]]]]]]ssssssssssssssssssss000000000000ssssssskkkkkkkkkkkkCss8dYC"m'^,,CTTe,,,T,,,,TTTTTTTTTT,,EcT^`MJc`%JYHy`eOhVVT```[Q,,,CC,HMHMH1MM H tMMMM/C1MJtJJ@;C;,TTTTT,,,,TTTTTTCTQ cHcHcHcHcHr^HMHMHMHMH% % % % `MeMeMeMeM`M`M`M`M[JcH`MeMeM[J`MOMcHcHcH^H^H^H^H`MMHMHMHMHcMcMcMcMcMcM`M`M% % % % l@JYHH H H H0H `M`[`M`MeMeMyV/V/V/VCVCVCVCT1T1T1`M`M`M`M`M`Mt[JQ@Q@Q@`MH `MV/VCT1[J[J`MeM`M,CC,,,/N```CTT,EJJTTT66T44CCT4,,CCT11TTRReCC`C[{{QQK,CC4"``C`F``C充C,,`O``````````x,CcTJT`cC,T`CTM`hV``````````H``````oYQh`9O```````C```````;````;```````````````````````````````````````````,```,```,```,`````````````cJTHJCcHM>Q9`MeH% YCcEyJ`JT9eM`MOHOO;T>[Hm^`@j[ceJ>M MHHeHJe[[,,TTTTTTTJJJJJJJJJJJJJJJJJJJ>>>>>>>MMMMMMMMMMMMMMMMMMMM MMMMMMMHHHHHHHHHHHHeeeeeeeeeeeeeeeeeeee,McM`%e[cC;,2;D 49T><B"m'^,,ETTe,,,T,,,,TTTTTTTTTT,,EcT^`MJc`%JYHy`eOhVVT```[Q,,,CC,HMHMH1MM H tMMMM/C1MJtJJ@CCC,TTTTT,,,,TTTTTTCTQ cHcHcHcHcHr^HMHMHMHMH% % % % `MeMeMeMeM`M`M`M`M[JcH`MeMeM[J`MOMcHcHcH^H^H^H^H`MMHMHMHMHcMcMcMcMcMcM`M`M% % % % o@JYHH H H H4H%`M```M`MeMeMyV/V/V/VCVCVCVCT1T1T1`M`M`M`M`M`Mt[JQ@Q@Q@`MH `MV/VCT1[J[J`MeM`M,CC,,,/N```CTT,EJJTTT66T44CCT4,,CCT11TTRReCC`C[{{QQK,CC4"``C`J``C充C,,`Q``````````x,CcTOTmc@,T`JTM`h[``````````C``````tYQh`9O```````C```````C````C```````````````````````````````````````````,```,```,```,`````````````cMTOJCcMMCQ>`MeQ%#YCcCyO`J`@eMmQOMQV>T>[O{``J{`mhMCM##MOOhMVh[`,,TTTTTTTMMMMMMMMMMMMMMMMMMMCCCCCCCMMMMMMMMMMMMMMMMMMMM############MMMMMMMOOOOOOOOOOOOhhhhhhhhhhhhhhhhhhhh,QcM`%e[mC;,"m'^((xYLTWECYW!CP@mW[G]NNLWWxWRI(((<<(@E@E@,EE@hEEEE*<,EChCC:5<5x(LLLLL((((LLLLLLCCLLtL11xxL//<mCWCL3[EWEG@GG5L8R@bTW:`RY[C8EE@@[@C[RR((LLLLLLLCCCCCCCCCCCCCCCCCCC8888888EEEEEEEEEEEEEEEEEEEEEEEEEEE@@@@@@@@@@@@[[[[[[[[[[[[[[[[[[[[(EYEW![RY<5(z"m'^,,HTTe,,,T,,,,TTTTTTTTTT,,EcT^`MJc`%JYHy`eOhVVT```[Q,,,CC,HMHMH1MM H tMMMM/C1MJtJJ@CCC,TTTTT,,,,TTTTTTCTQ cHcHcHcHcHr^HMHMHMHMH% % % % `MeMeMeMeM`M`M`M`M[JcH`MeMeM[J`MOMcHcHcH^H^H^H^H`MMHMHMHMHcMcMcMcMcMcM`M`M% % % % o@JYHH H H H8H%`M`h`M`MeMeMyV/V/V/VCVCVCVCT1T1T1`M`M`M`M`M`Mt[JQ@Q@Q@`MH `MV/VCT1[J[J`MeM`M,CC,,,/N```CTT,EJJTTT66T44CCT4,,CCT11TTQQeCC`C[{{QQK,CC4"``C`Q``C充 C,,`Q``````````x,CcTOTmc@,T`JTM`h[``````````C``````tYQh`9O```````C```````C````C```````````````````````````````````````````,```,```,```,`````````````cMTOJCcMMCQ>`MeQ%#YCcCyO`J`@eMmQOMQV>T>[O{``J{`mhMCM##MOOhMVh[`,,TTTTTTTMMMMMMMMMMMMMMMMMMMCCCCCCCMMMMMMMMMMMMMMMMMMMM############MMMMMMMOOOOOOOOOOOOhhhhhhhhhhhhhhhhhhhh,QcM`%e[mC;,Courier 10cpiPrestige Elite 12cpi (M)Prestige Elite 12cpi Italic (D)Prestige Elite 12cpi Bold (D)Univers (Scalable)Univers Bold (Scalable)Univers Italic (Scalable)Courier 10cpi (Italic)CG Times (Scalable)Courier 10cpi (Bold)Prestige Elite 12cpi (D)Univers Bold Italic (Scalable)Line Draw 12cpi (Full-PE)29^4 mD4 MdV R"D,( 0 ^VM=EME},EV ^$$EEE4lll7lMMMMM=}l}l}l}lEVVVVEEEE4MEVV4E MMM====EMMMMMMEE}l}l}l}lm,llllEE4EEVV$$$$$$$EEEEEE4ElE$$44EVE/NEEEVE4"EEEEEE EEEEEEEEEExMEMEE^$EEEEEEEEEEEEEEEEw,^E EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEMMEV}l,MEVE   4o=Ef4MVllVV44llllllllllllVVVVVVVVVVVVVVVVVVVVME}V4M"D,( 0 ^&&b&&&&&&&&&&&Z&HQ ZQ7Qbk..&QQQ@    ppp     9&&&&&&&&&&&&pZZZZZH    ppppQ b b b b Q Q Q Q @ZQ b b @Q  ZZZHHHHQ     Z Z Z Z Z Z Q Q ppppz7ppppQ Q@Q Q b b .......&&&Q Q Q Q Q Q @Q pQ ..&@@Q b Q /NQQQ&&&&&&&&&&bQ@"QQQQQQQQQQQQQQQQxZ&&QZ&Q& Qk.QQQQQQQQQQQQQQQQ7kQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQZ&Z Q bp7ZQ&b Q &@|HQt@Zb pp bb@@&&&&&&&                    pppppppppppp       bbbbbbbbbbbbbbbbbbbb Z Qb@Z?xxx,wx6X@8;X@ LtTddd,wldp@~rQ@tTddd,'dphQQHuSddd,Gdp,`QI}*i88,eAixP7PJ}*i88,xhip?7d}*i88,uix7X?xxx,Ax6Nh ;XHTH<!, ,< P7,P?xxx,x `B;XtTddd,Wmdp@>pQ@C2~CC,eqX~xP7XPd!T,,,eQTxP7P d!T,,,xxTp?7dd!T,,,eTx7X&d!U,,,DUx7>tTddd,"Vdp@h'@Qq,elFxP7FP^u&,e~x&xP7xPHZL((,ehLxP7hPsubfield to a DR for a DDF opened in 'write' mode. The first subfield of the DR mbe written using the 'start of record' option. Each subsequent subfield that is a2k^ (#.4UUUUUUUUUUUUUY5D9$ %#}|2PkCLlP#User-Specified Data uP $User-Specified DataX4Cz?#e $#}|2PkCLlP#Models and Formats uP #Models and Formats& ]f]f ]  2w2  U  2  2 J J2Q-<t #}|2PkCLlP#TRANSLATORS uP  hTRANSLATORSG#2]#}|2PkCLlP#A uP AG#2u#}|2PkCLlP#B uP BG#2#}|2PkCLlP#C uP CG#2#}|2PkCLlP#D uP  DR.=l#}|2PkCLlP#SDTS PROFILE uP  -SDTS PROFILEc?NK#}|2PkCLlP#FIPS PUB 123 FUNCTION LIBRARY uP #{FIPS PUB 123 FUNCTION LIBRARY& Mh /lA /_A `ehh pW9B` #}|2PkCLlP#SDTS FIPS PUB123 & uP  SDTS FIPS PUB123 T6?` j#}|2PkCLlP#Transfer Files& uP  ^Transfer Files Q&h 3&E# 3&E# i#hhG)2#%#}|2PkCLlP#C& uP $C # lR&h q4&F# d4&F# j#hhG)2$%#}|2PkCLlP#A& uP $A # R&h 4&F# ~4&F# j#hhG)2#%#}|2PkCLlP#B& uP $B # R&h  4&tF# 4&gF# hj#hhG)2#d%#}|2PkCLlP#D& uP k$D }#}  tT Ԋ#dp@~rQwl@#mXFIPS PUB 123 Function Library Software Documentation Section One: General Information mJ tT 5/93 ` `  $hh*06pp<B  HxxN T 11.` ` GENERAL INFORMATION  tTX 1.1` ` SUMMARY XX` ` The Specification for a Data Description File for Information Interchange Standard (ANSI/ISO 8211 1985) was produced in response to an identified need for a mechanism to allow data structures to be easily moved from one computer system to another. The National Institute for Standards and Technology adopted the ANSI/ISO 8211 standard as a Federal Information Processing Standard in 1986 (FIPS PUB 123). The FIPS PUB 123 software is a library of functions to manipulate and create files in this format. The implementation of these functions was based solely on the ANSI/ISO 8211 standard.(#` XX` ` The FIPS PUB 123 Library Functions are low level routines for use by other application programs to encode userspecified data models and formats into the interchange format and decode data from the interchange format to userspecified data models. The FIPS PUB 123 Function Library forms the foundation of the conversion model for the Spatial Data Transfer Standard (see figure 11). (#`  tT 1.2` ` DOCUMENT ORGANIZATION XX` ` This document is organized into six sections and three appendices:(#`  tTL XX` ` X oX$Section oneprovides general information about the document and the operating environment required by the FIPS PUB 123 Function Library(#  tT! XX` ` X oX$Section twoprovides descriptions of the "callable" functions provided by the library(# T$0*%% !Ln!(#.ddSDTS.GEML%*J*7#dp@~rQwl@#  Figure 11  Conversion Model for the Spatial Data Transfer Standard. $(#(#(#(#!'#$00*%%'#O-!0Ԓ tT XX` ` X oX$Section threethere are no program (task) descriptions for the FIPS PUB 123 Function Library(#  tT XX` ` X oX$Section fourcontains detailed routine descriptions in alphabetical order(#  tT XX` ` X oX$Section fivedescribes the FIPS PUB 123 interchange file structure(#  tT XX` ` X oX$Section sixcontains a description of global data structures used throughout the software functions(#  tT XX` ` X oX$Section sevenprovides maintenance procedures(#  tTh XX` ` X oX$Appendix Aprovides a glossary of data elements, terms, and acronyms referenced within this document(#  tT XX` ` X oX$Appendix Bidentifies the include files containing global data structures and defines their contents(#  tTp ` `  o` $Appendix Cprovides a software data structures diagram to facilitate understanding of the processing of the interchange format.(#  tT  1.3` ` ENVIRONMENT XX` ` The FIPS PUB 123 Function Library is currently supported in two operating environments: the IBMcompatible personal computer (PC) under MSDOS and the Data General (DG) Aviion under DG/UX. The software is written in C and is compliant with the American National Standards Institute (ANSI) specification on C language. Therefore, it is easily portable to other vendor hardware, operating systems,T$0*%% and compilers. The functions are Ccallable routines and may be recompiled to create routines that may be used by applications written in other languages.(#` XX` ` The following paragraphs describe the environments in which the Function Library is currently supported. Additional paragraphs will be added as the software is "ported" to other environments.(#`  tT` 1.3.1X` ` Personal Computer(# XX` ` The FIPS PUB 123 Function Library has been implemented on the following personal computers (PCs) using the MSDOS operating system: IBM 386, IBM AT, and IBM XT (or compatibles). The specific software and hardware requirements for the FIPS PUB 123 Function Library in the PC environment are described below.(#`  tT 1.3.1.1` ` Software(#` XX` ` The PC version of the FIPS PUB 123 Function Library is supported under Microsoft DOS (MSDOS), versions 3.2 and later. The software was compiled using the Microsoft C compiler, version 5.1. (#`  tT 1.3.1.2` ` Hardware(#` XX` ` The FIPS PUB 123 Function Library source code requires approximately 1.2MB of disk space; the object code compiled using Microsoft C requires approximately 200KB of disk space. The source and object code of the sample programs require an additional 105KB of disk space. Object code space requirements will vary depending on compiler options specified.(#` X(# T$0*%%ԌXX` ` The memory required to execute applications developed using the FIPS PUB 123 Function Library will vary depending on the size of the application, the number of functions called, the size of the input and output records, and the use of a source code debugger. MSDOS restricts the amount of base memory available to execute all programs to 640K. Some of this base memory is used by the MSDOS operating system itself and by terminate and stay resident (TSR) programs such as disk, display, input, and network device drivers. It is desirable to have as much base memory available to the FIPS PUB 123 application as possible. Therefore large applications, or applications processing large data files, may require that all nonessential TSRs be removed from memory. Data files containing large records may be processed more efficiently by field or subfield than by whole record. (#` XX` ` In order to preserve code portability, extended or expanded memory is not used by the FIPS PUB 123 Function Library; however, the Microsoft C 5.1 CodeView Debugger uses extended memory to store a symbol table. (#` XX` ` The FIPS PUB 123 Function Library restricts its I/O to disk files; therefore, no specific display adapter is required. The sample programs included with the FIPS PUB 123 Function Library output text to the screen but also do not require display adapters with graphics capabilities. (#`  tTx 1.3.2XX` ` Data General(#` XX` ` The FIPS PUB 123 Function Library is also supported on the Data General (DG) Aviion workstation or server under the DG/UX operating system. The specific software and hardware requirements for the FIPS PUB 123 Function Library in the DG environment are described below.(#` T$0*%%Ԍ tT ԙ1.3.2.1` ` Software(#` XX` ` The DG version of the FIPS PUB 123 Function Library was compiled with the GNU C compiler, version 3.2.1.3, under the DG/UX operating system, release 5.4.1, which corresponds to AT&T UNIX System V, Release 5.4.1.(#`  tT4 1.3.2.2` ` Hardware(#` XX` ` The FIPS PUB 123 Function Library has been implemented on a DG Aviion (model AV300) which is based on a Motorola 88100 MHz uniprocessor and configured with a minimum of 8MB of main memory. The source code requires approximately 1.2MB of disk space; object code compiled using the GNU C compiler requires approximately 180KB  tTh  of disk space. The source and object code of the sample programs require an additional 125KB of disk space. Object code space requirements will vary depending on the compiler options specified.(#` XX` ` The memory required to execute applications developed using the FIPS PUB 123 Function Library will vary depending on the size of the application, the number of functions called, the size of the input and output records, and the use of a source code debugger. DG/UX uses disk swapping to execute programs. There are no memory restrictions on program execution as long as sufficient swap space exists. (#` X(#L0*%%  tT 1.4X` ` REFERENCES(#  tTX ` ` X oX$American National Standard for Information Systems  tT Programming Language C, ANSI X3.1591989(#  tT ` ` X oX$American National Standard Specification for a Data  tT Descriptive File for Information Interchange, FIPS PUB 123, February 28, 1986 (ANSI/ISO 82111985)(#  tT XX` ` X oX$DG/UX Manual Pages for GNU C (gcc) and Archive and Library Maintainer (ar)(#  tT ` ` X oX$Microsoft C 5.1 Optimizing Compiler (Language TReference, Users Guide, Run Time Reference, Mixed Language Programming Guide)(#  tT XX` ` X oX$Spatial Data Transfer Standard, FIPS PUB 173, August 28,  tT 1992hh*(#  tTD XX` ` X oX$UNIX System V Release 3, 1986, 4 vol.xxN T(#  tT XX` ` X oX$U.S. Geological Survey, 1993, Programmers Reference  tT Manual for FIPS PUB 123 Function Library, 198 p. (#  tT  XX` ` X oX$Using TCP/IP on the DG/UX System, Data General Corporation, May 1990, [09370102302](#  tT XX` ` X oX$Using the DG/UX System, Data General Corporation, Feb. 1990, [06970103501](#  tT(# ` ` X oX$Using the DG/UX Editors, Data General Corporation, Feb.  tTT$ 1990, 243 p.6 (#T$0*%%  tT XoX9FIPS PUB 123 Function Library Software Documentation Section Two: Function Descriptions o  ;I tT 7/91 Draft` `  $hh*06pp<B  HxxN2;=I tT 5/93` `  $hh*06pp<B  HxxN T 22.` ` FUNCTION DESCRIPTIONS  tTX  3'3'Standard3'3'StandardHPLASIII.PRSx  ( 2.1` ` INTRODUCTION XX` ` This section provides a overview of the FIPS PUB 123 functions. The FIPS PUB 123 Function Library provides the tools to process the Data Descriptive Record (DDR) and Data Records (DRs) within a FIPS PUB 123 Data Descriptive File (DDF). The functions allow the user to read, write, and erase these records by record, field, or subfield levels of access. (#` XX` ` Table 21 identifies the file and data manipulation functions contained in the FIPS PUB 123 Function Library. Figure 21 depicts a typical sequence for calling these functions when writing a FIPS PUB 123 file. In this figure, node data are decoded from a userspecified data model and formatted into the FIPS PUB 123 format. An asterisk identifies an optional step. Figure 22 depicts a typical sequence for reading a FIPS PUB 123 file. (#` 0*%% */Table 21 #File/Data Manipulation Functions ` `   XX` ` Function Purpose(#` ` `    tT ` `  bak123fld()$ hh*Backs up to the beginning of the last DR field read or written(#h ` `   tT` ` `  bak123rec()$ hh*Backs up to the beginning of the last DR read or written(#h   tT ` `  bak123sfld() hh*Backs up to the beginning of the last DR subfield read or written(#h  tT ` `  beg123ddrec() hh*Initializes a DDR for the input or output file(#h  tT ` `  beg123file() hh*Opens an input or output file for processing(#h  tT0 ` `  beg123rec()$ hh*Initializes a DR for the input or output file(#h  tT ` `  chk123fld()$ hh*Retrieves a description of the last DR field read or written(#h  tT ` `  chk123nfld() hh*Retrieves a description of the next DR field to be read or the last one written(#h  tTp ` `  chk123nrec() hh*Retrieves a description of the next DR to be read or the last one written(#h  tT ` `  chk123nsfld() hh*Retrieves a description of the next DR subfield to be read or written(#h   tT  ` `  chk123rec()$ hh*Retrieves a description of the last DR read or written(#h ` `  x 0*%% )Table 21Continued #File/Data Manipulation Functions ` `   XX` ` Function Purpose(#` ` `    tT ` `  chk123sfld() hh*Retrieves a description of the last DR subfield read or written(#h  tT` ` `  end123ddrec() hh*Terminates DDR processing(#h  tT ` `  end123file() hh*Closes an input or output file  tT ` `  end123rec()$ hh*Terminates the processing of a DR(#h  tT ` `  er123ddfld() hh*Erases the last DDR field written  tT ` `  er123ddrec() hh*Erases the entire DDR written(#h  tT0 ` `  er123ddsfld() hh*Erases the last DDR subfield written  tT XX` `  g123order() $Xhh*Returns the byte order of the current machine (big, little, or middle endian)(#h  tT XX` `  l123tos() $Xhh*Converts a long integer to a character string(#h  tT ` `  rd123ddfld() hh*Reads the next DDR field  tT8 ` `  rd123ddrec() hh*Reads the entire DDR  tT ` `  rd123ddsfld() hh*Reads the next DDR subfield  tTX ` `  rd123fld()$ hh*Reads the next DR field(#h  tT ` `  rd123rec()$ hh*Reads the next DR(#h  tTx ` `  rd123sfld()$ hh*Reads the next DR subfield(#h  tT XX` `  s123tol() $Xhh*Converts a character string to a long integer(#h ` `  ! 0*%% )Table 21Continued #File/Data Manipulation Functions ` `   XX` ` Function Purpose(#` ` `    tT ` `  wr123ddfld() hh*Writes a DDR field  tT ` `  wr123ddrec() hh*Writes the DDR  tT( ` `  wr123ddsfld() hh*Writes a DDR subfield  tT ` `  wr123fld()$ hh*Writes a DR field(#h  tTH ` `  wr123rec()$ hh*Writes a complete DR(#h  tT ` `  wr123sfld()$ hh*Writes a DR subfield(#h ` `  ` `    $ 0*%% A6"|J<ddY %*Y#dp@>pQ Wm@#  Figure 21 Sample Function Calling Sequence for a Write Application. #TxP7 QP# X` hp x (#%'0*,.8135@8:pQ Wm@# !Figure 22  Sample Function Calling Sequence for a Read Application. #TxP7 QP#  dBJ  INVOKE beg123file() TO OPEN FIPS PUB 123 FORMAT FILE FOR READING (INPUT) OPEN USERSPECIFIED DATA MODEL AND FORMAT FILE FOR WRITING (OUTPUT)  dB<  * INVOKE beg123ddrec() TO INITIALIZE FIPS PUB 123 DATA DESCRIPTIVE RECORD WHILE NOT END OF DATA DESCRIPTIVE RECORD DO  dB.  INVOKE rd123ddfld() TO READ A DDR FIELD XX DECODE RETURNED FIELD DESCRIPTION INTO USERSPECIFIED DATA FORMAT XX WRITE DECODED DESCRIPTION TO USER-SPECIFIED DATA FORMAT FILE ENDWHILE WHILE NOT END OF FILE DO  dB  * INVOKE beg123rec() TO INITIALIZE FIPS PUB 123 INPUT DATA RECORD XX WHILE NOT END OF RECORD DO  dB XX INVOKE rd123fld() TO READ A DR FIELD XX DECODE RETURNED FIELD DATA INTO USER-SPECIFIED DATA FORMAT XX WRITE DECODED FIELD DATA TO USER-SPECIFIED DATA FORMAT FILE XX ENDWHILE  dB  * INVOKE end123rec() TO END PROCESSING OF CURRENT FIPS PUB 123 DATA RECORD ENDWHILE  dB  INVOKE end123file() TO CLOSE FIPS PUB 123 INPUT FILE CLOSE USER-SPECIFIED FORMAT OUTPUT FILE ($(#(#(#(#$a'#$0$ 0*%%'#+a 0  tT 2.2XX` ` FUNCTION DESCRIPTIONS(#` XX` ` This section provides an overview of the FIPS PUB 123 Function Library organized by usage:(#`  tT XX` ` X oX$Begin/End functionsinitialize and terminate file, DDR, and DR processing(#  tT` XX` ` X oX$Read functionsread DDR and DR on record, field, and subfield level(#  tT XX` ` X oX$Write functionswrite DDR and DR on record, field, and subfield level(#  tTh XX` ` X oX$Backup functionsback up the currency pointers for the DR record on a record, field, or subfield level(#  tT XX` ` X oX$Check functionsretrieve the DDR description of a record, field, or subfield(#  tTp XX` ` X oX$Erase functionserase the last DDR record, field, or subfield written(#  tT XX` ` X oX$Utility functionsinclude support functions for processing binary data.(# XX` ` (#`  tTx 2.2.1` ` Begin/End Functions(#` XX` ` The FIPS PUB 123 Function Library begin and end functions are called to initiate or to terminate processing of a FIPS PUB 123 data descriptive file, a data descriptive record, or a data record. These functions include:(#` T$0*%%Ԍ tT ԙXX` ` X oX$ beg123ddrec() ĩinitiates DDR processing(#  tT, XX` ` X oX$ beg123file() ĩinitiates processing of a DDF(#  tTX XX` ` X oX$ beg123rec() ĩinitiates processing of a DR (#  tT XX` ` X oX$ end123ddrec() ĩterminates DDR processing (#  tT XX` ` X oX$ end123file() ĩterminates processing of the DDF (#  tT XX` ` X oX$ end123rec() ĩterminates processing of a DR. T(#  tT4 XX` ` Use of the functions  beg123file()  and  end123file()  is mandatory for  tT` all DDFs whether opened in 'read' or 'write' mode.  end123ddrec()   tT and  end123rec()  are required for files opened in 'write' mode;  tT however  end123rec()  is     optional when immediately followed by a call  tT to  end123file() . (#`  tT< 2.2.2XX` ` Read Functions(#` XX` ` The FIPS PUB 123 read functions provide flexibility to the applications programmer in processing the DDF. Functions are provided to read both the DDR and the DR on a record level, field level, or subfield level. Very large DRs or DRs containing complex structures may require processing at the field or subfield level. The FIPS PUB 123 read functions include:(#`  tT XX` ` X oX$ rd123ddfld() ĩreads the next field of the DDR(#  tT  XX` ` X oX$ rd123ddrec() ĩreads the complete DDR, including leader and directory(#  tT XX` ` X oX$ rd123ddsfld() ĩreads the next subfield of the DDR(#  tT! XX` ` X oX$ rd123fld() ĩreads the next DR field (# (#0*%%Ԍ tT XX` ` X oX$ rd123rec() ĩreads the next DR, including leader and directory(#  tT XX` ` X oX$ rd123sfld() ĩreads the next DR subfield. (#  tT 2.2.3XX` ` Write Functions(#` XX` ` The FIPS PUB 123 Function Library write functions provide flexibility in creating a DDF. Functions are provided to write both the DDR and the DR on a record level, field level, or subfield level. Very large DRs or DRs containing complex structures may require processing at the field or subfield level. The FIPS PUB 123 Function LIbrary write functions include:(#`  tTh XX` ` X oX$ wr123ddfld() ĩwrites a DDR field(#  tT XX` ` X oX$ wr123ddrec() ĩaccepts a string containing the complete DDR, including leader and directory, and writes the DDR to the output file(#  tTp XX` ` X oX$ wr123ddsfld() ĩwrites a DDR subfield (#  tT XX` ` X oX$ wr123fld() ĩwrites a DR field (#  tT  XX` ` X oX$ wr123rec() ĩwrites a complete DR, including leader and directory(#  tT XX` ` X oX$ wr123sfld() ĩwrites a DR subfield. (# T$0*%%Ԍ tT 2.2.4XX` ` Backup Functions(#` XX` ` The FIPS PUB 123 Function Library backup functions may be used to change the currency pointers of a DDF being processed to a previously processed data record, DR field, or DR subfield. For a DDF opened in 'write' mode, the current record/field/subfield is erased as the currency pointer is backed up. An example of usage of a backup function would be to backup and rewrite a record, field,  tT` or subfield with an 'end of file' option upon detecting an 'end of file' condition on the input userspecified data model.(#`  tT X X` ` The backup functions include the following:(#`  tT< XX` ` X oX$ bak123fld() ĩbacks up the currency pointer to the beginning of the last field read or written(#  tT XX` ` X oX$ bak123rec() ĩbacks up the currency pointer to the beginning of the last record read or written(#  tTD XX` ` X oX$ bak123sfld() ĩBacks up the currency pointer to the last subfield read or written.(#  tT 2.2.5XX` ` Check Functions(#` XX` ` The FIPS PUB 123 Function Library check functions query the DDR and retrieve the format and description of the current record, field or subfield, or the next record, field, or subfield. The check functions may be used in application programs to assist in reading a DDF in an unknown format or to generate reports. These functions include:(#` (#0*%%Ԍ tT XX` ` X oX$ chk123fld() ĩretrieves the format and description of the current DR field(#  tT XX` ` X oX$ chk123nfld() ĩretrieves the format and description of the next DR field to be processed(#  tT XX` ` X oX$ chk123nrec() ĩretrieves the format and description of the next DR to be processed(#  tT XX` ` X oX$ chk123nsfld() ĩretrieves the format and description of the next subfield to be processed(#  tT XX` ` X oX$ chk123rec() ĩretrieves the format and description of the current DR(#  tT XX` ` X oX$ chk123sfld() ĩretrieves the format and description of the current DR subfield.(#  tT 2.2.6XX` ` Erase Functions(#` XX` ` The FIPS PUB 123 Function Library erase functions are used to erase the DDR or the last DDR field or subfield written to a DDF opened in 'write' mode:(#`  tT  XX` ` X oX$ er123ddfld() ĩerases the last DDR field written(#  tTL XX` ` X oX$ er123ddrec() ĩerases the DDR record(#  tTx XX` ` X oX$ er123ddsfld() ĩerases the last DDR subfield written.(# XX` ` The erase functions may be used only while processing the DDR; that  tT! is, before the DDR is ended with    end123ddrec() . If  er123ddrec()  is  tT(# called after end123ddrec() , the DDR and any subsequent DRs written  tTT$ will be erased. If  er123ddfld()  or  er123ddsfld()  is called afterT$0*%%  tT  end123ddrec() , subsequent errors may be encountered while processing DRs. (#`  tT 2.2.7XX` ` Utility Functions(#` XX` ` Several utility functions have been provided with the FIPS PUB 123 Function Library to facilitate processing of binary (bit) data. These include:(#`  tT XX` ` X oX$ g123order() ĩreturns the byte order of the current operating architecture(#  tT XX` ` X oX$ l123tos() ĩconverts a long (full word) integer to a character string as required for input to a FIPS PUB 123 write function, optionally reversing the order of the bytes in the string(#  tT XX` ` X oX$ s123tol() ĩconverts a character string to a long integer, optionally reversing the order of the bytes of the string prior to converting.(# 6"xJ dd?x0**?b#dp@>pQ Wm@# !Figure 23 Binary Data Representation.  S #X~xP7 qXP#XXXX X0x04030201 = unsigned 6730598510Ɛ XXXBig Endian:ƐX # ixP7AP#  }KK XXXX High Order Byte >` $Low Order ByteƐ  }K XXXX Most Significant Byte >` $Least Significant ByteƐ  }K XXXX Byte #1` ` Byte #2$Byte #30Byte #4Ɛ  }K  XXXX 0x04XX` ` 0x03X X$0x02Xhh*X00x01Ɛ  }Kk  XXXX 0000 0100` ` 0000 0011$0000 001000000 0001 Ɛ  S #X~xP7 qXP#XXXLittle Endian:ƐX # ixP7AP#  }Kt XXXX Low Order Byte >` $High Order ByteƐ  }K< XXXX Least Significant Byte >` $Most Significant ByteƐ  }K XXXX Byte #1` ` Byte #2$Byte #30Byte #4Ɛ  }K  XXXX 0x01XX` ` 0x02X X$0x03Xhh*X00x04Ɛ  }K  XXXX 0000 0001` ` 0000 0010$0000 001100000 0100 Ɛ  S #X~xP7 qXP#XXXMiddle Endian (left to right):ƐX # ixP7AP#  }K XXXX ©> Low Order Byte ` $High Order Byte > Ɛ  }Ke XXXX ©> Least Sig. Byte ` $Most Sig. Byte >Ɛ  }K- XXXX Byte #1` ` Byte #2$Byte #30Byte #4Ɛ  }K  XXXX 0x02XX` ` 0x01X X$0x04Xhh*X00x03Ɛ  }K  XXXX 0000 0010` ` 0000 0001$0000 010000000 0011Ɛ  }K  XXXX 16 bit big endian X$16 bit big endianƐ XXXX ©32 bit little endianƐ  S #X~xP7 qXP#XXXMiddle Endian (right to left):ƐX # ixP7AP#  }K XXXX < High Order Byte ` $Low Order Byte < Ɛ  }KV XXXX < Most Sig. Byte ` $Least Sig. Byte <Ɛ  }K XXXX Byte #1` ` Byte #2$Byte #30Byte #4Ɛ  }K  XXXX 0x03XX` ` 0x04X X$0x01Xhh*X00x02Ɛ  }K  XXXX 0000 0011` ` 0000 0100$0000 000100000 0010Ɛ  }Kv  XXXX 16 bit little endian X$16 bit little endianƐ XXXX ©32 bit big endianƐ XX` ` Binary data are stored as big endian, little endian, or middle  tT endian. These methods are depicted in figure 23. Use  g123order()  to determine the architecture of the your processing computer; if the architecture is different than that of the DDF to be  tTL read/written, use the reverse parameter when calling  s123tol()  or  tTx  l123tos()  to reverse the order of the bytes.1 (#`  tT(# 1XThe Spatial Data Transfer Standard (FIPS PUB 173) specifies that all binary data be represented in big endian format.(#0T$0*%%'#O-0Ԍ$(#(#(#(#'#$00*%%'#O-0  tT X9x Gi>FIPS PUB 123 Function Library Software Documentation Section Three: Program (Task) Descriptions x=  Gf# tT 5/93` `  $hh*06pp<B  HxxN T 33.` ` PROGRAM (TASK) DESCRIPTIONS XX` ` The FIPS PUB 123 Function Library comprises only function subroutines. Therefore, program (task) descriptions do not apply.(#` 0*$$  tT  Gp mHUpQ Wm@#  Figure 51 . FIPS PUB 123 File Structure. $(#(#(#(#'#$00*$$'#O-0ԒXX` ` There are four basic delimiters used in FIPS PUB 123 interchange files. Two of the delimiters are nonprintable characters. The two characters are defined as ASCII characters 30 and 31 (decimal value) corresponding to the field terminator and unit terminator, respectively. The user may specify printable characters to be substituted for these delimiters for display purposes. The characters '!' and '*' have also been reserved for use by the standard.(#`  tT 5.2X` ` DATA DESCRIPTIVE RECORD (DDR)(# XX` ` The DDR describes, and is used to control, the reading and writing of the DRs which follow. Figure 52 provides an expanded schematic of a DDR. An extract of a DDF is provided in example 1. Ln!J<<ddL\"*k#dp@>pQ Wm@#  Figure 52 Expanded Logical Schematic of a DDR.~ Ln!JLddEX1.DOCL\"* tT #dp@>pQ Wm@# !Example 1 rAn Extract of an Example Interchange File.  S  X, #X~xP7 qXP#DDR Leader  ? # x6X@8;wX@#  }KA #ixP7AP#024503L 0600454 4504  S #X~xP7 qXP#DDR Directory  ? # x6X@8;wX@#  }K #ixP7AP#DDR Directory Entry 20 #ixP7AP#00000287000000001003000287CATX006600317CATS007000383IDEN009200453THDS004000545; DDR Data Descriptive Area 2 0000;&DLG-Optional/SDTS Transfer File&0001CATX 0001CATS0001IDEN0001THDS0001IREF0001XREF0001SPDM0001DMSA0001DDDF0001DDEA0001DDOM0001STAT0001PNTS0001LINE0001POLYPOLYRFID0001LNIDRFIDLFID0001SADR0001PIDL0001PIDR0001SNID0001ENID0001AT00AT00AV00AV00AT01AT01AV01AV01AT02AT02AV02AV02AT03AT03AV03; 1000;&DDF RECORD IDENTIFIER&&; 2600;&CATALOG/CROSS REFERENCE&*MODN !NAM1!TYP1!NAM2!TYP2!COMT&(6A); 2600;&CATALOG/SPATIAL DOMAIN&*MODN !NAME!TYPE!DOMN!MAP !THEM!COMT&(7A); 1600;&IDENTIFICATION&MODN!STID!STVS !DOCU!TITL!DAID!DOMD!DAST!MPD1!MPD2 !SCA1!SCA2!COMT&(13A); 2000;&THEME DESCRIPTION&*NAME!DSCR& (2A);~(#` XX` ` The DDR leader comprises 24 bytes and occurs at the beginning of the record. Each byte or group of bytes represents parameters for processing the record. The first five bytes (relative positions 04) contain the length of the DDR. The DDR leader also includes the fields listed below which are further described in the following paragraphs in conjunction with other elements of the DDR:(#` @(#0*$$!'#O-'#O-@Ԍ$(#(#(#(#'#$@0*$$!'#O-'#O-@Ԓ$(#(#(#(#'#$00*$$'#O-0Ԓ` `    tT, ` ` Field $hh*06pp<B  HPosition  tT ` `   $hh*06pp<B  H(Byte) ` `     tTL ` ` Interchange levelhh*06pp<B  H5  tTx ` ` Leader identifierhh*06pp<B  H6  tT ` ` Inline code extension indicatorpp<B  H7  tT ` ` Application indicator06pp<B  H9  tT ` ` Field control length06pp<B  H1011  tT( ` ` Base address of data descriptivepp<  tTT ` `  area$hh*06pp<B  H1216  tT ` ` Extended character set indicatorpp<B  H1719  tT ` ` Entry map$hh*06pp<B  H2023 ` `   XX` ` The next component of the DDR is the directory. The directory is made up of 1 to n entries, each of which specifies the location and length of a corresponding DDF. Each entry comprises a field tag, length, and position; the lengths of each are determined by the entry map which is part of the leader:(#`  tT8 XX` ` X oX$The first byte of the entry map specifies the size (in bytes) of the field length of a directory entry(#  tT XX` ` X oX$The second byte specifies the size of the field position(#  tT XX` ` X oX$The third byte is reserved for future use(#  tT! XX` ` X oX$The fourth byte specifies the size of the field tag (in bytes).(# #0*$$ԌXX` ` Each directory entry consists of the tag value followed by the field length, followed by the field position. The entry map of '4504', as shown in example 1, specifies the following format for each directory entry:(#` ` `   ` `  $hh*06pp<B  HPosition  tTl ` ` Field $hh*0Size6pp<B  H(bytes) ` `    tT ` ` Tag value$hh*0 46pp<B  H03  tT ` ` Field lengthhh*0 46pp<B  H47  tT ` ` Field positionhh*0 56pp<B  H812 ` `   XX` ` Referring to example 1, the tag for the first directory entry is '0000'; the field length is '0287'; and the field position is '00000'. Together they make up entry '0000028700000'. The next entry is '0001003000287'. These directory entries specify how the data descriptive fields that follow are to be interpreted.(#` XX` ` The data descriptive area shown in figure 52 begins with a file control field and a data description of record identifier field, followed by data descriptive fields. (#` XX` ` The data following the partial directory shown in example 51 is part of the data descriptive area. Per the first directory entry, the file control field has a tag of 0000. It is 287 bytes in length and begins at position 00000 relative to the base address of the data descriptive data area. The record identifier field has a tag of 1000, is 287 bytes in length, and begins at position 00300. The (#` `"0*$$ԌXX` ` first data descriptive field which describes a DR data value field has a tag of CATX, a field length of 317 bytes, and begins at relative position 00060. (#` XX` ` Example 2 shows a complete DDR. Carriage returns have been inserted to separate the leader, directory, and each field of the data descriptive area. The printable characters ';' and '&' represent the field and unit terminator, respectively.(#` XX` ` Relative byte position 5 of the leader contains the interchange level of the DDF. The interchange level may have a value of 1, 2, or 3, defined as follows:(#`  tT< ` `  o$Level 1contains only elementary character data fields; that is, it contains no compound data and no hierarchical data(#  tT ` `  o$Level 2contains compound data fields but no hierarchical data(#  tTp h Ln!JLl ddEX2.DOCL\"*|#dp@>pQ Wm@# !Example 2  Extract of an Interchange File Showing a Complete DDR.#TxP7 QP# X,  024503L 0600454 4504 00000287000000001003000287CATX006600317CATS007000383IDEN009200453THDS004000545IREF011900585XREF007800704SPDM005100782DMSA004500833DDDF007300878DDEA006900951DDOM006401020STAT006101084PNTS003901145LINE003301184POLY004101217RFID005201258LNID004801310LFID005301358SADR004401411PIDL005201455PIDR005301507SNID004901560ENID004701609AT00005301656AV00003201709AT01005301741AV01003201794AT02005301826AV02003201879AT03005301911AV03003201964; 0000;&DLG-Optional/SDTS Transfer File&0001CATX0001CATS0001IDEN0001 THDS0001IREF0001XREF0001SPDM0001DMSA0001DDDF0001DDEA0001DDOM0001STAT0001PNTS0001LINE0001POLYPOLYRFID0001LNIDRFIDLFID0001SADR0001PIDL0001PIDR0001SNID0001ENID0001AT00AT00AV00AV00AT01AT01AV01AV01AT02AT02AV02AV02AT03AT03AV03; 1000;&DDF RECORD IDENTIFIER&&; 2600;&CATALOG/CROSS REFERENCE&*MODN!NAM1!TYP1!NAM2!TYP2!COMT& (6A); 2600;&CATALOG/SPATIAL DOMAIN&*MODN!NAME!TYPE!DOMN!MAP !THEM !COMT&(7A); 1600;&IDENTIFICATION&MODN!STID!STVS!DOCU!TITL!DAID!DOMD!DAST!MPD1 !MPD2!SCA1!SCA2!COMT&(13A); 2000;&THEME DESCRIPTION&*NAME!DSCR&(2A); 1600;&INTERNAL SPATIAL REFERENCE&MODN!COMT!SATP!SFMT!HFMT!VFMT !SFAX!SFAY!SFAZ!XORG!YORG!ZORG!XHRS!YHRS!VRES&(6A,6R,3A); 1600;&EXTERNAL SPATIAL REFERENCE&MODN!COMT!RDOC!RSNM!VDAT !SDAT!HDAT!ZONE&(8A); 1600;&SPATIAL DOMAIN&MODN!DTYP!DSTP!DSFT!COMT&(5A); 2600;&Spatial Address&*Easting!Northing&(2A); 1000;&DATA DICTIONARY/DEFINITION&MODN!EORA!EALB!SRCE!DFIN!AUTH !ADSC&(7A); 1000;&DATA DICTIONARY/ENTITY-ATTRIBUTE&MODN!ETLB!EUTH!ATLB !AUTH&(5A); 1000;&DATADICTIONARY/DOMAIN&MODN!ATLB!ADVF!ADMU!RAEN !DVAL&(6A); hXX` ` X oX$Level 3contains compound data fields and a list of tag pairs describing hierarchical structures.(# ! Ln!J<dd_L\"*_#dp@>pQ Wm@# Example 2Continued  Extract of an Interchange File Showing a Complete DDR.#TxP7 QP# X,  1600;&TRANSFER STATISTICS&MODN!MNRF!MTRF!NREC!NSAD!NATT&(6A); 1600;&POINT-NODE&MODN!OBRP!OBID&(2A,I); 1600;&LINE&MODN!OBRP!OBID&(2A,I); 1600;&POLYGON-RING&MODN!OBRP!OBID&(2A,I); 1600;&Ring Foreign Id&MODN!OBRP!OBID!USAG&(2A,I,1A); 2600;&foreign id&*MODN!OBRP!OBID!USAG&(2A,I,1A); 2600;&Line Foreign Id&*MODN!OBRP!OBID!USAG&(2A,I,1A); 2600;&Spatial Address&*Easting!Northing&(R); 1600;&Polygon ID Left&MODN!OBRP!OBID!USAG&(2A,I,1A); 1600;&Polygon ID Right&MODN!OBRP!OBID!USAG&(2A,I,1A); 1600;&Startnode ID&MODN!OBRP!OBID!USAG&(2A,I,1A); 1600;&Endnode ID&MODN!OBRP!OBID!USAG&(2A,I,1A); 2600;&ATTRIBUTE DEFINITION&*ATLB!AUTH!AFMT!AUNT&(4A); 2600;&ATTRIBUTE VALUE&*ATVL&(A); 2600;&ATTRIBUTE DEFINITION&*ATLB!AUTH!AFMT!AUNT&(4A); 2600;&ATTRIBUTE VALUE&*ATVL&(A); 2600;&ATTRIBUTE DEFINITION&*ATLB!AUTH!AFMT!AUNT&(4A); 2600;&ATTRIBUTE VALUE&*ATVL&(A); 2600;&ATTRIBUTE DEFINITION&*ATLB!AUTH!AFMT!AUNT&(4A); 2600;&ATTRIBUTE VALUE&*ATVL&(A); XX` ` The data descriptive area fields describe the DR fields which follow the DDR. Each DR field must have a corresponding descriptive entry in the DDR. (#` XX` ` In a level 1 file, the DDR data descriptive field contains only a field label, and the DRs contain the value. Possible data types include character, implicit point, explicit point, scaled, and character mode list string, as shown by example 3.(#` @(#0*$$!'#O-'#O-!@Ԍ$(#(#(#(#'#$@0*$$!'#O-'#O-!@Ԓ$(#(#(#(#!'#$00*$$'#O-!0ԒA<|J<` dd_ <*_e#dp@>pQ Wm@#  !Example 3 Possible Elementary Data Types. #ixP7AP#  }KX XXExample` `  $Field Contents  }K XX ` `  DDR$hh*0DR  }Kx XX 1 ` `  AUTHOR;hh*0Doe,Jane;  }K@ XX 2 ` `  AGE;$hh*024;  }K XX 3 ` `  HEIGHT;hh*05.5;  }K XX 4 ` `  WEIGHT;hh*02.45E2;  }K XX 5 ` `  BITSTR;hh*0010101;$(#(#(#(#A'#$ XX` ` Table 51 specifies the format of the compound data structures for interchange level 2 or 3. The structure types are elementary, vector, and array. (#` XX` ` Figure 53 provides a further expansion of the schematic for a level 2 interchange file, in which each DDF is broken into its components. For an interchange level 2 or 3 file, the subfields of a DDR data descriptive field are field control, name, vector or Cartesian label, and format controls. The field control subfield must be present for a compound data field descriptor. Table 51 identifies the possible subfields for each data structure/data type. Brackets specify an optional subfield; otherwise, the subfield is required. (#` 0! 0*$$'#A 0 */Table 51 $Compound Data Field Descriptors !0*$$ aLn!J<<dd"L\"*x#dp@>pQ Wm@#  Figure 53  Expanded Level 2 Data Descriptive Area Schematic.$(#(#(#(#a'#$0"0*$$'#O-a"0ԒXX` ` The length of the control field is specified in the leader in byte positions 1011. The relative positions 03 of the field are four numeric characters defined as follows:(#`  tT XX` ` X oX$Position 0 designates the data structure type(#  tT ` `  o$Position 1 specifies the data type(#  tT` ` `  o$Positions 4 and 5 consist of userdefined printable graphics symbols to represent the field terminator and unit terminator, respectively.(# XX` ` Examples 4 and 5 depict label and format controls subfields. The character '!' is used to delimit data element labels within a vector label. The character '*' is used to delimit the vector labels in a Cartesian label. For a detailed definition of the subfields of these fields, please consult FIPS PUB 123.(#` XX` ` FIPS PUB 123 defines several special fields to be used optionally in the data descriptive area of a DDR. These fields are identified by field tag values of 0..0 through 0..9 (0.. denotes zero fill). A tag value of 0..0 identifies the optional file control field for level 2 or 3 interchange files; 0..1 identifies the record identifier; and 0..2 identifies the user augmented file description. The record identifier field (tag 0..1) must also be included for each DR.(#`   <L ddEX4.DOC$ *J`#dp@>pQ Wm@# v!Example 4 vLabels Subfield Examples. #ixP7AP# X,   VECTOR AND CARTESIAN  . . . &*MODN!NAME!TYP1!NAM2!TYP2!COMT& . . .  . . . &NAME!SSN!ADDRS!PHONE& . . .  . . . GOLD!SODIUM!COPPER*DENSITY!COLOR!ACTIVITY& . . .  . . . &ROW1,ROW2*COL1!COL2!COL3!TAB1!TAB2*PAGE! . . .  NULL VALUES ARE ALLOWED  . . . &LAB1!!LAB2*LAB3!LAB4& . . .  . . . &!LAB1!LAB2& . . .  . . . &LAB1!LAB2!**LAB3!LAB4& . . .  * ` <aJdd$` *h#dp@>pQ Wm@# v!Example 5 vFormat Controls Subfield Examples. #ixP7AP# XX ` ` ...&(I); XX ` ` ...&(2I,3A); XX ` ` ...&(A(4),2(3R(;),C)); XX ` ` ...&(5(100A,I(4),2(B(6),3X)),R(10)); XX ` ` ...&(100(A(4)),6I($) ...* @(##0*$$!t'#a$ta'# %$@Ԍ$(#(#(#(#t'#$ԙ XX` ` The file extracts shown in examples 1 and 2 contain two of the above special fields. The first field in the DDR descriptive area is a file control field. Note that its corresponding entry in the directory has a tag value of 0000. The file control field is made up of three subfields:(#` @#$0*$$!t'#a$ta'# %$@Ԍ tT XX` ` X oX$Field controlspresent only in level 2 or level 3 files(#  tTX XX` ` X oX$File title (optional)(#  tT XX` ` X oX$List of ordered tag pairsonly for hierarchical records in level 3 files.(# XX` ` Additional information on these special fields may be found in the standard.(#`  tT 5.3` ` DATA RECORD (DR)(#` XX` ` A DDF may include any number of data records, each variable in length and content. However, the physical structure for each data record consists of a leader, a directory, and a data area. A provision is made to omit the repetition of identical DR leaders and directories for repetitive, fixedformat data.(#` XX` ` An expanded logical schematic representation of a data record is provided in figure 54. The physical structure of a DR is similar to that of the DDR with respect to the leader and the directory. The leader identifier identifies the record as a DR and specifies the repetitive characterstics of subsequent DR leaders and directories.(#` XX` ` The character 'D' in this position specifies that a leader and directory will be found in the subsequent DR. The character 'R' in the leader identifier specifies that all subsequent DRs will not contain a leader or a directory; the current leader and directory apply to the user data area for all remaining DRs. The expansion of the DR directory mirrors that of the DDR directory.(#` (#%0*$$ H!|J<<dd&H!*_j#dp@~rQwl@#  Figure 54 Expanded Logical Schematic of a DR.$(#(#(#(#'#$0&0*$$'#)-&0 XX` ` The fields of the data area of a DR contain the user information to be interchanged. Each field is an instance of the user data structure and data types defined by the DDR data descriptive field with the corresponding field tag. The format of the data values within a field is determined by the format controls contained in the corresponding description in the DDR. Subfields of a DR field include the number of dimensions of the field, the length of each dimension, and the actual data values. A DR field ends with a field terminator. (#` XX` ` Examples 6 through 8 show the link or relationship between data descriptive records and the corresponding data records. Note that the data type specified in the field control determines the subfields available in the DDR (see table 51). If only the name subfield is present, the data value in the DR may be read or written as a single ASCII string having a field terminator as the last character. The format controls may be used to read the data values in the DR or to format data to an output file.(#` '0*$$Ԍi! |<` dd_(0 *_#dp@~rQwl@#  !Example 6 | The Relationship Between a DDR and a Corresponding DR for Elementary Data. #TxP7 QP#  dB XX ExampleData Type $hh*Field Contents  dB XX ` `  DDR$hh*0DR  dB> XX 1 Character` `  0000;&NAMEhh*0DOE,JANE  dB XX 2 Implicitpoint` `  0100;&AGE;hh*018;  dB XX 3 Explicitpoint` `  0200;&GPA;hh*03.46;  dB0 XX 4 Explicitpoint` `  0300;&DIST;hh*0+0.5E+02; XX scales  dB| XX 5 Character mode bit 0400;&BITSTR;hh*0010101;  dB" XX  string` `   dB XX 6 Bit field (fixed)` `  0500;&BITFLDF&B(6);0(01010100);  dBn XX 7 Bit field (variable)` `  0500;&BITFLDV&B;016(01010100); i$(#(#(#(#'#$ !d|d<Ddd_(*J_#dp@~rQwl@#  !Example 7 | The Relationship Between a DDR and a Corresponding DR for Vector Data.#TxP7 QP#  dB  XXCharacter vector with name, subfield labels, and no format controls:  dB XXDDR 1000;&MAILINGADDRESS7NAME!STREET!CITY!STATE!ZIP;  dB XXDR DOE,JOHN&1010MAPLEST.&OSHGOSH&OHIO&12345;  dB  XXImplicit point vector with name, subfield labels, and format controls:  dB0 XXDDR 1100;&POPULATION&CY60!CY65!CY70!CY75&(4)());  dB XXDR 765432987345903231897654;  dB"  XXMixed vectors with name, no labels (this can be interpreted as an XXarray), but with format controls:  dB  XXDDR 1600;&LIVESTOCK&&(A(,),I(5),R(5);  dB XXDR PIGS,0274437.46STEERS,1776447.84;  dB  XXExplicit point vector with name, no labels, and no format controls:  dBR XXDDR 1200;&GRAINS;  dB XXDR 3.46&2.47&11.94; $(#(#(#(#'#$@#(0*$$!'#(d'#+(@Ԍi!!|<dd_)(#*_#dp@~rQwl@#  !Example 8 | The Relationship Between a DDR and a Corresponding DR for Array Data.  X, #TxP7 QP#X` hp x (#%'0*,.8135@8:pQ Wm@#  !Example 9 J Data Record with Corresponding DDR Descriptive Fields.  }K  X, #ixP7AP#DDR X #ixP7AP#TAGS; 0001, CATX` X 1000;&DDF RECORD IDENTIFIER&&;` X ` X 2600;&CATALOG/SPATIAL DOMAIN&*MODN!NAME!TYPE!DOMN!MAP!THEM!COMT&(7A);`  S` #X~xP7 qXP#DR  }K2 # ixP7AP#X 00419 D 00129 45040001000600000CATX009200006CATX003100098` X CATX003100129CATX003100160CATX002700191CATX003600218CATX003600254;` X ` X 00002;` X ` X CX&A0&PNTS&A2&POLY&Objects in the area-point module and polygon-ring module are equivalent.;` X ` X CX&N0&PNTS&L1&LINE&LNID in N0.;` X CX&A2&POLY&A2&POLY&RFID in A2.;` X CX&A2&POLY&L1&LINE&LFID in A2.;` X CX&L1&LINE&XR&&SADR in L1.;` X CX&L1&LINE&A2&POLY&PIDL,PIDR in L1.;` X CX&L1&LINE&N0&PNTS&SNID,ENID in L1.;` 7$(#(#(#(#A'#$0+0*$$'#,A+0  tT  mHy mxU