=== Заметки злого админа » Web-программирование на Turbo Basic
===
По просьбам выкладываю отдельным постом код, написанный ради прикола в
форуме Winreview.
Все началось с цитаты в разделе приколов:
XXX
20:10:26 кто в здравом уме будет пейсать веб-скрипты на бейсике?
20:11:25 впрочем, .NET показало, что можно пейсать и плеваться вне
зависимости от языка
Я решил показать, что это все-таки возможно и даже местами прикольно.
Современные версии языка юзать не интересно, поэтому я решил
обратиться к истокам Borland Turbo Basic.
Ранее мне где-то попадался реальный FAQ на тему программирования CGI
скриптов на досовом турбо бейсике. Причем у скомпиленных им экзешников
был какой-то косяк с stdout, приходилось подставлять костыль, что-то
типа заворачивания экзешников в батники. Я не пробовал, но автор
клялся и божился, что все работает. В общем, не устоял и попробовал.
Итак:
5 open "out.txt" for output as #1
10 print# 1,"Content-Type: text/html"
20 print# 1,""
30 print# 1,"Hello World!"
40 qs$ = environ$("QUERY_STRING")
50 vn$ = "name"
60 gosub 1000
70 if vv$<>"" goto 100
80 print# 1,"
Please, enter your name
"
90 goto 200
100 print# 1,"Fuck you, "+vv$+"!
"
200 close# 1
1000 rem Parsim peremennyu QUERY_STRING
1001 rem vn$ - imya peremennoi, vv$ - znachenie.
1010 vt$ = vn$ + "="
1020 vv$ = ""
1030 vp = 0
1040 for i=1 to len(qs$)-len(vt$)+1
1050 if mid$(qs$,i,len(vt$))=vt$ then vp=i+len(vt$) else goto 1070
1060 goto 1080
1070 next i
1080 if vp=0 goto 1200
1090 ls = 0
1100 for i=vp to len(qs$)
1110 if mid$(qs$,i,1)<>"&" then ls=ls+1 else goto 1130
1120 next i
1130 vv$ = mid$(qs$,vp,ls)
1200 return
Да, там действительно есть проблемы с stdout. Обычные операторы PRINT
выводят текст на экран. Но перенаправление вывода в файл не работает.
А это значит, что Апач не видит и не может передать клиенту вывод
экзешника. Я попытался вывести текст в стандартный файл CON, но это не
сработало. Поэтому появился такой костыль:
@echo off
cgi.exe
type out.txt
А теперь полюбуйтесь на результат:
Итак, начало положено. Ждем появления в интернете мегапорталов,
написанных на Турбо Бейсике. Программисты, вперед! Возродим любимый
язык наших предков! Думаю, Хрюкину понравится
TODO: Надо еще как-то научиться ловить STDIN (чтобы POST запросы
работали).
P.S. Да, я знаю все косяки этой конструкции, но они устранимы. Это
пример, сляпанный на коленке за несколько минут.
.