Спецификация СД на языке Pascal:
Unit form7;
Interface
Const {определение исключительных ситуаций}
Type St=array[1..65520] of char;
{первые два байта содержат динамическую длину строки}
String1=record
p_st:^st;{указатель на строку}
max:word {максимальная длина строки, определяется при инициализации}
End;
Procedure InitStr(var st:string1; n:word);
Procedure WriteToStr(var st:string1;s:string);
Procedure WriteFromStr(var s:string;st:string1);
Procedure InputStr(var st:string1);
Procedure OutputStr(const st:string1);
Function Comp(s1,s2:string1;var fl:shortint):boolean;
Procedure Delete(var S:String1;Index,Count:word);
Procedure Insert(Subs:String1;var S:String1;Index:word);
Procedure Concat(const S1, S2:string1;var srez:string1);
Procedure Copy(S:String1;Index,Count:Word; var Subs:string1);
Function Length(S: String1): word;
Function Pos(SubS, S: String1): word;
Var StrError: {тип переменной ошибки}
Спецификация СД на языке C:
#if!defined(__FORM7_H)
#define __FORM7_H
const...; // Определение исключительных ситуаций
typedef struct str
{
char *s; /* Указатель на строку. Первые два байта строки s содержат динамическую длину строки */
unsigned max; /* Максимальное количество символов в строке, определяющееся при инициализации */
};
typedef str *string1;
void InitStr(string1 st, unsigned n);
void WriteToStr(string1 st, char *s);
void WriteFromStr(char *s, string1 st);
void InputStr(string1 st);
void OutputStr(string1 st);
int Comp(string1 s1, string1 s2);
void Delete(string1 s, unsigned Index, unsigned Count);
void Insert(string1 Subs, string1 s, unsigned Index);
void Concat(string1 s1, string1 s2, string1 srez);
void Copy(string1 s, unsigned Index, unsigned Count,string1 Subs);
unsigned Length(string1 s);
unsigned Pos(string1 SubS, string1 s);
void DoneStr(string1 s);
int StrError; // Переменная ошибок//...
#endif