กลับไปหน้าบทความ

อ่าน 4 นาที

S3 (ภาษาโปรแกรม)

S3 เป็น ภาษาการเขียนโปรแกรม คอมพิวเตอร์ ระดับสูง ที่ มีโครงสร้าง และ เชิงคำสั่ง [ 1 ] ได้รับการพัฒนาโดยบริษัท International Computers Limited (ICL) ในสหราชอาณาจักรสำหรับ เมนเฟรม...

S3 (ภาษาโปรแกรม)

ซี3
กระบวนทัศน์มีโครงสร้าง , เชิงบังคับ
ตระกูลอัลโกล
นักพัฒนาบริษัท อินเตอร์เนชั่นแนล คอมพิวเตอร์ จำกัด
ปรากฏครั้งแรกพ.ศ. 2518 ( 1975 )
วินัยในการพิมพ์คงที่แข็งแรงปลอดภัยโครงสร้าง
ขอบเขตคำศัพท์
โอเอสวีเอ็มอี
ได้รับอิทธิพลจาก
อัลโกล 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 เป็นฟังก์ชันระดับสูงกว่าที่เรียกใช้อาร์กิวเมนต์ที่ให้มาพร้อมกับการจัดการข้อผิดพลาดที่เหมาะสม
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=S3_(programming_language)&oldid=1346152943 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ S3 (ภาษาโปรแกรม)

S3 เป็น ภาษาการเขียนโปรแกรม คอมพิวเตอร์ ระดับสูง ที่ มีโครงสร้าง และ เชิงคำสั่ง [ 1 ] ได้รับการพัฒนาโดยบริษัท International Computers Limited (ICL) ในสหราชอาณาจักรสำหรับ เมนเฟรม...

ตัวอย่างที่มีคำอธิบายประกอบ

ตัวอย่างที่หายากของโปรแกรม S3 ที่มีอยู่ใน โดเมนสาธารณะ คือการใช้งาน Kermit ที่พัฒนาขึ้นที่ศูนย์คอมพิวเตอร์ระดับภูมิภาคมหาวิทยาลัยตะวันตกเฉียงใต้ และเก็บถาวรไว้ในคลังข้อมูลการใช้งาน Kermit ของ มหาวิทยาลัยโคลัมเบีย [ 2 ]...