Кіріспе
CMS 2 – АҚШ Әскери-теңіз күштері қолданатын кіріктірілген жүйелерді бағдарламалау тілі. Бұл кодтың тасымалдануын және қайта пайдалануын жақсарту мақсатында стандартталған жоғары деңгейдегі компьютерлік бағдарламалау тілін жасауға жасалған алғашқы қадамдардың бірі болды. CMS 2 негізінен АҚШ Әскери-теңіз күштерінің тактикалық деректер жүйесі (NTDS) компьютерлері үшін әзірленген.
Тіл ерекшеліктері
CMS 2 бағдарламаны модульдеуді ынталандыру үшін жасалған, бұл толық жүйенің бөліктерін тәуелсіз түрде компиляциялауға мүмкіндік береді. Тіл операторларға бағытталған. Код еркін форматта жазылады және бағдарламалау ыңғайлылығы үшін кез келген ретпен орналастырылуы мүмкін. Деректер түрлеріне: қатаң нүктелі, қозғалатын нүктелі, логикалық, символ және статус жатады. Символдық машиналық кодты, тікелей код деп атайды және оны тікелей пайдалануға және өңдеуге рұқсат етіледі.
Бағдарламаның құрылымы
CMS 2 бағдарламасы нұсқаулардан тұрады. Нұсқаулар делимитаторлармен бөлінген символдардан құралады. Символдардың түрлеріне операторлар, идентификаторлар және тұрақтылар кіреді. Операторлар – бағдарламадағы белгілі бір операциялар немесе анықтамалар үшін компилятормен берілген тілдің негізгі элементтері. Идентификаторлар – бағдарламашының дерек бірліктеріне, бағдарлама элементтеріне және нұсқау белгілеріне тағайындайтын бірегей атаулары. Тұрақтылар – сандық, Холлерифтік тізбектер, мән күйлері немесе логикалық мәндер болатын белгілі шамалар. CMS 2 нұсқаулары еркін форматта жазылады және доллар белгісімен аяқталады. Нұсқаудың басында анықтамалық мақсатта нұсқау белгісі орналастырылуы мүмкін. CMS 2 бастапқы бағдарламасы екі негізгі типтегі нұсқаулардан тұрады. Декларативтік нұсқаулар компиляторға негізгі басқару ақпаратын ұсынады және белгілі бір бағдарламамен байланысты деректердің құрылымын анықтайды. Динамикалық нұсқаулар компиляторды орындалатын машиналық нұсқауларды (объектілік кодты) жасауға итермелейді. Бағдарламаның деректерін анықтайтын декларативтік нұсқаулар деректер дизайны деп аталатын бірліктерге топтастырылады. Деректер дизайны уақытша және тұрақты деректерді сақтау аймақтарының, кіріс аймақтарының, шығыс аймақтарының және арнайы дерек бірліктерінің нақты анықтамаларын қамтиды. Деректермен жұмыс істейтін немесе есептеулер орындайтын динамикалық нұсқаулар процедураларға топтастырылады. Деректер дизайны мен процедуралар CMS 2 бағдарламасының жүйелік элементтерін құру үшін біріктіріледі. Компилятор жүйелік элементтерді компиляция уақыты жүйесіне біріктіреді. Компиляция уақыты жүйесі жеке түрде немесе үлкен бағдарламаның бір бөлігі ретінде болуы мүмкін.
Деректерді декларациялау мәлімдемелері
Деректер декларациясы компиляторға дерек элементтерінің анықтамасы туралы ақпарат ұсынады. Олар дерек элементтерінің пішімін, құрылымын және компиляция уақытындағы жүйедегі реттілігін анықтайды. Деректердің үш негізгі түрі – коммутаторлар, айнымалылар және жиындықтар.
Ауыстырғыштар
Коммутаторлар компиляция уақыты жүйесінде бағдарлама басқаруын нақты бір жерге ауыстыруға мүмкіндік береді. Олар бағдарламалардың ауысуын және тармақталуын жеңілдету үшін идентификаторлар немесе коммутациялық нүктелер жиынтығын қамтиды. Коммутатор – бұл нұсқаулық белгісінің немесе процедура атының бағдарламалық мекенжайын көрсетеді.
Өзгергіштер
Айнымалы – деректің жеке бір бөлігі. Ол бір биттен, бірнеше биттен немесе сөздерден тұруы мүмкін. Айнымалы анықталғанда оған мән тағайындалуы мүмкін. Айнымалылар тұрақты немесе өзгермелі мәнді сақтауы мүмкін. Дерек түрлеріне бүтін сандар, қатаң нүктелі сандар, қозғалатын нүктелі сандар, Холлерифтік таңбалар тізбегі, мәртебе немесе логикалық шамалар жатады.
Агрегаттар
Кестелер бірдей құрылымдағы реттелген ақпарат жиынтығын сақтайды. Кестедегі деректің негізгі бірлігі – элемент. Элементтер өрістерге бөлінуі мүмкін, өрістер кестедегі ең кіші бөлім болып табылады. Өрістерде рұқсат етілген дерек түрлері: бүтін сан, қалыпты нүкте, қозғалмалы нүкте, Холлерифтік таңбалар тізбегі, мәртебе немесе логикалық (бульдік). Массив – кесте түсінігінің кеңейтілген түрі. Массивтің негізгі құрылымдық бірлігі – элемент. Массив элементтері бағдарламашы анықтаған өрістерді қамтиды.
Динамикалық мәлімдемелер
Динамикалық операторлар өңдеу амалдарын көрсетеді және компилятордың орындалатын кодты жасауын қамтамасыз етеді. Динамикалық оператор оператордан, одан кейін операндтар тізімінен және қосымша операторлардан тұрады. Операнд жеке атау, тұрақты мән, дерек элементіне сілтеме немесе өрнек болуы мүмкін.
Компиляторды бақылау жүйесі 2 (CMS-2)
Компиляторды бақылау жүйесі 2 (CMS 2) UNIVAC CP 642B (AN/USQ 20) машинасының үстінде жұмыс істейтін жүйе болды. Жүйелік бағдарламалық қамтамасыз етуге монитор, компилятор, кітапхана, CP 642 жүктеушісі, таспалық құралдар жинағы және ағын схемасы кірді.
MS-2 мониторы
CP 642 компьютерінде CMS 2 компоненттері мен пайдаланушы жұмыстарын іске қосып, басқаратын пакеттік өңдеу операциялық жүйесі. Ол кіріс/шығыс, бағдарламалық кітапхана мүмкіндіктері және қателерді жою құралдарын қамтамасыз етеді. Сондай-ақ жұмыстардың есептеуі де жүзеге асырылады.
CMS-2 компиляторы
CS 1 және CMS 2 тілдері үшін, CP 642, L 304, AN/UYK 7, 1830A және 1218/1219 компьютерлері үшін объектілік кодты құрастыратын компилятор. 1970 жылдары CMS 2 компиляторының әртүрлі нұсқалары болды, олар кодты қай компьютерде құрастыруға байланысты өзгерді. Кейбір функцияларды орап өту үшін кейбір бастапқы кодты қайта жазу қажет болды. CMS 2-нің әртүрлі нұсқаларында түзету құралдарымен мәселелер болды.
XCMS-2 компиляторы
AN/UYK 7 компьютері үшін жаңа тілдік мүмкіндіктерді қосатын, кеңейтілген CMS 2 компиляторы. Ол тек AN/UYK 7 нысаны кодын ғана жасайды.
CMS-2 кітапханашысы
Көздік кодты және объектілік кодты сақтауға және оларға қол жеткізуге мүмкіндік беретін файлдарды басқару жүйесі.
CP-642 Нысан кодтарын жүктеуші
Абсолютті немесе қайта орналастырылатын объектілік кодты жүктеуге арналған екі жүктеуші.
Таспаның пайдалылығы
Магниттік таспалардағы деректерді басқаруға арналған құралдар жинағы.
CMS-2 ағыны кестесі
Ағындық диаграмма құрастыру бағдарламасы CMS 2 бастапқы кодындағы ағындық диаграмма операторларын өңдеп, нәтижесінде ағындық диаграмманы жоғары жылдамдықты принтерге жібереді.