10A3E1102701E54F5F34063440178E1932641601E6 F76A8 S34401794C73262 F76B6 F7690 S8D0100CC000B340617 YDFTSTRCTLOAD0000 SCC000134064F5F34064F5F34063440179E4232E8138D060546414C5345CC000B340617 YDFTSTRCTLOAD0000 S4F5F3406CC000234064F5F34063440179E1D32E8138D050454525545CC000B340617 YDFTSTRCTLOAD0000 S4F5F3406CC00023406CC000134063440179DF832E8138D050443484152CC000B340617 YDFTSTRCTLOAD0000 SCC00023406CC00033406CC000134063440179DD232E8138D0807424F4F4C45414ECC000B340617 YDFTSTRCTLOAD0000 SCC00023406CC00023406CC000134063440179DA932E8138D0807494E5445474552CC000B340617 YDFTSTRCTLOAD0000 SCC00023406CC00013406CC000134063440179D8032E8138D0A0953454D4150484F5245CC000B340617 YDFTSTRCTLOAD0000 SCC00023406CC00053406CC000134063440179D5532E8138D0403454F46CC000B340617 YDFTSTRCTLOAD0000 SCC00043406CC00023406CC001134063440179D3032E8138D0504454F4C4ECC000B340617 YDFTSTRCTLOAD0000 SCC00043406CC00023406CC001234063440179D0A32E8138D050452454144CC000B340617 YDFTSTRCTLOAD0000 SCC000334064F5F3406CC000134063440179CE532E8138D0706524541444C4ECC000B340617 YDFTSTRCTLOAD0000 SCC000334064F5F3406CC000234063440179CBE32E8138D06055752495445CC000B340617 YDFTSTRCTLOAD0000 SCC000334064F5F3406CC000334063440179C9832E8138D080757524954454C4ECC000B340617 YDFTSTRCTLOAD0000 SCC000334064F5F3406CC000434063440179C7032E8138D050457414954CC000B340617 YDFTSTRCTLOAD0000 SCC000334064F5F3406CC000534063440179C4B32E8138D07065349474E414CCC000B340617 YDFTSTRCTLOAD0000 SCC000334064F5F3406CC000634063440179C2432E8138D0100CC000B340617 YDFTSTRCTLOAD0000 SCC000334064F5F34064F5F34063440179C0432E813CC00018300015849584958493406ECC9F9ED1F02350630C9F8B5308B1F20ED84CC00018300015849584958493406CC00011F02350630C9F8B7308B1F20ED84CC000183000158495849584934064F5F1F02350630C9F8B9308B1F20ED84CC000183000158495849584934 S064F5F1F02350630C9F8BB308B1F20ED8430C8D8341017 YDFTSETLOAD 0000 S30C9F9F2341017 YDFTSETLOAD 0000 S17 YDFTSETUNION 0000 S4F5F3406CC00013406344017E08F32E826E6C9F9EF4F3406CC001710A3E1102701E7CC000334063440178AF43264 F79CC SCC001F34063440179DFE3264327E30C9FA433410344017 YEOF 0000 S326435064353C30001C300015D102701E8327E30C9FA433410344017 YEOF 0000 S326435064353C30001C300015D102701E930C9FA43341017 YDFTREADLN 0000 S20D7 F7A20 F7A02 S30C893341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 S17 YDFTSETCMP 0000 S102601EA344017E99F32621601EB F7A3D S34401789A73262 F7A47 S30D802341017 YDFTWRITELN 0000 S30C9FA433410344017 YCLOSE 0000 S326430C9FBD73410344017 YCLOSE 0000 S3264325C35C0 PP2AD7 0000 ˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙3506AEC43089FE2E308B1F20E784CC00038300013406CC00221F023506AEC43089FE2E308B1F20E784CC00048300013406CC00221F023506AEC43089FE2E308B1F20E784CC00058300013406CC00271F023506AEC4 S3089FE2E308B1F20E784CC00068300013406CC001A1F023506AEC43089FE2E308B1F20E784CC00078300013406CC00071F023506AEC43089FE2E308B1F20E784CC00088300013406CC002B1F023506AEC43089FE2E308B1F20E784CC00098300013406CC00281F023506AEC43089FE2E308B1F20E784CC000A8300013406CC S00271F023506AEC43089FE2E308B1F20E784CC000B8300013406CC00261F023506AEC43089FE2E308B1F20E784CC000C8300013406CC001D1F023506AEC43089FE2E308B1F20E784CC000D8300013406CC00231F023506AEC43089FE2E308B1F20E784CC000E8300013406CC00081F023506AEC43089FE2E308B1F20E784CC S000F8300013406CC00031F023506AEC43089FE2E308B1F20E784CC00108300013406CC002A1F023506AEC43089FE2E308B1F20E784CC00118300013406CC000A1F023506AEC43089FE2E308B1F20E784CC00128300013406CC001E1F023506AEC43089FE2E308B1F20E784CC00138300013406CC00201F023506AEC43089FE S2E308B1F20E784CC00148300013406CC00241F023506AEC43089FE2E308B1F20E784CC00158300013406CC002D1F023506AEC43089FE2E308B1F20E784CC00168300013406CC002C1F023506AEC43089FE2E308B1F20E784CC00178300013406CC001B1F023506AEC43089FE2E308B1F20E784CC00188300013406CC00291F S023506AEC43089FE2E308B1F20E784CC00198300013406CC001C1F023506AEC43089FE2E308B1F20E784CC001A8300013406CC00251F023506AEC43089FE2E308B1F20E784CC002B8300213406CC00041F023506AEC43089FB61308B1F20E784CC002D8300213406CC00051F023506AEC43089FB61308B1F20E784CC002A83 S00213406CC00061F023506AEC43089FB61308B1F20E784CC002F8300213406CC00071F023506AEC43089FB61308B1F20E784CC00288300213406CC00111F023506AEC43089FB61308B1F20E784CC00298300213406CC00121F023506AEC43089FB61308B1F20E784CC003D8300213406CC000B1F023506AEC43089FB61308B S1F20E784CC002C8300213406CC00151F023506AEC43089FB61308B1F20E784CC005B8300213406CC00131F023506AEC43089FB61308B1F20E784CC005D8300213406CC00141F023506AEC43089FB61308B1F20E784CC007E8300213406CC00031F023506AEC43089FB61308B1F20E784CC00268300213406CC00091F023506 SAEC43089FB61308B1F20E784CC003B8300213406CC00161F023506AEC43089FB61308B1F20E784CC007C8300213406CC000A1F023506AEC43089FB61308B1F20E784AEC43088B5341017 YDFTSETDEFINE0000 SCC0004340617 YDFTSETELEMNT0000 SCC0005340617 YDFTSETELEMNT0000 S4F5F340617 YDFTSETELEMNT0000 SCC0001340617 YDFTSETELEMNT0000 SCC0021340617 YDFTSETELEMNT0000 S17 YDFTSETSTORE 0000 SAEC43089F9CD341017 YDFTSETDEFINE0000 SCC0021340617 YDFTSETELEMNT0000 SCC001F340617 YDFTSETELEMNT0000 S17 YDFTSETSTORE 0000 SAEC43088D8341017 YDFTSETDEFINE0000 SCC001A340617 YDFTSETELEMNT0000 SCC001B340617 YDFTSETELEMNT0000 SCC001C340617 YDFTSETELEMNT0000 SCC001E340617 YDFTSETELEMNT0000 SCC001D340617 YDFTSETELEMNT0000 SCC0022340617 YDFTSETELEMNT0000 S17 YDFTSETSTORE 0000 SAEC43089FF73341017 YDFTSETDEFINE0000 S4F5F340617 YDFTSETELEMNT0000 SCC0001340617 YDFTSETELEMNT0000 SCC0021340617 YDFTSETELEMNT0000 SCC0011340617 YDFTSETELEMNT0000 SCC0003340617 YDFTSETELEMNT0000 S17 YDFTSETSTORE 0000 SAEC43089F9F2341017 YDFTSETDEFINE0000 SCC0022340617 YDFTSETELEMNT0000 SCC0023340617 YDFTSETELEMNT0000 SCC0025340617 YDFTSETELEMNT0000 SCC0024340617 YDFTSETELEMNT0000 SCC0026340617 YDFTSETELEMNT0000 S17 YDFTSETSTORE 0000 SAEC43089FA12341017 YDFTSETDEFINE0000 S4F5F340617 YDFTSETELEMNT0000 SCC0001340617 YDFTSETELEMNT0000 SCC0002340617 YDFTSETELEMNT0000 SCC0003340617 YDFTSETELEMNT0000 SCC0005340617 YDFTSETELEMNT0000 S17 YDFTSETSTORE 0000 S4F5FAEC4ED1ACC0001ED184F5FED88D6CC0020E788D54F5F58493406CC00011F0235063089E8F1308B1F20ED844F5FAEC4ED88B3308893341017 YDFTSETDEFINE0000 S17 YDFTSETSTORE 0000 SCC00014353C30001AEC4ED89FE2C4F5FED89FE2A4F5FED89FCF74F5FED89FE274F5FE789FBC14F5FED89F9F0CC00014353C30001ED89F9ED325C35C0 F0001 S3440336432E9D8EB344017E9D53262CC0001EDC9FBC5E6C9FBC45D102701E130C9FCF93410344017 YPAGE 0000 S326430C9FCF934108D1D1C4C494E4523204C4F434E20202020202053544154454D454E542020204F5F340617 YDFTWRTSTRG 0000 S326230C9FCF934108D2726202D20434F4E43555252454E542050415343414C2D5320434F4D50494C4552203A20524556204F5F340617 YDFTWRTSTRG 0000 S308D8A3B34104F5F340617 YDFTWRTSTRG 0000 S8D0302202D4F5F340617 YDFTWRTSTRG 0000 S326230C9FCF934108D0807202050414745204F5F340617 YDFTWRTSTRG 0000 SECC9FBC53406CC0003340617 YDFTWRTINT 0000 S17 YDFTWRITELN 0000 S1601E2 F7551 S30D802341017 YDFTWRITELN 0000 S30D80234108D2726202D20434F4E43555252454E542050415343414C2D5320434F4D50494C4552203A20524556204F5F340617 YDFTWRTSTRG 0000 S308D89B834104F5F340617 YDFTWRTSTRG 0000 S8D0302202D4F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 S30D802341017 YDFTWRITELN 0000 F7608 S344017F4FC3262E6C9F9EF4F3406CC002010A3E1102701E3CC000234063440178E3F32641601E4 F7681 S34401794ED3262E6C9F9EF4F3406CC00210000 SAEC43089FCF934108D14134152524159205441424C452053495A45203A204F5F340617 YDFTWRTSTRG 0000 SAEC4EC1A3406CC0004340617 YDFTWRTINT 0000 S17 YDFTWRITELN 0000 SAEC43089FCF934108D1413424C4F434B205441424C452053495A45203A204F5F340617 YDFTWRTSTRG 0000 SAEC4EC183406CC0004340617 YDFTWRTINT 0000 S17 YDFTWRITELN 0000 SAEC43089FCF934108D1413535452494E4720434841524143544552533A204F5F340617 YDFTWRTSTRG 0000 SAEC4EC89F9F03406CC0004340617 YDFTWRTINT 0000 S17 YDFTWRITELN 0000 SAEC43089FCF934108D1413502D434F44452053495A452020202020203A204F5F340617 YDFTWRTSTRG 0000 SAEC4EC89FE2A3406CC0004340617 YDFTWRTINT 0000 S17 YDFTWRITELN 0000 S1601E0 F6884 SAEC430980234108D1C1B434F4D50494C45442050524F4752414D20535441544953544943534F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 SAEC430980234108D1C1B2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D4F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 SAEC430980234108D141353594D424F4C205441424C452053495A453A204F5F340617 YDFTWRTSTRG 0000 SAEC4EC89F9ED3406CC0004340617 YDFTWRTINT 0000 S17 YDFTWRITELN 0000 SAEC430980234108D14134152524159205441424C452053495A45203A204F5F340617 YDFTWRTSTRG 0000 SAEC4EC1A3406CC0004340617 YDFTWRTINT 0000 S17 YDFTWRITELN 0000 SAEC430980234108D1413424C4F434B205441424C452053495A45203A204F5F340617 YDFTWRTSTRG 0000 SAEC4EC183406CC0004340617 YDFTWRTINT 0000 S17 YDFTWRITELN 0000 SAEC430980234108D1413535452494E4720434841524143544552533A204F5F340617 YDFTWRTSTRG 0000 SAEC4EC89F9F03406CC0004340617 YDFTWRTINT 0000 S17 YDFTWRITELN 0000 SAEC430980234108D1413502D434F44452053495A452020202020203A204F5F340617 YDFTWRTSTRG 0000 SAEC4EC89FE2A3406CC0004340617 YDFTWRTINT 0000 S17 YDFTWRITELN 0000 F69F9 S325C35C034403364CC00018300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B34108D0403414E4417 YDFTSTRSTRCPY0000 S3262CC00028300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B34108D0605415252415917 YDFTSTRSTRCPY0000 S3262CC00038300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B34108D0605424547494E17 YDFTSTRSTRCPY0000 S3262CC00048300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B34108D0807434F424547494E17 YDFTSTRSTRCPY0000 S3262CC00058300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B34108D0605434F454E4417 YDFTSTRSTRCPY0000 S3262CC00068300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B34108D0605434F4E535417 YDFTSTRSTRCPY0000 S3262CC00078300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B34108D040344495617 YDFTSTRSTRCPY0000 S3262CC00088300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B34108D0302444F17 YDFTSTRSTRCPY0000 S3262CC00098300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B34108D0504454C534517 YDFTSTRSTRCPY0000 S3262CC000A8300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B34108D0403454E4417 YDFTSTRSTRCPY0000 S3262CC000B8300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B34108D0403464F5217 YDFTSTRSTRCPY0000 S3262CC000C8300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B34108D090846554E4354494F4E17 YDFTSTRSTRCPY0000 S3262CC000D8300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B34108D0302494617 YDFTSTRSTRCPY0000 S3262CC000E8300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B34108D04034D4F4417 YDFTSTRSTRCPY0000 S3262CC000F8300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B34108D04034E4F5417 YDFTSTRSTRCPY0000 S3262CC00108300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B34108D03024F4617 YDFTSTRSTRCPY0000 S3262CC00118300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B34108D03024F5217 YDFTSTRSTRCPY0000 S3262CC00128300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B34108D0A0950524F43454455524517 YDFTSTRSTRCPY0000 S3262CC00138300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B34108D080750524F4752414D17 YDFTSTRSTRCPY0000 S3262CC00148300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B34108D070652455045415417 YDFTSTRSTRCPY0000 S3262CC00158300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B34108D05045448454E17 YDFTSTRSTRCPY0000 S3262CC00168300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B34108D0302544F17 YDFTSTRSTRCPY0000 S3262CC00178300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B34108D05045459504517 YDFTSTRSTRCPY0000 S3262CC00188300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B34108D0605554E54494C17 YDFTSTRSTRCPY0000 S3262CC00198300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B34108D040356415217 YDFTSTRSTRCPY0000 S3262CC001A8300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B34108D06055748494C4517 YDFTSTRSTRCPY0000 S3262CC00018300013406CC00091F023506AEC43089FE2E308B1F20E784CC00028300013406CC001F1F02AEC43089FA333410CC00013406327E8D02012EAEC43089FA333410AEC4341017 YSTRINGPOS 0000 S326630C8E63410AEC4341017 YSTRINGCOPY 0000 S326A30C8E6341030C8E6341017 YDFTSTRSTRCPY0000 S8D040341534D17 YDFTSTRSTRAPP0000 S32624F5FAEC4E789FBC4AEC43089FE1734108D010017 YDFTSTRSTRCPY0000 S3262AEC430980234108D0B0A41534D2046494C45205B4F5F340617 YDFTWRTSTRG 0000 S30C8E634104F5F340617 YDFTWRTSTRG 0000 S8D05045D203A204F5F340617 YDFTWRTSTRG 0000 S3262AEC43098023410AEC43089FE173410CC000F340617 YDFTREADSTRG 0000 S17 YDFTREADLN 0000 SAEC43089FE1734108D05044E4F4E4517 YDFTSTRSTRCMP0000 S102601D1CC0001E75B1601D2 F631E SAEC43089FE1734108D010017 YDFTSTRSTRCMP0000 S102601D3AEC43089FE17341030C8E6341017 YDFTSTRSTRCPY0000 S3262 F6338 SAEC43089FCF93410AEC43089FE1734108D01004F5F340617 YDFTREWRITE 0000 S327EAEC43089FCF93410AEC4341017 YFILEERROR 0000 S32644F5F1F025F10ACE126015CE75BE65B4353C30001C300015D102701D4AEC430980234108D111043414E2754204F50454E2046494C45204F5F340617 YDFTWRTSTRG 0000 SAEC43089FE1734104F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 F6393 SE65B5D102701D5CC0001AEC4E789FBC4 F63CD F6326 SE65B5D1027FECA325C35C0344033643277CC000AED56AEC43089FBD734103056341017 YDFTWRTTYPE 0000 SAEC43089F9ED341017 YDFTWRTTYPE 0000 SAEC4301A341017 YDFTWRTTYPE 0000 SAEC43018341017 YDFTWRTTYPE 0000 SAEC43089F9F0341017 YDFTWRTTYPE 0000 SAEC43089FE2A341017 YDFTWRTTYPE 0000 S32624F5FED5AAEC4EC89F9ED3406EC5A10A3E4102E01D6CC0001ED58CC000A3406EC5810A3E4102E01D7EC5A3406CC0018340617 YDFTMULTIPLY 0000 S3406EC58E3E1AEC43089DB40E68B4FED56AEC43089FBD734103056341017 YDFTWRTTYPE 0000 S3262EC58C30001ED5820C0 F6458 S3262EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC43089DB4DE68B4FED56AEC43089FBD734103056341017 YDFTWRTTYPE 0000 S3262EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC43089DB4EE68B4FED56AEC43089FBD734103056341017 YDFTWRTTYPE 0000 S3262EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC43089DB50EC8BED56AEC43089FBD734103056341017 YDFTWRTTYPE 0000 S3262EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC43089DB53E68B1DED56AEC43089FBD734103056341017 YDFTWRTTYPE 0000 S3262EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC43089DB54EC8BED56AEC43089FBD734103056341017 YDFTWRTTYPE 0000 S3262EC5AC30001ED5A16FEDB F6445 S3262CC0001ED5AAEC4EC1A3406EC5A10A3E4102E01D8EC5A8300013406CC000C340617 YDFTMULTIPLY 0000 SAEC43089F955E68B4FED56AEC43089FBD734103056341017 YDFTWRTTYPE 0000 S3262EC5A8300013406CC000C340617 YDFTMULTIPLY 0000 SAEC43089F956E68B4FED56AEC43089FBD734103056341017 YDFTWRTTYPE 0000 S3262EC5A8300013406CC000C340617 YDFTMULTIPLY 0000 SAEC43089F959EC8BED56AEC43089FBD734103056341017 YDFTWRTTYPE 0000 S3262EC5A8300013406CC000C340617 YDFTMULTIPLY 0000 SAEC43089F95BEC8BED56AEC43089FBD734103056341017 YDFTWRTTYPE 0000 S3262EC5A8300013406CC000C340617 YDFTMULTIPLY 0000 SAEC43089F95DEC8BED56AEC43089FBD734103056341017 YDFTWRTTYPE 0000 S3262EC5AC30001ED5A16FF19 F6577 S3262CC0001ED5AAEC4EC183406EC5A10A3E4102E01D9EC5A830001584958495849AEC43089F8B5EC8BED56AEC43089FBD734103056341017 YDFTWRTTYPE 0000 S3262EC5A830001584958495849AEC43089F8BBEC8BED56AEC43089FBD734103056341017 YDFTWRTTYPE 0000 S3262EC5AC30001ED5A20A2 F666B S3262AEC4EC89F9F03406CC0001E3E13406CC0050340617 YDFTDIVIDE 0000 S35063506ED54AEC4EC89F9F03406CC0001E3E13406CC0050340617 YDFTDIVIDE 0000 S3506326234064F5F1F025F10ACE127015CE7534F5FED5AEC543406CC00013406EC62A3E132623406EC5A10A3E4102E01DA4F5FED58CC004F3406EC5810A3E4102E01DBEC5A3406CC0050340617 YDFTMULTIPLY 0000 S3406EC58E3E1AEC43089D8E7E68B4FED56AEC43089FBD734103056341017 YDFTWRTTYPE 0000 S3262EC58C30001ED5820C0 F6739 S3262EC5AC30001ED5A20A3 F6727 S3262E6535D102701DC4F5FED5AAEC4EC89F9F03406CC0001E3E13406CC0050340617 YDFTDIVIDE 0000 S350632623406CC00013406EC62A3E132623406EC5A10A3E4102E01DDEC543406CC0050340617 YDFTMULTIPLY 0000 S3406EC5AE3E1AEC43089D8E7E68B4FED56AEC43089FBD734103056341017 YDFTWRTTYPE 0000 S3262EC5AC30001ED5A20C0 F67BB S3262 F6784 S4F5FED5AAEC4EC89FE2A3406EC5A10A3E4102E01DEEC5A58495849AEC43089E911E68B1DED56AEC43089FBD734103056341017 YDFTWRTTYPE 0000 S3262EC5A58495849AEC43089E912E68B1DED56AEC43089FBD734103056341017 YDFTWRTTYPE 0000 S3262EC5A58495849AEC43089E913EC8BED56AEC43089FBD734103056341017 YDFTWRTTYPE 0000 S3262EC5AC30001ED5A2089 F6809 S3262AEC4E689FBC45D102701DF3089FCF934108D1C1B434F4D50494C45442050524F4752414D20535441544953544943534F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 SAEC43089FCF934108D1C1B2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D4F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 SAEC43089FCF934108D141353594D424F4C205441424C452053495A453A204F5F340617 YDFTWRTSTRG 0000 SAEC4EC89F9ED3406CC0004340617 YDFTWRTINT 0000 S17 YDFTWRITELN A8B832641601BC F5C06 SEC523406CC0018340617 YDFTMULTIPLY 0000 SAEC43089DB4EE68B4F3406AEC43089FA12341017 YDFTSETLOAD 0000 S17 YDFTSETIN 0000 S5D102701BDEC583406CC0018340617 YDFTMULTIPLY 0000 S3406EC523406CC0018340617 YDFTMULTIPLY 0000 SAEC43089DB4EE68B1F023506AEC43089DB4E308B1F20E7841601BE F5C41 SCC00013406AEC4341017A8483264 F5C76 F5C17 F5BE5 S1601BF F5BB4 S3046341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0016340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S4F5F3406344017BC8B32E824 F5C87 S1601C0 F5B9A SCC00033406AEC4341017A8133264 F5CAB F5B87 SAEC4E689F9EF4F3406CC001610A3E1102601C1341017AEB132621601C2 F5CCC SCC00033406AEC4341017A7E83264 F5CD6 SAEC4E689F9EF4F3406CC001A10A3E1102601C3344017CC8A3262 F5CF7 SAEC4E689F9EF4F3406CC001B10A3E1102601C4344017CDCD3262 F5D11 SAEC4E689F9EF4F3406CC001C10A3E1102601C5344017CF373262AEC4EC89F9EDED56 F5D2B SEC548300015849584958493406EC5A1F023506AEC43089F8BB308B1F20ED84AEC4E689F9EF4F3406CC001E1F025F10ACE126015C4F3406E689F9EF4F3406CC001D1F025F10ACE126015CAAE0EAE05D102701C6344017D0D5326220C3 F5D8D S17 YDFTSETDEFINE0000 SCC0022340617 YDFTSETELEMNT0000 SAEC43088D8341017 YDFTSETLOAD 0000 SAEC43089F9F2341017 YDFTSETLOAD 0000 S17 YDFTSETUNION 0000 SCC00023406344017BBD332E844AEC4E689F9EF4F34063089F9F2341017 YDFTSETLOAD 0000 S17 YDFTSETIN 0000 S5D1027FF04EC583406CC0018340617 YDFTMULTIPLY 0000 S3406AEC4EC89FE2A1F0235063089DB54308B1F20ED84EC583406CC0001E3E13406EC563406344017FADA3266AEC4341017AD6332623046341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0016340617 YDFTSETELEMNT0000 SCC0027340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S344017F82732E822AEC4E689F9EF4F34063089F9F2341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0016340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S17 YDFTSETIN 0000 S5D102701C7AEC4E689F9EF4F3406CC001610A3E1102601C8341017ACFC32621601C9 F5E81 SCC00033406AEC4341017A6333264 F5E8B S3046341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0016340617 YDFTSETELEMNT0000 SCC0027340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S344017F7AF32E8222086 F5E6E SAEC4E689F9EF4F3406CC002710A3E1102601CA341017ACAA32621601CB F5ED3 SCC00023406AEC4341017A5E13264 F5EDD S3046341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0017340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S17 YDFTSETDEFINE0000 SCC00023406344017BA8932E844325C35C03440336432E8EAAEC43098023410AEC4341017 YPAGE 0000 S3264AEC430980234108D2726202D20434F4E43555252454E542050415343414C2D5320434F4D50494C4552203A20524556204F5F340617 YDFTWRTSTRG 0000 S308DA09B34104F5F340617 YDFTWRTSTRG 0000 S8D0302202D4F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 SAEC4309802341017 YDFTWRITELN 0000 SAEC43089FA3334108D010017 YDFTSTRSTRCPY0000 S3262AEC430980234108D1615534F555243452046494C45205B2E5041535D203A204F5F340617 YDFTWRTSTRG 0000 S3262AEC43098023410AEC43089FA333410CC000F340617 YDFTREADSTRG 0000 S17 YDFTREADLN 0000 S327E8D02012FAEC43089FA333410AEC4341017 YSTRINGPOS 0000 S32664F5F1F025F10ACE127015C5D102701CC327E8D02012FAEC43089FA333410AEC4341017 YSTRINGPOS 0000 S326635063406CC002E1F023506AEC43089FA33308B1F20E784 F6001 S327E8D02012EAEC43089FA333410AEC4341017 YSTRINGPOS 0000 S32664F5F1F025F10ACE126015C5D102701CDAEC43089FA333410AEC43089FA33341017 YDFTSTRSTRCPY0000 S8D05042E50415317 YDFTSTRSTRAPP0000 S3262 F6056 SAEC43089FA433410AEC43089FA3334108D01004F5F340617 YDFTRESET 0000 S327EAEC43089FA433410AEC4341017 YFILEERROR 0000 S32644F5F1F025F10ACE126015CE75BE65B4353C30001C300015D102701CEAEC430980234108D060546494C45204F5F340617 YDFTWRTSTRG 0000 SAEC43089FA3334104F5F340617 YDFTWRTSTRG 0000 S8D0B0A204E4F5420464F554E444F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 F60BE SE65B5D1027FE87AEC43089FA333410CC00013406327E8D02012EAEC43089FA333410AEC4341017 YSTRINGPOS 0000 S326630C8E63410AEC4341017 YSTRINGCOPY 0000 S326A30C8E6341030C8E6341017 YDFTSTRSTRCPY0000 S8D04034C535417 YDFTSTRSTRAPP0000 S3262AEC43089FBC734108D010017 YDFTSTRSTRCPY0000 S3262AEC430980234108D0C0B4C4953542046494C45205B4F5F340617 YDFTWRTSTRG 0000 S30C8E634104F5F340617 YDFTWRTSTRG 0000 S8D05045D203A204F5F340617 YDFTWRTSTRG 0000 S3262AEC43098023410AEC43089FBC73410CC000F340617 YDFTREADSTRG 0000 S17 YDFTREADLN 0000 SAEC43089FBC734108D010017 YDFTSTRSTRCMP0000 S102601CFAEC43089FBC7341030C8E6341017 YDFTSTRSTRCPY0000 S3262 F61BF SAEC43089FBD73410AEC43089FBC734108D0100CC0002340617 YDFTREWRITE 0000 S327EAEC43089FBD73410AEC4341017 YFILEERROR 0000 S32644F5F1F025F10ACE126015CE75BE65B4353C30001C300015D102701D0AEC430980234108D111043414E2754204F50454E2046494C45204F5F340617 YDFTWRTSTRG 0000 SAEC43089FBC734104F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 F621B SE65B5D1027FEF6DFTMULTIPLY 0000 SAEC4AE84AE843089DB4EE68BE755EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB50EC8BED56EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB52E68B5D1027018D4F5FED5816018E F5569 SCC0001ED58 F5570 SEC583406EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB53E68B1D3406EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB54EC8B3406AEC4AE84AE84341017C2E93268AEC4AE84AE84E689F9EF4F3406CC001310A3E11026018FAEC43002341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0012340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S30553410AEC4341017D9CE32E824 F55D2 SE6554F3406CC000510A3E110260190EC423406CC0001E3E13406AEC4AE84AE84341017C1C43264160191 F5606 SCC00013406AEC4AE84AE84341017AE993264 F5621 F5518 F54DE F549F SAEC4AE84AE84E689F9EF4F3406CC001210A3E110260192341017B5333262160193 F564A SCC00033406AEC4AE84AE84341017AE663264 F5654 F546D F5447 F5437 F52C9 S325C35C0 F2FBF S34403364327BAEC4AE84E689F9EF4F34063089F9F2341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0021340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S17 YDFTSETIN 0000 S5D10270194AEC4AE84E689F9EF4F1083002110260195327E3089FF683410CC000B340617 YDFTSTRCTLOAD0000 SAEC4341017C5B6326D3506ED5AAEC4AE84341017B4B13262EC5A34064F5F10A3E110270196EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB4DE68B4F10830000102701971083000210260198 F56FF SCC00013406AEC4AE84341017ADB53264160199 F5707 S108300011026019AEC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB53E68B1D3406EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB54EC8B3406344017ED77326616019B F5722 S108300031026019CEC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB53E68B1D34064F5F10A3E11027019D3042341017 YDFTSETLOAD 0000 SEC5A3406344017D9AB32E82416019E F5787 SEC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB54EC8B3406344017F82A3264 F579D S16019F F5765 S10830004102601A0EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB50EC8B3406AEC4EC025849AEC4AE843089E8F1EC8B10A3E1102601A1EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB53E68B1D3406CC0001E3E134064F5F3406344017ECB032661601A2 F57F6 SCC00013406AEC4AE84341017AC983264 F5824 F57C7 F57BF F575D F571A F56E0 S1601A3 F56AB S10830022102601A4AEC4AE843089FF6834108D0807434F424547494E17 YDFTSTRSTRCMP0000 S102601A5CC00043406AEC4AE84341017BF783264344017EE833262CC00053406AEC4AE84341017BF6132641601A6 F585A S344017EE693262 F5884 S1601A7 F583F S10830023102601A8344017EF5732621601A9 F5896 S10830025102601AA344017F25832621601AB F58A8 S10830024102601AC344017F0D232621601AD F58BA S10830026102601AE344017F34B3262 F58CC F58C4 F58B2 F58A0 F588E F5837 F569A S3042341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC00033406AEC4341017C0AD32E844325C35C034403364327CEC44ED58EC423406EC5810A3E4102E01AFEC583406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB4DE68B4F3406CC00011F025F10ACE126015C4F3406EC583406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB4FE68B4F3406CC00051F025F10ACE126015CA4E0E4E05D102701B0EC583406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB52E68B5D102701B14F5FED5A1601B2 F5978 SCC0001ED5A F597F SEC5A3406AEC4EC023406EC583406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB54EC8B3406AEC4AE84341017BEF33268EC583406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB4EE68B4F3406CC000410A3E1102601B3EC583406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB50EC8B8300013406CC000C340617 YDFTMULTIPLY 0000 SAEC4AE843089F95FEC8BED5A1601B4 F59D4 SCC0001ED5A F5A06 SCC00193406EC5A3406EC583406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB56EC8B3406AEC4AE84341017BE6D3268 F595D SEC58C30001ED5816FEBD F5907 S3262325C35C0 F1930 S344033643276CC0006ED5AAEC4EC89F9EDED58EC423406CC000F10A3E1102C01B5CC00053406341017ACDA3264 F5A68 S17 YDFTSETDEFINE0000 SCC0011340617 YDFTSETELEMNT0000 SCC0018340617 YDFTSETELEMNT0000 SCC0016340617 YDFTSETELEMNT0000 S3046341017 YDFTSETLOAD 0000 SCC00033406344017BEF632E844AEC4341017BCC63262AEC4EC18ED54EC4258493406EC181F0235063089E8F1308B1F20ED84EC583406CC0018340617 YDFTMULTIPLY 0000 S34064F5F1F023506AEC43089DB4E308B1F20E784EC583406CC0018340617 YDFTMULTIPLY 0000 S3406EC541F023506AEC43089DB50308B1F20ED84AEC4E689F9EF4F3406CC00111F025F10ACE126015C4F3406EC423406CC00011F025F10ACE12C015CA4E0E4E05D102701B6344017CA403262 F5B39 SEC548300015849584958493406AEC4EC89F9ED1F0235063089F8B7308B1F20ED84EC548300015849584958493406EC5A1F023506AEC43089F8B9308B1F20ED84E6455D102701B7AEC4E689F9EF4F3406CC001810A3E1102601B8341017AFE33262AEC4E689F9EF4F3406CC002110A3E1102601B9327E3089FF683410CC000B S340617 YDFTSTRCTLOAD0000 S344017C0AF326D3506ED52AEC4341017AFAC3262EC5234064F5F10A3E1102701BAEC523406CC0018340617 YDFTMULTIPLY 0000 SAEC43089DB4DE68B4F3406CC000210A3E1102701BBCC00013406AEC4341017A3E110260161341017BD5D3262AEC43002341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC002C340617 YDFTSETELEMNT0000 SCC002B340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S30583410AEC4341017F40E32E824E6584F3406E65B4F10A3E110270162CC00013406AEC4AE84AE84341017B6573264 F4E63 S160163 F4E20 SAEC43002341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC002C340617 YDFTSETELEMNT0000 SCC002B340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 SCC00033406AEC4AE84341017CA8B32E824 F4E78 SAEC4AE84AE84E689F9EF4F3406CC002C1F025F10ACE126015C5D10270164341017BCB73262AEC43002341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC002B340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S30583410AEC4341017F37032E824E6584F3406E65B4F10A3E110270165CC00013406AEC4AE84AE84341017B5B93264 F4F01 S160166 F4EC6 SAEC43002341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC002B340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 SCC00023406AEC4AE84341017C9F532E824 F4F16 SAEC4AE84AE84EC89FE2AED52CC000E3406341017C88C3264AEC4AE84AE84E689F9EF4F3406CC002B10A3E110260167341017BC103262160168 F4F6D SCC00023406AEC4AE84AE84341017B5433264 F4F77 SAEC4AE84AE84EC89FE2AED50AEC43002341017 YDFTSETLOAD 0000 SAEC4AE84341017E01532E822CC000F3406EC503406AEC4AE84AE84341017C8753266EC52584958493406AEC4AE84AE84EC89FE2A1F0235063089E913308B1F20ED84325C35C0344033643276EC421083000110270169108300021026016A F4FF4 SAEC4AE84AE84E689F9EF4F3406CC001110A3E11026016BAEC4AE84AE84341017BB643262AEC4AE84AE84E689F9EF4F3406CC002110A3E11027016C4F5F3406341017B48A326416016D F5037 S327EAEC4AE84AE843089FF683410CC000B340617 YDFTSTRCTLOAD0000 SAEC4AE84341017CC14326D3506ED5AAEC4AE84AE84341017BB0D3262EC5A34064F5F10A3E11027016EEC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB4DE68B4F3406CC000110A3E11027016FCC00013406AEC4AE84AE84341017B4113264160170 F50A9 SEC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB4EE68BE755EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB50EC8BED56EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB52E68B5D102701714F5FED58160172 F510F SCC0001ED58 F5116 SEC583406EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB53E68B1D3406EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB54EC8B3406AEC4AE84AE84341017C7433268AEC4AE84AE84E689F9EF4F3406CC00131F025F10ACE126015C5D10270173AEC43002341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0015340617 YDFTSETELEMNT0000 SCC0012340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S30553410AEC4341017DE1932E824 F517F SE6554F3406CC00011F025F10ACE126015C4F3406E6554F3406CC00031F025F10ACE126015CAAE0EAE04F3406E6554F3406CC00051F025F10ACE126015CAAE0EAE04F3406E6554F34064F5F1F025F10ACE126015CAAE0EAE05D10270174CC001B3406E6554F3406AEC4AE84AE84341017C6153266160175 F5209 SCC00013406AEC4AE84AE84341017B2973264 F5223 F50BE F5084 F5045 S17 YDFTSETDEFINE0000 SCC0015340617 YDFTSETELEMNT0000 SCC0012340617 YDFTSETELEMNT0000 SAEC43002341017 YDFTSETLOAD 0000 SCC00023406AEC4AE84341017C73732E844AEC4AE84AE84E689F9EF4F3406CC001510A3E11027FD9AE689F9EF4F3406CC001210A3E110260176341017B8F33262160177 F528A SCC00033406AEC4AE84AE84341017B2263264 F5294 F5013 SEC423406CC000210A3E110260178CC003E3406AEC4AE84AE84341017C51C3264 F52B4 S160179 F4FFC S108300031027017A108300041026017B F52D1 SAEC4AE84AE84E689F9EF4F3406CC001110A3E11026017CAEC4AE84AE84341017B8873262AEC4AE84AE84E689F9EF4F3406CC000210A3E11026017DCC00183406EC89FBBF3406341017C50F3266CC001C3406AEC4AE84AE84EC89FF663406341017C4F73266AEC4AE84AE84341017B839326216017E F5314 SAEC43002341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0015340617 YDFTSETELEMNT0000 SCC0018340617 YDFTSETELEMNT0000 SCC0012340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S30553410AEC4341017EEDF32E824E6554F3406AEC4AE84AE843089FA12341017 YDFTSETLOAD 0000 S17 YDFTSETIN 0000 S4353C30001C300015D1027017FCC00013406AEC4AE84AE84341017B1133264 F53A7 SCC001D3406E6554F3406AEC4AE84AE84341017C4653266 F534E SAEC4AE84AE84E689F9EF4F3406CC001510A3E11027FF09E689F9EF4F3406CC001210A3E110260180341017B7853262160181 F53F8 SCC00033406AEC4AE84AE84341017B0B83264 F5402 F52F0 SEC423406CC000410A3E110260182CC003F3406AEC4AE84AE84341017C3AE3264 F5422 S160183 F52D9 S10830005102701841083000610260185 F543F SAEC4AE84AE84E689F9EF4F3406CC001110A3E110270186CC00033406341017B0623264160187 F545E SAEC4AE84AE84341017B70A3262AEC4AE84AE84E689F9EF4F3406CC002110A3E1102701884F5F3406341017B0303264160189 F5491 S327EAEC4AE84AE843089FF683410CC000B340617 YDFTSTRCTLOAD0000 SAEC4AE84341017C7BA326D3506ED5AAEC4AE84AE84341017B6B33262EC5A34064F5F10A3E11027018AEC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB4DE68B4F3406CC000110A3E11027018BCC00013406AEC4AE84AE84341017AFB7326416018C F5503 SEC5A3406CC0018340617 Y:=0; IF LNCNT>LINELIMIT THEN BEGIN PS:=LINCHK;TERMINATE;END; END ELSE BEGIN WRITELN;WRITELN(IR.F);PS:=NOTOP;TERMINATE;END END; UNTIL PS<>RUN; END; PROCEDURE HALT;EXTERNAL; PROCEDURE FATAL(CODE,VALUE:INTEGER); BEGIN CASE CODE OF 0:WRITELN('IDENTIFIER LENGTH(',VALUE,')INCORRECT.'); 1:WRITELN('TABLE TOO LARGE; TABLE "TAB"; SIZE',VALUE,' MAXIMUM',TMAX); 2:WRITELN('TABLE TOO LARGE; TABLE "ATAB"; SIZE',VALUE,'; MAXIMUM',AMAX); 3:WRITELN('TABLE TOO LARGE; TABLE "BTAB"; SIZE',VALUE,'; MAXIMUM',BMAX); 4:WRITELN('TABLE TOO LARGE; TABLE "STAB"; SIZE',VALUE,'; MAXIMUM',SMAX); 5:WRITELN('TABLE TOO LARGE; TABLE "CODE"; SIZE',VALUE,'; MAXIMUM',CMAX) END; HALT; END; PROCEDURE LOAD; VAR I,N:INTEGER; NFULLINES:INTEGER; PARTLINE:BOOLEAN; IDLENG,TSZ,ASZ,BSZ,SSZ,CSZ:INTEGER; ORDX,ORDY:INTEGER; BEGIN READ(OBJFILE,IDLENG); READ(OBJFILE,TSZ); READ(OBJFILE,ASZ); READ(OBJFILE,BSZ); READ(OBJFILE,SSZ); READ(OBJFILE,CSZ); IF IDLENG<>ALNG THEN FATAL(0,IDLENG); IF TSZ>TMAX THEN FATAL(1,TSZ); IF ASZ>AMAX THEN FATAL(2,ASZ); IF BSZ>BMAX THEN FATAL(3,BSZ); IF SSZ>SMAX THEN FATAL(4,SSZ); IF CSZ>CMAX THEN FATAL(5,CSZ); IF (TRLOAD=1) THEN BEGIN WRITELN('SYMBOL TABLE'); WRITELN('...NAME... REF LEV ADR OBJ TYPE'); END; FOR I:=0 TO TSZ DO BEGIN FOR N:=1 TO ALNG DO BEGIN READ(OBJFILE,ORDX); TAB[I].NAME[N]:=CHR(ORDX); END; READ(OBJFILE,ORDX); READ(OBJFILE,ORDY); READ(OBJFILE,UNION.INT); TAB[I].REF:=UNION.T1INT; READ(OBJFILE,UNION.INT); TAB[I].LEV:=UNION.T5INT; READ(OBJFILE,TAB[I].ADR); TAB[I].OBJ:=KONSTANT; FOR N:=1 TO ORDX DO TAB[I].OBJ:=SUCC(TAB[I].OBJ); TAB[I].TYP:=NOTYP; FOR N:=1 TO ORDY DO TAB[I].TYP:=SUCC(TAB[I].TYP); IF (TRLOAD=1) THEN BEGIN WRITE(TAB[I].NAME:ALNG,TAB[I].REF:4,TAB[I].LEV:4,TAB[I].ADR:5); WRITELN(ORDX:6,ORDY:6); END; END; IF (TRLOAD=1) THEN BEGIN WRITELN;WRITELN('ARRAY TABLE'); WRITELN('LOW HIGH ELSEIZE INDEX TYPE ELEMENT TYPE'); END; FOR I:=1 TO ASZ DO BEGIN READ(OBJFILE,ORDX); READ(OBJFILE,ORDY); READ(OBJFILE,UNION.INT); ATAB[I].LOW:=UNION.T1INT; READ(OBJFILE,UNION.INT); ATAB[I].HIGH:=UNION.T1INT; READ(OBJFILE,UNION.INT); ATAB[I].ELSIZE:=UNION.T1INT; ATAB[I].INXTYP:=NOTYP; FOR N:=1 TO ORDX DO ATAB[I].INXTYP:=SUCC(ATAB[I].INXTYP); ATAB[I].ELTYP:=NOTYP; FOR N:=1 TO ORDY DO ATAB[I].ELTYP:=SUCC(ATAB[I].ELTYP); IF (TRLOAD=1) THEN BEGIN WRITE(ATAB[I].LOW:4,ATAB[I].HIGH:6,ATAB[I].ELSIZE:6); WRITELN(ORDX:10,ORDY:10); END; IF (TRLOAD=1) THEN BEGIN WRITELN;WRITE('BLOCK TABLE'); WRITELN(' LAST VSIZE'); END; FOR I:=1 TO BSZ DO BEGIN READ(OBJFILE,UNION.INT); BTAB[I].LAST:=UNION.T1INT; READ(OBJFILE,UNION.INT); BTAB[I].VSIZE:=UNION.T1INT; IF (TRLOAD=1) THEN WRITELN(BTAB[I].LAST:6,BTAB[I].VSIZE:7); END; IF (TRLOAD=1) THEN BEGIN WRITELN;WRITELN('STRING TABLE');END; NFULLINES:=(SSZ+1) DIV 80; PARTLINE:=((SSZ+1) MOD 80)<>0; FOR I:=0 TO NFULLINES-1 DO FOR N:=0 TO 79 DO BEGIN READ(OBJFILE,ORDX); STAB[I*80+N]:=CHR(ORDX); IF TRLOAD=1 THEN WRITE(CHR(ORDX)); END; IF PARTLINE THEN FOR I:=0 TO ((SSZ+1) MOD 80)-1 DO BEGIN READ(OBJFILE,ORDX); STAB[NFULLINES*80+I]:=CHR(ORDX); IF TRLOAD=1 THEN WRITE(CHR(ORDX)); END; IF TRLOAD=1 THEN BEGIN WRITELN;WRITELN('OPCODE LEVEL ADDRESS');END; FOR I:=0 TO CSZ DO BEGIN READ(OBJFILE,UNION.INT); CODE[I].F:=UNION.T2INT; READ(OBJFILE,UNION.INT); CODE[I].X:=UNION.T3INT; READ(OBJFILE,UNION.INT); CODE[I].Y:=UNION.T4INT; IF TRLOAD=1 THEN WRITELN(CODE[I].F:4,CODE[I].X:6,CODE[I].Y:6); END; END; END; BEGIN (*MAIN*) WRITE('OBJ FILENAME: ');READLN(OBJNAME); IF OBJNAME='' THEN OBJNAME:='PS.OUT'; RESET(OBJFILE,OBJNAME); IF FILEERROR(OBJFILE)<>0 THEN BEGIN WRITELN('I CAN''T FIND THE FILE'); HALT; END; STANTYPS := [NOTYP, INTS, BOOLS, CHARS, SEMAS]; BOOLSTR[FALSE] := 'F '; BOOLSTR[TRUE ] := 'T '; LOAD; IF BTAB[2].VSIZE>STMAX-STKINCR*PMAX THEN WRITELN('**** PROGRAM TO LARGE ****') ELSE INTERPRET; CLOSE(OBJFILE); %L END. LT; J FILENAME: ');READLN(OBJNAME); IF OBJNAME='' THEN OBJNAME:='PS.OUT'; RESET(OBJFILE,OBJNAME); IF FILEERROR(OBJFILE)<>0 BEGIN WRITELN('I CAN''T FIND THE FILE'); HALT; END; STANTYPS := [NOTYP, INTS, BOOLS, CHARS, SEMAS]; BOOLSTR[FALSE] := 'F H2:=H2+1; END; PTAB[CURPR].T:=PTAB[CURPR].T-2; END; 24:BEGIN PTAB[CURPR].T:=PTAB[CURPR].T+1; IF PTAB[CURPR].T>PTAB[CURPR].STACKSIZE THEN BEGIN PS:=STKCHK;TERMINATE;END ELSE S[PTAB[CURPR].T]:=IR.Y; END; 25:BEGIN A:=S[PTAB[CURPR].T]; PTAB[CURPR].T:=PTAB[CURPR].T-1; FOR I:=0 TO IR.X-1 DO S[A+I]:=IR.Y; END; 27:BEGIN IF EOF THEN BEGIN PS:=REDCHK;TERMINATE;END ELSE CASE IR.Y OF 1,4:READ(S[S[PTAB[CURPR].T]]); 3 :BEGIN READ(CH);S[S[PTAB[CURPR].T]]:=ORD(CH);END END; PTAB[CURPR].T:=PTAB[CURPR].T-1; END; 28:BEGIN H1:=S[PTAB[CURPR].T]; H2:=IR.Y; PTAB[CURPR].T:=PTAB[CURPR].T-1; CHRCNT:=CHRCNT+H1; IF CHRCNT>LINELENG THEN BEGIN PS:=LNGCHK;TERMINATE;END; REPEAT WRITE(STAB[H2]); H1:=H1-1; H2:=H2+1; UNTIL H1=0; END; 29:BEGIN IF IR.Y=3 THEN H1:=1 ELSE H1:=6; CHRCNT:=CHRCNT+H1; IF CHRCNT>LINELENG THEN BEGIN PS:=LNGCHK;TERMINATE;END ELSE CASE IR.Y OF 1,5:WRITE(S[PTAB[CURPR].T]:6); 2 :WRITE(BOOLSTR[ITOB(S[PTAB[CURPR].T])]:2); 3 :IF (S[PTAB[CURPR].T]CHARH) THEN BEGIN PS:=INXCHK;TERMINATE;END ELSE WRITE(CHR(S[PTAB[CURPR].T])) END; PTAB[CURPR].T:=PTAB[CURPR].T-1; END; 31:BEGIN PS:=FIN; TERMINATE; END; 32:BEGIN PTAB[CURPR].T:=PTAB[CURPR].B-1; PTAB[CURPR].PC:=S[PTAB[CURPR].B+1]; IF PTAB[CURPR].PC<>0 THEN PTAB[CURPR].B:=S[PTAB[CURPR].B+3] ELSE BEGIN NPR:=NPR-1; PTAB[CURPR].ACTIVE:=FALSE; STEPCOUNT:=0; PTAB[0].ACTIVE:=(NPR=0); END; END; 33:BEGIN PTAB[CURPR].T:=PTAB[CURPR].B; PTAB[CURPR].PC:=S[PTAB[CURPR].B+1]; PTAB[CURPR].B:=S[PTAB[CURPR].B+3]; END; 34:S[PTAB[CURPR].T]:=S[S[PTAB[CURPR].T]]; 35:S[PTAB[CURPR].T]:=BTOI(NOT ITOB(S[PTAB[CURPR].T])); 36:S[PTAB[CURPR].T]:=-S[PTAB[CURPR].T]; 38:BEGIN S[S[PTAB[CURPR].T-1]]:=S[PTAB[CURPR].T]; PTAB[CURPR].T:=PTAB[CURPR].T-2; END; 45:BEGIN PTAB[CURPR].T:=PTAB[CURPR].T-1; S[PTAB[CURPR].T]:=BTOI(S[PTAB[CURPR].T]=S[PTAB[CURPR].T+1]); END; 46:BEGIN PTAB[CURPR].T:=PTAB[CURPR].T-1; S[PTAB[CURPR].T]:=BTOI(S[PTAB[CURPR].T]<>S[PTAB[CURPR].T+1]); END; 47:BEGIN PTAB[CURPR].T:=PTAB[CURPR].T-1; S[PTAB[CURPR].T]:=BTOI(S[PTAB[CURPR].T]S[PTAB[CURPR].T+1]); END; 50:BEGIN PTAB[CURPR].T:=PTAB[CURPR].T-1; S[PTAB[CURPR].T]:=BTOI(S[PTAB[CURPR].T]>=S[PTAB[CURPR].T+1]); END; 51:BEGIN PTAB[CURPR].T:=PTAB[CURPR].T-1; S[PTAB[CURPR].T]:=BTOI(ITOB(S[PTAB[CURPR].T]) OR ITOB(S[PTAB[CURPR].T])); END; 52:BEGIN PTAB[CURPR].T:=PTAB[CURPR].T-1; S[PTAB[CURPR].T]:=S[PTAB[CURPR].T]+S[PTAB[CURPR].T+1]; END; 53:BEGIN PTAB[CURPR].T:=PTAB[CURPR].T-1; S[PTAB[CURPR].T]:=S[PTAB[CURPR].T]-S[PTAB[CURPR].T+1]; END; 56:BEGIN PTAB[CURPR].T:=PTAB[CURPR].T-1; S[PTAB[CURPR].T]:=BTOI(ITOB(S[PTAB[CURPR].T]) AND ITOB(S[PTAB[CURPR].T+1])); END; 57:BEGIN PTAB[CURPR].T:=PTAB[CURPR].T-1; S[PTAB[CURPR].T]:=S[PTAB[CURPR].T]*S[PTAB[CURPR].T+1]; END; 58:BEGIN PTAB[CURPR].T:=PTAB[CURPR].T-1; IF S[PTAB[CURPR].T+1]=0 THEN BEGIN PS:=DIVCHK;TERMINATE;END ELSE S[PTAB[CURPR].T]:=S[PTAB[CURPR].T] DIV S[PTAB[CURPR].T+1]; END; 59:BEGIN PTAB[CURPR].T:=PTAB[CURPR].T-1; IF S[PTAB[CURPR].T]=0 THEN BEGIN PS:=DIVCHK;TERMINATE;END ELSE S[PTAB[CURPR].T]:=S[PTAB[CURPR].T] MOD S[PTAB[CURPR].T+1]; END; 62:BEGIN IF EOF THEN BEGIN PS:=REDCHK;TERMINATE;END ELSE READLN; END; 63:BEGIN WRITELN; LNCNT:=LNCNT+1; CHRCNTURPR].T:=PTAB[CURPR].T+1; IF PTAB[CURPR].T>PTAB[CURPR].STACKSIZE THEN BEGIN PS:=STKCHK;TERMINATE; END ELSE S[PTAB[CURPR].T]:=S[PTAB[CURPR].DISPLAY[IR.X]+IR.Y]; END; 2:BEGIN PTAB[CURPR].T:=PTAB[CURPR].T+1; IF PTAB[CURPR].T>PTAB[CURPR].STACKSIZE THEN BEGIN PS:=STKCHK;TERMINATE; END ELSE S[PTAB[CURPR].T]:=S[S[PTAB[CURPR].DISPLAY[IR.X]+IR.Y]]; END; 3:BEGIN H1:=IR.Y; H2:=IR.X; H3:=PTAB[CURPR].B; REPEAT PTAB[CURPR].DISPLAY[H1]:=H3; H1:=H1-1; H3:=S[H3+2]; UNTIL H1=H2; END; 4:PFLAG:=TRUE; 5:BEGIN PFLAG:=FALSE; PTAB[0].ACTIVE:=FALSE; END; 6:BEGIN H1:=S[PTAB[CURPR].T]; PTAB[CURPR].T:=PTAB[CURPR].T-1; IF S[H1]>0 THEN S[H1]:=S[H1]-1 ELSE BEGIN PTAB[CURPR].SUSPEND:=H1;STEPCOUNT:=0;END; END; 7:BEGIN H1:=S[PTAB[CURPR].T]; PTAB[CURPR].T:=PTAB[CURPR].T-1; H2:=PMAX+1; H3:=TRUNC(RAN*H2); WHILE (H2>=0) AND (PTAB[H3].SUSPEND<>H1) DO BEGIN H3:=(H3+1) MOD (PMAX+1); H2:=H2-1; END; IF H2<0 THEN S[H1]:=S[H1]+1 ELSE PTAB[H3].SUSPEND:=0; END; 8:CASE IR.Y OF 17:BEGIN PTAB[CURPR].T:=PTAB[CURPR].T+1; IF PTAB[CURPR].T>PTAB[CURPR].STACKSIZE THEN BEGIN PS:=STKCHK; TERMINATE; END ELSE S[PTAB[CURPR].T]:=BTOI(EOF); END; 18:BEGIN PTAB[CURPR].T:=PTAB[CURPR].T+1; IF PTAB[CURPR].T>PTAB[CURPR].STACKSIZE THEN BEGIN PS:=STKCHK; TERMINATE; END ELSE S[PTAB[CURPR].T]:=BTOI(EOLN) END END; 10:PTAB[CURPR].PC:=IR.Y; 11:BEGIN IF S[PTAB[CURPR].T]=FALS THEN PTAB[CURPR].PC:=IR.Y; PTAB[CURPR].T:=PTAB[CURPR].T-1; END; 14:BEGIN H1:=S[PTAB[CURPR].T-1]; IF H1<=S[PTAB[CURPR].T] THEN S[S[PTAB[CURPR].T-2]]:=H1 ELSE BEGIN PTAB[CURPR].T:=PTAB[CURPR].T-3; PTAB[CURPR].PC:=IR.Y; END; END; 15:BEGIN H2:=S[PTAB[CURPR].T-2]; H1:=S[H2]+1; IF H1<=S[PTAB[CURPR].T] THEN BEGIN S[H2]:=H1; PTAB[CURPR].PC:=IR.Y; END ELSE PTAB[CURPR].T:=PTAB[CURPR].T-3; END; 18:BEGIN H1:=BTAB[TAB[IR.Y].REF].VSIZE; IF PTAB[CURPR].T+H1>PTAB[CURPR].STACKSIZE THEN BEGIN PS:=STKCHK; TERMINATE; END ELSE BEGIN PTAB[CURPR].T:=PTAB[CURPR].T+5; S[PTAB[CURPR].T-1]:=H1-1; S[PTAB[CURPR].T]:=IR.Y; END; END; 19:BEGIN PTAB[CURPR].ACTIVE:=TRUE; H1:=PTAB[CURPR].T-IR.Y; H2:=S[H1+4]; H3:=TAB[H2].LEV; PTAB[CURPR].DISPLAY[H3+1]:=H1; H4:=S[H1+3]+H1; S[H1+1]:=PTAB[CURPR].PC; S[H1+2]:=PTAB[CURPR].DISPLAY[H3]; IF PFLAG THEN S[H1+3]:=PTAB[0].B ELSE S[H1+3]:=PTAB[CURPR].B; FOR H3:=PTAB[CURPR].T+1 TO H4 DO S[H3]:=0; PTAB[CURPR].B:=H1; PTAB[CURPR].T:=H4; PTAB[CURPR].PC:=TAB[H2].ADR; END; 21:BEGIN H1:=IR.Y; H2:=ATAB[H1].LOW; H3:=S[PTAB[CURPR].T]; IF H3

