Network Working Group M. Krilanovich Request for Comments: 477 UCSB NIC: 14922 23 Mayıs 1973 References: RFCs 354, 407, NIC 16306
UCSB'de Uzaktan İş Hizmeti
Giriş
Bu RFC, UCSB'nin RJS'sini kısaca tanımlayan RFC #436'nın devamı niteliğindedir. Bu belge, resmi RJE protokolünün (RFC #407) özünü yeniden ifade eder ve UCSB'nin bu protokolü nasıl uyguladığını ayrıntılı olarak belgeler.
Burada tanımlanan program UCSB'de socket 5 altında kullanılabilir durumdadır ve resmi protokolün bir alt kümesini destekler. Özellikle, giriş dosyasında RJE kontrol kartları için herhangi bir denetim yapılmaz, işler giriş dosyasında gruplanamaz, yalnızca sil ve ilet-ve-sil çıktı dosyası durumları uygulanır, FTP bloklu kipte çıktıda yeniden başlatma işaretçileri gönderilmez ve komutların bir kısmı uygulanmamıştır. Ayrıca, RJS'nin ideal olmaktan uzak olduğu bilinen başka yönleri de vardır. Örneğin, bir iş işlenirken herhangi bir hata algılandığında — örneğin çıktının hedef ana makinesinin çalışmıyor olması gibi — iş terk edilir ve daha sonraki tüm çıktılar silinir. RJS'nin yeniden yazımı yakın gelecekte (yaklaşık altı ay içinde) planlanmıştır ve bu eksikliklerin birçoğu o zamanda giderilecektir. (Daha fazla iyileştirme önerisi memnuniyetle karşılanır ve Journal aracılığıyla MCK'ye, yazarın UCSB Computer Center adresine posta ile ya da (805) 961-3454 numaralı telefondan iletilebilir.)
Yukarıda belirtilen protokolden sapmalara ek olarak, kullanıcı kolaylığını artırmak için çeşitli değişiklikler yapılmıştır. Özellikle, hesap numarası gerektiren TENEX ve diğer sistemlerin kullanıcılarını desteklemek için INACCT, OUTACCT ve ACCT komutları eklenmiştir; OUTPATH, OUT için bir eşanlamlı olarak ve INUSER, INID için eklenmiştir; ayrıca BYE komutu bir ABORT'a neden olmaz. Bunun yanı sıra, resmi protokolün büyük ölçüde programlar tarafından kullanıma yönelik olduğu ve bu nedenle insan kullanıcılar için oldukça zahmetli olduğu gerçeği göz önünde bulundurularak, alternatif ve isteğe bağlı bir komut sözdizimi sağlanmıştır. Yerel sözdizimi olarak adlandırılan bu alternatif sözdiziminin, bir insan kullanıcıya olabildiğince doğal gelmesi amaçlanmıştır. Ayrıca standart sözdizimiyle kullanılamayan bazı özellikler de sunar.
Sağlanan Hizmet
UCSB Computer Center, bir IBM 360/75 işletir ve OS MVT sürüm 21.0 ile HASP çalıştırır. UCSB'deki tüm yığın (batch) işler sisteme HASP üzerinden girer ve bu nedenle RJS, kullanıcı ile HASP arasında bir arayüz görevi görür. RJS'nin işlevi, kullanıcıya kart okuyucu, kart delici, satır yazıcısı ve operatör konsolundan oluşan bir HASP sanal RJE terminali sağlamak ve komutları doğrultusunda ilk üçünü yönetmektir. RJS'nin, belirli bir kullanıcı ile ona ait HASP RJE terminali arasındaki eşleşmeyi sürdürmesi sayesinde, kullanıcı kendi RJE terminali üzerinden gönderdiği işlerin durumunu değiştirmek için komutlar verebilir. Bu, kullanıcı RJS'den çıkış yapıp yeniden giriş yapsa ve hatta bunu başka bir siteden gerçekleştirse bile mümkündür.
RJS'nin kullanımı sırasında gerçekleşen olayların sırası şöyledir. Öncelikle kullanıcı, bir kullanıcı adı, parola ve hesap numarası belirterek giriş yapar. Bu muhasebe bilgileri, RJS'nin sonraki kullanımının nasıl ücretlendirileceğini belirtmenin yanı sıra, belirli bir RJE terminalinin sahibini de tanımlar. Yani, kullanıcı adı ile HASP sanal RJE terminali arasındaki ilişki tektir ve belirli bir kullanıcı adı altında aynı anda yalnızca bir kişinin giriş yapmasına izin verilir.
Şu anda RJS içinde ücretlendirme uygulanmamaktadır; bu nedenle girişte verilen hesap numarası tamamen keyfidir ve kullanıcı adı ile parola da göreceli olarak öyledir. Belirli bir kullanıcı adı ilk kez kullanıldığında herhangi bir parola seçilebilir; daha sonra ise, kullanıcı adı RJS tarafından bilindiği sürece aynı parola kullanılmalıdır. Bir kullanıcı adı, kullanıcı giriş yapmışken ve ayrıca giriş yapmamış olsa bile RJS tarafından bilinen en az bir işe sahip olduğu sürece RJS tarafından tanınır. Aksi takdirde, kullanıcı adı silinir.
Bir kullanıcı giriş yaptıktan sonra, giriş ve çıkış dosyası bilgilerini belirtir ve giriş alımının başlatılmasını ister. Daha sonra dilerse çıkış yapabilir ya da yapmayabilir; özellikle kaynak dosya alımı sırasında girişte kalması gerekmez. Bir iş, işlemenin herhangi bir aşamasında anormal şekilde ya da son çıktısının depolanmasından sonra normal şekilde tamamlanabilir. Her durumda, işin nihai durumuna ilişkin koşullar kullanıcı giriş yapmışsa derhal görüntülenir, tamamlanmasından sonra belirli bir süre saklanır ve kullanıcının bir sonraki girişinde talep üzerine erişilebilir olur. Bu durum bilgisi en az sabit bir süre (şu anda iki gün) boyunca saklanır; yeterli depolama alanı mevcut olduğu sürece daha uzun süre tutulacaktır.
RJS Komutları — Genel Bilgiler
İş parametrelerinin belirtilmesini kolaylaştırmak için RJS, bu parametreler için bir dizi biriktirici (accumulator) tutar. Her biriktirici başlangıçta boştur ve içeriği çeşitli komutlarla ayarlanabilir ya da başvurulabilir. Her kullanıcı için (kullanıcı adı, parola ve hesap birlikte muhasebe parametreleri olarak adlandırılır) aşağıdaki parametre biriktiricileri tutulur: giriş muhasebe parametresi (LOGIN ya da USER, PASS ve ACCT komutlarıyla belirtilenler), kaynak yol adı, yazdırma yol adı, delme yol adı, kaynak muhasebe parametresi, yazdırma muhasebe parametresi ve delme muhasebe parametresi. Ayrıca, her iş ile ilişkili olarak kaynak, yazdırma ve delme yol adları ile kaynak, yazdırma ve delme muhasebe parametreleri bulunur.
TELNET bağlantıları ilk açıldığında, RJS kullanıcıya 300 UCSB RJS (VER. <date>) TTY <integer>. biçiminde bir duyuru iletisi gönderir; burada <date> RJS'nin geçerli sürümünü, <integer> ise her TELNET bağlantısına atanan benzersiz bir TTY numarası anlamında kullanıcının terminalini tanımlar.
Bir iş çalıştırılırken, çeşitli kendiliğinden iş durumu iletileri kullanıcıya gösterilebilir. Bunlar şunlardır:
240 INPUT RETRIEVAL FOR JOB <jobid> HAS BEGUN., giriş bağlantısı(ları) kurulduğunda görüntülenir.261 JOB <jobid> HAS COMPLETED EXECUTION., işin yazdırılmış çıktısının ilk bölümü HASP'den alındığında.466 PRINTED [or PUNCHED] OUTPUT FROM UNKNOWN JOB (HASP JOB NUMBER <integer>) IS BEING DISCARDED., RJS tarafından bilinmeyen bir iş için kullanıcının hattı üzerinden HASP'den yazdırılmış ya da delinmiş çıktı alındığında.- ICP/RFC başarısızlığı, geçersiz iş kartı, boş kaynak destesi, eksik yol adı ve veri aktarım ağı hataları gibi hataları açıklayan iletiler (olası yanıt kimliklerinin listesi için Ek B'ye bakınız).
Buna ek olarak, yerel sözdizimindeyken kullanıcı, sanal operatör konsolu üzerinden HASP'den iletiler alabilir. Bazıları kullanıcının verdiği HASP komutlarına yanıt niteliğindedir, diğerleri ise kendiliğinden iletilerdir. Ancak hepsi, diğer RJS komutlarının girilmesinden bağımsızdır.
Her iki sözdizimi kümesi için de geçerli olan bazı genel kurallar vardır. Bunlar aşağıda verilmiştir:
- CR-LF karakter çifti, komutları sonlandırmak için komut kabulü olarak kullanılır. Bu iki karakterin diğer kullanımları yok sayılır ve yerel satır kontrolü için istenildiği gibi kullanılabilir.
- Herhangi bir sözdizimsel birimden (ilk ve son dahil) önce ya da sonra herhangi sayıda boşluk kullanılmasına izin verilir.
- Büyük ve küçük harfler,
<filename>dışında her yerde aynı kabul edilir. - Etkin olmayan sözdizimine geçiş yapıldığında, geçerli TELNET kipleri (tam ya da yarı çift yönlü, karakter ya da satır bazında) kaydedilir ve geçerli sözdizimine yeniden girildiğinde geri yüklenir.
Aşağıdaki sözdizimsel açıklamalarda şu gösterim kullanılır:
'text'gerçek metni ifade eder (tırnak işaretleri metnin parçası değildir)<unit>sözdizimsel birimin adını ifade eder<a>_<b><a>ya da<b>sözdizimsel birimlerinden birinin seçimini ifade eder[<a>]isteğe bağlı sözdizimsel birimi ifade eder(<a><b><c>)bir bütün olarak ele alınan sözdizimsel birimler grubunu ifade eder=soldaki sözdizimsel birimin sağdaki ifade ile tanımlandığını gösterir
Aşağıdaki genel sözdizimsel tanımlar yapılmıştır:
<CA>= komut kabulü<user name>= 1 ile 8 arasında alfasayısal karakterden oluşan bir dize<password>= 1 ile 8 arasında alfasayısal karakterden oluşan bir dize<account>= 1 ile 6 arasında alfasayısal karakterden oluşan bir dize<jobid>= ilki alfabetik olan, 1 ile 8 arasında alfasayısal karakterden oluşan bir dize
RJS Komutlarının Açıklaması, Standart Sözdizimi
Aşağıda standart sözdiziminde desteklenen komutların bir listesi verilmiştir. Aksi belirtilmedikçe, komutun yanıtı 200 OK'dur. Kullanıcının giriş yapmış olması gerektiği belirtilen durumlarda, kullanıcı giriş yapmamışsa 504 LOGIN PLEASE. yanıtı görüntülenir.
USER
'USER' ['='] <user name> <CA>
Muhasebe amacıyla kullanıcının kullanıcı adını belirtir, girişi başlatır ve kaynak, yazdırma ve delme kullanıcı adı biriktiricilerini <user name> olarak başlatır. Girişi tamamlamak için bu komutun ardından başarılı bir PASS komutu gelmelidir. Kullanıcı giriş yapmadan önce izin verilen tek diğer komut BYE'dır. Sözdizimsel olarak geçerli bir USER komutuna verilen yanıt her zaman 330 ENTER PASSWORD'dur.
PASS
'PASS' ['='] <password> <CA>
Kullanıcının hesabına erişim sağlamak için parolayı belirtir, önceki bir USER komutuyla başlatılan girişi tamamlar ve kaynak, yazdırma ve delme parola biriktiricilerini <password> olarak başlatır. Başarılı bir PASS komutuna verilen yanıt 230 USER <user name> OWNS REMOTE TERMINAL <integer>. şeklindedir; burada <integer>, kullanıcıya ait HASP sanal RJE terminalinin numarasıdır.
Aşağıdaki hata yanıtları mümkündür:
431 NEW USERS ARE NOT BEING ACCEPTED AT THIS TIME.Kullanıcıya atanacak boş bir HASP terminali yoksa (şu anda en fazla 10 adet vardır) ya da başka kaynaklar yetersizse.431 INCORRECT PASSWORD.Belirtilen<password>, daha önce belirtilmiş<user name>için atanmış parola değilse.431 ANOTHER USER IS LOGGED IN AS <user name>.Belirli bir<user name>ile aynı anda yalnızca bir kullanıcının giriş yapmasına izin verilir.
ACCT
'ACCT' ['='] <account> <CA>
Kullanıcının RJS kullanımının ücretlendirileceği UCSB Computer Center hesap numarasını belirtir ve kaynak, yazdırma ve delme hesap biriktiricilerini <account> olarak başlatır. Sözdizimsel olarak doğru bir ACCT komutuna verilen yanıt 200 OK'dur.
Daha önce belirtildiği gibi, RJS ücretlendirmesi henüz uygulanmamaktadır ve bu nedenle ACCT komutu isteğe bağlıdır. Ancak kullanıcılar ve kullanıcı süreçlerini yazanlar, bunun ileride zorunlu olacağı ve o noktada PASS komutunun 330 yanıt kimliği döndüreceği ve ACCT komutunun yukarıda PASS altında listelenen yanıtları vereceği konusunda uyarılmaktadır.
BYE
'BYE' <CA>
Kullanıcıyı çıkış yaptırır ve kendisine ait TELNET bağlantılarını kapatır; devam eden dosya aktarımları olup olmadığına bakılmaksızın bu işlemi yapar. Eğer aktarımlar varsa, değişmeden devam ederler. BYE komutuna verilen yanıt her zaman 231 LOGOUT COMPLETED; TRANSFERS (IF ANY) CONTINUE. olup, ardından TTY <integer> IS DISCONNECTED. devam satırı gelir.
STATUS
'STATUS' <CA>
Şu anda RJS tarafından bilinen kullanıcıların kullanıcı adlarını listeler. Yanıt ya 100 NO USERS ARE KNOWN TO RJS ya da 100 THE FOLLOWING USERS ARE KNOWN TO RJS: şeklindedir; ikinci durumda, her biri dört boşlukla başlayan bir devam yanıt kimliği içeren ve uzak terminal numarasını, o terminalin sahibinin kullanıcı adını ve en son giriş yaptığı sitenin adını veren bir veya daha fazla satır izler.
SYNTAX
'SYNTAX' <CA>
Geçerli komut sözdizimini yerel sözdizimi haline getirir. Yerel sözdiziminde en son geçerli olan TELNET kipleri (tam ya da yarı çift yönlü, karakter ya da satır bazında) yeniden etkin olur. RJS, yerel sözdizimi istem karakteriyle (şu anda numara işareti, #) yanıt verir.
Kalan komutlar, kullanıcının giriş yapmış olmasını gerektirir.
REINIT
'REINIT' <CA>
Kaynak, yazdırma ve delme muhasebe parametrelerini; kaynak, yazdırma ve delme yol adlarını; ve giriş muhasebe parametresi biriktiricilerini boş olacak şekilde sıfırlar. REINIT komutuna verilen yanıt her zaman 204 OK'dur.
INUSER / INID
('INUSER' _ 'INID') ['='] <user name> <CA>
Kaynak kullanıcı adı biriktiricisini <user name> olarak ayarlar.
INPASS
'INPASS' ['='] <password> <CA>
Kaynak parola biriktiricisini <password> olarak ayarlar.
INACCT
'INACCT' ['='] <account> <CA>
Kaynak hesap biriktiricisini <account> olarak ayarlar.
OUTUSER
'OUTUSER' ['='] <user name> <CA>
Yazdırma ve delme kullanıcı adı biriktiricilerini <user name> olarak ayarlar.
OUTPASS
'OUTPASS' ['='] <password> <CA>
Yazdırma ve delme parola biriktiricilerini <password> olarak ayarlar.
OUTACCT
'OUTACCT' <account> <CA>
Yazdırma ve delme hesap biriktiricilerini <account> olarak ayarlar.
INPATH
'INPATH' ['='] <pathname> <CA>
Burada:
<pathname> = <file> _ <socket><socket> = [<host addr> ','] <socket number> <attributes><file> = <host addr> <attributes> '/' <filename><host addr> = <integer><socket number> = <integer><integer> = <decimal integer> _ ('D' <decimal integer>) _ ('H' <hexadecimal integer>) _ ('X' <hexadecimal integer>) _ ('O' <octal integer>)<attributes> = ':T' _ ':A' _ ':N' _ ':' _ <null> _ ':E' _ ':TE' _ ':AE' _ ':NE'<filename> = CR ve LF hariç (kodlar 0 ile 127 arası, 10 ve 13 hariç) 1 ile 16 ASCII karakter
Kaynak yol adı biriktiricisini <pathname> olarak ayarlar. <pathname>, bir dosyanın kaynağını ya da hedefini belirtme aracıdır; anlamsal karşılığı aşağıdaki gibidir:
<socket>belirtilmesi, RJS'nin belirtilen sokete tek yönlü (simplex) bir bağlantı kuracağını ifade eder (RJS CONNECT gönderir, kullanıcı LISTEN gönderir). Veri daha sonra bu bağlantı üzerinden aktarılır ve dosya sonu CLOSE ile belirtilir.<socket>içindeki<host addr>varsayılan bırakılırsa, TELNET kullanıcısını barındıran ana makine varsayılır.<file>belirtilmesi, RJS'nin belirtilen ana makinedeki standart FTP sunucu soketiyle (şu anda soket 3) bağlantı kuracağını ve veriyi Dosya Aktarım Protokolü'ne göre aktaracağını ifade eder. Burada atıfta bulunulan<file name>, FTP belirtim belgesi RFC #354'te kullanılan<pathname>terimine karşılık gelir.Taşıma kontrolü türü ve kullanılan veri kodu
<attributes>tarafından belirlenir. Bu parametrenin anlamı aşağıdaki gibidir::TASCII kodu, TELNET taşıma kontrolü:AASCII kodu, ASA taşıma kontrolü:NASCII kodu, taşıma kontrolü yok:giriş için:N, çıkış için:Aile aynıdır<null>giriş için:N, çıkış için:Aile aynıdır:Egiriş için:NE, çıkış için:AEile aynıdır:TEEBCDIC kodu, TELNET taşıma kontrolü:AEEBCDIC kodu, ASA taşıma kontrolü:NEEBCDIC kodu, taşıma kontrolü yok
Aktarım kiplerinin ayrıntılı açıklamaları aşağıda RJS Dosya Aktarımı başlığı altında bulunabilir.
OUTPATH Komutu
('OUTPATH' _ 'OUT') <çıkış dosyası> '=' <disp> <CA>
<çıkış dosyası> = 'A' _ 'B' _ <null>
<disp> = <yoladı> _ '(H)' _ ('(S)' <yoladı>) _ '(D)'
<çıkış dosyası> ya 'A' ya da <null> ise <disp> yazdırma yoladı biriktiricisine, 'B' ise delme (punch) yoladı biriktiricisine kaydedilir. <disp> için seçeneklerin anlamları aşağıdaki gibidir:
<yoladı>: ilet-ve-at — dosya gönderilir ve ardından silinir(H): yalnızca tut — dosya gönderilmez, kullanıcı müdahalesi için tutulur(S) <yoladı>: sakla — dosya gönderilir ve ardından kullanıcı müdahalesi için tutulur(D): at — dosya üretilir üretilmez silinir
INPUT Komutu (Standart Sözdizimi)
'INPUT' <CA>
Bir iş oluşturur, bununla birlikte kaynak, yazdırma ve delme muhasebe parametreleri ile yoladı biriktiricilerinin içeriklerini saklar ve RJS içinde, kullanıcının sahip olduğu ve kaynak dosya aktarımını bekleyen işler kuyruğuna yerleştirir. Bu kuyrukta ilk ya da tek iş haline geldiğinde, kaynak dosyasının alınması başlatılır. İşe bir iş tanımlayıcısı (jobid) atanır ve kullanıcıya gösterilir.
INPUT komutundan önce, kaynak ve yazdırma yoladı biriktiricilerinin INPATH ve OUTPATH komutları ile ayarlanmış olması gerekir. Başarılı olursa şu mesaj görüntülenir:
260 ATANAN JOBID <jobid>.
Burada <jobid>, bu belirli işi tanımlamak için sonraki RJS komutlarında kullanılabilecek olandır.
Kullanıcının azami sayıda işe (şu anda 5) sahip olduğu tespit edilirse, isteği karşılamak için kullanıcının işlemesi tamamlanmış en eski işi bulunmaya çalışılır. Bu mümkünse, eski iş silinir ve komuta verilen yanıt:
260 JOB <eski jobid> YENİ İŞE YER AÇMAK İÇİN ATILIYOR.
şeklindedir ve bunu şu devam satırı izler:
ATANAN JOB ID <yeni jobid>.
Olası hata yanıtları aşağıdaki gibidir:
360 KAYNAK YOLADI BELİRTİLMEDİ.505 YAZDIRMA YOLADI BELİRTİLMEDİ.504 ŞU ANDA YENİ İŞLER KABUL EDİLMİYOR.504 KULLANICI <kullanıcı adı> ZATEN AZAMİ SAYIDA İŞE SAHİP.
CHANGE Komutu
'CHANGE' <jobid> <çıkış dosyası> '=' <disp> <CA>
Uygun dosya aktarımı henüz başlamamışsa, <çıkış dosyası> ya 'A' ya da <null> ise <disp> değeri <jobid> işinin yazdırma yoladı olarak, 'B' ise delme yoladı olarak kaydedilir.
Olası hata yanıtları:
464 JOB <jobid> BULUNAMADI.504 JOB <jobid> ZATEN YAZDIRILIYOR YA DA YAZDIRILDI.(<çıkış dosyası>'A'ise)504 JOB <jobid> ZATEN DELİNİYOR YA DA DELİNDİ.(<çıkış dosyası>'B'ise)464 KULLANICI <kullanıcı adı> JOB <jobid> SAHİBİ DEĞİL.
STATUS Komutu
'STATUS' <jobid> <CA>
RJS tarafından <jobid> olarak bilinen işin durumunun görüntülenmesine neden olur. Bu görüntülemede aşağıdakiler yer alır:
- işin bulunduğu RJS işleme aşaması (
OKUNUYOR,ÇALIŞTIRILIYOR,YAZDIRILIYOR,DELİNİYORveyaTAMAMLANDI) - kaynak, yazdırma ve delme dosyaları için yoladı bilgileri (muhasebe parametreleri, ana makine adı, soket numarası, öznitelikler, tasarruf biçimi ve dosya adı)
- iş herhangi bir aşamada başarısız olduysa, hatanın açıklaması
Olası yanıtlar:
464 JOB <jobid> BULUNAMADI.161yanıt kodunu içeren bir satır ve ardından işin durumunu açıklayan sıfır ya da daha fazla devam satırı
CANCEL Komutu
'CANCEL' <jobid> <CA>
RJS tarafından <jobid> olarak bilinen işin işlenmesini derhal sonlandırır ve bununla ilgili tüm kayıtları siler. FTP veri ve/veya komut bağlantıları beklemede ya da kurulmuş durumdaysa kapatılır; iş çalıştırma aşamasındaysa, çalışmayı sonlandırmak için bir OS CANCEL komutu gönderilir. İşten çıkan tüm çıktılar kaybolur ve <jobid> işinin durumuna ilişkin sonraki bir istek, işin bulunamadığına dair tanılama döndürür.
Başarılı yanıtlar:
262 JOB <jobid> SİLİNDİ.262 JOB <jobid> MÜMKÜN OLAN EN KISA SÜREDE SİLİNECEK.
Olası başarısızlık yanıtları:
464 JOB BULUNAMADI.464 KULLANICI <kullanıcı adı> JOB <jobid> SAHİBİ DEĞİL.
Aşağıdaki standart RJS komutları henüz uygulanmamıştır ve 506 KOMUT UYGULANMADI. yanıtını üretir:
- ABORT
- ALTER
- BACK
- HOLD
- OP
- RECOVER
- RESTART
- SKIP
RJS Komutları — Yerel Sözdizimi Kuralları
Yukarıda tartışılan genel kurallara ek olarak, yerel sözdizimi için aşağıdaki kurallar geçerlidir:
Aşağıda belirtilen bazı durumlar dışında, komut kabulü için nokta kullanılabilir.
Aşağıdaki kontrol karakterleri belirtilen işlevlere sahiptir:
- SOH (kontrol A): son karakteri sil
- DEL: son karakteri sil
- SYN (kontrol V): son kelimeyi sil
- CAN (kontrol X): tüm satırı sil
- EOT (kontrol D): geçerli kelimeyi göster
- ACK (kontrol F): tüm satırı göster
?: kabul edilebilir giriş biçimlerini göster- ESC: geçerli kelimenin tanınmasını zorla
- boşluk: geçerli kelimenin tanınmasını zorla
TELNET kontrol karakterleri you-echo ve I-echo istenen sonuçları verir. You-echo, kullanıcı zaten bu kipte değilse, karakter-karakter kipine geçilmesine de neden olur.
RJS Komutlarının Açıklaması — Yerel Sözdizimi
Aşağıda, yerel sözdiziminde desteklenen komutların bir listesi yer almaktadır. Başarılı yanıtın belirtilmediği durumlarda, RJS CR-LF ve ardından istem karakteri ile yanıt verir. Kullanıcının oturum açmış olması ya da olmaması gerektiği belirtilen durumlarda, kullanıcı uygun durumda değilse sırasıyla LOGIN PLEASE. veya LOGGED IN. görüntülenir.
Standart sözdizimi altında listelenen bir yanıta atıf yapıldığında, yanıt kimliklerinin yerel sözdizimi altında görüntülenmediği unutulmamalıdır.
FULLDUPLEX
'FULLDUPLEX' <CA>
Kullanıcıyı tam çift yönlü ve karakter-karakter kiplerine ayarlar.
HALFDUPLEX
'HALFDUPLEX' <CA>
Kullanıcıyı yarım çift yönlü kipine ayarlar.
LINE-AT-A-TIME
'LINE<-AT<-A<-TIME' <CA>
Kullanıcıyı yarım çift yönlü, satır-satır kiplerine ayarlar. Daha önce açıklanan kontrol karakterleri geçerli kalır, ancak RJS, geçerli komut satırı boş olmadıkça TELNET bağlantısı üzerinden hiçbir çıktı göndermez.
LOGIN
'LOGIN' <kullanıcı adı> <parola> <hesap> <CA>
Kullanıcının RJS kullanımının faturalandırılacağı UCSB Computer Center kullanıcı adı ve hesabını belirtir, kullanıcıyı oturum açtırır ve kaynak, yazdırma ve delme muhasebe parametreleri biriktiricilerini <kullanıcı adı>, <parola> ve <hesap> olarak ayarlar. Bu komut yalnızca kullanıcı oturum açmamışsa geçerlidir ve standart sözdizimindeki PASS komutu ile aynı yanıtları verir.
DISCONNECT
'DISCONNECT' <CA>
TELNET bağlantısını kapatır. Kullanıcı oturum açmışsa, önce oturum kapatılır. TELNET bağlantısının beklenmedik bir şekilde kapanmasına verilen fiilî yanıt, DISCONNECT komutunun yanıtıdır. DISCONNECT komutuna verilen yanıt:
TTY <tamsayı> BAĞLANTISI KESİLDİ.
Kalan komutlar, kullanıcının oturum açmış olmasını gerektirir.
LOGOUT
'LOGOUT' <CA>
Kullanıcının oturumunu kapatır ve TELNET bağlantısı üzerindeki sonraki etkinliklerin, daha önce geçerli olan muhasebe parametrelerine göre faturalandırılmasını sonlandırır; ayrıca REINITIALIZE komutunun fiilî eylemini gerçekleştirir. LOGOUT, TELNET bağlantısını kapatmaz ve kullanıcının sahip olduğu işler için devam eden dosya aktarımlarını etkilemez.
REINITIALIZE
'REINITIALIZE' <CA>
Aşağıdaki biriktiricileri boş olacak şekilde sıfırlar: kaynak, yazdırma ve delme muhasebe parametreleri; kaynak, yazdırma ve delme yoladı; ve oturum açma muhasebe parametresi.
ACCOUNTING
'ACCOUNTING' <hesap parametreleri> <CA>
<hesap parametreleri> = '(' <u> ',' <p> ',' <a> ')'
<u> = <kullanıcı adı> _ <null>
<p> = <parola> _ <null>
<a> = <hesap> _ <null>
Kaynak, yazdırma ve delme muhasebe parametrelerini <hesap parametreleri> olarak ayarlar. <u>, <p> veya <a> için <null> belirtilmesi, ilgili oturum açma biriktiricisinin içeriğinin kullanılacağını gösterir.
SOURCE (Muhasebe Parametreleri)
'SOURCE' <hesap parametreleri> <CA>
Kaynak muhasebe parametreleri biriktiricilerini <hesap parametreleri> olarak ayarlar.
PRINT (Muhasebe Parametreleri)
'PRINT' <hesap parametreleri> <CA>
Yazdırma muhasebe parametreleri biriktiricilerini <hesap parametreleri> olarak ayarlar.
PUNCH (Muhasebe Parametreleri)
'PUNCH' <hesap parametreleri> <CA>
Delme muhasebe parametreleri biriktiricilerini <hesap parametreleri> olarak ayarlar.
SOURCE (İş Tanımı)
'SOURCE' <jobid> (<hesap parametreleri> _ <null>) <yoladı> <CA>
<jobid> işinin kaynak yoladını <yoladı> olarak ayarlar ve kaynak muhasebe parametrelerini, belirtilmişse <hesap parametreleri>ne, aksi halde kaynak muhasebe parametreleri biriktiricilerinin içeriğine ayarlar.
<jobid> işi zaten mevcutsa ve kaynak yoladı belirtilmemişse, yeni yoladı kaydedilir; belirtilmişse ve kaynak dosya alımı henüz başlamamışsa değiştirilir. İş zaten mevcut değilse, yeni bir iş oluşturulur ve yoladı kaydedilir.
Kısıtlamalar:
- Belirli bir
<jobid>ile bir iş işlemesini tamamlamışsa, bu<jobid>yeni bir iş için kullanılmadan önce DELETE edilmelidir. - Bir kullanıcı yalnızca kendisine ait işleri değiştirebilir.
- Bir kullanıcı sabit bir sayıdan (şu anda 5) fazla işe sahip olamaz.
Kullanıcı zaten azami sayıya sahipse, standart sözdizimi altındaki INPUT için açıklandığı şekilde, yeni işe yer açmak üzere eski bir işin silinmesine çalışılır.
Olası hata yanıtları:
ŞU ANDA YENİ İŞLER KABUL EDİLMİYOR.KULLANICI <kullanıcı adı> ZATEN AZAMİ SAYIDA İŞE SAHİP.KULLANICI <kullanıcı adı> JOB <jobid> SAHİBİ DEĞİL.JOB <jobid> ZATEN TAMAMLANDI.JOB <jobid> ZATEN OKUNUYOR YA DA OKUNDU.
PRINT (İş Tanımı)
'PRINT' <jobid> (<hesap parametreleri> _ <null>) <disp> <CA>
<jobid> işinin yazdırma yoladını <disp> olarak ayarlar ve yazdırma muhasebe parametrelerini, belirtilmişse <hesap parametreleri>ne, aksi halde yazdırma muhasebe parametreleri biriktiricilerinin içeriğine ayarlar. PRINT komutu, SOURCE altında açıklandığı gibi ya yeni bir iş oluşturur ya da mevcut bir işi değiştirir ve READ yerine PRINTED ikamesi yapıldıktan sonra aynı kısıtlamalara ve hata iletilerine sahiptir. PRINT komutu yalnızca yazdırma dosyası aktarımı başlamadan önce geçerlidir.
PUNCH (İş Tanımı)
'PUNCH' <jobid> (<hesap parametreleri> _ <null>) <disp> <CA>
<jobid> işinin delme yoladını <disp> olarak ayarlar ve delme muhasebe parametrelerini, belirtilmişse <hesap parametreleri>ne, aksi halde delme muhasebe parametreleri biriktiricilerinin içeriğine ayarlar. PUNCH komutu, SOURCE ve PRINT komutları gibi ya yeni bir iş oluşturur ya da mevcut bir işi değiştirir ve READ yerine PUNCHED ikamesi yapıldıktan sonra aynı kısıtlamalara ve hata iletilerine sahiptir. PUNCH komutu yalnızca delme dosyası aktarımı başlamadan önce geçerlidir.
DELETE
'DELETE' <jobid> <CA>
Standart sözdizimindeki CANCEL komutu ile işlevsel olarak aynıdır.
INPUT (Yerel Sözdizimi)
'INPUT' <jobid> <CA>
<jobid> ile tanımlanan işi, RJS içinde, kullanıcının sahip olduğu ve kaynak dosya aktarımını bekleyen işler kuyruğuna yerleştirir. Bu kuyrukta ilk ya da tek iş haline geldiğinde, kaynak dosyasının alınması başlatılır. INPUT komutu başarılı olursa şu mesaj görüntülenir:
JOB <jobid> İŞLEME İÇİN KABUL EDİLDİ.
Olası hata iletileri:
JOB <jobid> BULUNAMADI.KULLANICI <kullanıcı adı> JOB <jobid> SAHİBİ DEĞİL.JOB <jobid> ZATEN TAMAMLANDI.KAYNAK YOLADI BELİRTİLMEDİ.YAZDIRMA YOLADI BELİRTİLMEDİ.
JOBSTAT
'JOBSTAT' <jobid> <CA>
Standart sözdizimindeki STATUS <jobid> komutu ile işlev ve yanıt açısından aynıdır.
JOBLIST
'JOBLIST' <CA>
Kullanıcının sahip olduğu işlerin jobid'lerini listeler.
Operatör Komutu
$ <metin> <CA>
<metin> = '?' ve '.' dahil olmak üzere herhangi karakterlerden oluşan bir dize.
<CA>'nın nokta yerine CR-LF olması gerektiğine dikkat edin.
<metin>i, kullanıcının sanal operatör konsolu üzerinden bir HASP operatör komutu olarak gönderir. HASP komutlarının ve komut yanıtlarının açıklaması için Ek A'ya bakınız.
RJS Dosya Aktarımı
Daha önce tanımlanan <yoladı>, kullanıcının kaynak, yazdırma ve delme dosyalarının konumunu ve özniteliklerini belirtmesini sağlayan araçtır. Bir dosyanın konumunun belirlenme yöntemleri daha önce ele alınmıştır; bu bölüm, kullanıcının veri öznitelikleri üzerindeki denetimlerini açıklar.
<öznitelikler> parametresi, satır denetimi türünü ve aktarım kipini belirtir. Simpleks bağlantı üzerinden aktarım durumunda, bu parametrenin anlamları aşağıdaki gibidir:
:Tveya:TE— TELNET benzeri satır denetimi.
Veri, gömülü satır denetim baytları içeren bir karakter akışıdır. Sayfa atlatma, form feed ile (ASCII veya EBCDIC ondalık 12); yeni satır, carriage return–line feed ile (ASCII 13–10, EBCDIC 13–27) belirtilir. Birden fazla yeni satır (“çift satır aralığı” veya “üçlü satır aralığı”), CR–LF'nin birden fazla yinelenmesiyle gösterilir.:Aveya:AE— ASA satır denetimi.
Veri, girişte 81, çıkışta 133 karakter uzunluğunda sabit uzunluklu kayıtlar dizisidir ve her kaydın ilk karakteri bir ASA satır denetim karakteridir. Olası satır denetim karakterleri şunlardır:+— yazdırmadan önce satır ilerlemesi yok (üst üste yazdırma),— bir satır ilerleme (tek aralık),0— iki satır ilerleme (çift aralık),-— üç satır ilerleme (üçlü aralık) ve1— sayfa atlatma. Girişte görünen satır denetim karakteri yok sayılır.:Nveya:NE— satır denetimi yok.
Veri, girişte 80, çıkışta 132 karakter uzunluğunda sabit uzunluklu kayıtlar dizisidir. Çıkışta üretilen herhangi bir satır denetimi, iletimden önce atılır.
Dosya aktarımı FTP aracılığıyla gerçekleştiğinde, <öznitelikler> parametresinin yorumlanışı biraz farklıdır. Bu durumda anlamlar aşağıdaki gibidir:
:Tveya:TE— TELNET benzeri satır denetimi.
Veri, simpleks bağlantı için olduğu gibi aynı biçimdedir ve akış kipinde, dosya yapısında ve ASCII (A) ya da EBCDIC (E) türünde aktarılır.:Aveya:AE— ASA satır denetimi.
Veri, bloklu kipte, kayıt yapısında ve ASCII yazdırma (P) ya da EBCDIC yazdırma (F) türünde aktarılır. Her kaydın ilk karakteri yukarıda açıklanan ASA satır denetim karakteridir.:Nveya:NE— satır denetimi yok.
Veri, bloklu kipte, kayıt yapısında ve ASCII (A) ya da EBCDIC (E) türünde aktarılır. Simpleks bağlantıda olduğu gibi, herhangi bir satır denetim bilgisi mevcut değildir.
FTP dosya aktarımını gerçekleştirmek için RJS, aşağıdaki FTP komutlarını (verilen sırayla) gönderir: USER (erişim kullanıcı adı belirtilmişse), PASS (parola belirtilmişse), ACCT (hesap belirtilmişse), BYTE (bayt boyutu 8 olarak belirtilir), ALLO (çıkış dosyası yazdırılıyorsa), TYPE, STRU, MODE, SOCK ve APPE veya RETR.
Ek A: HASP Kuyruklama Sistemi
HASP, IBM OS/360 ile birlikte kullanılan ve yığın işlerin işlenmesine yardımcı olan bir biriktirme-kuyruklama-zamanlama sistemidir. HASP’nin temel amacı, G/Ç bekleme süresini en aza indirerek verimi artırmak ve daha kısa işlerin daha uzun işlere göre işlenmek üzere seçildiği bir öncelik zamanlama düzeni sağlamaktır.
HASP içinde çeşitli işleme aşamaları ya da işlevler vardır. Herhangi bir anda, belirli bir iş ya bir işleme aşamasındadır; bu durumda iş aktif olarak adlandırılır ya da bir işlev tarafından işlenmeyi beklemektedir; bu durumda ise o işlev için kuyruğa alınmış olduğu söylenir. Bir işlev tarafından işlenecek işler, o işlevi bekleyen işler kuyruğundan, azalan öncelik sırasına göre seçilir. Bir işin önceliği, tahmini CPU süresi ve çıktı hacmi tarafından belirlenir. Bunun sonucu olarak daha küçük işler, daha büyük işlere göre işlenmek üzere seçilir ve dolayısıyla sistem içinde daha az zaman geçirir.
HASP uzak kullanıcısına sanal bir operatör konsolu sağlanır. Bu konsol üzerinden kullanıcı, sistem hakkında genel bilgileri görüntülemek ve terminali ile işlerini denetlemek için HASP operatör komutları girebilir. HASP, komutlarına yanıt olarak ve kendisiyle ilgili koşullar ortaya çıktıkça kullanıcıyı bilgilendirmek amacıyla konsoluna iletiler gönderir. HASP komutları aşağıdaki genel biçime sahiptir:
$ <verb> <operand1>,<operand2>,...,<operandn>
burada:
<verb>— gerçekleştirilecek genel işlevi tanımlayan tek karakterli bir fiil<operand>— görüntülenecek ya da üzerinde işlem yapılacak nesnenin tanımı
Komuta bağlı olarak sıfır ya da daha fazla operand bulunabilir ve birden fazla operand kullanıldığında ayırmak için virgüller kullanılır. Genel olarak, alfabetik karakterler büyük ya da küçük harf olarak girilebilir ve eşlenmiş kesme işaretleri dışındaki metinlerde istenilen herhangi bir noktada boşluk eklenebilir. Metin karakteri olarak kullanılmak istenen kesme işaretleri çift olarak yazılmalıdır.
Her HASP komutu bir ya da daha fazla yanıt üretir. OK yanıtı, birçok durumda komutun alındığını ve istenen eylemin gerçekleştirildiğini ya da başlatıldığını belirtmek için kullanılır. İkinci durumda, istek tamamlandığında bir bilgilendirme iletisi yayımlanır.
Her HASP konsol iletisi, S HH.MM.SS ya da S*HH.MM.SS metniyle başlar; burada HH.MM.SS, 24 saatlik saat düzeninde saat, dakika ve saniye cinsinden günün saatidir.
Birçok komut, yanıt olarak iş durumu bilgilerini görüntüler. Bu standart yanıtın biçimi aşağıdaki gibidir:
işlenmek üzere kuyrukta olan işler:
JOB jjj jobname AW EXEC class PRIO prio HOLD
PRINT rem PURGE
PUNCH rem *DUP*
PURGE
işlenmekte olan işler:
JOB jjj jobname EXECUTING class PRIO prio HOLD
ON DEVICE dev PURGE
IS PURGING
burada:
jjj— HASP tarafından atanan iş numarasıjobname— OS iş adıAW— "AWAITING" (BEKLEMEDE)class— işin iş sınıfıprio— işin HASP iç önceliğirem— işin yazdırma ya da delme için kuyruklandığı uzak terminalin terminal numarasıdev— aygıt adıHOLD— işin bekletme durumunda olduğunu ya da geçerli işlevin tamamlanmasında bu duruma geçeceğini belirtirPURGE— işin geçerli işlevin tamamlanmasında temizleneceğini belirtir*DUP*— aynı jobname’e sahip başka bir iş tamamlanana kadar işin yürütmeye başlayamayacağını belirtir
Aşağıda, bir uzak kullanıcı tarafından verilebilecek HASP operatör komutlarının kısa bir açıklaması yer almaktadır (daha kapsamlı bir açıklama için NIC #16306’ya bakınız):
SDA— Tüm aktif işler için durum bilgilerini görüntülerSDF [,rem]— Özel formlar için kuyrukta olan işlerin sayısını görüntülerSDN [,queue]— Kuyrukta olan tüm işler için durum bilgilerini görüntülerSDQ— Kuyrukta olan işlerin sayısını görüntülerSCJ jjj— İşi derhal silerSKJ jjj— OS CANCEL komutunu verir ve işi derhal silerSPJ jjj— Geçerli işlevden sonra işi silerSDJ jjj— İş durum bilgilerini görüntülerSD'jobname— İş durum bilgilerini görüntülerSB device,pages— Aygıtı geri sararSC device— Aygıttaki geçerli işlevi silerSF device,pages— Aygıtı ileri sararSDP device— Aygıttaki işin iş numarasını görüntülerSDI— Başlatıcıların durumunu ve sınıflarını görüntülerSDLINE rem— Uzak terminalin durumunu görüntülerSDRM rem— Uzak terminalin durumunu görüntülerSDU— Yerel birim kayıt aygıtlarının durumunu görüntülerSDM rem,'message'— Uzak konsola ileti görüntüler
Ek B: RJS Yanıt Kimlikleri
Aşağıda, belirtilen komutlara yanıt olarak RJS tarafından üretilen yanıtların yanıt kimliklerinin bir listesi verilmiştir:
| Komut | Başarı Yanıtı | Başarısızlık Yanıtları |
|---|---|---|
| USER | 330 | 501 |
| PASS | 230 | 501, 431, 505 |
| ACCT | 200 | 501 |
| BYE | 231 | 501 |
| REINIT | 204 | 501, 504 |
| INUSER / INID | 200 | 501, 504 |
| INPASS | 200 | 501, 504 |
| INACCT | 200 | 501, 504 |
| OUTUSER | 200 | 501, 504 |
| OUTPASS | 200 | 501, 504 |
| OUTACCT | 200 | 501, 504 |
| INPATH | 200 | 501, 504 |
| OUTPATH / OUT | 200 | 501, 504 |
| INPUT | 260 | 501, 360, 504, 505 |
| CHANGE | 200 | 501, 464, 504 |
| STATUS (operand yok) | 100 | 501 |
| STATUS (operand ile) | 161 | 501, 464, 504 |
| CANCEL | 262 | 501, 464, 504 |
Olası kendiliğinden oluşan yanıt kimlikleri şunlardır: 300, 440, 441, 442, 461 ve 466.
Bu RFC, çevrimiçi RFC arşivlerine giriş için Mikan Mirko tarafından makine tarafından okunabilir biçime dönüştürülmüştür.