Saturday 19 August 2017

Pic s9 08 ไบนารี ตัวเลือก


การอ่าน COBOL Layouts บทแนะนำเกี่ยวกับการอ่านรูปแบบ COBOL นี้ได้รับการเขียนขึ้นเฉพาะสำหรับลูกค้าของเราที่มี Conversion ทำที่ Disc Interchange และได้รับเค้าโครง COBOL พร้อมกับข้อมูล มีจุดประสงค์เพื่อให้ข้อมูลที่เพียงพอแก่คุณเพื่ออ่านรูปแบบที่เรียบง่ายที่สุด ไม่ครอบคลุมทุกหัวข้อหรือทุกสิ่งทุกอย่างที่คุณจะพบในรูปแบบที่ซับซ้อนและมีวัตถุประสงค์เพื่ออธิบายรูปแบบ COBOL เท่านั้นเพื่อให้คุณสามารถใช้ข้อมูลที่แปลงแล้วไม่ใช่เพื่อให้คุณสามารถเขียนโปรแกรม COBOL ได้ บทความนี้เริ่มต้นที่นี่: การอ่าน COBOL Layouts ซึ่งคุณจะพบดัชนีของหัวข้อ ส่วนที่ 4: ฟิลด์ตัวเลขในส่วนนี้จะอธิบายถึงประเภทข้อมูลตัวเลขจำนวนมากและการจัดการกับเครื่องหมายและจุดทศนิยม เนื้อหาในส่วนนี้: ต้องการแปลงฟิลด์ตัวเลข Numery COBOL ธุรกิจของเรามีฟิลด์ตัวเลขหลายฟิลด์ ประเภทข้อมูลเหล่านี้ประกอบด้วยฟิลด์ DISPLAY ซึ่งประกอบไปด้วยอักขระ (อักขระ EBCDIC หรือ ASCII สำหรับ 0 - 9) ฟิลด์ไบนารีฟิลด์ที่ใส่ข้อมูลและฟิลด์จุดลอยตัว นอกจากนี้ยังมีตัวเลือกสำหรับเครื่องหมายที่แยกจากกันหรือเครื่องหมาย "overpunch" และสำหรับทศนิยมจริงหรือโดยนัย ประเภทข้อมูลถูกระบุโดยข้อที่ใช้เป็นข้อ คำสั่ง USAGE IS มีคำอธิบายภาพมากกว่าคำอธิบายที่อธิบายไว้ก่อนหน้านี้ มีคำสั่ง USAGE IS ที่ระบุประเภทของการจัดเก็บฟิลด์ตัวเลข - การแสดงไบนารีหรือการคำนวณ ไวยากรณ์เต็มรูปแบบผ่านตัวอย่างคือ: ข้อความนี้กล่าวว่าเพื่อจัดเก็บฟิลด์ในรูปแบบการคำนวณ -3 ประเภทของฟิลด์ที่เป็นตัวเลขที่คุณจะเห็นในรูปแบบ COBOL คือ: Display (including Signed fields) Binary Computational หรือ คอมพ์ -1 คอมพ์ -2 คอมพ์ -3 คอมเมนต์รวมทั้งฟิลด์ที่มีการเซ็นชื่อหรือเขตพื้นที่เป็นที่พบมากที่สุดและ comp-3 เป็นฟิลด์ตัวเลขที่สองที่พบมากที่สุด คอมไพเลอร์บางตัวอาจมี comp-4 และ comp-5 ชนิดข้อมูลโดยปกติจะใช้ comp ในคอมไพเลอร์ตัวอื่นใช้เป็นรูปแบบ Display Display เป็นค่าดีฟอลต์สำหรับตัวเลขใน COBOL หากไม่มีการระบุการใช้งานค่าดีฟอลต์คือการใช้งานแสดงผลซึ่งหมายความว่าค่าจะถูกเก็บเป็นอักขระ EBCDIC (หลัก) แทนที่จะเป็นไบนารี ค่านี้อาจมีหรือไม่มีทศนิยมหรือโดยนัยและอาจไม่มีการเซ็นชื่อหรือมีการฝังหรือเครื่องหมายแยกต่างหากซึ่งอาจเป็นคำนำหน้าหรือด้านหลังก็ได้ ฟิลด์รูปแบบการแสดงผลแบบลงชื่อที่เป็นค่าเริ่มต้นจะประกอบด้วยเครื่องหมายต่อท้ายที่ฝังอยู่และโดยทั่วไปเรียกว่าฟิลด์ Signed หรือ IBM Signed หรือ Zoned ประเภทข้อมูลนี้ได้อธิบายไว้ด้านล่างนี้ ฟิลด์ที่มีการเซ็นชื่อมี COBOL ที่ใช้ร่วมกันใน IBM mainframes เรียกว่า Signed (หรือที่เรียกว่า IBM Signed หรือ Zoned) COBOL แสดงฟิลด์ประเภทนี้โดย S ในส่วนของรูปภาพในฟิลด์รูปแบบการแสดงผลเช่น PIC S9 (6) ฟิลด์ที่ลงนามประกอบด้วยอักขระตัวเลข EBCDIC แบบปกติตัวอักษรหนึ่งตัวต่อไบต์สำหรับตัวเลขทั้งหมดยกเว้นเครื่องหมายที่มีเครื่องหมายมากที่สุดหมายถึงเครื่องหมายนำทางหรือตัวเลขที่มีนัยสำคัญน้อยที่สุด ตัวเลขที่สำคัญน้อยที่สุด ตัวเลขที่มีเครื่องหมายรวมหรือกดลงไปที่เครื่องหมายตัวเลขลงบนตัวเลขนั้น ซึ่งจะบันทึกหนึ่งไบต์ที่มีเครื่องหมายอื่น ๆ ค่าของตัวเลขนั้นจะถูกจัดเก็บเป็นค่าไบนารีและเป็น ORd ที่มีรหัสสัญญาณซึ่งเป็น D0 hex สำหรับตัวเลขลบ C0 hex สำหรับค่าบวกและ F0 hex สำหรับค่าที่ไม่ได้ลงชื่อ เนื่องจากจำนวนที่มากเกินไปตัวเลขที่ถือเครื่องหมายไว้จะไม่ปรากฏเป็นตัวเลขเมื่อฟิลด์ถูกดูในโหมดอักขระ EBCDIC หากคุณมีช่องและดูค่า 1.23 พร้อมกับตัวแก้ไข EBCDIC จะมีการอ่าน 0000012C คอมไพเลอร์ ASCII COBOL ยังใช้ชนิดข้อมูลที่เซ็นชื่อกับ overpunch แต่บิตเครื่องหมายต่างกันและไม่ได้มาตรฐานระหว่างคอมไพเลอร์ ดูฟิลด์ข้อมูลที่ลงนามโดยย่อสำหรับ Tech-Talk สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับฟิลด์ที่ลงนามใน EBCDIC และ ASCII Signed เครื่องหมายคือฟิลด์ COBOL ที่แยกจากกันลงนามในค่าตามค่าเริ่มต้น (ดูฟิลด์ที่เซ็นชื่อด้านบน) แต่มีข้อกำหนดใน COBOL สำหรับเครื่องหมายแยกต่างหากและสามารถนำไปใช้หรือลากเส้นได้ คำสั่งนี้คือสิ่งนี้อาจรวมกับประโยคชั้นนำหรือต่อท้าย: คำสั่งนี้สามารถใช้กับรายการระดับประถม (ฟิลด์) หรือบันทึกทั้งหมด ฟิลด์คำนวณและไบนารีเนื่องจากคอมพิวเตอร์คำนวณด้วยตัวเลขไบนารีจะมีประสิทธิภาพมากขึ้นในการเก็บค่าเหล่านั้นในไฟล์ในรูปแบบไบนารีดั้งเดิมของตนมากกว่าการจัดเก็บไว้ในฐานสิบที่อ่านได้ของมนุษย์ หากหมายเลขถูกเก็บไว้ในรูปแบบไบนารีพื้นเมืองของมันสามารถป้อนข้อมูลจากไฟล์และใช้โดยตรง ถ้าเก็บไว้ในรูปแบบฐานสิบต้องแปลงเป็นไบนารีก่อนดำเนินการคำนวณแล้วแปลงกลับเป็นฐานสิบสำหรับจัดเก็บ COBOL กำหนดชนิดข้อมูลไบนารีหลายชนิด เราจะแสดงสรุปย่อที่นี่และคุณสามารถดูรายละเอียดเพิ่มเติมได้ในฟิลด์ข้อมูลการประมวลผลของ COBOL และในฟิลด์ที่บรรจุ COBOL Comp-3 ก่อนที่เราจะเริ่มต้นมีประเด็นสำคัญประการหนึ่งที่ต้องทำความเข้าใจคือมาตรฐาน COBOL จะยกเลิกการใช้งานข้อมูลประเภทข้อมูลส่วนใหญ่ไปถึงผู้จัดจำหน่ายที่เขียนคอมไพเลอร์ COBOL เหตุผลนี้เป็นเพราะคอมพิวเตอร์เครื่องอื่น - ซีพียู - ใช้การแทนค่าไบนารีที่ต่างกันภายในและทำงานได้ดีที่สุดกับหมายเลขไบนารีของตนเอง วิธีนี้ทำให้คอมไพเลอร์ดีขึ้นและเร็วขึ้น แต่ยังทำให้เกิดความสับสนเนื่องจากชนิดข้อมูล comp บนเครื่องหนึ่งไม่จำเป็นต้องเหมือนกับคอมพ์บนเครื่องอื่น ตารางด้านล่างแสดงการใช้ทั่วไปไม่ใช่คอมไพเลอร์ทั้งหมดจะทำตามประเภทเหล่านี้ สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับคำสั่งและเครื่องหมายคำพูดโปรดดูลิงก์ด้านบน เขตข้อมูลชนิดใดที่ใช้สำหรับการจัดเก็บจะถูกกำหนดโดยการใช้เป็นข้อในการนิยามเขตข้อมูลและในกรณีส่วนใหญ่จำนวนไบต์ที่เก็บจะถูกกำหนดโดยจำนวนหลักใน PIC ตัวเลขลอยตัวเป็นไปตามรูปแบบไบนารีมาตรฐานและขนาดดังกล่าวไม่ได้กำหนดโดย PIC และไม่มีการใช้ PIC ในนิยามของฟิลด์ คำอธิบายว่าประเภทข้อมูลนี้ได้รับการจัดเก็บอย่างไรทศนิยมที่บรรจุไว้มักใช้เป็น comp-3 ดู comp-3 เมื่ออ่านข้อกำหนดของฟิลด์ไบนารีหรือคอมพอยต์ขนาดที่แสดงใน PIC คือจำนวนหลักทศนิยมหลังจากที่มีการแปลงหมายเลขจากฐานสองเป็นฐานสิบ ในกรณีของสนามที่บรรจุขนาดของมันหลังจากที่เปิดออก ทศนิยมจริงส่วนใหญ่โปรแกรมเมอร์พีซีมีแนวโน้มที่จะคิดในแง่ของทศนิยมที่แท้จริงในค่าตัวเลข ในเครื่องพีซีถ้าคุณมีฟิลด์ดอลลาร์และเซนต์สำหรับกล่าวคือใบแจ้งหนี้ทั้งหมดในจำนวน 123.45 ไฟล์จะมีหกไบต์ 123.45 (และอาจเป็นเครื่องหมาย) กล่าวได้ว่ามีจุดทศนิยมทศนิยมจริงในไฟล์ COBOL สามารถทำสิ่งนี้ได้เช่นกันโดยผ่านทางต่อไปนี้: OR: การปรากฏตัวของ. ใน PIC ทำให้เป็นทศนิยมจริงในไฟล์ ทศนิยมที่ใช้เป็นที่แพร่หลายมากใน COBOL ทศนิยมหมายถึงทศนิยมหมายถึงทศนิยมหมายความว่ามีจุดทศนิยมบอกเป็นนัยในตำแหน่งที่ระบุในฟิลด์ แต่ไม่ได้เก็บจริงในไฟล์ ตำแหน่งของทศนิยมโดยนัยจะแสดงด้วย V ใน PIC การใช้จุดทศนิยมโดยนัยช่วยประหยัดพื้นที่ในไฟล์ ทศนิยมที่ใช้สามารถนำไปใช้กับฟิลด์ตัวเลขใดก็ได้รวมถึงฟิลด์ที่บรรจุหรือ comp-3 ตัวอย่างเช่นเป็นเขตข้อมูลทศนิยมโดยนัย มีตัวเลข 6 หลักและทศนิยมโดยนัยคือ V และอีก 2 หลักเป็นตัวเลข 8 หลัก ฟิลด์นี้มีขนาด 8 ไบต์ไม่มี ในไฟล์ - ตำแหน่งของจุดทศนิยมจะบอกเป็นนัยระหว่าง 9 (6) ถึง 99 ถ้าเขตข้อมูลมี 00000123 แล้วยอดเงินในบัญชีคือ 1.23 เนื่องจากมีทศนิยมอยู่ระหว่างเหรียญและเซนต์ การซิงโครไนซ์และการจัดตำแหน่งหัวข้อนี้เกี่ยวข้องกับบทแนะนำนี้เล็กน้อย แต่คุณควรจะตระหนักถึงเรื่องนี้ เมื่อใช้การจัดเก็บแบบไบนารี (ไบนารีและคอมพ์) คอมไพเลอร์บางตัวในเครื่องบางเครื่องอาจต้องการให้ฟิลด์ตัวเลขเริ่มต้นที่ขอบเขตบางส่วน ตัวอย่างเช่นในเครื่องแบบ 32 บิตอาจต้องใช้ฟิลด์ comp ในขอบเขต 32 บิต ถ้าคุณระบุเขตข้อมูล comp ในช่วงกลางของเรคคอร์ดและไม่ได้เกิดขึ้นเพื่อเริ่มต้นในขอบเขต 32 บิต (4 ไบต์) คอมไพเลอร์จะจัดแนวให้เป็นขอบเขต 32 บิตเพื่อซิงโครไนซ์ สิ่งที่จริงเก็บไว้ในไฟล์อาจไม่เหมือนกับ PICs ในรูปแบบระบุ นี่ไม่ใช่ปัญหาที่พบโดยทั่วไปส่วนหนึ่งเป็นเพราะช่องไบนารีและคอมพ์ไม่ได้มีอยู่ทั่วไปในไฟล์ แต่คุณควรระวัง สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการแปลงข้อมูลโปรดดูที่ดัชนี TechTalk ของเรา บริษัท Disc Interchange Service ของ COBOL Conversion Services สามารถแปลงข้อมูลที่เป็นตัวเลขส่วนใหญ่ได้รวมถึงประเภทข้อมูล EBCDIC ของ IBM mainframe และชนิดข้อมูล ASCII ส่วนใหญ่จากระบบ PC และ UNIX ห้องสมุดของเราประจำการแปลงอนุญาตให้เราจัดการงานยากเหล่านั้นที่มาตรฐานคอมไพเลอร์ COBOL ไม่สามารถแปลง S9 (9) COMP และ S9 (8) COMP S9 (9) COMP และ S9 (8) COMP Hi All, Whats จำนวนสูงสุดที่สามารถ ถูกบีบลงในฟิลด์ PIC ที่แตกต่างกันสองด้านบนและตัวเลือกคอมไพเลอร์ TRUNC (BINOPTSTD) จะมีผลอย่างไร เหตุผลที่ฉันถามว่าฉันกำลังทำงานกับผลิตภัณฑ์ที่ชื่อว่า HPS ซึ่งกำหนดเขตข้อมูล Integer เป็น S9 (8) COMP แล้วย้ายไปที่ฟิลด์ DB2 Integer ซึ่งเป็น S9 (9) COMP มีความเป็นห่วงว่าทั้งสองคนเข้ากันไม่ได้ RE: S9 (9) COMP และ S9 (8) COMP K5TM (โปรแกรมเมอร์) 23 ก. ค. 02 11:46 ความคิดเห็นแรก Thread209-205700 ที่ฉันได้ตอบคำถามเกี่ยวกับวิธีการตัวเลขทศนิยมจำนวนมากอาจจะแทนด้วย 31 เลขฐานสอง แน่นอนการตัดทอนมาตรฐานจะทำในขอบเขตทศนิยมโดยไม่คำนึงถึงการแทนข้อมูลพื้นฐาน ฉันเดาได้ว่าคุณจะไม่มีปัญหาในการเคลื่อนย้าย S9 (8) ไปที่ S9 (9) ภายใต้ TRUNC options ใด ๆ หากการย้ายไปในทิศทางอื่น ๆ จะมีความแตกต่างกัน ในกรณีใด ๆ ดูเหมือนว่า TRUNC BIN จะปลอดภัยที่สุดสำหรับปัญหาของคุณสมมติว่าไม่ก่อให้เกิดผลข้างเคียงที่ไม่พึงประสงค์ RE: S9 (9) COMP และ S9 (8) COMP Tom ฉันอ่านด้าย แล้วฉันอ่านอีกครั้ง หลังจากใช้สองเม็ดและโกหกฉันได้ไปอีกและ Im ยังไม่แน่ใจว่าฉันเข้าใจฉันรู้ว่า comp S9 (8) และ comp S9 (9) ครอบครองที่เก็บเดียวกัน (full word) และ Im ทราบว่าด้วย ตัวเลือก TRUNC (BIN) ของคอมไพเลอร์การตัดทอนไม่ควรเกิดขึ้นเช่นเดียวกับ TRUNC (STD) ฉันอยู่ภายใต้การแสดงผลที่มีเขต S9 (4) comp มีจำนวนสูงสุดที่สนามสามารถถือซึ่งโดยตัวอย่างของคุณในหัวข้อคือ 32043 เป็นเช่นเดียวกันสำหรับ comp S9 (89) และเป็นค่าเหล่านั้น แตกต่างกันฉันเดาคำถามที่ฉันถามคือว่าถ้าฉันกรอกฟิลด์ S9 (9) comp ค่าที่ใหญ่ที่สุดที่อาจใช้เวลาและย้ายไปยังเขต S9 (8) ก็จะยังคงค่าเดียวกันหวังนี้เหมาะสม และกรุณาให้อภัยความไม่รู้ของฉันในคณิตศาสตร์หน้า RE: S9 (9) COMP และ S9 (8) COMP Dimandja (โปรแกรมเมอร์) 23 Jul 02 19:50 ความเข้าใจของ S9 (9) COMP และ S9 (8) COMP เป็น COBOL จะ จัดการหมายเลขใด ๆ ได้ถึง -999,999,999 และ -99,999,999 ตามลำดับ เปรียบเทียบ COBOL PIC 9 กับ COBOL PIC 9 (4) COMP max 9,999 COBOL PIC 9 (5) COMP max 99,999 COBOL NATIVE-2 max 65,535 16 bit จำนวนเต็มสูงสุด 65,535 COBOL PIC 9 (8) COMP max 99,999,999 COBOL PIC 9 (9) COMP สูงสุด 999,999,999 COBOL NATIVE-4 สูงสุด 4,294,967,295 32 บิตจำนวนเต็มสูงสุด 4,294,967,295 RE: S9 (9) COMP และ S9 (8) COMP ค่าส่ง (โปรแกรมเมอร์) 24 Jul 02 06:20 COBOL PIC 9 (4) COMP max 9,999 COBOL PIC 9 (5) COMP สูงสุด 99,999 COBOL NATIVE-2 สูงสุด 32,767 16 bit จำนวนเต็มสูงสุด 32,767 COBOL PIC 9 (8) COMP max 99,999,999 COBOL PIC 9 (9) COMP max 999,999,999 COBOL NATIVE-4 สูงสุด 2,147,483,647 32 บิตจำนวนเต็มสูงสุด 2,147,483,647 RE: S9 (9) COMP และ S9 (8) COMP k5tm (โปรแกรมเมอร์) 24 Jul 02 10:05 ฉันหวังว่าฉันไม่ได้สับสนมากเกินไป เพื่อเป็นการย้ำ: คุณกล่าวว่าปัญหาของคุณกำลังย้าย PIC S9 (8) ไปยัง PIC S9 (9) ภายใต้หลักเกณฑ์ตัดทอนไม่ควรทำให้เกิดปัญหาใด ๆ ในทำนองเดียวกันภายใต้การตัดทอนแบบไบนารีฉันไม่คิดว่ามีปัญหา หากคุณมีข้อมูลไปในทางอื่นจาก 9 (9) ถึง 9 (8) คุณจะต้องตัดทอนทศนิยมให้ได้ การตัดทับแบบไบนารีไม่ควรเป็นปัญหาแม้ว่าฉันจะไม่ใช่ผู้เชี่ยวชาญเกี่ยวกับคอมไพเลอร์เฉพาะของคุณ RE: S9 (9) COMP และ S9 (8) COMP Crox (โปรแกรมเมอร์) 24 Jul 02 12:03 ลองใช้ COMP-5 แทน COMP จะทำงานเหมือนกันสำหรับการจัดสรรที่เก็บข้อมูลเดียวกัน อ่านคู่มือของคุณเกี่ยวกับเรื่องนี้ COMP-5 เกือบเสมอดีกว่า COMP RE: S9 (9) COMP และ S9 (8) COMP ทั้งหมดฉันลาดเทใช้ Comp - 5 เป็นหนึ่งได้ Ive มีตาราง DB2 และ dclgen definition ของตนและที่อื่น ๆ คำจำกัดความ HPS ซึ่งไม่ 100 เหมือนกัน . Im บน manframe และกำลังใช้ดาดฟ้าคอมไพล์ xpediter ซึ่งผมคิดว่าใช้ cobol370 แม้ว่า Im ไม่เป็นบวกเกี่ยวกับเรื่องนี้ เห็นได้ชัดว่าไม่ใช่ปัญหาที่เกิดขึ้นจาก 9 (8) comp ถึง 9 (9) และฉันเริ่มต้นสร้างความรู้สึกว่าค่าสูงสุดสำหรับ 9 (9) comp เท่ากับ 9 (8) comp โดยใช้ TRUNC (BIN) ) คอมไพล์ตัวเลือก ฉันคิดว่า Dimandja มีสิทธิ์ในการบอกว่าคำที่สั้นที่สุดสำหรับคำครึ่งหนึ่งคือ 32767 และสูงสุดสำหรับคำเต็มคือ 2,147,483,647 ฉันคิดว่าทั้ง 9 (8) และ 9 (9) comp จะมีค่าสูงสุดนี้แม้ว่าฉันจะเปิดโอกาสให้มีการโน้มน้าวอย่างอื่นในเรื่องนี้หากใครสามารถแสดงให้ฉันได้ทางคณิตศาสตร์ ฉันเดาฉันอาจจะต้องเคาะขึ้นโปรแกรมที่ย้ายค่าไปยังเขตข้อมูลที่เกี่ยวข้องและดูสิ่งที่เกิดขึ้น Im แน่ใจ Ive ทำเช่นนี้กับ 32767 หลายปีที่ผ่านมาและคุณจะได้รับการยืดเยื้อ จะลองพรุ่งนี้และรายงานกลับเว้นเสีย แต่จะมีคนอื่นรู้ RE: S9 (9) COMP และ S9 (8) สเลด COMP (โปรแกรมเมอร์) 24 Jul 02 21:44 Ive นำเสนอต่อไปนี้เป็นข้อเท็จจริงเนื่องจากดูเหมือนชัดเจนโดยไม่ ifbes maybes และ perhapes แต่ Im ไม่แน่ใจว่าเป็นจริง อยากได้ยินทุกอย่างที่คุณคิด ฉันไม่รู้ว่าจุดนี้ได้รับการแก้ไข แต่การคำนวณความจุของคำครึ่งหนึ่งคำหรือคำสองคำขึ้นอยู่กับว่าฟิลด์ดังกล่าวได้รับการอธิบายว่าลงนามหรือไม่ได้ลงชื่อและตัวเลือก TRUNC ที่เลือกในการรวบรวมข้อมูล ขณะที่ฉันจำเครื่องหมายใช้บิตสั่งซื้อสูงของเขตข้อมูลลดกำลังการผลิต สมมติว่า TRUNC (BIN) เป็นฟิลด์ครึ่งหนึ่งของ COMP ที่กำหนดให้เป็น PIC 9 มีความสามารถในการเก็บค่าได้ถึง 65,535 ทศนิยม (XFFFF) ในฟิลด์เดียวกันซึ่งกำหนดให้เป็น PIC S9 สามารถเก็บค่าได้สูงสุด 32,767 เลขทศนิยม (X7FFF) RE: S9 (9) COMP และ S9 (8) COMP Dimandja (โปรแกรมเมอร์) 25 Jul 02 15:53 ​​นี่คือคู่มือ COBOL85 ของฉัน (TandemCompaqHP): ช่วงของค่าสำหรับประเภท NATIVE-2 (16 bits), NATIVE-4 (32 บิต) และ NATIVE-8 (64 บิต) ได้แก่ ประเภทที่ต่ำกว่าขอบเขต NATIVE-2 -32768 32767 NATIVE-4 -2147483648 2147483647 NATIVE-8 -9223372036854775808 9223372036854775807 ช่วงของค่าสำหรับประเภท COMPUTATIONAL-5 คือ: PIC S9 (1) - PIC S9 (4) เทียบเท่าคือ NATIVE-2 -32,768 ถึง 32,767 (signed) หรือ 0 ถึง 65,535 (unsigned) PIC S9 (5) - PIC S9 (9) NATIVE-4 -2,147,483,648 ถึง 2,147,483,647 (signed ) หรือ 0 ถึง 4,294,967,295 (ไม่ได้ลงนาม) PIC S9 (10) - PIC S9 (18) NATIVE-8 -9,223,372,036,854,775,808 ผ่าน 9,223,372,036,854,775,807 (มีการลงลายมือชื่อ) หรือ 0 ถึง 18,446,744,073,709,551,615 (unsigned) ซึ่งควรชี้แจงสิ่งเล็กน้อย RE: S9 (9) COMP และ S9 (8) COMP สวัสดีทุกคนแรกขอบคุณมากกับคุณทั้งหมดเพราะ youve ทั้งหมดช่วยในหรืออีกทางหนึ่ง แต่ฉันรู้สึกว่าโพสต์ Dimandjas เป็นประโยชน์มากที่สุดดังนั้นฉันจะให้ D a ดาว. หวังว่าจะดีกับคุณตลอดไปสิ่งที่ฉันรักเกี่ยวกับเกมนี้ก็คือไม่ว่าคุณจะทำมานานแค่ไหนแล้วเธอก็ยังค้นพบสิ่งใหม่อยู่เสมอแม้ว่าคุณอาจจะสัมผัสกับมันเมื่อหลายปีก่อนก็ตาม ฉันได้รับข้อผิดพลาดในคำถามนี้เมื่อมีคนเสนอว่าเป็นปัญหาในวันจันทร์ ระบบตั้งค่าในฟิลด์ comps Pic S9 (8) และย้ายไปที่ฟิลด์ comp2 db2 S9 (9) ในตารางและได้รับการอัปเดตตารางแล้ว สถานการณ์ที่ฉันนำเสนอคือปัญหาที่เกิดจากการผลิตเนื่องจากค่าใหญ่ ๆ ถูกป้อนลงในตารางซึ่งไม่สามารถอ่านได้โดยใช้ฟิลด์ S9 (8) เป็นข้อมูลสำคัญ มีคนบอกว่า TRUNC (BIN) กำลังถูกนำมาใช้ อาร์กิวเมนต์แรกของฉันก็คือถ้ามันมาจากแหล่ง S9 (8) เสมอมันไม่ควรเป็นปัญหา ฉันบอกว่าเรื่องนี้ดูเหมือนจะไม่เป็นเช่นนั้น ฉันยังคงรู้สึกว่าปัญหานี้ไม่ได้เกิดขึ้นเนื่องจากฉันแน่ใจว่าตัวเลขที่ระบุในขนาดฟิลด์ไม่เกี่ยวข้องเมื่อ TRUNC (BIN) เนื่องจากมีค่าสูงสุดในคำครึ่งหนึ่งคำเป็นต้นการผ่านรายการที่นี่ ของการยืนยันความคิดของฉันโดยเฉพาะ Dimandjas ดังนั้นวันนี้ผมได้เขียนโปรแกรมเพื่อย้ายค่าต่างๆไปสู่หลากหลายสาขา ผลชนิดของฉันประหลาดใจ ฉันย้าย 32768 ไปที่ฟิลด์ S9 (4) COMP และมองค่า มีจำนวน -32768 ค่าที่สูงขึ้นหลายค่าที่ย้ายไปยังฟิลด์จะทำให้ตัวเลขลบต่าง ๆ ต่ำลง ฉันรายงานผลการวิจัยของฉันกล่าวคือ S9 (8) COMP และ S9 (9) COMP เมื่อใช้กับตัวเลือก TRUNC (BIN) จะมีค่าสูงสุดที่เหมือนกันเพียงอย่างเดียวที่จะบอก โอ้ไม่คอมไพล์ดาดฟ้าคือ TRUNC (STD) - ซึ่งจะทำให้เกิดปัญหาเพื่อสรุปทั้งหมดนี้: TRUNC (STD) จะทำตาม PIC ที่คุณกำหนดดังนั้น S9 (4) COMP จะอนุญาตให้มีค่าสูงสุด 9999 และต่ำสุดของ -9999 TRUNC (BIN) จะให้: S9 ถึง S9 (4) COMP-32768 ถึง 32767 S9 (5) ถึง S9 (9) COMP -2147483648 ถึง 2147483647 การลบเครื่องหมายออกจากตัวเลือกนี้จะเปลี่ยนช่วงเป็น: 9 ถึง 9 (4) COMP 0 ถึง 65535 9 (5) ถึง 9 ( 9) COMP 0 ถึง 4,294,967,295 อีกครั้งขอบคุณสำหรับความช่วยเหลือทั้งหมดของคุณ MarcA1 PIC X40841 ค่า 1. A2 s940841 คอมกำหนดใหม่ A1 (ค่า Hex ใน A1 30 30 30 30 30 30 30 31) (ค่า Hex ใน A2 30 30 30 30 00 00 00 01) ตัวอย่างคำจำกัดความ A1would ของคุณมีตัวอักษร 1 ตามด้วยช่องว่าง 7 ช่อง redef ของ A1 เป็น A2 จะ redefine อักขระสี่ตัวแรกของ A1 ไม่ใช่ทั้งแปดไบต์ของ A1 ค่า hex ใน A1 จะเป็น XF140404040404040 ค่า hex ใน A2 จะเป็น XF1404040 ค่าตัวเลขของ A2 จะเท่ากับ 4047519808 ฉันไม่รู้ว่าคุณได้รับค่า ASCII ใน A1 อย่างไร ฉันไม่มีความคิดว่าคุณมีค่าเท่ากับ 1 ให้ถูกต้องและช่องว่างชั้นนำที่แปลงเป็นศูนย์ ฉันไม่รู้ว่า redef ของคุณมีการจัดการอย่างไรเพื่อเปลี่ยนสี่ไบต์ให้ถูกต้อง ตามที่เห็นข้างต้นค่าที่ A2 ไม่เป็นตัวเลขเนื่องจากมี x00 (เช่น NULL) nulls ใน A2 เป็นตัวเลข comp พร้อมกับ trailing 01 ความต้องการของฉันคือการได้รับ 30 30 30 30 30 30 30 31 ใน A2 สมมติว่าคุณมีทศนิยมที่ถูกต้องใน A1 และต้องการให้ A2 มีค่า COMP (ไบนารี) ที่ถูกต้องโปรดดูด้านบนหากคุณหมายถึง A2 เพื่อให้มีตัวเลขทศนิยมที่ถูกต้องเพื่อใช้สำหรับการดำเนินงานเป็นตัวเลขให้เอาออก COMP ใน A2 redef หมายเหตุ: จำเป็นสำหรับฉันที่จะใช้ตัวแปร comp เพราะเหตุใดจึงจำเป็นต้องใช้ไม่สามารถใช้ทศนิยมหรือเป็นรหัสที่กำลังทำงานบนเครื่องที่ไม่ natively สนับสนุนการเรียนการสอนทศนิยมบรรจุกรุณาแจ้งให้เราทราบหากมีข้อมูลเพิ่มเติมเป็นสิ่งที่จำเป็นจากด้านข้างของฉัน ในตอนแรกมีเพียงคำตอบสำหรับคำถามข้างต้นเท่านั้น

No comments:

Post a Comment