ATAB[H1].HIGH THEN BEGIN PS:=INXCHK; TERMINATE; END ELSE BEGIN PTAB[CURPR].T:=PTAB[CURPR].T-1; S[PTAB[CURPR].T]:=S[PTAB[CURPR].T]+(H3-H2)*ATAB[H1].ELSIZE; END; END; 22:BEGIN H1:=S[PTAB[CURPR].T]; PTAB[CURPR].T:=PTAB[CURPR].T-1; H2:=IR.Y+PTAB[CURPR].T; IF H2>PTAB[CURPR].STACKSIZE THEN BEGIN PS:=STKCHK;TERMINATE;END ELSE WHILE PTAB[CURPR].T

=1.0 DO Z:=Z-1; RAN:=Z; END; PROCEDURE CHOOSEPROC; VAR D:INTEGER; BEGIN LASTPROC:=CURPR; D:=PMAX+1; CURPR:=(CURPR+TRUNC(RAN*PMAX)) MOD D; WHILE (NOT PTAB[CURPR].ACTIVE OR (PTAB[CURPR].SUSPEND<>0)) AND (D>=0) DO BEGIN D:=D-1; CURPR:=(CURPR+1) MOD (PMAX+1); END; IF D<0 THEN BEGIN PS:=DEADLOCK; TERMINATE; END ELSE STEPCOUNT:=TRUNC(RAN*STEPMAX); END; FUNCTION ITOB(I:INTEGER):BOOLEAN; BEGIN IF I=TRU THEN ITOB:=TRUE ELSE ITOB:=FALSE; END; FUNCTION BTOI(B:BOOLEAN):INTEGER; BEGIN IF B THEN BTOI:=TRU ELSE BTOI:=FALS; END; PROCEDURE TERMINATE; VAR INDEX:INTEGER; BEGIN WRITELN; IF PS<>FIN THEN BEGIN WRITELN; WRITE('HALT AT ',CURPC:5,' IN PROCESS '); WRITE(LASTPROC:4,' BECAUSE OF '); CASE PS OF DEADLOCK:WRITELN('DEADLOCK'); DIVCHK :WRITELN('DIVISION BY 0'); INXCHK :WRITELN('INVALID INDEX'); STKCHK :WRITELN('STACK OVERFLOW'); LINCHK :WRITELN('TOO MUCH OUTPUT'); LNGCHK :WRITELN('LINE TOO LONG'); NOTOP :WRITELN('OPCODE NOT IMPLEMENTED'); REDCHK :WRITELN('READING PAST END OF FILE') END; END; WRITELN; WRITELN('PROC# ACTIVE SUSPEND PC'); WRITELN('=========================='); FOR INDEX:=0 TO PMAX DO BEGIN WRITE(INDEX:4,' ',BOOLSTR[PTAB[INDEX].ACTIVE]:1); WRITELN(PTAB[INDEX].SUSPEND:10,PTAB[INDEX].PC:5); END; WRITELN; WRITELN('** GLOBAL VARIABLES ***'); FOR INDEX:=BTAB[1].LAST+1 TO TMAX DO IF TAB[INDEX].LEV=1 THEN IF TAB[INDEX].OBJ=VARIABLE THEN IF TAB[INDEX].TYP IN STANTYPS THEN CASE TAB[INDEX].TYP OF INTS,SEMAS:WRITELN(TAB[INDEX].NAME,' = ',S[TAB[INDEX].ADR]); BOOLS:WRITELN(TAB[INDEX].NAME,' = ',BOOLSTR[ITOB(S[TAB[INDEX].ADR])]); CHARS:WRITELN(TAB[INDEX].NAME,' = ',CHR(S[TAB[INDEX].ADR] AND 127)) END; END; BEGIN (*INTERPRETER*) WRITELN('- CONCURRENT PASCAL-S INTERPRETER: REV',REVLEV,' -'); WRITELN; S[1]:=0; s[2]:=0; S[3]:=-1; S[4]:=BTAB[1].LAST; PTAB[0].B:=0; PTAB[0].SUSPEND:=0; PTAB[0].DISPLAY[1]:=0; PTAB[0].T:=BTAB[2].VSIZE-1; PTAB[0].PC:=TAB[S[4]].ADR; PTAB[0].ACTIVE:=TRUE; PTAB[0].STACKSIZE:=STMAX-PMAX*STKINCR; FOR CURPR:=1 TO PMAX DO BEGIN PTAB[CURPR].ACTIVE:=FALSE; PTAB[CURPR].DISPLAY[1]:=0; PTAB[CURPR].PC:=0; PTAB[CURPR].SUSPEND:=0; PTAB[CURPR].B:=PTAB[CURPR-1].STACKSIZE+1; PTAB[CURPR].STACKSIZE:=PTAB[CURPR].B+STKINCR-1; PTAB[CURPR].T:=PTAB[CURPR].B-1; END; NPR:=0; CURPR:=0; LASTPROC:=CURPR; PFLAG:=FALSE; STEPCOUNT:=0; PS:=RUN; LNCNT:=0; CHRCNT:=0; TRACELN:=1; REPEAT IF PTAB[0].ACTIVE THEN CURPR:=0 ELSE IF STEPCOUNT=0 THEN CHOOSEPROC ELSE STEPCOUNT:=STEPCOUNT-1; IR:=CODE[PTAB[CURPR].PC]; CURPC:=ORD(PTAB[CURPR].PC); PTAB[CURPR].PC:=PTAB[CURPR].PC+1; IF PFLAG THEN BEGIN IF IR.F=18 THEN NPR:=NPR+1; CURPR:=NPR; END; (*DECODE INSTR*) IF (TRACE=1) THEN BEGIN IF (TRACELN MOD 55)=0 THEN WRITELN('PROC# PC OPCD OPNDY OPNDX') ELSE BEGIN WRITE(CURPR:4,CURPC:5,ORD(IR.F):5); WRITELN(ORD(IR.Y):6,ORD(IR.X):6); END; TRACELN:=TRACELN+1; END; (*EXECUTE THE INSTR*) CASE IR.F OF 0:BEGIN PTAB[CURPR].T:=PTAB[CURPR].T+1; IF PTAB[CURPR].T>PTAB[CURPR].STACKSIZE THEN BEGIN PS:=STKCHK;TERMINATE; END ELSE S[PTAB[CURPR].T]:=PTAB[CURPR].DISPLAY[IR.X]+IR.Y; END; 1:BEGIN PTAB[CPRINT:=-1; LC:=0; LINENUMBER:=0; LL:=0; SKIPFLAG:=FALSE; SX:=0; T:=-1; END; BEGIN MODESETUP; PAGECNT:=1; IF PRINTFLAG THEN BEGIN PAGE(LST); WRITE(LST,'LINE# LOCN STATEMENT '); WRITE(LST,' - CONCURRENT PASCAL-S COMPILER : REV ',REVLEV,' -'); WRITELN(LST,' PAGE ',PAGECNT:3); END ELSE BEGIN WRITELN; WRITELN(' - CONCURRENT PASCAL-S COMPILER : REV ',REVLEV,' -'); WRITELN; END; INIT1; IF SY<>PROGRAMSY THEN COMPERROR(ERKEY) ELSE BEGIN INSYMBOL; IF SY<>IDENT THEN COMPERROR(ERID) ELSE INSYMBOL; END; ENTER('',VARIABLE,NOTYP,0); ENTER('FALSE',KONSTANT,BOOLS,0); ENTER('TRUE',KONSTANT,BOOLS,1); ENTER('CHAR',TYPE1,CHARS,1); ENTER('BOOLEAN',TYPE1,BOOLS,1); ENTER('INTEGER',TYPE1,INTS,1); ENTER('SEMAPHORE',TYPE1,SEMAS,1); ENTER('EOF',FUNKTION,BOOLS,17); ENTER('EOLN',FUNKTION,BOOLS,18); ENTER('READ',PROZEDURE,NOTYP,1); ENTER('READLN',PROZEDURE,NOTYP,2); ENTER('WRITE',PROZEDURE,NOTYP,3); ENTER('WRITELN',PROZEDURE,NOTYP,4); ENTER('WAIT',PROZEDURE,NOTYP,5); ENTER('SIGNAL',PROZEDURE,NOTYP,6); ENTER('',PROZEDURE,NOTYP,0); BTAB[1].LAST:=T; BTAB[1].LASTPAR:=1; BTAB[1].PSIZE:=0; BTAB[1].VSIZE:=0; BLOCK(BLOCKBEGSYS+STATBEGSYS,FALSE,1); IF SY<>PERIOD THEN COMPERROR(ERPUN); EMIT(31); IF NOT EOF(SRCFILE) THEN WHILE NOT EOF(SRCFILE) DO READLN(SRCFILE); IF ERRS=[] THEN GENERATE ELSE ERRORMSG; WRITELN; CLOSE(SRCFILE); CLOSE(OBJFILE); IF PRINTFLAG THEN CLOSE(LST); %L END. BEGSYS,FALSE,1); IF SY<>PERIOD THEN COMPERROR(ERPUN); EMIT(31); IF NOT EOF(SRCFILE) THEN WHILE NO THEN COMPERROR(ERID) ELSE INSYMBOL; END; ENTER('',VARIABLE,NOTYP,0); ENTER('FALSE',KONSTANT,BOOLS,0); ENTER('TRUE',KONSTANT,BOOLS,1); ENTER('CHAR',TYPE1,CHARS,1); ENTER('BOOLEAN',TYPE1,BOOLS,1); ENTER('INTEGER',TYPE1,INTS,1); ENTER('SEMAPHORE',TYPE1,SEMAS,1); ENTER('EOF',FUNKTION,BOOLS,17); ENTER('EOLN',FUNKTION,BOOLS,18); ENTER('READ',PROZEDURE,NOTYP,1); ENTER('READLN',PROZEDURE,NOTYP,2); ENTER('WRITE',PROZEDURE,NOTYP,3); ENTER('WRITELN',PROZEDURE,NOTYP,4); ENTER('WAIT',PROZEDURE,NOTYP,5); ENTER('SIGNAL',PROZEDURE,NOTYP,6); ENTER('',PROZEDURE,NOTYP,0); BTAB[1].LAST:=T; BTAB[1].LASTPAR:=1; BTAB[1].PSIZE:=0; BTAB[1].VSIZE:=0; BLOCK(BLOCKBEGSYS+STATBEGSYS,FALSE,1); IF SY<>PERIOD THEN COMPERROR(ERPUN) EMIT(31); IF NOT EOF(SRCFILE) THEN WHILE NOPROGRAM INTERPRETPS; %N (*PASCAL/S INTERPRETER*) (*AUTHOR: N. WIRTH, E. T. H. CH-8092 ZURICH, 1.3.76*) (*MODIFIED: M. BEN-ARI, TEL AVIV UNIV., 1980*) (*SEPARATED FROM INTERPRETER: P. H. LUTZ, ROCHESTER INST OF TECHNOLOGY, 1984*) (*ADAPTED FOR PC VERSION PASCAL/S : MS-DOC 3.2, TURBO PASCAL 3.0*) (*BY : G. BRICAULT AND J. HELIOTIS, REV 1.0, JULY 14,987*) (* MODIFIED FOR THE TANDY/RADIO SHACK COLOR COMPUTER*) (* BY: C. BLOODWORTH, REV 2.0 SEP 1988*) CONST REVLEV = '2.0'; (*THE FOLOWING 11 CONSTANTS MUST BE THE SAME IN BOTH PSC AND PSI*) FNSIZE= 15; (* NO. OF CHARS IN A FILE NAME*) ALNG = 10; (* NO. OF SIGNIFICANT CHARS IN IDENTIFIERS *) TMAX = 140; (* SIZE OF TABLE *) BMAX = 20; (* SIZE OF BLOCK-TABLE *) AMAX = 10; (* SIZE OF ARRAY-TABLE *) CMAX =1000; (* SIZE OF CODE *) LMAX = 15; (* MAXIMUM NUMBER OF PROCEDURES *) OMAX = 63; (* HIGHEST ORDER ORDE *) XMAX =32767; NMAX =32767; SMAX = 600; (*SIZE OF STRING TABLE*) LINELENG=132; LINELIMIT=600; PMAX=9; STKINCR=200; STMAX=2500; TRACE=0; TRLOAD=0; TYPE ALFA=STRING(ALNG); FTYPE=ARRAY [1..2] OF STRING(FNSIZE); INDEX=-XMAX..+XMAX; INDEXA=-OMAX..+OMAX; INDEXB=-LMAX..+LMAX; INDEXC=-NMAX..+NMAX; INDEXD=0..LMAX; INTTYPES=(T1,T2,T3,T4,T5,REGULAR); OBJECT=(KONSTANT,VARIABLE,TYPE1,PROZEDURE,FUNKTION); ORDER=RECORD F:INDEXA; X:INDEXB; Y:INDEXC; END; PTYPE=0..PMAX; TYPES=(NOTYP,INTS,BOOLS,CHARS,ARRAYS,SEMAS); TYPSET=SET OF TYPES; VAR CH:CHAR; OBJFILE:FILE OF INTEGER; OBJFLAG:BOOLEAN; OBJNAME:STRING(FNSIZE); STANTYPS:TYPSET; ATAB:ARRAY [1..AMAX] OF RECORD INXTYP:TYPES; ELTYP:TYPES; LOW:INDEX; HIGH:INDEX; ELSIZE:INDEX; END; BOOLSTR:ARRAY [BOOLEAN] OF ALFA; BTAB:ARRAY [1..BMAX] OF RECORD LAST:INDEX; VSIZE:INDEX; END; CODE:ARRAY[0..CMAX] OF ORDER; STAB:ARRAY [0..SMAX] OF CHAR; TAB:ARRAY [0..TMAX] OF RECORD NAME:ALFA; OBJ:OBJECT; TYP:TYPES; REF:INDEX; LEV:INDEXD; ADR:INTEGER; END; UNION:RECORD CASE TAG:INTTYPES OF T1:(T1INT:INDEX); T2:(T2INT:INDEXA); ST'; REPEAT OBJNAME:=''; WRITE('LIST FILE [',TEMPSTR,'] : '); READLN(OBJNAME); IF OBJNAME = '' THEN OBJNAME := TEMPSTR; REWRITE(OBJFILE,OBJNAME); EXISTS := (FILEERROR(OBJFILE) = 0); IF NOT EXISTS THEN WRITELN('CAN''T OPEN FILE ',OBJNAME); UNTIL EXISTS; STRINGCOPY(SRCNAME,1,STRINGPOS('.',SRCNAME),TEMPSTR); TEMPSTR:=TEMPSTR+ 'ASM'; PRINTFLAG:=FALSE; REPEAT LSTNAME:=''; WRITE('ASM FILE [',TEMPSTR,'] : '); READLN(LSTNAME); IF LSTNAME='NONE' THEN EXISTS:=TRUE ELSE BEGIN IF LSTNAME = '' THEN LSTNAME := TEMPSTR; REWRITE(LST,LSTNAME); EXISTS := (FILEERROR(LST) = 0); IF NOT EXISTS THEN WRITELN('CAN''T OPEN FILE ',LSTNAME); IF EXISTS THEN PRINTFLAG:=TRUE; END; UNTIL EXISTS; END; (* STARTUP *) PROCEDURE GENERATE; VAR I:INTEGER; N:INTEGER; INTVAL:INTEGER; NFULLINES:INTEGER; PARTLINE:BOOLEAN; BEGIN INTVAL:=ORD(ALNG); WRITE(OBJFILE,INTVAL,T,A,B,SX,LC); FOR I:=0 TO T DO BEGIN FOR N:=1 TO ALNG DO BEGIN INTVAL:=ORD(TAB[I].NAME[N]); WRITE(OBJFILE,INTVAL); END; INTVAL:=ORD(TAB[I].OBJ); WRITE(OBJFILE,INTVAL); INTVAL:=ORD(TAB[I].TYP); WRITE(OBJFILE,INTVAL); INTVAL:=ORD(TAB[I].REF); WRITE(OBJFILE,INTVAL); INTVAL:=ORD(TAB[I].LEV); WRITE(OBJFILE,INTVAL); INTVAL:=ORD(TAB[I].ADR); WRITE(OBJFILE,INTVAL); END; FOR I:=1 TO A DO BEGIN INTVAL:=ORD(ATAB[I].INXTYP); WRITE(OBJFILE,INTVAL); INTVAL:=ORD(ATAB[I].ELTYP); WRITE(OBJFILE,INTVAL); INTVAL:=ORD(ATAB[I].LOW); WRITE(OBJFILE,INTVAL); INTVAL:=ORD(ATAB[I].HIGH); WRITE(OBJFILE,INTVAL); INTVAL:=ORD(ATAB[I].ELSIZE); WRITE(OBJFILE,INTVAL); END; FOR I:=1 TO B DO BEGIN INTVAL:=ORD(BTAB[I].LAST); WRITE(OBJFILE,INTVAL); INTVAL:=ORD(BTAB[I].VSIZE); WRITE(OBJFILE,INTVAL); END; NFULLINES:=(SX+1) DIV 80; PARTLINE:=((SX+1) MOD 80)<>0; FOR I:=0 TO NFULLINES-1 DO FOR N:=0 TO 79 DO BEGIN INTVAL:=ORD(STAB[I*80+N]); WRITE(OBJFILE,INTVAL); END; IF PARTLINE THEN FOR I:=0 TO ((SX+1) MOD 80)-1 DO BEGIN INTVAL:=ORD(STAB[NFULLINES*80+I]); WRITE(OBJFILE,INTVAL); END; FOR I:=0 TO LC DO BEGIN INTVAL:=ORD(CODE[I].F);WRITE(OBJFILE,INTVAL); INTVAL:=ORD(CODE[I].X);WRITE(OBJFILE,INTVAL); INTVAL:=ORD(CODE[I].Y);WRITE(OBJFILE,INTVAL); END; IF PRINTFLAG THEN BEGIN WRITELN(LST,'COMPILED PROGRAM STATISTICS'); WRITELN(LST,'---------------------------'); WRITELN(LST,'SYMBOL TABLE SIZE: ',T:4); WRITELN(LST,'ARRAY TABLE SIZE : ',A:4); WRITELN(LST,'BLOCK TABLE SIZE : ',B:4); WRITELN(LST,'STRING CHARACTERS: ',SX:4); WRITELN(LST,'P-CODE SIZE : ',LC:4); END ELSE BEGIN WRITELN('COMPILED PROGRAM STATISTICS'); WRITELN('---------------------------'); WRITELN('SYMBOL TABLE SIZE: ',T:4); WRITELN('ARRAY TABLE SIZE : ',A:4); WRITELN('BLOCK TABLE SIZE : ',B:4); WRITELN('STRING CHARACTERS: ',SX:4); WRITELN('P-CODE SIZE : ',LC:4); END; END; PROCEDURE INIT1; BEGIN KEY[1]:='AND'; KEY[2]:='ARRAY'; KEY[3]:='BEGIN'; KEY[4]:='COBEGIN'; KEY[5]:='COEND'; KEY[6]:='CONST'; KEY[7]:='DIV'; KEY[8]:='DO'; KEY[9]:='ELSE'; KEY[10]:='END'; KEY[11]:='FOR'; KEY[12]:='FUNCTION'; KEY[13]:='IF'; KEY[14]:='MOD'; KEY[15]:='NOT'; KEY[16]:='OF'; KEY[17]:='OR'; KEY[18]:='PROCEDURE'; KEY[19]:='PROGRAM'; KEY[20]:='REPEAT'; KEY[21]:='THEN'; KEY[22]:='TO'; KEY[23]:='TYPE'; KEY[24]:='UNTIL'; KEY[25]:='VAR'; KEY[26]:='WHILE'; KSY[1]:=ANDSY; KSY[2]:=ARRAYSY; KSY[3]:=BEGINSY; KSY[4]:=BEGINSY; KSY[5]:=ENDSY; KSY[6]:=CONSTSY; KSY[7]:=IDIV; KSY[8]:=DOSY; KSY[9]:=ELSESY; KSY[10]:=ENDSY; KSY[11]:=FORSY; KSY[12]:=FUNCTIONSY; KSY[13]:=IFSY; KSY[14]:=IMOD; KSY[15]:=NOTSY; KSY[16]:=OFSY; KSY[17]:=ORSY; KSY[18]:=PROCEDURESY; KSY[19]:=PROGRAMSY; KSY[20]:=REPEATSY; KSY[21]:=THENSY; KSY[22]:=TOSY; KSY[23]:=TYPESY; KSY[24]:=UNTILSY; KSY[25]:=VARSY; KSY[26]:=WHILESY; SPS['+']:=PLUS; SPS['-']:=MINUS; SPS['*']:=TIMES; SPS['/']:=IDIV;(*!!! TO MAKE IT MORE NORMAL*) SPS['(']:=LPARENT; SPS[')']:=RPARENT; SPS['=']:=EQL; SPS[',']:=COMMA; SPS['[']:=LBRACK; SPS[']']:=RBRACK; SPS['~']:=NOTSY; SPS['&']:=ANDSY; SPS[';']:=SEMICOLON; SPS['|']:=ORSY; CONSTBEGSYS:=[PLUS,MINUS,INTCON,CHARCON,IDENT]; TYPEBEGSYS:=[IDENT,ARRAYSY]; BLOCKBEGSYS:=[CONSTSY,TYPESY,VARSY,PROCEDURESY,FUNCTIONSY,BEGINSY]; FACBEGSYS:=[INTCON,CHARCON,IDENT,LPARENT,NOTSY]; STATBEGSYS:=[BEGINSY,IFSY,WHILESY,REPEATSY,FORSY]; STANTYPS:=[NOTYP,INTS,BOOLS,CHARS,SEMAS]; A:=0; B:=1; CC:=0; CH:=' '; DISPLAY[0]:=1; ERRPOS:=0; ERRS:=[]; LASTJ) DIV 2; IF ID <= KEY[K] THEN J := K-1; IF ID >= KEY[K] THEN I := K+1 UNTIL I > J; IF I-1 > J THEN SY := KSY[K] ELSE SY := IDENT END ELSE IF ((CH>='0') AND (CH<='9')) THEN BEGIN K:=0; INUM:=0; SY:=INTCON; REPEAT INUM:=INUM*10+ORD(CH)-ORD('0'); K:=K+1; NEXTCH; UNTIL NOT ((CH>='0') AND (CH<='9')); IF (K>KMAX) OR (INUM>NMAX) THEN BEGIN COMPERROR(ERLN); INUM:=0; K:=0; END; END ELSE IF ((CH='+') OR (CH='-') OR (CH='*') OR (CH='/') OR (CH=')') OR (CH='=') OR (CH=',') OR (CH='[') OR (CH=']') OR (CH=';') OR (CH='&') OR (CH='|') OR (CH='~')) THEN BEGIN SY := SPS[CH]; NEXTCH END ELSE IF ((CH='+') OR (CH='-') OR (CH='*') OR (CH='/') OR (CH=')') OR (CH='=') OR (CH=',') OR (CH='[') OR (CH=']') OR (CH=';') OR (CH='&') OR (CH='|') OR (CH='~')) THEN BEGIN SY := SPS[CH]; NEXTCH END ELSE CASE CH OF ':' : BEGIN NEXTCH; IF CH = '=' THEN BEGIN SY := BECOMES; NEXTCH END ELSE SY := COLON END; '<' : BEGIN NEXTCH; IF CH = '=' THEN BEGIN SY := LEQ; NEXTCH END ELSE IF CH = '>' THEN BEGIN SY := NEQ; NEXTCH END ELSE SY := LSS END; '>' : BEGIN NEXTCH; IF CH = '=' THEN BEGIN SY := GEQ; NEXTCH END ELSE SY := GTR END; '.' : BEGIN NEXTCH; IF CH = '.' THEN BEGIN SY := COLON; NEXTCH END ELSE SY := PERIOD END; '''' : BEGIN K:=0; 2: NEXTCH; IF CH = '''' THEN BEGIN NEXTCH; IF CH <> '''' THEN GOTO 3 END ; IF SX+K =SMAX THEN FATAL(3); STAB[SX+K]:=CH; K:=K+1; IF CC=1 THEN K:=0 ELSE GOTO 2; 3: IF K=1 THEN BEGIN SY:=CHARCON; INUM:=ORD(STAB[SX]); END ELSE IF K=0 THEN BEGIN COMPERROR(ERSH); SY:=CHARCON; INUM:=0; END ELSE BEGIN SY:=STRINGY; INUM:=SX; SLENG:=K; SX:=SX+K; END; END; '(' : BEGIN NEXTCH; IF CH <> '*' THEN SY := LPARENT ELSE BEGIN (* COMMENT *) NEXTCH; REPEAT WHILE CH <> '*' DO NEXTCH; NEXTCH UNTIL CH = ')'; NEXTCH; GOTO 1 END END; '{' : BEGIN (* COMMENT *) NEXTCH; WHILE CH <> '}' DO NEXTCH; NEXTCH; GOTO 1 END ELSE BEGIN COMPERROR(ERCH);NEXTCH;GOTO 1 END END (*CASE*) END (*INSYMBOL *) ; PROCEDURE ENTER(X0:ALFA;X1:OBJECT;X2:TYPES;X3:INTEGER); BEGIN T:=T+1; TAB[T].NAME:=X0; TAB[T].LINK:=T-1; TAB[T].OBJ:=X1; TAB[T].TYP:=X2; TAB[T].REF:=0; TAB[T].NORMAL:=TRUE; TAB[T].LEV:=0; TAB[T].ADR:=X3; END; PROCEDURE ENTERARRAY(TP: TYPES; L,H: INTEGER); BEGIN IF L > H THEN COMPERROR(ERTYP); IF (ABS(L)>XMAX) OR (ABS(H)>XMAX) THEN BEGIN COMPERROR(ERTYP); L := 0; H := 0; END ; IF A = AMAX THEN FATAL(4) ELSE BEGIN A := A+1; ATAB[A].INXTYP := TP; ATAB[A].LOW := L; ATAB[A].HIGH := H END END (*ENTERARRAY *) ; PROCEDURE ENTERBLOCK; BEGIN IF B = BMAX THEN FATAL(2) ELSE BEGIN B := B+1; BTAB[B].LAST := 0; BTAB[B].LASTPAR := 0 END END (* ENTERBLOCK *) ; PROCEDURE EMIT(FCT: INTEGER); BEGIN IF LC = CMAX THEN FATAL(6); CODE[LC].F := FCT; LC := LC+1 END (* EMIT *) ; PROCEDURE EMIT1(FCT,B: INTEGER); BEGIN IF LC = CMAX THEN FATAL(6); CODE[LC].F := FCT; CODE[LC].Y := B; LC := LC+1 END (* EMIT1 *) ; PROCEDURE EMIT2(FCT,A,B: INTEGER); BEGIN IF LC = CMAX THEN FATAL(6); CODE[LC].F := FCT; CODE[LC].X := A; CODE[LC].Y := B; LC := LC+1 END (* EMIT2 *) ; %L %CBLOCK %N PROCEDURE MODESETUP; VAR EXISTS: BOOLEAN; TEMPSTR:STRING(20); BEGIN PAGE; WRITELN(' - CONCURRENT PASCAL-S COMPILER : REV ',REVLEV,' -'); WRITELN; REPEAT SRCNAME:=''; WRITE('SOURCE FILE [.PAS] : '); READLN(SRCNAME); IF (STRINGPOS('/',SRCNAME)<>0) THEN SRCNAME[STRINGPOS('/',SRCNAME)]:='.'; IF (STRINGPOS('.',SRCNAME)=0) THEN SRCNAME := SRCNAME + '.PAS'; RESET(SRCFILE,SRCNAME); EXISTS := (FILEERROR(SRCFILE) = 0); IF NOT EXISTS THEN WRITELN('FILE ', SRCNAME, ' NOT FOUND'); UNTIL EXISTS; STRINGCOPY(SRCNAME,1,STRINGPOS('.',SRCNAME),TEMPSTR); TEMPSTR:=TEMPSTR+ 'L(*SEGS REPRESENTING CURRENT BLOCK NESTING*) LINE : ARRAY [1..LLNG] OF CHAR; (*ASSEMBLED LINE OF OUTPUT*) TAB : ARRAY [0..TMAX] OF RECORD (* 300*21=6300*) NAME : ALFA; LINK : INDEX; OBJ : OBJECT; TYP : TYPES; BASETP: TYPES; REF : INDEX; NORMAL: BOOLEAN; LEV : 0 .. LMAX; ADR : INTEGER; INITVAL:INTEGER; END ; STAB: ARRAY [0..SMAX] OF CHAR; (*LITERAL STRING TABLE*) PROCEDURE OUTLINE; VAR I:INTEGER; BEGIN IF (LINENUMBER MOD 60=0 ) AND PRINTFLAG THEN BEGIN PAGE(LST); WRITE(LST,'LINE# LOCN STATEMENT '); WRITE(LST,' - CONCURRENT PASCAL-S COMPILER : REV ',REVLEV,' -'); WRITELN(LST,' PAGE ',PAGECNT:3); END; IF PRINTFLAG THEN WRITE(LST,LINENUMBER:5,' ',LC:4,' ') ELSE WRITE(LINENUMBER:5,' ',LC:4,' '); FOR I:=1 TO 11 DO IF PRINTFLAG THEN WRITE(LST,LINE[I]) ELSE WRITE(LINE[I]); IF PRINTFLAG THEN WRITELN(LST) ELSE WRITELN; LASTPRINT:=LINENUMBER; END; PROCEDURE GETMSG(X:ER;S:STRING(15)); VAR MSG:ARRAY [ER] OF STRING(11); BEGIN MSG[ERID] :='IDENTIFIER'; MSG[ERTYP]:='TYPE'; MSG[ERKEY]:='KEYWORD'; MSG[ERPUN]:='PUNCTUATION'; MSG[ERPAR]:='PARAMETER'; MSG[ERNF] :='NOT FOUND'; MSG[ERDUP]:='DUPLICATE'; MSG[ERCH] :='CHARACTER'; MSG[ERSH] :='TOO SHORT'; MSG[ERLN] :='TOO LONG'; MSG[EROP] :='ILLEGAL OP'; S:=MSG[X]; END; PROCEDURE ERRORMSG; VAR K: ER;S:STRING(15); BEGIN WRITELN(' COMPILATION ERRORS'); WRITELN('CODE CONDITION'); FOR K:=ERID TO EROP DO IF K IN ERRS THEN BEGIN GETMSG(K,S); WRITELN(ORD(K),' ',S); END; END (* ERRORMSG *) ; PROCEDURE COMPERROR(N:ER); VAR X:INTEGER;S:STRING(10); BEGIN IF (NOT LFILE) AND (LASTPRINT ERRPOS THEN BEGIN IF PRINTFLAG THEN FOR X:=1 TO CC-ERRPOS DO WRITE(LST,'"'); FOR X:=1 TO CC-ERRPOS-1 DO WRITE('"'); GETMSG(ER(N),S); IF PRINTFLAG THEN WRITELN(LST,'^',N:2,' ',S); WRITELN('^',N:2,' ',S); ERRPOS := CC+3; ERRS := ERRS + [ER(N)]; END END (* ERROR *) ; PROCEDURE ENDSKIP; BEGIN (* UNDERLINE SKIPPED PART OF INPUT *) WHILE ERRPOS < CC DO BEGIN IF PRINTFLAG THEN WRITE(LST,'-') ELSE WRITE('-'); ERRPOS := ERRPOS + 1 END ; IF PRINTFLAG THEN WRITELN(LST) ELSE WRITELN; SKIPFLAG := FALSE END (* ENDSKIP *) ; PROCEDURE HALT;EXTERNAL; PROCEDURE FATAL(N: INTEGER); VAR MSG: ARRAY [1..6] OF ALFA; BEGIN IF PRINTFLAG THEN WRITELN(LST); ERRORMSG; MSG[ 1] := 'IDENTIFIER'; MSG[ 2] := 'PROCEDURES'; MSG[ 3] := 'STRINGS'; MSG[ 4] := 'ARRAYS'; MSG[ 5] := 'LEVELS'; MSG[ 6] := 'CODE'; IF PRINTFLAG THEN WRITELN(LST,' COMPILER TABLE FOR ',MSG[N],' IS TOO SMALL'); WRITELN('COMPILER TABLE FOR ',MSG[N],' IS TOO SMALL'); CLOSE(SRCFILE); CLOSE(OBJFILE); IF PRINTFLAG THEN CLOSE(LST); HALT; (*TERMINATE COMPILATION*) END (* FATAL *) ; PROCEDURE NEXTCH; (* READ NEXT CHARACTER; PROCESS LINE END *) BEGIN IF CC = LL THEN BEGIN IF EOF(SRCFILE) THEN BEGIN WRITELN; WRITELN(' PROGRAM INCOMPLETE'); ERRORMSG; CLOSE(SRCFILE); CLOSE(OBJFILE); IF PRINTFLAG THEN CLOSE(LST); HALT; (* ABORT *) END ; IF ERRPOS <> 0 THEN BEGIN IF SKIPFLAG THEN ENDSKIP; WRITELN; ERRPOS := 0 END ; LL := 0; CC := 0;LINENUMBER:=LINENUMBER+1; WHILE (NOT EOLN(SRCFILE)) AND (NOT EOF(SRCFILE)) DO BEGIN READ(SRCFILE,CH); IF CH <> CHR(10) THEN BEGIN IF ORD(CH) < 32 THEN CH := ' '; LL := LL+1; LINE[LL] := CH END END ; IF LFILE THEN OUTLINE; LL := LL+1; LINE[LL] := ' '; READLN(SRCFILE); END ; CC := CC+1; CH := LINE[CC]; END (* NEXTCH *) ; PROCEDURE INSYMBOL; LABEL 1,2,3 ; VAR I,J,K: INTEGER; BEGIN (* INSYMBOL *) 1: WHILE CH = ' ' DO NEXTCH; IF ( ((CH>='a') AND (CH<='z')) OR ((CH>='A') AND (CH<='Z')) ) THEN BEGIN (* IDENTIFIER OR WORDSYMBOL *) K := 0; ID := ''; IF ((CH>='a') AND (CH<='z')) THEN CH := CHR(ORD(CH)-32); REPEAT IF K < ALNG THEN BEGIN K := K+1; ID[K] := CH END ; NEXTCH; IF ((CH>='a') AND (CH<='z')) THEN CH := CHR(ORD(CH)-32); UNTIL NOT ( ((CH>='A') AND (CH<='Z')) OR ((CH>='0') AND (CH<='9')) ); ID[0]:=CHR(K); I := 1; J:= NKW; (* BINARY SEARCH *) REPEAT K := (I+PROGRAM FACILIS; %N (* OPERATORS: &, |, ~ ARE SYNONYMS FOR AND, OR, NOT, RESPECTIVELY. *) (* PASCAL/S COMPILER *) (* AUTHOR: N. WIRTH, E. T. H. CH-8092 ZURICH, 1.3.76*) (* MODIIED: M. BEN-ARI, TEL AVIV UNIV., 1980*) (* SEPERATED FROM INTERPRETER: P. H. LUTZ, ROCHESTER INST OF TECHNOLOGY, 1984*) (* ADAPTED FOR PC VERSION PASCAL/S: MS-DOS 3.2, TURBO PASCAL 3.0*) (* BY: G. BRICAULT AND J. HELITIS, REV 1.0, JULY 14, 1987*) (* MODIFIED FOR THE TANDY/RADIO SHACK COLOR COMPUTER*) (* BY: C. BLOODWORTH, REV 2.0 SEP 1988*) CONST REVLEV = '2.0'; FNSIZE= 15; (* NO. OF CHARS IN A FILE NAME*) NKW = 26; (* NO. OF KEY WORDS *) ALNG = 10; (* NO. OF SIGNIFICANT CHARS IN IDENTIFIERS *) LLNG = 121; (* INPUT LINE LEGNTH *) TMAX = 140; (* SIZE OF TABLE *) BMAX = 20; (* SIZE OF BLOCK-TABLE *) AMAX = 10; (* SIZE OF ARRAY-TABLE *) CMAX =1000; (* SIZE OF CODE *) LMAX = 15; (* MAXIMUM NUMBER OF PROCEDURES *) OMAX = 63; (* HIGHEST ORDER ORDE *) XMAX =32767; NMAX =32767; SMAX = 600; (*SIZE OF STRING TABLE*) KMAX = 10; (*MAX. NO. OF SIGNIFICANT DIGITS*) TYPE SYMBOL = (INTCON,CHARCON,STRINGY,NOTSY,PLUS, MINUS,TIMES,IDIV,IMOD,ANDSY,ORSY, EQL,NEQ,GTR,GEQ,LSS,LEQ,LPARENT, RPARENT,LBRACK,RBRACK,COMMA,SEMICOLON, PERIOD,COLON,BECOMES,CONSTSY,TYPESY, VARSY,FUNCTIONSY,PROCEDURESY,ARRAYSY, PROGRAMSY,IDENT,BEGINSY,IFSY,REPEATSY, WHILESY,FORSY,ENDSY,ELSESY,UNTILSY,OFSY, DOSY,TOSY,THENSY); SYMSET = SET OF SYMBOL; TYPES = (NOTYP,INTS,BOOLS,CHARS,ARRAYS,SEMAS); TYPSET = SET OF TYPES; ALFA = STRING(ALNG); ER=(ERID,ERTYP,ERKEY,ERPUN,ERPAR, ERNF,ERDUP,ERCH,ERSH,ERLN,EROP); FTYPE=STRING(FNSIZE); INDEX = -XMAX..+XMAX; ITEM=RECORD TYP:TYPES; REF:INDEX; END; OBJECT = (KONSTANT,VARIABLE,TYPE1,PROZEDURE,FUNKTION); OBJTYPE=INTEGER; ORDER = RECORD F: -OMAX..OMAX; X: -LMAX..LMAX; Y: -NMAX..+NMAX; END ; VAR A : INTEGER; (*POINTER INTO STACK*) B : INTEGER; (*POINTS TO BOTTOM OF STACK*) BLOCKBEGSYS: SYMSET; (*BLOCK STRUCTURE SYMBOLS*) CC : INTEGER; (*CHARACTER COUNTER*) CH : CHAR; (*LAST CHAR READ FROM SRC PROGRAM*) CONSTBEGSYS: SYMSET; (*CONSTANTS SYMBOLS*) ERRPOS : INTEGER; (*LOC OF ERROR ON .ASM LINE*) ERRS : SET OF ER; (*SET OF ERRORS*) FACBEGSYS : SYMSET; (*FACTOR SYMBOLS*) ID:ALFA; INUM : INTEGER; KEY : ARRAY [1..NKW] OF ALFA; (*TABLE OF KEY RDS, POINTS TO SYM TABLE*) KSY : ARRAY [1..NKW] OF SYMBOL; (*TABLE OF SYMBOLS OF KEYWORDS*) LASTPRINT : INTEGER; (*NO. OF LAST LINE PRINTED*) LC : INTEGER; (* PROGRAM LOCATION COUNTER*) LFILE : BOOLEAN; (*MAKE ASM LISTING FLAG*) LL : INTEGER; (*LENGTH OF CURRENT LINE*) LSTNAME : FTYPE; LST : TEXT; LINENUMBER : INTEGER; (*NO. OF CURRENT LINE*) OBJFILE : FILE OF OBJTYPE; (*OBJECT FILE IS INTEGER*) OBJNAME : FTYPE; (*NAME OF OBJECT FILE*) PAGECNT : INTEGER; (*CURRENT SOURCE PAGE COUNT*) PRINTFLAG : BOOLEAN; (*DIRECT LISTING OUTPUT TO THE PRINTER*) RESULT : INTEGER; (*FILE STATUS FLAG*) SKIPFLAG : BOOLEAN; (*IF SET ON ERROR SKIP TO EOLN*) SLENG : INTEGER; (*STRING LENGTH*) SPS : ARRAY ['!'..'~'] OF SYMBOL; (*SPECIAL SYMBOLS*) SRCFILE : TEXT; (*SOURCE FILE IS TEXT TYPE*) SRCNAME : FTYPE; (*NAME OF SOURCE FILE*) SRCRESULT : BOOLEAN; (*FILE STATUS FLAG*) STANTYPS : TYPSET; (*STANDARD TYPES SET*) STATBEGSYS : SYMSET; (*STATEMENT SYMBOLS*) SX : INTEGER; (*INDEX INTO STRING TABLE*) SY : SYMBOL; (*LAST SYMBOL READ BY INSYMBOL*) T : INTEGER; (*POINTS TO CURRENT TOP OF STACK*) TYPEBEGSYS : SYMSET; (*TYPE SYMBOLS*) ATAB: ARRAY [1 .. AMAX] OF (* ARRAY-TABLE *) RECORD (* 30*12=360*) INXTYP, ELTYP: TYPES; ELREF, LOW, HIGH, ELSIZE, SIZE: INDEX END ; BTAB: ARRAY [1 .. BMAX] OF (* BLOCK-TABLE *) RECORD (* 30*8=240*) LAST, LASTPAR, PSIZE, VSIZE: INDEX END ; CODE : ARRAY [0..CMAX] OF ORDER; (*PROGRAM P-CODE TABLE*) DISPLAY : ARRAY [0..LMAX] OF INTEGER; (*ARRAY WHICH PNTS TO MEM*) %N (* PASCAL/S FILE: BLOCK1.PAS *) PROCEDURE BLOCK(FSYS: SYMSET; ISFUN: BOOLEAN; LEVEL: INTEGER); TYPE CONREC = RECORD TP: TYPES; I: INTEGER; END; VAR DX : INTEGER; (* DATA ALLOCATION INDEX *) PRT: INTEGER; (* T-INDEX OF THIS PROCEDURE *) PREOT:INTEGER; (* END OF THIS PROCEDURE'S T-INDEX EXCEPT SUB PROCS *) PRB: INTEGER; (* B-INDEX OF THIS PROCEDURE *) X : INTEGER; PROCEDURE SKIP(FSYS: SYMSET; N: ER); (*SKIP REST OF LINE*) BEGIN COMPERROR(N); SKIPFLAG := TRUE; WHILE NOT (SY IN FSYS) DO INSYMBOL; IF SKIPFLAG THEN ENDSKIP END (* SKIP *) ; PROCEDURE TEST(S1,S2: SYMSET; N: ER); BEGIN IF NOT (SY IN S1) THEN SKIP(S1+S2,N) END (*TEST *) ; PROCEDURE TESTSEMICOLON; BEGIN IF SY = SEMICOLON THEN INSYMBOL ELSE COMPERROR(ERPUN); TEST(BLOCKBEGSYS+[IDENT], FSYS, ERKEY) END (* TESTSEMICOLON *) ; PROCEDURE ENTER2(ID: ALFA; K:OBJECT); (*CREATE SYMBOL FOR TABLE*) VAR J,L: INTEGER; BEGIN IF T = TMAX THEN FATAL(1) ELSE BEGIN TAB[0].NAME := ID; J := BTAB[DISPLAY[LEVEL]].LAST; L := J; WHILE TAB[J].NAME <> ID DO J := TAB[J].LINK; IF J <> 0 THEN COMPERROR(ERDUP) ELSE BEGIN T := T+1; TAB[T].NAME:= ID; TAB[T].LINK := L; TAB[T].OBJ := K; TAB[T].TYP := NOTYP; TAB[T].REF := 0; TAB[T].LEV := LEVEL; TAB[T].ADR := 0; BTAB[DISPLAY[LEVEL]].LAST := T END END END (* ENTER *) ; FUNCTION LOC(ID: ALFA): INTEGER; VAR I,J: INTEGER; (* LOCATE ID IN TABEL *) BEGIN I := LEVEL; TAB[0].NAME := ID; (* SENTINEL *) REPEAT J := BTAB[DISPLAY[I]].LAST; WHILE TAB[J].NAME <> ID DO J := TAB[J].LINK; I := I-1; UNTIL (I<0) OR (J<>0); IF J = 0 THEN COMPERROR(ERNF); LOC := J END (* LOC *) ; PROCEDURE ENTERVARIABLE; (*PLACE VARIABLE IN SYMBOL TABLE*) BEGIN IF SY = IDENT THEN BEGIN ENTER2(ID,VARIABLE); INSYMBOL END ELSE COMPERROR(ERID) END (* ENTERVARIABLE *) ; PROCEDURE CONSTANT(FSYS: SYMSET; VAR C: CONREC); VAR X, SIGN: INTEGER; BEGIN C.TP := NOTYP; C.I := 0; TEST(CONSTBEGSYS, FSYS, ERKEY); IF SY IN CONSTBEGSYS THEN BEGIN IF SY = CHARCON THEN BEGIN C.TP := CHARS; C.I := INUM; INSYMBOL END ELSE BEGIN SIGN := 1; IF ((SY=PLUS) OR (SY=MINUS)) THEN BEGIN IF SY = MINUS THEN SIGN := -1; INSYMBOL END ; IF SY = IDENT THEN BEGIN X := LOC(ID); IF X <> 0 THEN IF TAB[X].OBJ <> KONSTANT THEN COMPERROR(ERTYP) ELSE BEGIN C.TP := TAB[X].TYP; C.I := SIGN*TAB[X].ADR; END ; INSYMBOL END ELSE IF SY = INTCON THEN BEGIN C.TP := INTS; C.I := SIGN*INUM; INSYMBOL END ELSE SKIP(FSYS,ERKEY) END; TEST(FSYS,[], ERKEY) END END (* CONSTANT *) ; PROCEDURE TYP(FSYS: SYMSET; VAR TP,BTP: TYPES; VAR RF, SZ,IVAL: INTEGER); VAR X:INTEGER; TMP:CONREC; SCAN:BOOLEAN; PROCEDURE ARRAYTYP(VAR BTP:TYPES;VAR AREF,ARSZ,IVAL: INTEGER); VAR ELTP: TYPES; LOW, HIGH: CONREC; ELRF, ELSZ: INTEGER; BEGIN CONSTANT(FSYS+[RBRACK,COLON,OFSY], LOW); IF SY=COLON THEN INSYMBOL ELSE COMPERROR(ERPUN); CONSTANT(FSYS+[RBRACK,COMMA,OFSY], HIGH); IF HIGH.TP <> LOW.TP THEN BEGIN COMPERROR(ERTYP); HIGH.I := LOW.I END ; ENTERARRAY(LOW.TP, LOW.I,HIGH.I); AREF := A; IF SY = COMMA THEN BEGIN INSYMBOL; ELTP := ARRAYS; ARRAYTYP(BTP,ELRF,ELSZ,IVAL) END ELSE BEGIN IF SY = RBRACK THEN INSYMBOL ELSE COMPERROR(ERPUN); IF SY = OFSY THEN INSYMBOL ELSE COMPERROR(ERKEY); TYP(FSYS,ELTP,BTP,ELRF,ELSZ,IVAL) END ; ARSZ := (ATAB[AREF].HIGH-ATAB[AREF].LOW+1)*ELSZ; ATAB[AREF].SIZE := ARSZ; ATAB[AREF].ELTYP := ELTP; ATAB[AREF].ELREF := ELRF; ATAB[AREF].ELSIZE := ELSZ END (*ARRAYTYP *) ; BEGIN (* TYP *) TP := NOTYP; BTP:= NOTYP; IVAL:=0; RF := 0; SZ := 0; TEST(TYPEBEGSYS,FSYS, ERID); IF SY IN TYPEBEGSYS THEN BEGIN IF SY = IDENT THEN BEGIN X := LOC(ID); SC˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙ÈĈ!"#$%&'()*+,ÇÈ˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙BLOCK PAS˙ ·˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙PSC PAS˙›˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙PASCALIBEXT˙-ŠPSI PAS˙ù˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙SC OBJ˙.ħ˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙ OBJ2˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙AN:=TRUE; IF X <> 0 THEN IF TAB[X].OBJ <> TYPE1 THEN COMPERROR(ERTYP) ELSE BEGIN TP := TAB[X].TYP; IF TAB[X].TYP=ARRAYS THEN BTP:=TAB[X].BASETP ELSE BTP:=TAB[X].TYP; RF := TAB[X].REF; SZ := TAB[X].ADR; IVAL:=TAB[X].INITVAL; IF ID='SEMAPHORE' THEN BEGIN INSYMBOL; IF SY=LBRACK THEN BEGIN INSYMBOL; CONSTANT(FSYS+[RBRACK,SEMICOLON],TMP); IVAL:=TMP.I; IF (SY<>RBRACK) OR (TMP.TP<>INTS) THEN TP:=NOTYP; END ELSE BEGIN IVAL:=1; SCAN:=FALSE; END; END; IF TP = NOTYP THEN COMPERROR(ERTYP) END; IF SCAN THEN INSYMBOL; END ELSE IF SY=ARRAYSY THEN BEGIN IF SY=LBRACK THEN INSYMBOL ELSE COMPERROR(ERPUN); TP:=ARRAYS; ARRAYTYP(BTP,RF,SZ,IVAL); END ELSE TEST(FSYS, [], ERKEY); END; END; (* TYP *) PROCEDURE PARAMETERLIST; (* FORMAL PARAMETER LIST *) (*FORMAL PARAMETER LIST*) VAR TP : TYPES; VALPAR: BOOLEAN; RF,SZ, X, T0: INTEGER; BEGIN INSYMBOL; TP := NOTYP; RF := 0; SZ := 0; TEST([IDENT, VARSY], FSYS+[RPARENT], ERPAR); WHILE ((SY=IDENT) OR (SY=VARSY)) DO BEGIN IF SY <> VARSY THEN VALPAR := TRUE ELSE BEGIN INSYMBOL; VALPAR := FALSE END ; T0 := T; ENTERVARIABLE; WHILE SY = COMMA DO BEGIN INSYMBOL; ENTERVARIABLE; END; IF SY = COLON THEN BEGIN INSYMBOL; IF SY <> IDENT THEN COMPERROR(ERID) ELSE BEGIN X := LOC(ID); INSYMBOL; IF X <> 0 THEN IF TAB[X].OBJ <> TYPE1 THEN COMPERROR(ERTYP) ELSE BEGIN TP := TAB[X].TYP; RF := TAB[X].REF; IF VALPAR THEN SZ := TAB[X].ADR ELSE SZ := 1 END ; END ; TEST(FSYS+[SEMICOLON,RPARENT], FSYS+[COMMA,IDENT], ERPUN) END ELSE COMPERROR(ERPUN); WHILE T0 < T DO BEGIN T0 := T0+1; TAB[T0].TYP := TP; TAB[T0].REF := RF; TAB[T0].ADR := DX; TAB[T0].LEV := LEVEL; TAB[T0].NORMAL := VALPAR; DX := DX + SZ END ; IF SY <> RPARENT THEN BEGIN IF SY = SEMICOLON THEN INSYMBOL ELSE COMPERROR(ERPUN); TEST([IDENT,VARSY], FSYS+[RPARENT], ERKEY) END END (* WHILE *) ; IF SY = RPARENT THEN BEGIN INSYMBOL; TEST([SEMICOLON,COLON], FSYS, ERKEY) END ELSE COMPERROR(ERPUN) END (* PARAMETERLIST *) ; PROCEDURE CONSTDEC; VAR C: CONREC; BEGIN INSYMBOL; TEST([IDENT], BLOCKBEGSYS, ERID); WHILE SY = IDENT DO BEGIN ENTER2(ID,KONSTANT); INSYMBOL; IF SY = EQL THEN INSYMBOL ELSE COMPERROR(ERPUN); CONSTANT(FSYS+[SEMICOLON,COMMA,IDENT],C); TAB[T].TYP := C.TP; TAB[T].REF := 0; TAB[T].ADR := C.I; TESTSEMICOLON END END (* CONSTDEC *) ; PROCEDURE TYPEDECLARATION; VAR BTP,TP: TYPES; IVAL,RF, SZ, T1: INTEGER; BEGIN INSYMBOL; TEST([IDENT], BLOCKBEGSYS, ERID); WHILE SY = IDENT DO BEGIN ENTER2(ID,TYPE1); T1 := T; INSYMBOL; IF SY = EQL THEN INSYMBOL ELSE COMPERROR(ERPUN); TYP(FSYS+[SEMICOLON,COMMA,IDENT], TP,BTP, RF, SZ,IVAL); TAB[T1].TYP := TP; TAB[T1].BASETP:=BTP; TAB[T1].REF := RF; TAB[T1].ADR := SZ; TESTSEMICOLON END END (* TYPEDECLARATION *) ; PROCEDURE VARIABLEDECLARATION; VAR BTP,TP: TYPES; IVAL,T0, RF, SZ: INTEGER; BEGIN INSYMBOL; WHILE SY = IDENT DO BEGIN T0 := T; ENTERVARIABLE; WHILE SY = COMMA DO BEGIN INSYMBOL; ENTERVARIABLE; END ; IF SY = COLON THEN INSYMBOL ELSE COMPERROR(ERPUN); TYP(FSYS+[SEMICOLON,COMMA,IDENT], TP,BTP, RF, SZ,IVAL); WHILE T0 < T DO BEGIN T0 := T0+1; TAB[T0].TYP := TP; TAB[T0].BASETP:=BTP; TAB[T0].REF := RF; TAB[T0].LEV := LEVEL; TAB[T0].ADR := DX; TAB[T0].NORMAL := TRUE; TAB[T0].INITVAL:=IVAL; DX := DX + SZ; END ; TESTSEMICOLON END END (* VARIABLEDECLARATION *) ; PROCEDURE PROCDECLARATION; VAR ISFUN: BOOLEAN; BEGIN ISFUN := SY = FUNCTIONSY; INSYMBOL; IF SY <> IDENT THEN BEGIN COMPERROR(ERID); ID := '' END; IF ISFUN THEN ENTER2(ID,FUNKTION) ELSE ENTER2(ID,PROZEDURE); TAB[T].NORMAL := TRUE; INSYMBOL; BLOCK(FSYS+[SEMICOLON], ISFUN, LEVEL+1); IF SY = SEMICOLON THEN INSYMBOL ELSE COMPERROR(ERPUN); EMIT(32+ORD(ISFUN)) (* EXIT *) END (* PROCDECLARATION *) ; PROCEDURE STATEMENT(FSYS: SYMSET); VAR I: INTEGER; X: ITEM; PROCEDURE EXPRESSION(FSYS: SYMSET; VAR X: ITEM); FORWARD; PROCEDURE SELECTOR(FSYS: SYMSET; VAR V: ITEM); VAR X: ITEM; A: INTEGER; BEGIN (* SY IN [LPARENT, LBRACK, PERIOD] *) IF SY <> LBRACK THEN COMPERROR(ERTYP); REPEAT INSYMBOL; EXPRESSION(FSYS+[COMMA,RBRACK], X); IF V.TYP <> ARRAYS THEN COMPERROR(ERTYP) ELSE BEGIN A := V.REF; IF ATAB[A].INXTYP <> X.TYP THEN COMPERROR(ERTYP) ELSE EMIT1(21,A); V.TYP := ATAB[A].ELTYP; V.REF := ATAB[A].ELREF END UNTIL SY <> COMMA; IF SY = RBRACK THEN INSYMBOL ELSE COMPERROR(ERPUN); TEST(FSYS, [], ERKEY); END (* SELECTOR *) ; PROCEDURE PFCALL(FSYS: SYMSET; I: INTEGER); VAR X: ITEM; LASTP, CP, K: INTEGER; BEGIN EMIT1(18,I); (* MARK STACK *) LASTP := BTAB[TAB[I].REF].LASTPAR; CP := I; IF SY = LPARENT THEN BEGIN (* ACTUAL PARAMETER LIST *) REPEAT INSYMBOL; IF CP >= LASTP THEN COMPERROR(ERPAR) ELSE BEGIN CP := CP+1; IF TAB[CP].NORMAL THEN BEGIN (*VALUE PARAMETER *) EXPRESSION(FSYS+[COMMA,COLON,RPARENT], X); IF X.TYP=TAB[CP].TYP THEN BEGIN IF X.REF <> TAB[CP].REF THEN COMPERROR(ERTYP) ELSE IF X.TYP = ARRAYS THEN EMIT1(22,ATAB[X.REF].SIZE) END ELSE IF (X.TYP<>NOTYP) THEN COMPERROR(ERTYP) END ELSE BEGIN (* VAR PARAMETER *) IF SY <> IDENT THEN COMPERROR(ERID) ELSE BEGIN K := LOC(ID); INSYMBOL; IF K <> 0 THEN BEGIN IF TAB[K].OBJ <> VARIABLE THEN COMPERROR(ERPAR); X.TYP := TAB[K].TYP; X.REF := TAB[K].REF; IF TAB[K].NORMAL THEN EMIT2(0,TAB[K].LEV,TAB[K].ADR) ELSE EMIT2(1,TAB[K].LEV,TAB[K].ADR); IF (SY=LBRACK) THEN SELECTOR(FSYS+[COMMA,COLON,RPARENT], X); IF (X.TYP<>TAB[CP].TYP) OR (X.REF<>TAB[CP].REF) THEN COMPERROR(ERTYP) END END END (*VAR PARAMETER*) END ; TEST([COMMA,RPARENT], FSYS, ERKEY) UNTIL SY <> COMMA; IF SY = RPARENT THEN INSYMBOL ELSE COMPERROR(ERPUN) END ; IF CP < LASTP THEN COMPERROR(ERPAR); (* TOO FEW ACTUAL PARAMETERS *) EMIT1(19, BTAB[TAB[I].REF].PSIZE-1); IF TAB[I].LEV < LEVEL THEN EMIT2(3, TAB[I].LEV, LEVEL) END (* PFCALL *) ; FUNCTION RESULTTYPE(A,B: TYPES): TYPES; BEGIN IF (A>INTS) OR (B>INTS) THEN BEGIN COMPERROR(ERTYP); RESULTTYPE:=NOTYP END ELSE IF (A=NOTYP) OR (B=NOTYP) THEN RESULTTYPE:=NOTYP ELSE RESULTTYPE:=INTS; END; (*RESULTTYPE*); PROCEDURE EXPRESSION (*FSYS:SYMSET; VAR X:ITEM*); VAR Y :ITEM; OP:SYMBOL; PROCEDURE SIMPLEEXPRESSION(FSYS:SYMSET; VAR X:ITEM); VAR Y :ITEM; OP:SYMBOL; PROCEDURE TERM(FSYS:SYMSET; VAR X:ITEM); VAR Y :ITEM; OP:SYMBOL; PROCEDURE FACTOR(FSYS:SYMSET; VAR X:ITEM); VAR I,F: INTEGER; BEGIN (* FACTOR *) X.TYP := NOTYP; X.REF := 0; TEST(FACBEGSYS, FSYS, ERPUN); WHILE SY IN FACBEGSYS DO BEGIN CASE SY OF IDENT: BEGIN I := LOC(ID); INSYMBOL; CASE TAB[I].OBJ OF KONSTANT: BEGIN X.TYP := TAB[I].TYP; X.REF := 0; EMIT1(24,TAB[I].ADR) END ; VARIABLE: BEGIN X.TYP := TAB[I].TYP; X.REF := TAB[I].REF; IF (SY=LBRACK) THEN BEGIN IF TAB[I].NORMAL THEN F := 0 ELSE F := 1; EMIT2(F,TAB[I].LEV,TAB[I].ADR); SELECTOR(FSYS,X); IF X.TYP IN STANTYPS THEN EMIT(34); END; IF X.TYP IN STANTYPS THEN IF TAB[I].NORMAL THEN F := 1 ELSE F := 2 ELSE IF TAB[I].NORMAL THEN F := 0 ELSE F :=1; EMIT2(F, TAB[I].LEV, TAB[I].ADR) END; TYPE1, PROZEDURE: COMPERROR(ERTYP); FUNKTION : BEGIN X.TYP := TAB[I].TYP; IF TAB[I].LEV <> 0 THEN PFCALL(FSYS, I) ELSE EMIT1(8,TAB[I].ADR) END END (* CASE OBJ *) END; (* IDENT *) CHARCON: BEGIN X.TYP := CHARS; X.REF := 0; EMIT1(24, INUM); INSYMBOL END; INTCON: BEGIN X.TYP := INTS; X.REF := 0; EMIT1(24, INUM); INSYMBOL END; LPARENT: BEGIN INSYMBOL; EXPRESSION(FSYS+[RPARENT], X); IF SY = RPARENT THEN INSYMBOL ELSE COMPERROR(ERPUN) END; NOTSY: BEGIN INSYMBOL; FACTOR(FSYS,X); IF X.TYP=BOOLS THEN EMIT(35) ELSE IF X.TYP<>NOTYP THEN COMPERROR(ERTYP) END END; (* CASE SY *) TEST(FSYS, FACBEGSYS, ERKEY); END (* WHILE *) END (* FACTOR *) ; BEGIN (* TERM *) FACTOR(FSYS+[TIMES,IDIV,IMOD,ANDSY], X); WHILE ((SY=TIMES) OR (SY=IDIV) OR (SY=IMOD) OR (SY=ANDSY)) DO BEGIN OP := SY; INSYMBOL; FACTOR(FSYS+[TIMES,IDIV,IMOD,ANDSY], Y); IF OP = TIMES THEN BEGIN X.TYP := RESULTTYPE(X.TYP, Y.TYP); IF X.TYP=INTS THEN EMIT(57); END ELSE IF OP = ANDSY THEN BEGIN IF (X.TYP=BOOLS) AND (Y.TYP=BOOLS) THEN EMIT(56) ELSE BEGIN IF (X.TYP<>NOTYP) AND (Y.TYP<>NOTYP) THEN COMPERROR(ERTYP); X.TYP := NOTYP END END ELSE BEGIN (* OP IN [IDIV,IMOD] *) IF (X.TYP=INTS) AND (Y.TYP=INTS) THEN IF OP=IDIV THEN EMIT(58) ELSE EMIT(59) ELSE BEGIN IF (X.TYP<>NOTYP) AND (Y.TYP<>NOTYP) THEN COMPERROR(ERTYP); X.TYP := NOTYP END END END (*WHILE*) END (* TERM *) ; BEGIN (* SIMPLEEXPRESSION *) IF ((SY=PLUS) OR (SY=MINUS)) THEN BEGIN OP := SY; INSYMBOL; TERM(FSYS+[PLUS,MINUS], X); IF X.TYP > INTS THEN COMPERROR(ERTYP) ELSE IF OP = MINUS THEN EMIT(36) END ELSE TERM(FSYS+[PLUS,MINUS,ORSY], X); WHILE ((SY=PLUS) OR (SY=MINUS) OR (SY=ORSY)) DO BEGIN OP := SY; INSYMBOL; TERM(FSYS+[PLUS,MINUS,ORSY], Y); IF OP = ORSY THEN BEGIN IF (X.TYP=BOOLS) AND (Y.TYP=BOOLS) THEN EMIT(51) ELSE BEGIN IF (X.TYP <> NOTYP) AND (Y.TYP<>NOTYP) THEN COMPERROR(ERTYP); X.TYP := NOTYP END END ELSE BEGIN X.TYP:=RESULTTYPE(X.TYP,Y.TYP); IF X.TYP=INTS THEN IF OP=PLUS THEN EMIT(52) ELSE EMIT(53) END; END (*WHILE*) END (* SIMPLEEXPRESSION *) ; BEGIN (* EXPRESSION *) SIMPLEEXPRESSION(FSYS+[EQL,NEQ,LSS,LEQ,GTR,GEQ], X); IF ((SY=EQL) OR (SY=NEQ) OR (SY=LSS) OR (SY=LEQ) OR (SY=GTR) OR (SY=GEQ)) THEN BEGIN OP := SY; INSYMBOL; SIMPLEEXPRESSION(FSYS, Y); IF ( ((X.TYP=NOTYP) OR (X.TYP=INTS) OR (X.TYP=BOOLS) OR (X.TYP=CHARS) OR (X.TYP=SEMAS)) AND (X.TYP = Y.TYP)) THEN CASE OP OF EQL: EMIT(45); NEQ: EMIT(46); LSS: EMIT(47); LEQ: EMIT(48); GTR: EMIT(49); GEQ: EMIT(50) END ELSE COMPERROR(ERTYP); X.TYP := BOOLS END END (* EXPRESSION *) ; PROCEDURE ASSIGNMENT(LV,AD: INTEGER); VAR X,Y: ITEM; F : INTEGER; BEGIN (* TAB[I].OBJ IN [VARIABLE,FUNKTION] *) X.TYP := TAB[I].TYP; X.REF := TAB[I].REF; IF TAB[I].NORMAL THEN F := 0 ELSE F := 1; EMIT2(F, LV, AD); IF (SY=LBRACK) THEN SELECTOR(FSYS+[BECOMES,EQL], X); IF SY = BECOMES THEN BEGIN IF X.TYP=SEMAS THEN COMPERROR(EROP); INSYMBOL END ELSE COMPERROR(ERPUN); IF X.TYP<>SEMAS THEN BEGIN EXPRESSION(FSYS,Y); IF (X.TYP=Y.TYP) THEN IF (X.TYP IN STANTYPS) THEN EMIT(38) ELSE IF (X.REF<>Y.REF) THEN COMPERROR(ERTYP) ELSE IF X.TYP=ARRAYS THEN EMIT1(23,ATAB[X.REF].SIZE) ELSE COMPERROR(ERTYP) ELSE COMPERROR(ERTYP); END; END (* ASSIGNMENT *) ; PROCEDURE COMPOUNDSTATEMENT; BEGIN INSYMBOL; STATEMENT(FSYS+[SEMICOLON,ENDSY]); WHILE (SY IN (STATBEGSYS+[SEMICOLON])) DO BEGIN IF SY = SEMICOLON THEN INSYMBOL ELSE COMPERROR(ERPUN); STATEMENT(FSYS+[SEMICOLON,ENDSY]) END ; IF SY = ENDSY THEN INSYMBOL ELSE COMPERROR(ERKEY) END (* COMPOUNDSTATEMENT *) ; PROCEDURE IFSTATEMENT; VAR X: ITEM; LC1,LC2: INTEGER; BEGIN INSYMBOL; EXPRESSION(FSYS+[THENSY,DOSY], X); IF ((X.TYP<>BOOLS) AND (X.TYP<>NOTYP)) THEN COMPERROR(ERTYP); LC1 := LC; EMIT(11); IF SY = THENSY THEN INSYMBOL ELSE COMPERROR(ERKEY); STATEMENT(FSYS+[ELSESY]); IF SY = ELSESY THEN BEGIN INSYMBOL; LC2:=LC; EMIT(10); CODE[LC1].Y:=LC; STATEMENT(FSYS); CODE[LC2].Y:=LC; END ELSE CODE[LC1].Y:=LC; END (* IFSTATEMENT *) ; PROCEDURE REPEATSTATEMENT; VAR X : ITEM; LC1: INTEGER; BEGIN LC1 := LC; INSYMBOL; STATEMENT(FSYS+[SEMICOLON,UNTILSY]); WHILE (SY IN (STATBEGSYS+[SEMICOLON])) DO BEGIN IF SY = SEMICOLON THEN INSYMBOL ELSE COMPERROR(ERPUN); STATEMENT(FSYS+[SEMICOLON,UNTILSY]) END ; IF SY = UNTILSY THEN BEGIN INSYMBOL; EXPRESSION(FSYS, X); IF ((X.TYP<>BOOLS) AND (X.TYP<>NOTYP)) THEN COMPERROR(ERTYP); EMIT1(11, LC1) END ELSE COMPERROR(ERKEY) END (* REPEATSTATEMENT *) ; PROCEDURE WHILESTATEMENT; VAR X: ITEM; LC1,LC2: INTEGER; BEGIN INSYMBOL; LC1:=LC; EXPRESSION(FSYS+[DOSY], X); IF ((X.TYP<>BOOLS) AND (X.TYP<>NOTYP)) THEN COMPERROR(ERTYP); EMIT(11); IF SY = DOSY THEN INSYMBOL ELSE COMPERROR(ERKEY); STATEMENT(FSYS); EMIT1(10,LC1); CODE[LC2].Y:=LC; END (* WHILESTATEMENT *) ; PROCEDURE FORSTATEMENT; VAR CVT: TYPES; X : ITEM; I,F: INTEGER; LC1,LC2: INTEGER; BEGIN INSYMBOL; IF SY = IDENT THEN BEGIN I := LOC(ID); INSYMBOL; IF I = 0 THEN CVT := INTS ELSE IF TAB[I].OBJ = VARIABLE THEN BEGIN CVT := TAB[I].TYP; IF NOT TAB[I].NORMAL THEN COMPERROR(ERTYP) ELSE EMIT2(0,TAB[I].LEV,TAB[I].ADR); IF ((CVT<>NOTYP) AND (CVT<>INTS) AND (CVT<>BOOLS) AND (CVT<>CHARS)) THEN COMPERROR(ERTYP) END ELSE BEGIN COMPERROR(ERTYP); CVT := INTS END END ELSE SKIP(FSYS+[BECOMES,TOSY,DOSY], ERID); IF SY = BECOMES THEN BEGIN INSYMBOL; EXPRESSION(FSYS+[TOSY,DOSY], X); IF X.TYP <> CVT THEN COMPERROR(ERTYP); END ELSE SKIP(FSYS+[TOSY,DOSY], ERPUN); IF (SY=TOSY) THEN BEGIN INSYMBOL; EXPRESSION(FSYS+[DOSY], X); IF X.TYP <> CVT THEN COMPERROR(ERTYP) END ELSE SKIP(FSYS+[DOSY], ERKEY); LC1 := LC; EMIT(14); IF SY = DOSY THEN INSYMBOL ELSE COMPERROR(ERKEY); LC2:=LC; STATEMENT(FSYS); EMIT1(15,LC2); CODE[LC1].Y:=LC; END (* FORSTATEMENT *) ; PROCEDURE STANDPROC(N: INTEGER); VAR I,F: INTEGER; X,Y: ITEM; BEGIN CASE N OF 1,2: BEGIN (* READ *) IF SY = LPARENT THEN BEGIN REPEAT INSYMBOL; IF SY <> IDENT THEN COMPERROR(ERID) ELSE BEGIN I := LOC(ID); INSYMBOL; IF I <> 0 THEN IF TAB[I].OBJ <> VARIABLE THEN COMPERROR(ERTYP) ELSE BEGIN X.TYP := TAB[I].TYP; X.REF := TAB[I].REF; IF TAB[I].NORMAL THEN F := 0 ELSE F := 1; EMIT2(F, TAB[I].LEV, TAB[I].ADR); IF (SY=LBRACK) THEN SELECTOR(FSYS+[COMMA,RPARENT],X); IF (X.TYP=INTS) OR (X.TYP=CHARS) OR (X.TYP=SEMAS) OR (X.TYP=NOTYP) THEN EMIT1(27,ORD(X.TYP)) ELSE COMPERROR(ERTYP) END END ; TEST([COMMA,RPARENT], FSYS,ERKEY); UNTIL SY <> COMMA; IF SY = RPARENT THEN INSYMBOL ELSE COMPERROR(ERPUN) END ; IF N = 2 THEN EMIT(62) END ; 3,4: BEGIN (* WRITE *) IF SY = LPARENT THEN BEGIN REPEAT INSYMBOL; IF SY=STRINGY THEN BEGIN EMIT1(24,SLENG); EMIT1(28,INUM); INSYMBOL END ELSE BEGIN EXPRESSION(FSYS+[COMMA,COLON,RPARENT],X); IF NOT (X.TYP IN STANTYPS) THEN COMPERROR(ERTYP); EMIT1(29,ORD(X.TYP)) END; UNTIL SY <> COMMA; IF SY = RPARENT THEN INSYMBOL ELSE COMPERROR(ERPUN) END ; IF N = 4 THEN EMIT(63) END; (*WRITE*) 5,6:BEGIN (*WAIT SIGNAL*) IF SY<>LPARENT THEN COMPERROR(ERPUN) ELSE BEGIN INSYMBOL; IF SY<>IDENT THEN COMPERROR(ERID) ELSE BEGIN I:=LOC(ID); INSYMBOL; IF I<>0 THEN IF TAB[I].OBJ<>VARIABLE THEN COMPERROR(ERTYP) ELSE BEGIN X.TYP:=TAB[I].TYP; X.REF:=TAB[I].REF; IF TAB[I].NORMAL THEN F:=0 ELSE F:=1; EMIT2(F,TAB[I].LEV,TAB[I].ADR); IF SY=LBRACK THEN SELECTOR(FSYS+[RPARENT],X); IF X.TYP=SEMAS THEN EMIT(N+1) ELSE COMPERROR(ERTYP); END; END; IF SY=RPARENT THEN INSYMBOL ELSE COMPERROR(ERPUN) END; END END (* CASE *) END (* STANDPROC *) ; BEGIN (* STATEMENT *) IF (SY IN (STATBEGSYS+[IDENT])) THEN CASE SY OF IDENT: BEGIN I := LOC(ID); INSYMBOL; IF I <> 0 THEN CASE TAB[I].OBJ OF KONSTANT, TYPE1: COMPERROR(ERTYP); VARIABLE: ASSIGNMENT(TAB[I].LEV, TAB[I].ADR); PROZEDURE: IF TAB[I].LEV <> 0 THEN PFCALL(FSYS, I) ELSE STANDPROC(TAB[I].ADR); FUNKTION: IF TAB[I].REF = DISPLAY[LEVEL] THEN ASSIGNMENT(TAB[I].LEV+1, 0) ELSE COMPERROR(ERTYP) END (*CASE*) END ; BEGINSY: IF ID='COBEGIN' THEN BEGIN EMIT(4); COMPOUNDSTATEMENT; EMIT(5); END ELSE COMPOUNDSTATEMENT; IFSY: IFSTATEMENT; WHILESY: WHILESTATEMENT; REPEATSY: REPEATSTATEMENT; FORSY: FORSTATEMENT END; (*CASE*) TEST(FSYS, [], ERPUN) END (* STATEMENT *) ; PROCEDURE INITSEMAS(FIRST,LAST:INTEGER); VAR F,I:INTEGER; BEGIN FOR I:=FIRST TO LAST DO IF (TAB[I].OBJ=VARIABLE) AND (TAB[I].BASETP=SEMAS) THEN BEGIN IF TAB[I].NORMAL THEN F:=0 ELSE F:=1; EMIT2(F,LEVEL,TAB[I].ADR); IF TAB[I].TYP=ARRAYS THEN F:=ATAB[TAB[I].REF].SIZE ELSE F:=1; EMIT2(25,F,TAB[I].INITVAL); END; END; BEGIN (* BLOCK *) DX := 6; PRT := T; IF LEVEL > LMAX THEN FATAL(5); TEST([LPARENT,COLON,SEMICOLON], FSYS, ERPUN); ENTERBLOCK; PRB := B; DISPLAY[LEVEL] := B; TAB[PRT].TYP := NOTYP; TAB[PRT].REF := PRB; IF (SY = LPARENT) AND (LEVEL > 1) THEN PARAMETERLIST; BTAB[PRB].LASTPAR := T; BTAB[PRB].PSIZE := DX; IF ISFUN THEN IF SY = COLON THEN BEGIN INSYMBOL; (* FUNCTION TYPE *) IF SY = IDENT THEN BEGIN X := LOC(ID); INSYMBOL; IF X <> 0 THEN IF TAB[X].OBJ <> TYPE1 THEN COMPERROR(ERTYP) ELSE IF TAB[X].TYP IN STANTYPS THEN TAB[PRT].TYP := TAB[X].TYP ELSE COMPERROR(ERTYP) END ELSE SKIP(FSYS+[SEMICOLON], ERID) END ELSE COMPERROR(ERPUN); IF SY = SEMICOLON THEN INSYMBOL ELSE COMPERROR(ERPUN); REPEAT IF SY = CONSTSY THEN CONSTDEC; IF SY = TYPESY THEN TYPEDECLARATION; IF SY = VARSY THEN BEGIN VARIABLEDECLARATION;PREOT:=T;END; BTAB[PRB].VSIZE := DX; WHILE ((SY=PROCEDURESY) OR (SY=FUNCTIONSY)) DO PROCDECLARATION; TEST([BEGINSY], BLOCKBEGSYS+STATBEGSYS,ERKEY) UNTIL SY IN STATBEGSYS; TAB[PRT].ADR := LC; INITSEMAS(PRT+1,PREOT); INSYMBOL; STATEMENT(FSYS+[SEMICOLON,ENDSY]); WHILE (SY IN (STATBEGSYS+[SEMICOLON])) DO BEGIN IF SY = SEMICOLON THEN INSYMBOL ELSE COMPERROR(ERPUN); STATEMENT(FSYS+[SEMICOLON,ENDSY]) END ; IF SY = ENDSY THEN INSYMBOL ELSE COMPERROR(ERKEY); TEST(FSYS+[PERIOD], [], ERKEY); %L END; (* BLOCK *) (SY IN (STATBEGSYS+[SEMICOLON])) DO BEGIN IF SY = SEMICOLON THEN IN˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙%N (*********************************************** * * DEFT Pascal Version 3.0 * (C) Copyright 1984 DEFT Systems, Inc. * Standard Run-time Package * ************************************************) INTERFACE DFT_STANDARD; FUNCTION ENCODE (VAR ASCII : STRING) : INTEGER; PROCEDURE DECODE (NUMBER, SIZE : INTEGER; VAR ASCII : STRING); PROCEDURE HEX (ADDRESS : INTEGER; BYTECOUNT : INTEGER; VAR ASCII : STRING); PROCEDURE STRINGCOPY (VAR SOURCE : STRING; INDEX, LENGTH : INTEGER; VAR DESTINATION : STRING); PROCEDURE STRINGDELETE (VAR SOURCE : STRING; INDEX, LENGTH : INTEGER); PROCEDURE STRINGINSERT (VAR SOURCE : STRING; VAR DESTINATION : STRING; INDEX : INTEGER); FUNCTION STRINGPOS (VAR IMAGE, TARGET : STRING) : INTEGER; PROCEDURE MARK (VAR PTRVAR : PTR); PROCEDURE RELEASE (PTRVAR : PTR); FUNCTION MEMAVAIL : INTEGER; FUNCTION EOF (VAR FILEVAR : TEXT) : BOOLEAN; FUNCTION EOLN (VAR FILEVAR : TEXT) : BOOLEAN; PROCEDURE GET (VAR FILEVAR : TEXT); PROCEDURE PUT (VAR FILEVAR : TEXT); PROCEDURE PAGE (VAR FILEVAR : TEXT); FUNCTION FILEERROR (VAR FILEVAR : TEXT) : INTEGER; PROCEDURE CLOSE (VAR FILEVAR : TEXT); PROCEDURE CURSOR (POSITION : INTEGER); FUNCTION ENCODEREAL (VAR ASCII : STRING) : REAL; PROCEDURE DECODEREAL (VAR NUMBER : REAL; SIZE, FRACTION : INTEGER; VAR ASCII : STRING); FUNCTION SIN (RADIANS : REAL) : REAL; FUNCTION COS (RADIANS : REAL) : REAL; FUNCTION ARCTAN (TANGENT : REAL) : REAL; FUNCTION EXP (POWER : REAL) : REAL; FUNCTION LN (NUMBER : REAL) : REAL; FUNCTION SQRT (NUMBER : REAL) : REAL; FUNCTION SQR (NUMBER : REAL) : REAL; FUNCTION TRUNC (NUMBER : REAL) : INTEGER; FUNCTION ROUND (NUMBER : REAL) : INTEGER; END; %L ) : REAL; FUNCTION EXP (POWER : REAL) : REAL; FUNCTION LN (NUMBER : REAL) : REAL; FUNCTION SQRT (NUMBER : REAL) : R˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙CDEFT PASCAL II V4.1 RDFTPSCLMAIN 0000 S16000103322E3034403364327EAEC4EC89FCF73406CC003C340617 YDFTDIVIDE 0000 S3506326234064F5F1F025F10ACE126015C4F3406AEC4E689FBC4A4E0E4E05D102700023089FCF93410AEC4341017 YPAGE 0000 S3264AEC43089FCF934108D1D1C4C494E4523204C4F434E20202020202053544154454D454E542020204F5F340617 YDFTWRTSTRG 0000 S3262AEC43089FCF934108D2726202D20434F4E43555252454E542050415343414C2D5320434F4D50494C4552203A20524556204F5F340617 YDFTWRTSTRG 0000 S308DFF4834104F5F340617 YDFTWRTSTRG 0000 S8D0302202D4F5F340617 YDFTWRTSTRG 0000 S3262AEC43089FCF934108D0807202050414745204F5F340617 YDFTWRTSTRG 0000 SAEC4EC89FBC53406CC0003340617 YDFTWRTINT 0000 S17 YDFTWRITELN 0000 F003E SAEC4E689FBC45D102700033089FCF93410AEC4EC89FCF73406CC0005340617 YDFTWRTINT 0000 SCC00203406CC0001340617 YDFTWRTCHAR 0000 SAEC4EC89FE2A3406CC0004340617 YDFTWRTINT 0000 SCC00203406CC0001340617 YDFTWRTCHAR 0000 S3262160004 F0107 SAEC43098023410AEC4EC89FCF73406CC0005340617 YDFTWRTINT 0000 SCC00203406CC0001340617 YDFTWRTCHAR 0000 SAEC4EC89FE2A3406CC0004340617 YDFTWRTINT 0000 SCC00203406CC0001340617 YDFTWRTCHAR 0000 S3262 F014C SCC0001ED5ACC000B3406EC5A10A3E4102E0005AEC4E689FBC45D102700063089FCF93410EC5A830001AEC43089E878E68B4F3406CC0001340617 YDFTWRTCHAR 0000 S3262160007 F01AD SAEC43098023410EC5A830001AEC43089E878E68B4F3406CC0001340617 YDFTWRTCHAR 0000 S3262 F01D0 SEC5AC30001ED5A209F F01A2 S3262AEC4E689FBC45D102700083089FCF9341017 YDFTWRITELN 0000 S160009 F0207 SAEC4309802341017 YDFTWRITELN 0000 F0213 SAEC4EC89FCF7ED89FE2C325C35C03440336432E9FF7C4F5F3406CC000C340617 YDFTMULTIPLY 0000 S30C9FF78308B34108D0B0A4944454E54494649455217 YDFTSTRSTRCPY0000 S3262CC00013406CC000C340617 YDFTMULTIPLY 0000 S30C9FF78308B34108D05045459504517 YDFTSTRSTRCPY0000 S3262CC00023406CC000C340617 YDFTMULTIPLY 0000 S30C9FF78308B34108D08074B4559574F524417 YDFTSTRSTRCPY0000 S3262CC00033406CC000C340617 YDFTMULTIPLY 0000 S30C9FF78308B34108D0C0B50554E4354554154494F4E17 YDFTSTRSTRCPY0000 S3262CC00043406CC000C340617 YDFTMULTIPLY 0000 S30C9FF78308B34108D0A09504152414D4554455217 YDFTSTRSTRCPY0000 S3262CC00053406CC000C340617 YDFTMULTIPLY 0000 S30C9FF78308B34108D0A094E4F5420464F554E4417 YDFTSTRSTRCPY0000 S3262CC00063406CC000C340617 YDFTMULTIPLY 0000 S30C9FF78308B34108D0A094455504C494341544517 YDFTSTRSTRCPY0000 S3262CC00073406CC000C340617 YDFTMULTIPLY 0000 S30C9FF78308B34108D0A0943484152414354455217 YDFTSTRSTRCPY0000 S3262CC00083406CC000C340617 YDFTMULTIPLY 0000 S30C9FF78308B34108D0A09544F4F2053484F525417 YDFTSTRSTRCPY0000 S3262CC00093406CC000C340617 YDFTMULTIPLY 0000 S30C9FF78308B34108D0908544F4F204C4F4E4717 YDFTSTRSTRCPY0000 S3262CC000A3406CC000C340617 YDFTMULTIPLY 0000 S30C9FF78308B34108D0B0A494C4C4547414C204F5017 YDFTSTRSTRCPY0000 S326230423410E6C8134F3406CC000C340617 YDFTMULTIPLY 0000 S30C9FF78308B341017 YDFTSTRSTRCPY0000 S3262325C35C03440336432E8EFAEC430980234108D141320434F4D50494C4154494F4E204552524F52534F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 SAEC430980234108D1110434F4445202020434F4E444954494F4E4F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 S4F5FE75BCC000A3406E65B4F10A3E4102E000AE65B4F3406AEC4308893341017 YDFTSETLOAD 0000 S17 YDFTSETIN 0000 S5D1027000BE65B4F340630C8EB3410CC0010340617 YDFTSTRCTLOAD0000 SAEC4341017FDA332E814AEC43098023410E65B4F3406CC0006340617 YDFTWRTINT 0000 SCC00203406CC0001340617 YDFTWRTCHAR 0000 S30C8EB34104F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 F046F SE65BC30001E75B208A F0458 S3262325C35C0344033643273AEC4E689FE294353C30001C300014F3406EC89FE2C3406EC89FCF71F025F10ACE12F015CA4E0E4E05D1027000C341017FB033262 F04FD SAEC4EC88B334064F5F10A3E11026000DE689FBC45D1027000E3089FCF934108D0605202A2A2A2A4F5F340617 YDFTWRTSTRG 0000 S3262 F051D F0514 SAEC430980234108D0A0920202A2A2A2A2020204F5F340617 YDFTWRTSTRG 0000 S3262AEC4EC88D63406EC88B310A3E1102C000FE689FBC45D10270010CC0001ED5AEC88D63406EC88B33406EC62A3E132623406EC5A10A3E4102E0011AEC43089FCF93410CC00223406CC0001340617 YDFTWRTCHAR 0000 S3262EC5AC30001ED5A20D7 F058A S3262 F056A SCC0001ED5AAEC4EC88D63406EC88B33406EC62A3E132623406EC5A10A3E4102E0012AEC43098023410CC00223406CC0001340617 YDFTWRTCHAR 0000 S3262EC5AC30001ED5A20D8 F05CE S3262E6434F340630C8EF3410CC0010340617 YDFTSTRCTLOAD0000 SAEC4341017FC2332E814AEC4E689FBC45D102700133089FCF93410CC005E3406CC0001340617 YDFTWRTCHAR 0000 SE6434F3406CC0002340617 YDFTWRTINT 0000 SCC00203406CC0001340617 YDFTWRTCHAR 0000 S30C8EF34104F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 F0616 SAEC43098023410CC005E3406CC0001340617 YDFTWRTCHAR 0000 SE6434F3406CC0002340617 YDFTWRTINT 0000 SCC00203406CC0001340617 YDFTWRTCHAR 0000 S30C8EF34104F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 SAEC4EC88D63406CC0003E3E1ED88B33088933410AEC4308893341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SE6434F340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S17 YDFTSETSTORE 0000 F0561 S325C35C034403364AEC4EC88B33406EC88D610A3E1102F0014E689FBC45D102700153089FCF93410CC002D3406CC0001340617 YDFTWRTCHAR 0000 S3262160016 F06E0 SAEC43098023410CC002D3406CC0001340617 YDFTWRTCHAR 0000 S3262 F06F8 SAEC4EC88B33406CC0001E3E1ED88B320A7 F06D7 SAEC4E689FBC45D102700173089FCF9341017 YDFTWRITELN 0000 S160018 F072A SAEC4309802341017 YDFTWRITELN 0000 F0736 S4F5FAEC4E789FBC1325C35C03440336432E8BEAEC4E689FBC45D102700193089FCF9341017 YDFTWRITELN 0000 F075E SAEC4341017FC853262CC00018300013406CC000B340617 YDFTMULTIPLY 0000 S30C8BA308B34108D0B0A4944454E54494649455217 YDFTSTRSTRCPY0000 S3262CC00028300013406CC000B340617 YDFTMULTIPLY 0000 S30C8BA308B34108D0B0A50524F4345445552455317 YDFTSTRSTRCPY0000 S3262CC00038300013406CC000B340617 YDFTMULTIPLY 0000 S30C8BA308B34108D0807535452494E475317 YDFTSTRSTRCPY0000 S3262CC00048300013406CC000B340617 YDFTMULTIPLY 0000 S30C8BA308B34108D070641525241595317 YDFTSTRSTRCPY0000 S3262CC00058300013406CC000B340617 YDFTMULTIPLY 0000 S30C8BA308B34108D07064C4556454C5317 YDFTSTRSTRCPY0000 S3262CC00068300013406CC000B340617 YDFTMULTIPLY 0000 S30C8BA308B34108D0504434F444517 YDFTSTRSTRCPY0000 S3262AEC4E689FBC45D1027001A3089FCF934108D151420434F4D50494C4552205441424C4520464F52204F5F340617 YDFTWRTSTRG 0000 SEC428300013406CC000B340617 YDFTMULTIPLY 0000 S30C8BA308B34104F5F340617 YDFTWRTSTRG 0000 S8D0E0D20495320544F4F20534D414C4C4F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 F0860 SAEC430980234108D1413434F4D50494C4552205441424C4520464F52204F5F340617 YDFTWRTSTRG 0000 SEC428300013406CC000B340617 YDFTMULTIPLY 0000 S30C8BA308B34104F5F340617 YDFTWRTSTRG 0000 S8D0E0D20495320544F4F20534D414C4C4F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 SAEC43089FA433410AEC4341017 YCLOSE 0000 S3264AEC43089FBD73410AEC4341017 YCLOSE 0000 S3264AEC4E689FBC45D1027001B3089FCF93410AEC4341017 YCLOSE 0000 S3264 F0943 SAEC4341017 YHALT 0000 S3262325C35C034403364AEC4EC88D63406EC89FE2710A3E11026001C327E3089FA433410AEC4341017 YEOF 0000 S326435065D1027001DAEC4309802341017 YDFTWRITELN 0000 SAEC430980234108D14132050524F4752414D20494E434F4D504C4554454F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 SAEC4341017FA2E3262AEC43089FA433410AEC4341017 YCLOSE 0000 S3264AEC43089FBD73410AEC4341017 YCLOSE 0000 S3264AEC4E689FBC45D1027001E3089FCF93410AEC4341017 YCLOSE 0000 S3264 F09F4 SAEC4341017 YHALT 0000 S3262 F098D SAEC4EC88B334064F5F10A3E11027001FE689FBC15D10270020341017FC983262 F0A25 SAEC4309802341017 YDFTWRITELN 0000 S4F5FAEC4ED88B3 F0A1C S4F5FAEC4ED89FE274F5FED88D6EC89FCF73406CC0001E3E1ED89FCF7327EAEC43089FA433410AEC4341017 YEOLN 0000 S326435064353C30001C300014F3406327EAEC43089FA433410AEC4341017 YEOF 0000 S326435064353C30001C30001A4E0E4E05D10270021AEC43089FA433410AEC43088D5341017 YDFTREADCHAR 0000 S3262AEC4E688D54F3406CC000A4F10A3E110270022E688D54F3406CC002010A3E1102F0023CC0020E788D5 F0AD6 SAEC4EC89FE273406CC0001E3E1ED89FE27EC89FE278300013406E688D51F0235063089E878308B1F20E784 F0AC6 S16FF4F F0A9F SAEC4E689FE295D10270024341017F4EB3262 F0B15 SAEC4EC89FE273406CC0001E3E1ED89FE27EC89FE278300013406CC00201F0235063089E878308B1F20E784AEC43089FA43341017 YDFTREADLN 0000 F0975 SAEC4EC88D63406CC0001E3E1ED88D6EC88D68300013089E878E68BAEC4E788D5325C35C0160025160026160027160028 F0B79 S34403364327A F0B7C SAEC4E688D54F3406CC002010A3E110260029341017FDC0326220E5 F0B9A SAEC4E688D54F3406CC00611F025F10ACE12E015C4F3406E688D54F3406CC007A1F025F10ACE12D015CA4E0E4E04F3406E688D54F3406CC00411F025F10ACE12E015C4F3406E688D54F3406CC005A1F025F10ACE12D015CA4E0E4E0AAE0EAE05D1027002A4F5FED563089FF6834108D010017 YDFTSTRSTRCPY0000 S3262AEC4E688D54F3406CC00611F025F10ACE12E015C4F3406E688D54F3406CC007A1F025F10ACE12D015CA4E0E4E05D1027002BE688D54F3406CC00203406EC62A3E13262E788D5 F0C4B SEC563406CC000A10A3E1102F002CEC563406CC0001E3E1ED56EC563406AEC4E688D51F0235063089FF68308B1F20E784 F0C6D SAEC4341017FCC93262AEC4E688D54F3406CC00611F025F10ACE12E015C4F3406E688D54F3406CC007A1F025F10ACE12D015CA4E0E4E05D1027002DE688D54F3406CC00203406EC62A3E13262E788D5 F0CCA SAEC4E688D54F3406CC00411F025F10ACE12E015C4F3406E688D54F3406CC005A1F025F10ACE12D015CA4E0E4E04F3406E688D54F3406CC00301F025F10ACE12E015C4F3406E688D54F3406CC00391F025F10ACE12D015CA4E0E4E0AAE0EAE04353C30001C300015D1027FF154F5F3406EC561F0235063089FF68308B1F20E7 S84CC0001ED5ACC001AED58EC5A3406EC58E3E13406CC0002340617 YDFTDIVIDE 0000 S35063506ED56AEC43089FF683410EC568300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B341017 YDFTSTRSTRCMP0000 S102D002EEC563406CC00013406EC62A3E13262ED58 F0DA8 SAEC43089FF683410EC568300013406CC000B340617 YDFTMULTIPLY 0000 SAEC43089FE48308B341017 YDFTSTRSTRCMP0000 S102E002FEC563406CC0001E3E1ED5A F0DE1 SEC5A3406EC5810A3E1102CFF6FEC5A3406CC00013406EC62A3E132623406EC5810A3E1102C0030EC56830001AEC43089FE2EE68BAEC4E789F9EF160031 F0E13 SCC0021AEC4E789F9EF F0E29 S160032 F0C07 SAEC4E688D54F3406CC00301F025F10ACE12E015C4F3406E688D54F3406CC00391F025F10ACE12D015CA4E0E4E05D102700334F5FED564F5FED89FF664F5FE789F9EFAEC4EC89FF663406CC000A340617 YDFTMULTIPLY 0000 S3406AEC4E688D54FE3E13406CC00303406EC62A3E13262ED89FF66EC563406CC0001E3E1ED56341017FAAD3262AEC4E688D54F3406CC00301F025F10ACE12E015C4F3406E688D54F3406CC00391F025F10ACE12D015CA4E0E4E04353C30001C300015D278BEC563406CC000A1F025F10ACE12C015C4F3406EC89FF663406CC S7FFF1F025F10ACE12C015CAAE0EAE05D10270034CC00093406341017F5A632644F5FAEC4ED89FF664F5FED56 F0F1A S160035 F0E67 SAEC4E688D54F3406CC002B1F025F10ACE126015C4F3406E688D54F3406CC002D1F025F10ACE126015CAAE0EAE04F3406E688D54F3406CC002A1F025F10ACE126015CAAE0EAE04F3406E688D54F3406CC002F1F025F10ACE126015CAAE0EAE04F3406E688D54F3406CC00291F025F10ACE126015CAAE0EAE04F3406E688D54F S3406CC003D1F025F10ACE126015CAAE0EAE04F3406E688D54F3406CC002C1F025F10ACE126015CAAE0EAE04F3406E688D54F3406CC005B1F025F10ACE126015CAAE0EAE04F3406E688D54F3406CC005D1F025F10ACE126015CAAE0EAE04F3406E688D54F3406CC003B1F025F10ACE126015CAAE0EAE04F3406E688D54F3406 SCC00261F025F10ACE126015CAAE0EAE04F3406E688D54F3406CC007C1F025F10ACE126015CAAE0EAE04F3406E688D54F3406CC007E1F025F10ACE126015CAAE0EAE05D10270036E688D54F8300213089FB61E68BAEC4E789F9EF341017F8CD3262160037 F107A SAEC4E688D54F3406CC002B1F025F10ACE126015C4F3406E688D54F3406CC002D1F025F10ACE126015CAAE0EAE04F3406E688D54F3406CC002A1F025F10ACE126015CAAE0EAE04F3406E688D54F3406CC002F1F025F10ACE126015CAAE0EAE04F3406E688D54F3406CC00291F025F10ACE126015CAAE0EAE04F3406E688D54F S3406CC003D1F025F10ACE126015CAAE0EAE04F3406E688D54F3406CC002C1F025F10ACE126015CAAE0EAE04F3406E688D54F3406CC005B1F025F10ACE126015CAAE0EAE04F3406E688D54F3406CC005D1F025F10ACE126015CAAE0EAE04F3406E688D54F3406CC003B1F025F10ACE126015CAAE0EAE04F3406E688D54F3406 SCC00261F025F10ACE126015CAAE0EAE04F3406E688D54F3406CC007C1F025F10ACE126015CAAE0EAE04F3406E688D54F3406CC007E1F025F10ACE126015CAAE0EAE05D10270038E688D54F8300213089FB61E68BAEC4E789F9EF341017F76B3262160039 F11DC SAEC4E688D54F1083003A1026003A341017F7533262AEC4E688D54F3406CC003D10A3E11026003BCC0019E789F9EF341017F733326216003C F1220 SCC0018AEC4E789F9EF F1231 S16003D F1207 S1083003C1026003EAEC4341017F7133262AEC4E688D54F3406CC003D10A3E11026003FCC0010E789F9EF341017F6F33262160040 F1260 SAEC4E688D54F3406CC003E10A3E110260041CC000CE789F9EF341017F6D03262160042 F1283 SCC000FAEC4E789F9EF F1294 F1271 S160043 F1245 S1083003E10260044AEC4341017F6B03262AEC4E688D54F3406CC003D10A3E110260045CC000EE789F9EF341017F6903262160046 F12C3 SCC000DAEC4E789F9EF F12D4 S160047 F12A8 S1083002E10260048AEC4341017F6703262AEC4E688D54F3406CC002E10A3E110260049CC0018E789F9EF341017F650326216004A F1303 SCC0017AEC4E789F9EF F1314 S16004B F12E8 S108300271026004C4F5FED56 F0B7F SAEC4341017F62C3262AEC4E688D54F3406CC002710A3E11026004D341017F6133262AEC4E688D54F3406CC002710A3E11027004E16F81C F1360 F1347 SAEC4EC89F9F03406EC56E3E13406CC025810A3E11026004FCC00033406341017F3C73264 F137B SAEC4EC89F9F03406EC56E3E13406E688D51F0235063089D8E7308B1F20E784EC563406CC0001E3E1ED56AEC4EC88D63406CC000110A3E1102600504F5FED56160051 F13C2 S16FF60 F13C9 F0B82 SEC563406CC000110A3E110260052CC0001AEC4E789F9EFEC89F9F03089D8E7E68B4FAEC4ED89FF66160053 F13DA SEC5634064F5F10A3E110260054CC00083406AEC4341017F0BA3264CC0001AEC4E789F9EF4F5FED89FF66160055 F1404 SCC0002AEC4E789F9EFEC89F9F0ED89FF66EC56ED89FBBFEC89F9F03406EC56E3E1ED89F9F0 F1424 F13F7 S160056 F1328 S1083002810260057AEC4341017F5043262AEC4E688D54F3406CC002A10A3E110270058CC0011E789F9EF160059 F146F SAEC4341017F4DF3262AEC4E688D54F3406CC002A10A3E11027005A341017F4C6326220E5 F1494 SAEC4341017F4BB3262AEC4E688D54F3406CC002910A3E126CC341017F4A4326216F6C8 F1479 S16005B F1454 S1083007B1026005CAEC4341017F48D3262AEC4E688D54F3406CC007D10A3E11027005D341017F474326220E5 F14E6 SAEC4341017F469326216F68D16005E F14CB SCC00073406AEC4341017EFC03264AEC4341017F44C326216F670 F14FE F14C3 F144C F1320 F12E0 F12A0 F123D F11F9 F1097 F0F35 F0E35 S325C35C034403364AEC4EC89F9ED3406CC0001E3E1ED89F9EDEC89F9ED3406CC0018340617 YDFTMULTIPLY 0000 SAEC43089DB40308B34103048341017 YDFTSTRSTRCPY0000 S3262AEC4EC89F9ED3406CC0018340617 YDFTMULTIPLY 0000 S3406AEC4EC89F9ED3406CC00013406EC62A3E132621F0235063089DB4B308B1F20ED84AEC4EC89F9ED3406CC0018340617 YDFTMULTIPLY 0000 S3406E6471F023506AEC43089DB4D308B1F20E784AEC4EC89F9ED3406CC0018340617 YDFTMULTIPLY 0000 S3406E6451F023506AEC43089DB4E308B1F20E784AEC4EC89F9ED3406CC0018340617 YDFTMULTIPLY 0000 S34064F5F1F023506AEC43089DB50308B1F20ED84AEC4EC89F9ED3406CC0018340617 YDFTMULTIPLY 0000 S3406CC00011F023506AEC43089DB52308B1F20E784AEC4EC89F9ED3406CC0018340617 YDFTMULTIPLY 0000 S34064F5F1F023506AEC43089DB53308B1F20E784AEC4EC89F9ED3406CC0018340617 YDFTMULTIPLY 0000 S3406EC421F023506AEC43089DB54308B1F20ED84325C35C034403364EC443406EC4210A3E1102C005FCC00013406AEC4341017EE4B3264 F1673 SEC444D2A054353C300013406CC7FFF1F025F10ACE12C015C4F3406EC424D2A054353C300013406CC7FFF1F025F10ACE12C015CAAE0EAE05D10270060CC00013406AEC4341017EE0132644F5FED444F5FED42 F16BD SAEC4EC1A3406CC000A10A3E110260061CC00043406341017F05F3264160062 F16E3 SAEC4EC1A3406CC0001E3E1ED1AEC1A8300013406CC000C340617 YDFTMULTIPLY 0000 S3406E6471F023506AEC43089F955308B1F20E784AEC4EC1A8300013406CC000C340617 YDFTMULTIPLY 0000 S3406EC441F023506AEC43089F959308B1F20ED84AEC4EC1A8300013406CC000C340617 YDFTMULTIPLY 0000 S3406EC421F023506AEC43089F95B308B1F20ED84 F16F2 S325C35C034403364AEC4EC183406CC001410A3E110260063CC00023406341017EFBE3264160064 F1784 SAEC4EC183406CC0001E3E1ED18EC1883000158495849584934064F5F1F0235063089F8B5308B1F20ED84AEC4EC1883000158495849584934064F5F1F0235063089F8B7308B1F20ED84 F1793 S325C35C034403364AEC4EC89FE2A3406CC03E810A3E110260065CC00063406341017EF4C3264 F17F6 SAEC4EC89FE2A584958493406EC421F0235063089E911308B1F20E784AEC4EC89FE2A3406CC0001E3E1ED89FE2A325C35C034403364AEC4EC89FE2A3406CC03E810A3E110260066CC00063406341017EEF93264 F1849 SAEC4EC89FE2A584958493406EC441F0235063089E911308B1F20E784AEC4EC89FE2A584958493406EC421F0235063089E913308B1F20ED84AEC4EC89FE2A3406CC0001E3E1ED89FE2A325C35C034403364AEC4EC89FE2A3406CC03E810A3E110260067CC00063406341017EE8A3264 F18B8 SAEC4EC89FE2A584958493406EC461F0235063089E911308B1F20E784AEC4EC89FE2A584958493406EC441F0235063089E912308B1F20E784AEC4EC89FE2A584958493406EC421F0235063089E913308B1F20ED84AEC4EC89FE2A3406CC0001E3E1ED89FE2A325C35C016006834403364E6434F3406AEC4AE84341017EB8832 S64CC0001AEC4AE84E789FBC1AEC4AE84E689F9EF4F34063044341017 YDFTSETLOAD 0000 S17 YDFTSETIN 0000 S4353C30001C300015D10270069AEC4AE84341017F208326220D1 F1971 SAEC4AE84E689FBC15D1027006A341017ED323262 F198B S325C35C034403364AEC4AE84E689F9EF4F340630C824341017 YDFTSETLOAD 0000 S17 YDFTSETIN 0000 S4353C30001C300015D1027006B30C824341017 YDFTSETLOAD 0000 S3044341017 YDFTSETLOAD 0000 S17 YDFTSETUNION 0000 SE6434F3406AEC4341017FF5532E824 F19BD S325C35C034403364AEC4AE84E689F9EF4F3406CC001610A3E11026006C341017F182326216006D F19FB SCC00033406AEC4AE84341017EAB73264 F1A05 SAEC4AE843088D8341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0021340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 SAEC43006341017 YDFTSETLOAD 0000 SCC00023406AEC4341017FF5232E844325C35C034403364327CAEC4AE84EC89F9ED3406CC008C10A3E11026006ECC00013406341017ECDD326416006F F1A65 S4F5F3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB40308B34103044341017 YDFTSTRSTRCPY0000 S3262AEC4EC025849AEC4AE843089E8F1EC8B830001584958495849AEC4AE843089F8B5EC8BED5AEC5AED58EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB40308B34103044341017 YDFTSTRSTRCMP0000 S10270070EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB4BEC8BED5A20C3 F1AE1 SEC5A34064F5F10A3E110270071CC00063406AEC4AE84341017E9B43264160072 F1B08 SAEC4AE84EC89F9ED3406CC0001E3E1ED89F9EDEC89F9ED3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB40308B34103044341017 YDFTSTRSTRCPY0000 S3262AEC4AE84EC89F9ED3406CC0018340617 YDFTMULTIPLY 0000 S3406EC581F023506AEC4AE843089DB4B308B1F20ED84AEC4AE84EC89F9ED3406CC0018340617 YDFTMULTIPLY 0000 S3406E6431F023506AEC4AE843089DB4D308B1F20E784AEC4AE84EC89F9ED3406CC0018340617 YDFTMULTIPLY 0000 S34064F5F1F023506AEC4AE843089DB4E308B1F20E784AEC4AE84EC89F9ED3406CC0018340617 YDFTMULTIPLY 0000 S34064F5F1F023506AEC4AE843089DB50308B1F20ED84AEC4AE84EC89F9ED3406CC0018340617 YDFTMULTIPLY 0000 S3406AEC4EC021F023506AEC4AE843089DB53308B1F20E784AEC4AE84EC89F9ED3406CC0018340617 YDFTMULTIPLY 0000 S34064F5F1F023506AEC4AE843089DB54308B1F20ED84AEC4EC025849AEC4AE843089E8F1EC8B8300015849584958493406AEC4AE84EC89F9ED1F0235063089F8B5308B1F20ED84 F1B1B F1A74 S325C35C034403364327CAEC4EC02ED5A4F5F3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB40308B34103042341017 YDFTSTRSTRCPY0000 S3262EC5A5849AEC4AE843089E8F1EC8B830001584958495849AEC4AE843089F8B5EC8BED58EC583406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB40308B34103042341017 YDFTSTRSTRCMP0000 S10270073EC583406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB4BEC8BED5820C3 F1CEB SEC5A3406CC00013406EC62A3E13262ED5AEC5A34064F5F1F025F10ACE12F015C4F3406EC5834064F5F1F025F10ACE127015CAAE0EAE05D1027FF65EC5834064F5F10A3E110260074CC00053406AEC4AE84341017E76F3264 F1D4D SEC58ED4D325C35C034403364AEC4AE84E689F9EF4F3406CC002110A3E1102600753089FF683410CC000B340617 YDFTSTRCTLOAD0000 SCC00013406AEC4341017FCB3326FAEC4AE84341017EDDF3262160076 F1D7E S4F5F3406AEC4AE84341017E7153264 F1DA8 S325C35C034403364327C4F5FE7D8024F5F30D802ED01AEC4AE843088B5341017 YDFTSETLOAD 0000 S3044341017 YDFTSETLOAD 0000 SCC00023406AEC4341017FBAA32E844AEC4AE84E689F9EF4F34063088B5341017 YDFTSETLOAD 0000 S17 YDFTSETIN 0000 S5D10270077AEC4AE84E689F9EF4F3406CC000110A3E110260078CC0003E7D802EC89FF6630D802ED01AEC4AE84341017ED4B3262160079 F1E1F SCC0001ED58AEC4AE84E689F9EF4F3406CC00041F025F10ACE126015C4F3406E689F9EF4F3406CC00051F025F10ACE126015CAAE0EAE05D1027007AE689F9EF4F3406CC000510A3E11026007BCC00014353C30001ED58 F1E88 SAEC4AE84341017ECE73262 F1E77 SAEC4AE84E689F9EF4F3406CC002110A3E11026007C327E3089FF683410CC000B340617 YDFTSTRCTLOAD0000 SAEC4341017FDAF326D3506ED5AEC5A34064F5F10A3E11027007DEC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB4DE68B4F34064F5F10A3E11027007ECC00013406AEC4AE84341017E5BE326416007F F1EFE SEC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB4EE68BE7D802EC583406EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB54EC8B340617 YDFTMULTIPLY 0000 S30D802ED01 F1F11 F1EDC SAEC4AE84341017EC2B3262160080 F1EB2 SAEC4AE84E689F9EF4F34064F5F10A3E110260081CC0001E7D802EC583406EC89FF66340617 YDFTMULTIPLY 0000 S30D802ED01AEC4AE84341017EBF13262160082 F1F70 S3044341017 YDFTSETLOAD 0000 SCC00023406AEC4341017F98732E824 F1F96 F1F5C F1E3C S3044341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC00023406AEC4341017F9D432E844 F1E0A S325C35C0160083344033643275AEC4300C341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0014340617 YDFTSETELEMNT0000 SCC0018340617 YDFTSETELEMNT0000 SCC002A340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S30583410AEC4AE84341017FDB532E824AEC4AE84AE84E689F9EF4F3406CC001810A3E110260084341017EB5D3262160085 F2020 SCC00033406AEC4AE84AE84341017E4903264 F202A SAEC4300C341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0014340617 YDFTSETELEMNT0000 SCC0015340617 YDFTSETELEMNT0000 SCC002A340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S30553410AEC4AE84341017FD4B32E824E6554F3406E6584F10A3E110270086CC00013406AEC4AE84AE84341017E4383264EC59ED56 F2082 SE6584F3406EC593406EC563406AEC4AE84AE84341017F5B23268AEC4AE84AE84EC1AEDD806E689F9EF4F3406CC001510A3E110260087341017EAAF3262CC0004E75B30D8083410305334103051341030D8023410AEC4341017FED9326A160088 F20CE SAEC4AE84AE84E689F9EF4F3406CC001410A3E110260089341017EA6E326216008A F210F SCC00033406AEC4AE84AE84341017E3A13264 F2119 SAEC4AE84AE84E689F9EF4F3406CC002A10A3E11026008B341017EA3B326216008C F2142 SCC00023406AEC4AE84AE84341017E36E3264 F214C SAEC4300C341017 YDFTSETLOAD 0000 S305B341030D8083410305334103051341030D8023410AEC4AE84341017FE4332E82C F20F8 SECD8068300013406CC000C340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089F95BEC8B3406ECD8068300013406CC000C340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089F959EC8B3406EC62A3E132623406CC0001E3E13406EC51340617 YDFTMULTIPLY 0000 SEDD804ECD8068300013406CC000C340617 YDFTMULTIPLY 0000 S3406ECD8041F023506AEC4AE84AE843089F95F308B1F20ED84ECD8068300013406CC000C340617 YDFTMULTIPLY 0000 S3406E65B1F023506AEC4AE84AE843089F956308B1F20E784ECD8068300013406CC000C340617 YDFTMULTIPLY 0000 S3406EC531F023506AEC4AE84AE843089F957308B1F20ED84ECD8068300013406CC000C340617 YDFTMULTIPLY 0000 S3406EC511F023506AEC4AE84AE843089F95D308B1F20ED84325C35C0 F1FCC S34403364327A4F5FE7D80A4F5FE7D8084F5FEDD8024F5FEDD8064F5FEDD804AEC4AE843089F9CD341017 YDFTSETLOAD 0000 S304C341017 YDFTSETLOAD 0000 S4F5F3406AEC4341017F6D532E844AEC4AE84E689F9EF4F34063089F9CD341017 YDFTSETLOAD 0000 S17 YDFTSETIN 0000 S5D1027008DAEC4AE84E689F9EF4F3406CC002110A3E11026008E327E3089FF683410CC000B340617 YDFTSTRCTLOAD0000 SAEC4341017F96C326D3506ED5ACC0001E756EC5A34064F5F10A3E11027008FEC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB4DE68B4F3406CC000210A3E110270090CC00013406AEC4AE84341017E1753264160091 F2347 SEC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB4EE68BE7D80AEC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB4EE68B4F3406CC000410A3E110260092EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB4FE68BE7D808160093 F2396 SEC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB4EE68BE7D808 F23B2 SEC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB50EC8BEDD806EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB54EC8BEDD804EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB56EC8BEDD802AEC4AE843089FF6834108D0A0953454D4150484F524517 YDFTSTRSTRCMP0000 S10260094AEC4AE84341017E7463262AEC4AE84E689F9EF4F3406CC001310A3E110260095304C341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0014340617 YDFTSETELEMNT0000 SCC0016340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S30573410AEC4341017F94032E824EC58EDD802AEC4AE84E689F9EF4F3406CC00141F025F10ACE127015C4F3406E6574F3406CC00011F025F10ACE127015CAAE0EAE05D102700964F5FE7D80A F24B7 S160097 F2453 SCC0001EDD8024F5FE756 F24BF F2433 SE6D80A4F34064F5F10A3E110260098CC00013406AEC4AE84341017DFE43264 F24D8 F235A F2324 SE6565D10270099AEC4AE84341017E68A3262 F24EF S16009A F22F5 SAEC4AE84E689F9EF4F3406CC001F10A3E11026009BE689F9EF4F3406CC001310A3E11026009C341017E65A326216009D F2523 SCC00033406AEC4AE84341017DF8F3264 F252D SCC0004E7D80A30D808341030D806341030D804341030D8023410344017FA70326A16009E F2512 S304C341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC00023406AEC4341017F41F32E844 F2561 F24FD F22E0 S325C35C0344033643276AEC4AE84341017E5F532624F5FE75B4F5FED584F5FED5617 YDFTSETDEFINE0000 SCC0021340617 YDFTSETELEMNT0000 SCC001C340617 YDFTSETELEMNT0000 SAEC43006341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0012340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 SCC00043406AEC4341017F3C532E844AEC4AE84E689F9EF4F3406CC00211F025F10ACE126015C4F3406E689F9EF4F3406CC001C1F025F10ACE126015CAAE0EAE05D1027009FE689F9EF4F3406CC001C10A3E1102700A0CC0001E75A1600A1 F261B SAEC4AE84341017E55632624F5FE75A F2623 SAEC4AE84EC89F9EDED52AEC4341017F7223262AEC4AE84E689F9EF4F3406CC001510A3E1102600A2341017E5233262AEC4341017F6FD326220D9 F265A SAEC4AE84E689F9EF4F3406CC001810A3E1102600A3341017E4FC3262AEC4AE84E689F9EF4F3406CC002110A3E1102700A44F5F3406341017DE2432641600A5 F269D S327EAEC4AE843089FF683410CC000B340617 YDFTSTRCTLOAD0000 SAEC4341017F5B2326D3506ED54AEC4AE84341017E4AD3262EC5434064F5F10A3E1102700A6EC543406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB4DE68B4F3406CC000210A3E1102700A7CC00013406AEC4AE84341017DDB532641600A8 F2707 SEC543406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB4EE68BE75BEC543406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB50EC8BED58E65A5D102700A9EC543406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE843089DB54EC8BED561600AA F2751 SCC0001ED56 F276C F271A F26E4 F26AB SAEC43006341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0016340617 YDFTSETELEMNT0000 SCC0012340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 SAEC43006341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0015340617 YDFTSETELEMNT0000 SCC0021340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 SCC00033406AEC4341017F1DB32E8441600AB F2681 SCC00033406AEC4AE84341017DCFB3264 F27C1 SEC523406AEC4AE84EC89F9ED10A3E1102F00ACEC523406CC0001E3E1ED52EC523406CC0018340617 YDFTMULTIPLY 0000 S3406E65B1F023506AEC4AE843089DB4E308B1F20E784EC523406CC0018340617 YDFTMULTIPLY 0000 S3406EC581F023506AEC4AE843089DB50308B1F20ED84EC523406CC0018340617 YDFTMULTIPLY 0000 S3406AEC4EC1A1F023506AEC4AE843089DB54308B1F20ED84EC523406CC0018340617 YDFTMULTIPLY 0000 S3406AEC4EC021F023506AEC4AE843089DB53308B1F20E784EC523406CC0018340617 YDFTMULTIPLY 0000 S3406E65A1F023506AEC4AE843089DB52308B1F20E784AEC4EC1A3406EC56E3E1ED1A16FF25 F27E4 SAEC4AE84E689F9EF4F3406CC001210A3E1102700ADE689F9EF4F3406CC001610A3E1102600AE341017E2AB32621600AF F28D2 SCC00033406AEC4AE84341017DBE03264 F28DC S17 YDFTSETDEFINE0000 SCC0021340617 YDFTSETELEMNT0000 SCC001C340617 YDFTSETELEMNT0000 SAEC43006341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0012340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 SCC00023406AEC4341017F07432E844 F28C1 S16FCAC F260A SAEC4AE84E689F9EF4F3406CC001210A3E1102600B0341017E240326217 YDFTSETDEFINE0000 SCC0016340617 YDFTSETELEMNT0000 SCC0018340617 YDFTSETELEMNT0000 SAEC43006341017 YDFTSETLOAD 0000 SCC00023406AEC4341017F02A32E8441600B1 F293D SCC00033406AEC4AE84341017DB4A3264 F2972 S325C35C034403364327DAEC4AE84341017E1ED326217 YDFTSETDEFINE0000 SCC0021340617 YDFTSETELEMNT0000 SAEC4AE843088D8341017 YDFTSETLOAD 0000 S4F5F3406AEC4341017EFDD32E844AEC4AE84E689F9EF4F3406CC002110A3E1102600B23089FF683410CC000B340617 YDFTSTRCTLOAD0000 S4F5F3406AEC4341017F061326FAEC4AE84341017E18D3262AEC4AE84E689F9EF4F3406CC000B10A3E1102600B3341017E17132621600B4 F2A0C SCC00033406AEC4AE84341017DAA63264 F2A16 SAEC43006341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0016340617 YDFTSETELEMNT0000 SCC0015340617 YDFTSETELEMNT0000 SCC0021340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S30593410AEC4341017F36332E824AEC4AE84EC89F9ED3406CC0018340617 YDFTMULTIPLY 0000 S3406E6591F023506AEC4AE843089DB4E308B1F20E784AEC4AE84EC89F9ED3406CC0018340617 YDFTMULTIPLY 0000 S34064F5F1F023506AEC4AE843089DB50308B1F20ED84AEC4AE84EC89F9ED3406CC0018340617 YDFTMULTIPLY 0000 S3406EC5A1F023506AEC4AE843089DB54308B1F20ED84AEC4341017EF08326216FEDD F29D1 S325C35C0344033643276AEC4AE84341017E090326217 YDFTSETDEFINE0000 SCC0021340617 YDFTSETELEMNT0000 SAEC4AE843088D8341017 YDFTSETLOAD 0000 S4F5F3406AEC4341017EE8032E844AEC4AE84E689F9EF4F3406CC002110A3E1102600B53089FF683410CC000B340617 YDFTSTRCTLOAD0000 SCC00023406AEC4341017EF03326FAEC4AE84EC89F9EDED52341017E0293262AEC4AE84E689F9EF4F3406CC000B10A3E1102600B6341017E00D32621600B7 F2B70 SCC00033406AEC4AE84341017D9423264 F2B7A SAEC43006341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0016340617 YDFTSETELEMNT0000 SCC0015340617 YDFTSETELEMNT0000 SCC0021340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S305A3410305B3410305634103054341030583410AEC4341017F6B732E82CEC523406CC0018340617 YDFTMULTIPLY 0000 S3406E65A1F023506AEC4AE843089DB4E308B1F20E784EC523406CC0018340617 YDFTMULTIPLY 0000 S3406E65B1F023506AEC4AE843089DB4F308B1F20E784EC523406CC0018340617 YDFTMULTIPLY 0000 S3406EC561F023506AEC4AE843089DB50308B1F20ED84EC523406CC0018340617 YDFTMULTIPLY 0000 S3406EC541F023506AEC4AE843089DB54308B1F20ED84AEC4341017ED84326216FEB6 F2B2E S325C35C0344033643276AEC4AE84341017DF0C3262AEC4AE84E689F9EF4F3406CC002110A3E1102600B8EC89F9EDED56AEC4341017F0CB3262AEC4AE84E689F9EF4F3406CC001510A3E1102600B9341017DECC3262AEC4341017F0A6326220D9 F2CB1 SAEC4AE84E689F9EF4F3406CC001810A3E1102600BA341017DEA532621600BB F2CD8 SCC00033406AEC4AE84341017D7DA3264 F2CE2 SAEC43006341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0016340617 YDFTSETELEMNT0000 SCC0015340617 YDFTSETELEMNT0000 SCC0021340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S305A3410305B3410305434103052341030583410AEC4341017F54F32E82CEC563406AEC4AE84EC89F9ED10A3E1102F00BCEC563406CC0001E3E1ED56EC563406CC0018340617 YDFTMULTIPLY 0000 S3406E65A1F023506AEC4AE843089DB4E308B1F20E784EC563406CC0018340617 YDFTMULTIPLY 0000 S3406E65B1F023506AEC4AE843089DB4F308B1F20E784EC563406CC0018340617 YDFTMULTIPLY 0000 S3406EC541F023506AEC4AE843089DB50308B1F20ED84EC563406CC0018340617 YDFTMULTIPLY 0000 S3406AEC4EC021F023506AEC4AE843089DB53308B1F20E784EC563406CC0018340617 YDFTMULTIPLY 0000 S3406AEC4EC1A1F023506AEC4AE843089DB54308B1F20ED84EC563406CC0018340617 YDFTMULTIPLY 0000 S3406CC00011F023506AEC4AE843089DB52308B1F20E784EC563406CC0018340617 YDFTMULTIPLY 0000 S3406EC581F023506AEC4AE843089DB56308B1F20ED84AEC4EC1A3406EC52E3E1ED1A16FEE0 F2D4A SAEC4341017EB84326216FE15 F2C8D S325C35C034403364327FAEC4AE84E689F9EF4F3406CC001D1F025F10ACE126015CE75B341017DCF73262AEC4AE84E689F9EF4F3406CC002110A3E1102700BD4F5F3406341017D61F3264AEC4AE843089FF6834108D010017 YDFTSTRSTRCPY0000 S3262 F2EA2 SE65B5D102700BEAEC4AE843089FF683410CC000B340617 YDFTSTRCTLOAD0000 SCC00043406AEC4341017EB67326F1600BF F2EC6 SAEC4AE843089FF683410CC000B340617 YDFTSTRCTLOAD0000 SCC00033406AEC4341017EB44326F F2EE9 SAEC4AE84EC89F9ED3406CC0018340617 YDFTMULTIPLY 0000 S3406CC00011F023506AEC4AE843089DB52308B1F20E784AEC4AE84341017DC473262AEC43006341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0016340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 SE65B4F3406AEC4EC023406CC0001E3E13406AEC4AE84341017E9BE32E826AEC4AE84E689F9EF4F3406CC001610A3E1102600C0341017DBF632621600C1 F2F87 SCC00033406AEC4AE84341017D52B3264 F2F91 SCC00203406E65B4FE3E13406AEC4AE84341017E82A3264325C35C01600C21600C334403364327BAEC4AE84AE84E689F9EF4F3406CC001310A3E1102700C4CC00013406341017D4E13264 F2FDF SAEC4AE84AE84341017DB8C32623044341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0015340617 YDFTSETELEMNT0000 SCC0014340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S30593410AEC434108DA032E824E6D8024F3406CC000410A3E1102700C5CC00013406AEC4AE84AE84341017D48832641600C6 F3032 S30D802EC01ED57EC578300013406CC000C340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089F955E68B4F3406E6594F10A3E1102700C7CC00013406AEC4AE84AE84341017D44432641600C8 F3076 SCC00153406EC573406AEC4AE84AE84341017E7943266 F308B SEC578300013406CC000C340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089F956E68BE7D802EC578300013406CC000C340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089F957EC8B30D802ED01 F3047 SAEC4AE84AE84E689F9EF4F3406CC001510A3E11027FEF5E689F9EF4F3406CC001410A3E1102600C9341017DA7632621600CA F3107 SCC00033406AEC4AE84AE84341017D3A93264 F3111 S3044341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC00023406AEC4AE84341017E85B32E844325C35C0344033643277CC00123406EC423406AEC4AE84AE84341017E6D73266EC423406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB50EC8B830001584958495849AEC4AE84AE843089F8B7EC8BED57EC42ED55AEC4AE84AE84E689F9EF4F3406CC001110A3E1102600CBAEC4AE84AE84341017D9CF3262EC553406EC5710A3E1102E00CCCC00043406AEC4AE84AE84341017D2F832641600CD F31C2 SEC553406CC0001E3E1ED55EC553406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB52E68B5D102700CE3044341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0015340617 YDFTSETELEMNT0000 SCC0018340617 YDFTSETELEMNT0000 SCC0012340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S30593410AEC4341017FD9032E824E6594F3406EC553406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB4EE68B4F10A3E1102600CFEC5A3406EC553406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB50EC8B10A3E1102700D0CC00013406AEC4AE84AE84341017D24032641600D1 F327A SE6594F3406CC000410A3E1102600D2CC00163406EC5A8300013406CC000C340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089F95FEC8B3406AEC4AE84AE84341017E5683266 F329E F328F S1600D3 F3257 SE6594F34064F5F1F025F10ACE127015C5D102700D4CC00013406AEC4AE84AE84341017D1D53264 F32E5 F32D0 S1600D5 F31FF SAEC4AE84AE84E689F9EF4F3406CC002110A3E1102700D64F5F3406341017D1B032641600D7 F3311 S327EAEC4AE84AE843089FF683410CC000B340617 YDFTSTRCTLOAD0000 SAEC4AE84341017E93A326D3506ED53AEC4AE84AE84341017D8333262EC5334064F5F10A3E1102700D8EC533406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB4DE68B4F3406CC000110A3E1102700D9CC00043406AEC4AE84AE84341017D1373264 F3383 SEC533406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB4EE68BE759EC533406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB50EC8BED5AEC533406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB52E68B5D102700DA4F5F3406EC533406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB53E68B1D3406EC533406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB54EC8B3406AEC4AE84AE84341017E47832681600DB F33E6 SCC00013406EC533406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB53E68B1D3406EC533406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB54EC8B3406AEC4AE84AE84341017E42E3268 F342F SAEC4AE84AE84E689F9EF4F3406CC00131F025F10ACE126015C5D102700DC3044341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0015340617 YDFTSETELEMNT0000 SCC0018340617 YDFTSETELEMNT0000 SCC0012340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S30593410AEC4341017FAFE32E824 F3494 SE6594F3406EC553406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB4EE68B4F1F025F10ACE127015C4F3406EC5A3406EC553406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB50EC8B1F025F10ACE127015CAAE0EAE05D102700DDCC00013406AEC4AE84AE84341017CF9B3264 F351F F335E F331F F32FA F31D7 S17 YDFTSETDEFINE0000 SCC0015340617 YDFTSETELEMNT0000 SCC0012340617 YDFTSETELEMNT0000 S3044341017 YDFTSETLOAD 0000 SCC00023406AEC4AE84341017E43D32E844AEC4AE84AE84E689F9EF4F3406CC001510A3E11027FC35E689F9EF4F3406CC001210A3E1102600DE341017D5F932621600DF F3584 SCC00033406AEC4AE84AE84341017CF2C3264 F358E F31A8 SEC553406EC5710A3E1102F00E0CC00043406AEC4AE84AE84341017CF0D3264 F35AD SCC00133406EC423406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB50EC8B830001584958495849AEC4AE84AE843089F8B9EC8B3406CC00013406EC62A3E132623406AEC4AE84AE84341017E2283266EC423406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB53E68B1D3406AEC4AE84EC0210A3E1102F00E1CC00033406EC423406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB53E68B1D3406AEC4AE84EC023406AEC4AE84AE84341017E23A3268 F3635 S325C35C034403364E6454F3406CC00011F025F10ACE12C015C4F3406E6434F3406CC00011F025F10ACE12C015CAAE0EAE05D102700E2CC00013406AEC4AE84AE84341017CE1A32644F5FE7471600E3 F36A0 SE6454F34064F5F1F025F10ACE126015C4F3406E6434F34064F5F1F025F10ACE126015CAAE0EAE05D102700E44F5FE7471600E5 F36E5 SCC0001E747 F36EC F36B9 S325C35C0 F2FC2 S1600E61600E71600E834403364327C4F5FE7D8024F5F30D802ED01AEC4AE84AE84AE84AE84AE843089FF73341017 YDFTSETLOAD 0000 S3044341017 YDFTSETLOAD 0000 SCC00033406AEC4AE84AE84AE84AE84341017E25632E844AEC4AE84AE84AE84AE84AE84E689F9EF4F34063089FF73341017 YDFTSETLOAD 0000 S17 YDFTSETIN 0000 S5D102700E9AEC4AE84AE84AE84AE84AE84E689F9EF4F10830021102600EA327E3089FF683410CC000B340617 YDFTSTRCTLOAD0000 SAEC4AE84AE84AE84AE84341017E4D9326D3506ED5AAEC4AE84AE84AE84AE84AE84341017D3CC3262EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE84AE84AE84AE843089DB4DE68B4F10830000102600EBEC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE84AE84AE84AE843089DB4EE68BE7D8024F5F30D802ED01CC00183406EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE84AE84AE84AE843089DB54EC8B3406AEC4AE84AE84AE84AE84AE84341017DFF632661600EC F37DF S10830001102600EDEC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE84AE84AE84AE843089DB4EE68BE7D802EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE84AE84AE84AE843089DB50EC8B30D802ED01AEC4AE84AE84AE84AE84AE84E689F9EF4F3406CC00131F025F10ACE126015C5D102700EEEC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE84AE84AE84AE843089DB52E68B5D102700EF4F5FED581600F0 F38D5 SCC0001ED58 F38DC SEC583406EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE84AE84AE84AE843089DB53E68B1D3406EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE84AE84AE84AE843089DB54EC8B3406AEC4AE84AE84AE84AE84AE84341017DF6B32683044341017 YDFTSETLOAD 0000 S30D8023410AEC4AE84AE84AE84341017F67032E824E6D8024F3406AEC4AE84AE84AE84AE84AE843089FA12341017 YDFTSETLOAD 0000 S17 YDFTSETIN 0000 S5D102700F1CC00223406AEC4AE84AE84AE84AE84AE84341017DE523264 F3978 F38B2 SE6D8024F3406AEC4AE84AE84AE84AE84AE843089FA12341017 YDFTSETLOAD 0000 S17 YDFTSETIN 0000 S5D102700F2EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE84AE84AE84AE843089DB52E68B5D102700F3CC0001ED581600F4 F39D6 SCC0002ED58 F39DE S1600F5 F39B3 SEC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE84AE84AE84AE843089DB52E68B5D102700F64F5FED581600F7 F3A09 SCC0001ED58 F3A10 F39E6 SEC583406EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE84AE84AE84AE843089DB53E68B1D3406EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE84AE84AE84AE843089DB54EC8B3406AEC4AE84AE84AE84AE84AE84341017DE3732681600F8 F384A S10830002102700F910830003102600FA F3A78 SCC00013406AEC4AE84AE84AE84AE84AE84341017CA3432641600FB F3A80 S10830004102600FCEC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE84AE84AE84AE843089DB4EE68BE7D802EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE84AE84AE84AE843089DB53E68B1D34064F5F10A3E1102700FD3044341017 YDFTSETLOAD 0000 SEC5A3406AEC4AE84AE84AE84341017F63C32E8241600FE F3AEE SCC00083406EC5A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE84AE84AE84AE843089DB54EC8B3406AEC4AE84AE84AE84AE84AE84341017DCF13266 F3B0C F3AA3 F3A9B F3A70 F3842 S1600FF F3780 S1083000110260100CC0003E7D8024F5F30D802ED01CC00183406AEC4AE84AE84AE84AE84AE84EC89FF663406341017DCBB3266AEC4AE84AE84AE84AE84AE84341017CFF73262160101 F3B4F S1083000010260102CC0001E7D8024F5F30D802ED01CC00183406AEC4AE84AE84AE84AE84AE84EC89FF663406341017DC723266AEC4AE84AE84AE84AE84AE84341017CFAE3262160103 F3B98 S1083001110260104AEC4AE84AE84AE84AE84AE84341017CF9032623044341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0012340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S30D8023410AEC4AE84AE84AE84341017FADA32E824AEC4AE84AE84AE84AE84AE84E689F9EF4F3406CC001210A3E110260105341017CF423262160106 F3C3B SCC00033406AEC4AE84AE84AE84AE84AE84341017C86F3264 F3C45 S160107 F3BE1 S1083000310260108AEC4AE84AE84AE84AE84AE84341017CF0932623044341017 YDFTSETLOAD 0000 S30D8023410AEC4341017FA7032E824E6D8024F3406CC000210A3E110260109CC00233406AEC4AE84AE84AE84AE84AE84341017DB29326416010A F3CA1 SE6D8024F34064F5F10A3E11027010BCC00013406AEC4AE84AE84AE84AE84AE84341017C7E93264 F3CCB F3CBC F3C68 F3C60 F3BD9 F3B90 F3B47 S3044341017 YDFTSETLOAD 0000 SAEC4AE84AE84AE84AE84AE843089FF73341017 YDFTSETLOAD 0000 SCC00023406AEC4AE84AE84AE84AE84341017DC8332E84416FA2A F3767 S325C35C0 F36FE S34403364327C3044341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0006340617 YDFTSETELEMNT0000 SCC0007340617 YDFTSETELEMNT0000 SCC0008340617 YDFTSETELEMNT0000 SCC0009340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S30D8023410344017F9A432E824AEC4AE84AE84AE84AE84E689F9EF4F3406CC00061F025F10ACE126015C4F3406E689F9EF4F3406CC00071F025F10ACE126015CAAE0EAE04F3406E689F9EF4F3406CC00081F025F10ACE126015CAAE0EAE04F3406E689F9EF4F3406CC00091F025F10ACE126015CAAE0EAE05D1027010CE689 SF9EFE758341017CDAA32623044341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0006340617 YDFTSETELEMNT0000 SCC0007340617 YDFTSETELEMNT0000 SCC0008340617 YDFTSETELEMNT0000 SCC0009340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S30593410344017F8EE32E824E6584F3406CC000610A3E11026010D327EE6D8024F3406E6594F3406AEC4AE84AE84341017F83432663506E7D802E6D8024F3406CC000110A3E11026010ECC00393406AEC4AE84AE84AE84AE84341017D97B3264 F3E51 S16010F F3E22 SE6584F3406CC000910A3E110260110E6D8024F3406CC00021F025F10ACE126015C4F3406E6594F3406CC00021F025F10ACE126015CA4E0E4E05D10270111CC00383406AEC4AE84AE84AE84AE84341017D9243264160112 F3EA8 SE6D8024F34064F5F1F025F10ACE127015C4F3406E6594F34064F5F1F025F10ACE127015CA4E0E4E05D10270113CC00013406AEC4AE84AE84AE84AE84341017C5C83264 F3EEE S4F5FE7D802 F3EC1 S160114 F3E79 SE6D8024F3406CC00011F025F10ACE126015C4F3406E6594F3406CC00011F025F10ACE126015CA4E0E4E05D10270115E6584F3406CC000710A3E110260116CC003A3406AEC4AE84AE84AE84AE84341017D8823264160117 F3F4A SCC003B3406AEC4AE84AE84AE84AE84341017D8693264 F3F63 S160118 F3F3B SE6D8024F34064F5F1F025F10ACE127015C4F3406E6594F34064F5F1F025F10ACE127015CA4E0E4E05D10270119CC00013406AEC4AE84AE84AE84AE84341017C50D3264 F3FA9 S4F5FE7D802 F3F7C F3F0C F3E6A S16FD96 F3DCD S325C35C0 F36FB S34403364327CAEC4AE84AE84AE84E689F9EF4F3406CC00041F025F10ACE126015C4F3406E689F9EF4F3406CC00051F025F10ACE126015CAAE0EAE05D1027011AE689F9EFE758341017CB6C32623044341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0004340617 YDFTSETELEMNT0000 SCC0005340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S30D8023410344017FCDE32E824E6D8024F3406CC000110A3E1102C011BCC00013406AEC4AE84AE84AE84341017C466326416011C F4052 SE6584F3406CC000510A3E11026011DCC00243406AEC4AE84AE84AE84341017D7563264 F4078 F4069 S16011E F400B S3044341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0004340617 YDFTSETELEMNT0000 SCC0005340617 YDFTSETELEMNT0000 SCC000A340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S30D8023410344017FC5F32E824 F408F SAEC4AE84AE84AE84E689F9EF4F3406CC00041F025F10ACE126015C4F3406E689F9EF4F3406CC00051F025F10ACE126015CAAE0EAE04F3406E689F9EF4F3406CC000A1F025F10ACE126015CAAE0EAE05D1027011FE689F9EFE758341017CA6232623044341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0004340617 YDFTSETELEMNT0000 SCC0005340617 YDFTSETELEMNT0000 SCC000A340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S30593410344017FBCD32E824E6584F3406CC000A10A3E110260120E6D8024F3406CC00021F025F10ACE126015C4F3406E6594F3406CC00021F025F10ACE126015CA4E0E4E05D10270121CC00333406AEC4AE84AE84AE84341017D63D3264160122 F4191 SE6D8024F34064F5F1F025F10ACE127015C4F3406E6594F34064F5F1F025F10ACE127015CA4E0E4E05D10270123CC00013406AEC4AE84AE84AE84341017C2E33264 F41D5 S4F5FE7D802 F41A8 S160124 F4162 S327EE6D8024F3406E6594F3406AEC4AE84341017F46732663506E7D802E6D8024F3406CC000110A3E110260125E6584F3406CC000410A3E110260126CC00343406AEC4AE84AE84AE84341017D5A13264160127 F422D SCC00353406AEC4AE84AE84AE84341017D58A3264 F4244 F421E F41F1 S16FE66 F4115 S325C35C0 F36F8 S34403364327C3044341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC000B340617 YDFTSETELEMNT0000 SCC000C340617 YDFTSETELEMNT0000 SCC000F340617 YDFTSETELEMNT0000 SCC0010340617 YDFTSETELEMNT0000 SCC000D340617 YDFTSETELEMNT0000 SCC000E340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S30D8023410344017FD1F32E824AEC4AE84AE84E689F9EF4F3406CC000B1F025F10ACE126015C4F3406E689F9EF4F3406CC000C1F025F10ACE126015CAAE0EAE04F3406E689F9EF4F3406CC000F1F025F10ACE126015CAAE0EAE04F3406E689F9EF4F3406CC00101F025F10ACE126015CAAE0EAE04F3406E689F9EF4F3406CC S000D1F025F10ACE126015CAAE0EAE04F3406E689F9EF4F3406CC000E1F025F10ACE126015CAAE0EAE05D10270128E689F9EFE758341017C82832623044341017 YDFTSETLOAD 0000 S30593410344017FC5F32E824E6D8024F34064F5F1F025F10ACE126015C4F3406E6D8024F3406CC00011F025F10ACE126015CAAE0EAE04F3406E6D8024F3406CC00021F025F10ACE126015CAAE0EAE04F3406E6D8024F3406CC00031F025F10ACE126015CAAE0EAE04F3406E6D8024F3406CC00051F025F10ACE126015CAAE0 SEAE04F3406E6D8024F3406E6594F1F025F10ACE126015CA4E0E4E05D10270129E6584F1083000B1026012ACC002D3406AEC4AE84AE84341017D3C3326416012B F440D S1083000C1026012CCC002E3406AEC4AE84AE84341017D3A6326416012D F442A S1083000F1026012ECC002F3406AEC4AE84AE84341017D389326416012F F4447 S1083001010260130CC00303406AEC4AE84AE84341017D36C3264160131 F4464 S1083000D10260132CC00313406AEC4AE84AE84341017D34F3264160133 F4481 S1083000E10260134CC00323406AEC4AE84AE84341017D3323264 F449E F4496 F4479 F445C F443F F4422 S160135 F4402 SCC00013406AEC4AE84AE84341017C0073264 F44B3 SCC0002E7D802 F434F S325C35C0344033643278AEC4EC1A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB4EE68BE759AEC4EC1A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB50EC8BED5AAEC4EC1A3406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB52E68B5D102701364F5FED54160137 F452C SCC0001ED54 F4533 SEC543406EC443406EC423406AEC4AE84AE84341017D3533268AEC4AE84AE84E689F9EF4F3406CC00131F025F10ACE126015C5D10270138AEC43002341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0019340617 YDFTSETELEMNT0000 SCC000B340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S30593410AEC4341017EA2932E824 F456F SAEC4AE84AE84E689F9EF4F3406CC001910A3E110260139E6594F3406CC000510A3E11026013ACC000A3406341017BEFE3264 F45C2 SAEC4AE84AE84341017C5A9326216013B F45B3 SCC00033406AEC4AE84AE84341017BEDC3264 F45DE SE6594F3406CC000510A3E11027013CAEC43002341017 YDFTSETLOAD 0000 S30563410AEC4341017FC4C32E824E6594F3406E6564F1F025F10ACE126015C5D1027013DE6594F3406AEC4AE84AE843089FA12341017 YDFTSETLOAD 0000 S17 YDFTSETIN 0000 S5D1027013ECC00263406AEC4AE84AE84341017D188326416013F F4648 SEC5A3406EC571F025F10ACE127015C5D10270140CC00013406AEC4AE84AE84341017BE493264160141 F4671 SE6594F3406CC000410A3E110260142CC00173406EC5A8300013406CC000C340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089F95FEC8B3406AEC4AE84AE84341017D1713266160143 F4695 SCC00013406AEC4AE84AE84341017BDF33264 F46C7 F4686 F465D S160144 F462C SCC00013406AEC4AE84AE84341017BDDE3264 F46DC F45FF S325C35C034403364AEC4AE84AE84341017C4813262AEC43002341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0016340617 YDFTSETELEMNT0000 SCC0027340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 SAEC4AE84341017E89132E822AEC4AE84AE84E689F9EF4F34063089F9F2341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0016340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S17 YDFTSETIN 0000 S5D10270145AEC4AE84AE84E689F9EF4F3406CC001610A3E110260146341017C40C3262160147 F4771 SCC00033406AEC4AE84AE84341017BD3F3264 F477B SAEC43002341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0016340617 YDFTSETELEMNT0000 SCC0027340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 SAEC4AE84341017E80732E82216FF73 F475A SAEC4AE84AE84E689F9EF4F3406CC002710A3E110260148341017C3AB3262160149 F47D2 SCC00023406AEC4AE84AE84341017BCDE3264 F47DC S325C35C0344033643279AEC4AE84AE84341017C37F3262AEC43002341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC002D340617 YDFTSETELEMNT0000 SCC002B340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S30593410AEC4341017FA3032E824E6594F3406CC00021F025F10ACE127015C4F3406E6594F34064F5F1F025F10ACE127015CA4E0E4E05D1027014ACC00013406AEC4AE84AE84341017BC5B3264 F485F SAEC4AE84AE84EC89FE2AED57CC000B3406341017CF593264AEC4AE84AE84E689F9EF4F3406CC002D10A3E11026014B341017C2DD326216014C F48A0 SCC00023406AEC4AE84AE84341017BC103264 F48AA SAEC43002341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0028340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 SAEC4AE84341017E6E032E822AEC4AE84AE84E689F9EF4F3406CC002810A3E11026014D341017C2873262AEC4AE84AE84EC89FE2AED55CC000A3406341017CECD3264EC57584958493406AEC4AE84AE84EC89FE2A1F0235063089E913308B1F20ED84AEC43002341017 YDFTSETLOAD 0000 SAEC4AE84341017E67532E822EC55584958493406AEC4AE84AE84EC89FE2A1F0235063089E913308B1F20ED8416014E F48F6 SEC57584958493406AEC4AE84AE84EC89FE2A1F0235063089E913308B1F20ED84 F496D S325C35C034403364327BAEC4AE84AE84EC89FE2AED57341017C1DA3262AEC43002341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0016340617 YDFTSETELEMNT0000 SCC0029340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 SAEC4AE84341017E5EA32E822AEC4AE84AE84E689F9EF4F34063089F9F2341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0016340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S17 YDFTSETIN 0000 S5D1027014FAEC4AE84AE84E689F9EF4F3406CC001610A3E110260150341017C1653262160151 F4A18 SCC00033406AEC4AE84AE84341017BA983264 F4A22 SAEC43002341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0016340617 YDFTSETELEMNT0000 SCC0029340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 SAEC4AE84341017E56032E82216FF73 F4A01 SAEC4AE84AE84E689F9EF4F3406CC002910A3E110260152341017C1043262AEC43002341017 YDFTSETLOAD 0000 S30593410AEC4341017F7CB32E824E6594F3406CC00021F025F10ACE127015C4F3406E6594F34064F5F1F025F10ACE127015CA4E0E4E05D10270153CC00013406AEC4AE84AE84341017B9F63264 F4AC4 SCC000B3406EC573406AEC4AE84AE84341017CD493266160154 F4A79 SCC00023406AEC4AE84AE84341017B9CB3264 F4AEF S325C35C0344033643279AEC4AE84AE84341017C06C3262AEC4AE84AE84EC89FE2AED57AEC43002341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC002B340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S30593410AEC4341017F71932E824E6594F3406CC00021F025F10ACE127015C4F3406E6594F34064F5F1F025F10ACE127015CA4E0E4E05D10270155CC00013406AEC4AE84AE84341017B9443264 F4B76 SCC000B3406AEC4AE84AE84341017CC483264AEC4AE84AE84E689F9EF4F3406CC002B10A3E110260156341017BFCC3262160157 F4BB1 SCC00023406AEC4AE84AE84341017B8FF3264 F4BBB SAEC43002341017 YDFTSETLOAD 0000 SAEC4AE84341017E3DD32E822CC000A3406EC573406AEC4AE84AE84341017CC3D3266EC55584958493406AEC4AE84AE84EC89FE2A1F0235063089E913308B1F20ED84325C35C0344033643274AEC4AE84AE84341017BF553262AEC4AE84AE84E689F9EF4F3406CC002110A3E110260158327E3089FF683410CC000B340617 YDFTSTRCTLOAD0000 SAEC4AE84341017D019326D3506ED56AEC4AE84AE84341017BF123262EC5634064F5F10A3E110260159CC0001E75B16015A F4C7F SEC563406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB4DE68B4F3406CC000110A3E11026015BEC563406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB4EE68BE75BEC563406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB52E68B4353C30001C300015D1027015CCC00013406AEC4AE84AE84341017B7CF326416015D F4CEB S4F5F3406EC563406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB53E68B1D3406EC563406CC0018340617 YDFTMULTIPLY 0000 SAEC4AE84AE843089DB54EC8B3406AEC4AE84AE84341017CB5E3268 F4D00 SE65B4F34064F5F1F025F10ACE127015C4F3406E65B4F3406CC00011F025F10ACE127015CA4E0E4E04F3406E65B4F3406CC00021F025F10ACE127015CA4E0E4E04F3406E65B4F3406CC00031F025F10ACE127015CA4E0E4E05D1027015ECC00013406AEC4AE84AE84341017B7173264 F4DA3 S16015F F4CAC SCC00013406AEC4AE84AE84341017B7023264CC0001E75B F4DB8 F4C87 S160160 F4C46 SAEC43002341017 YDFTSETLOAD 0000 S17 YDFTSETDEFINE0000 SCC0019340617 YDFTSETELEMNT0000 SCC002C340617 YDFTSETELEMNT0000 SCC002B340617 YDFTSETELEMNT0000 S17 YDFTSETUNION 0000 S4F5F3406AEC4AE84341017CB2A32E824 F4DD2 SAEC4AE84AE84E689F9EF4F3406CC001910