Dün mümkün olmadı, ancak bugün, ve değişiklik onayını onayladığı anda değişiklikleri kaynak ağacında alacağım.
Derleyici kaynağında iki küçük değişiklik ve - stdin'i göstermek için kullanılabilir.
prompt$ echo 'program-id. test. display "hello".' | cobc -free -frelax -x -o thing -
-: 1: Warning: PROCEDURE DIVISION header missing - assumed
prompt$ ls -l
-rwxrwxr-x. 1 btiffin btiffin 13192 Jul 31 17:27 thing
prompt$ ./thing
hello
Bu da herhangi bir işletim sistemi için çalışmak ve edecek olanların değil,/dev/(paxdiablo yazdığı gibi şimdilik, GNU/Linux ve benzeri bir çok geçerli bir seçenektir) Stdin desteğiyle.
Ve bir kenara; cobc zaten bir POSIX yorumlayıcısı olarak kullanılabilir.
prompt$ chmod +x interp.cob
prompt$ ./interp.cob
Ne yazık ki
Command line: /usr/local/bin/cobc -xvg ./interp.cob
Preprocessing: ./interp.cob -> interp.i
Return status: 0
Parsing: interp.i (./interp.cob)
Return status: 0
Translating: interp.i -> interp.c (./interp.cob)
Executing: gcc -std=gnu99 -c -I/usr/local/include -pipe -Wno-unused
-fsigned-char -Wno-pointer-sign -g -o "/tmp/cob25113_0.o"
"interp.c"
Return status: 0
Executing: gcc -std=gnu99 -Wl,--export-dynamic -o "interp"
"/tmp/cob25113_0.o" -L/usr/local/lib -lcob -lm -lgmp
-lncursesw -ldb -ldl
Return status: 0
vererek
#!/usr/local/bin/cobc -xvg
identification division.
program-id. SAMPLE.
procedure division.
display "scripted" end-display
goback.
end program SAMPLE.
, bu sadece yapı içindir. Yürütme, fazladan bir adım gerektirir.
prompt$ ./interp
scripted
"Şimdi kod çalıştırmasına" için hiçbir derleyici seçeneği, yani bir -J (sabit formu) ve -j (serbest formu) seçeneği eklenecektir yoktur. İşi çalıştır, yeni bir form olan -x (çalıştırılabilir oluştur) haline gelir ancak aynı zamanda işlemin sonunda ikili dosyayı da çalıştırır. Daha sonra POSIX'te cobc "komut dosyalarına" erişebileceğiz. Şu anda izin verilen her şey oluşturuluyor ve çalışma ayrı bir komut olmalı.
Ve POSIX sağlama satırlarının tek bir argümanla sınırlı kaldığı sınırlamalar, yani -j-free işe yaramaz ve -j-Xref vb. Olmaz, ancak sınırlar dahilinde cobc betiklerine izin verilir.
Bu, derleyici için başka bir satır değişikliği, ve 400 satır seçenek ayrıştırma ve dökümantasyon. ;-)
Birkaç saat içinde test için hazır olmalıdır. Yine, bu değişiklikler diğer tüm derleyici denetleyicilerinden onay gerektirecektir, ancak geliştirmelere izin vermemek için herhangi bir neden göremiyorum. Derleme sonunda iki iş, biri için - stdin ve -J -j.
GnuCOBOL projesine bir özellik talebi yapmak zorundasınız. Şu anda SourceForge'da, muhtemelen yakında hareket ediyor. –
@BillWoodger Belki bunu yapabilir ve cevap yazabilir misiniz? :) SourceForge'in nasıl çalıştığını bilmiyorum ... –
Bir dosyada kaynak kodun bulunmaması, "oluşturulan kodun" büyük bir anlamını taşımaktadır. Bu düşündüğün şeyin türü mi? Bir dosya kullanmak yerine pipo için yararlı olabilecek birkaç örnek var mı? Bunu yapabilirsen, asıl isteği gönderebilirim. –