อ่าน 4 นาที
S3 (ภาษาโปรแกรม)
S3 เป็น ภาษาการเขียนโปรแกรม คอมพิวเตอร์ ระดับสูง ที่ มีโครงสร้าง และ เชิงคำสั่ง [ 1 ] ได้รับการพัฒนาโดยบริษัท International Computers Limited (ICL) ในสหราชอาณาจักรสำหรับ เมนเฟรม...
S3 (ภาษาโปรแกรม)
| ซี3 | |
|---|---|
| กระบวนทัศน์ | มีโครงสร้าง , เชิงบังคับ |
| ตระกูล | อัลโกล |
| นักพัฒนา | บริษัท อินเตอร์เนชั่นแนล คอมพิวเตอร์ จำกัด |
| ปรากฏครั้งแรก | พ.ศ. 2518 |
| วินัยในการพิมพ์ | คงที่แข็งแรงปลอดภัยโครงสร้าง |
| ขอบเขต | คำศัพท์ |
| โอเอส | วีเอ็มอี |
| ได้รับอิทธิพลจาก | |
| อัลโกล 68 | |
S3เป็นภาษาการเขียนโปรแกรมคอมพิวเตอร์ระดับสูงที่มีโครงสร้างและเชิงคำสั่ง[ 1 ]ได้รับการพัฒนาโดยบริษัทInternational Computers Limited (ICL) ในสหราชอาณาจักรสำหรับเมนเฟรมซีรีส์ 2900 ของตน เป็นภาษาการเขียนโปรแกรมระบบที่มีไวยากรณ์ที่ได้รับอิทธิพลจากALGOL 68แต่มีประเภทข้อมูลและตัวดำเนินการที่สอดคล้องกับที่เสนอโดยซีรีส์ 2900 เป็นภาษาการใช้งานของระบบ ปฏิบัติการVME
ตัวอย่างที่มีคำอธิบายประกอบ
ตัวอย่างที่หายากของโปรแกรม S3 ที่มีอยู่ในโดเมนสาธารณะคือการใช้งานKermitที่พัฒนาขึ้นที่ศูนย์คอมพิวเตอร์ระดับภูมิภาคมหาวิทยาลัยตะวันตกเฉียงใต้ และเก็บถาวรไว้ในคลังข้อมูลการใช้งาน Kermit ของมหาวิทยาลัยโคลัมเบีย[ 2 ]ตัวอย่างด้านล่างนี้คือไฮไลท์ที่เลือกจากโมดูลหลัก (kmt_main_module)
โปรแกรมเริ่มต้นด้วยการระบุโมดูล และข้อคิดเห็นที่เรายกมาเพื่อเป็นการแสดงความขอบคุณต่อผู้เขียน:
โมดูล KMT_MAIN_MODULE; @ เวอร์ชัน 1.01 @ @------------------------------------------------------------------------------@ @ @ @ @ @ ----- SWURCCVMEKERMIT ----- @ @ @ @ @ @ ---------------------------------------------------------------- @ @ @ @ @ @ เวอร์ชัน 1.00 (กุมภาพันธ์ 1986) @ @ @ @ เขียนโดย : ริชาร์ด แอนดรูว์ส และ เดวิด ลอร์ด, @ @ ศูนย์คอมพิวเตอร์ประจำภูมิภาคมหาวิทยาลัยภาคตะวันตกเฉียงใต้ @ @ Claverton Down, Bath BA2 7AY, สหราชอาณาจักร @ @ @ @ @ @ ---------------------------------------------------------------- @ @ @ @ @ @ เวอร์ชัน 1.01 (ตุลาคม 1986) @ @ @ @ แก้ไขโดย : Dave Allum และ David Lord, SWURCC. @ @ ---------------------------------------------------------------- @
ถัดไปจะเป็น "การประกาศโหมด" จำนวนหนึ่ง โหมดเป็นคำศัพท์ในภาษา Algol 68 ที่หมายถึงชนิดข้อมูล
โหมด KMT_BUFFER คือ (96) ไบต์; โหมด KMT_STRING คือ REF()BYTE; โหมด KMT_WORD คือ REF()BYTE; โหมด KMT_MTM_VALUES คือ ANY (LONG WORD LW_VALUE, LONG INT LI_VALUE, อ้างอิงคำ RW_VALUE, REF INT RI_VALUE, อ้างอิงคำยาว RLW_VALUE, REF LONG INT RLI_VALUE, REF()BYTE RVB_VALUE, REF()REF()BYTE RVRVB_VALUE); โหมด KMT_PP_PACKET_STATISTICS_S คือโครงสร้าง (INT INPUT_TOTAL, เอาต์พุต_รวม);
ประเภทแรกเป็นอาร์เรย์ขนาด 96 ไบต์ ส่วนสองประเภทถัดไปเป็นตัวอ้างอิง (พอยเตอร์) ไปยังอาร์เรย์ของไบต์ KMT_MTM_VALUES เป็นประเภทแบบยูเนียนที่อนุญาตให้มีประเภทข้อมูลที่แตกต่างกันได้หลากหลาย โปรดทราบว่า WORD เป็น จำนวนเต็ม 32 บิตแบบไม่ระบุเครื่องหมาย INT เป็นจำนวนเต็ม 32 บิตแบบระบุเครื่องหมาย และ LONG ทำให้เป็น 64 บิต ตัวเลือกสุดท้ายในยูเนียนจะถูกทำเครื่องหมายว่า REF()REF()BYTE ซึ่งหมายความว่าเป็นพอยเตอร์ไปยังอาร์เรย์ที่มีสมาชิกเป็นพอยเตอร์ไปยังอาร์เรย์ของไบต์
ประเภทสุดท้ายที่ประกาศไว้ในที่นี้คือ STRUCT ซึ่งโดยเฉพาะอย่างยิ่งคือทูเปิลที่ประกอบด้วยจำนวนเต็มสองจำนวน
โปรแกรมจะดำเนินการต่อโดยการประกาศขั้นตอนภายนอกที่โมดูลนี้ขึ้นอยู่ RESPONSE ระบุค่าส่งคืนที่มีข้อมูลข้อผิดพลาด:
EXT PROC (RESPONSE) KMT_UI; EXT PROC (REF INT,INT,RESPONSE) KMT_PH; EXT PROC (REF INT,REF INT,RESPONSE) KMT_PP_GET_PACKET, PROC (INT,INT,BOOL,RESPONSE) KMT_PP_SEND_PACKET, PROC (REF()BYTE,RESPONSE) KMT_PP_BUILD_STRING_PACKET_DATA;
และยังมีตัวแปรภายนอกบางอย่างด้วย:
EXT REF () BYTE KMT_VERSION; EXT REF BOOL ASG_ROUTE; EXT REF()KMT_MTM_VALUES KMT_MTM_AREA; EXT REF()BYTE MTM_TEXT; EXT REF INT MTM_TEXT_LEN; EXT REF ()REF ()BYTE MTM_RECALL_DATA;
ส่วนที่เหลือของโปรแกรมประกอบด้วยคำจำกัดความของขั้นตอนการทำงานจำนวนหนึ่ง หนึ่งในนั้นซึ่งเป็นตัวกำหนดจุดเริ่มต้นของโปรแกรม มีดังต่อไปนี้:
GLOBAL STATIC (<STATUS 5;PSPACE 10001; TEMPLATE>) PROC KERMIT_THE_FROG IS ((<LIT "COMMAND">) REF()BYTE OPTION, (<LIT "" >) REF()BYTE VME_FILE, (<LIT "" >) REF()BYTE REM_FILE, (<KEY RESPONSE;DEF N'RESULT>) RESPONSE RESULT): เริ่ม ()BYTE JSV_NAME := "ASG"; @ รับค่าสำหรับ ASG_ROUTE bool @ CTM_JS_READ(JSV_NAME,NIL,NIL,ASG_ROUTE,RC_IGNORED); IF RC_IGNORED NE 0 THEN ASG_ROUTE := FALSE FI; @ ตรวจสอบการอ้างอิงพารามิเตอร์ (ค่าพารามิเตอร์จะได้รับการตรวจสอบในภายหลัง): @ @ OPTION ต้องเป็นโหมด REF () BYTE และต้องไม่ใช่ ZLR หรือ NIL @ @ VME_FILE ต้องเป็นโหมด REF () BYTE อาจเป็น ZLR แต่ต้องไม่เป็น NIL @ @ REM_FILE ต้องเป็นโหมด REF () BYTE อาจเป็น ZLR แต่ต้องไม่เป็น NIL @ เว้นแต่ (ตัวเลือกการตรวจสอบและตัวเลือก Validr) และ (ตรวจสอบไฟล์ VME และ (ตรวจสอบความถูกต้องของไฟล์ VME หรือไม่ (ไฟล์ VME เป็นค่าว่าง))) และ (ตรวจสอบ REM_FILE และ (VALIDR REM_FILE หรือไม่ (REM_FILE เป็นค่าว่าง))) จากนั้น @ การอ้างอิงพารามิเตอร์ไม่ถูกต้อง @ ผลลัพธ์ := 10002 @ ARCH_INACCESSIBLE_PARAMETER @ ELSF @ สร้างบล็อกทรัพยากร @ CTM_JS_BEGIN(RESULT); ผลลัพธ์ <= 0 จากนั้น @ สร้างบล็อกทรัพยากร @ คำยาวมาก KERMIT_RESULT; ANY((3)LONG WORD AS_LW,(6) WORD AS_W) PARAMS; PARAMS.AS_LW := (BDESC OPTION,BDESC VME_FILE,BDESC REM_FILE); @ ตั้งค่าตัวจัดการข้อผิดพลาดของโปรแกรม @ IF KMT_EH_INFORM_PE_CONTINGENCY(RESULT); ผลลัพธ์ > 0 จากนั้น @ ไม่สามารถตั้งค่าตัวจัดการข้อผิดพลาดได้ @ ข้าม ELSF CTM_JS_CALL(NIL,PDESC KERMIT_SUPPORT,PARAMS.AS_W,KERMIT_RESULT, ผลลัพธ์); @ สร้างไฟร์วอลล์ @ ผลลัพธ์ <= 0 จากนั้น @ จะออกจากระบบตามปกติหรือผ่านทาง CTM_STOP @ ผลลัพธ์ := ถ้า (S'S'KERMIT_RESULT) <= 0 จากนั้น 0 @ เพิกเฉยต่อคำเตือน @ มิฉะนั้น 52000 @ ข้อผิดพลาดส่งคืนรหัสผลลัพธ์ทั่วไป @ เอฟไอ FI; CTM_JS_END(RC_IGNORED) @ สิ้นสุดบล็อกทรัพยากร @ เอฟไอ จบ
คุณสมบัติที่ควรทราบมีดังนี้:
- การประกาศขั้นตอนการทำงานนั้นมีการตกแต่งด้วยคำอธิบายประกอบที่กำหนดไวยากรณ์บรรทัดคำสั่ง ซึ่งช่วยให้สามารถเรียกใช้โปรแกรมจาก SCL หรือใช้งานจากเชลล์แบบโต้ตอบโดยมีการแจ้งให้ป้อนค่าพารามิเตอร์เริ่มต้นได้
- การเรียกใช้ฟังก์ชันที่ขึ้นต้นด้วย CTM คือการเรียกใช้ "Compiler Target Machine" ซึ่งเป็นAPIที่ระบบปฏิบัติการ VME จัดให้
- "JSV" ย่อมาจาก "job space variable" ซึ่งเป็นคำที่ VME ใช้เรียกตัวแปรสภาพแวดล้อมและการเรียกใช้ CTM_JS_READ จะอ่านค่าของตัวแปรนั้น
- UNLESS หมายถึง "ถ้าไม่ใช่"; ELSF หมายถึง "มิฉะนั้นถ้า"
- คำสั่ง LONG LONG WORD ประกาศ ตัวแปร จำนวนเต็ม 128 บิตซึ่งเป็นชนิดข้อมูลพื้นฐานที่รองรับโดยสถาปัตยกรรม 2900
- กระบวนการส่วนใหญ่จะถูกส่งต่อไปยังขั้นตอนอื่นที่ชื่อว่า KERMIT_SUPPORT ซึ่งอยู่ในโมดูลเดียวกัน ขั้นตอนนี้จะถูกเรียกใช้ทางอ้อมผ่านระบบปฏิบัติการด้วยฟังก์ชัน CTM_JS_CALL คล้ายกับการเรียกใช้ exec() ในระบบ Unix ซึ่งช่วยให้การจัดการข้อผิดพลาดและการทำความสะอาดทรัพยากรในกรณีที่เกิดข้อผิดพลาดร้ายแรงเป็นไปอย่างราบรื่น คำหลัก PDESC สร้าง "ตัวอธิบายขั้นตอน" โดยพื้นฐานแล้วมันจะถือว่า KERMIT_SUPPORT เป็นฟังก์ชันระดับแรกที่สามารถส่งเป็นอาร์กิวเมนต์ไปยังฟังก์ชันอื่นได้ ทำให้ CTM_JS_CALL เป็นฟังก์ชันระดับสูงกว่าที่เรียกใช้อาร์กิวเมนต์ที่ให้มาพร้อมกับการจัดการข้อผิดพลาดที่เหมาะสม
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ S3 (ภาษาโปรแกรม)
S3 เป็น ภาษาการเขียนโปรแกรม คอมพิวเตอร์ ระดับสูง ที่ มีโครงสร้าง และ เชิงคำสั่ง [ 1 ] ได้รับการพัฒนาโดยบริษัท International Computers Limited (ICL) ในสหราชอาณาจักรสำหรับ เมนเฟรม...
ตัวอย่างที่มีคำอธิบายประกอบ
ตัวอย่างที่หายากของโปรแกรม S3 ที่มีอยู่ใน โดเมนสาธารณะ คือการใช้งาน Kermit ที่พัฒนาขึ้นที่ศูนย์คอมพิวเตอร์ระดับภูมิภาคมหาวิทยาลัยตะวันตกเฉียงใต้ และเก็บถาวรไว้ในคลังข้อมูลการใช้งาน Kermit ของ มหาวิทยาลัยโคลัมเบีย [ 2 ]...