До сих пор в наших примерах мы использовали программы CGI только для обработки данных из полей форм, указывая адрес URL загрузочного файла программы в параметре ACTION оператора <FORM>. Однако есть и другая возможность вызова программ CGI: вы можете указать их адрес в параметре HREF оператора ссылки <A>. В этом случае вы можете передать программе CGI параметры, указав их после имени файла загрузочного модуля через разделительный символ “?”. Программа получит строку параметров методом GET и сможет извлечь ее из переменной среды с именем QUERY_STRING.
Пример документа HTML, в котором демонстрируется вызов программы CGI указанным выше способом, приведен в листинге 7.7.
Листинг 7.7. Файл chap7\aref\aref.htm
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE>Ссылки на документы HTML</TITLE>
</HEAD>
<BODY BGCOLOR=#FFFFFF>
<A HREF="http://frolov/frolov-cgi/aref.exe?page1">Домашняя страница</A><BR>
<A HREF="http://frolov/frolov-cgi/aref.exe?page2">Книги</A><BR>
<A HREF="http://frolov/frolov-cgi/aref.exe?page3">Статьи</A><BR>
</BODY>
</HTML>
В этом документе есть три ссылки на программу CGI с именем aref.exe, причем каждый раз ей передаются разные параметры. Внешне документ выглядит так, как это показано на рис. 7.8.

Рис. 7.8. Документ HTML с ссылками на программу CGI
Программа CGI принимает параметр и в зависимости от его значения отображает один из документов HTML. Например, при выборе третьей строки в окне навигатора отображается документ, показанный на рис. 7.9.

Рис. 7.9. Документ, который отображается программой CGI при выборе строки “Статьи”
Исходный текст программы AREF достаточно прост и приведен в листинге 7.8.
Листинг 7.8. Файл chap7\aref\aref.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main(int argc, char *argv[])