По поводу работы с WinAPI-функциями - Вам нужно заполучить где-нибудь документацию по этому делу. Можно MSDN (msdn.microsoft.com или поставляется со всякими Студиями на дисках). Однако MSDN - слишком большая помойка.... Я пользуюсь в таких случаях файлами помощи MS SDK из поставки старых Borland Delphi. Если нужно, могу для Вас выложить (около 20 Мб).

Так вот, по существу - WinExec устарела, осталась от Win3.1. Сейчас нужно использовать CreateProcess. Она отдаст описатель созданного процесса, затем Вы примените к нему функцию WaitForSingleObject - и Ваш процесс будет заморожен до тех пор, пока не завершится выполнение другого.

По поводу
> -- Цитата:
> PROCEDURE Exec (IN prog: ARRAY cmdLen OF SHORTCHAR);VAR i: INTEGER;p: WinApi.PtrSTR;BEGINp := prog;i := WinApi.WinExec(p, 1);END Exec;

Здесь небезопасному указателю p присваивается адрес массива prog.
Подробнее про низкоуровневые средства можете почитать в документации в разделе "Платформенно-зависимые средства" (Platform-Specific Issues).

> -- Цитата:
> 4. Имеется ли средство перемещения файлов (move) в пределах одного диска без создания копии исходного файла?

Через WinAPI - MoveFile - MoveFileEx.

По поводу констант - ну да, не индексируются константы...
И символьная переменная массиву символов тоже не присваивается/не плюсуется.
Можно len := LEN(s$); s[len+1] := 0X; s[len] := c.