ここ最近仕事でプログラムを作る機会が多くなった。仕事の性格上、通信がらみのテーマが多く、言語はCを使用している。BASICで出来る程度のものならBASICで充分と、なにもCを持ち出すこともないが、あるまとまったちょっとした中規模サイズのプログラムともなると、プログラムの見通し、サブルーチン化、変数管理の面からBASICではかったるく、いきおいC言語となる。
ところがC言語でちょっと息詰まってしまった。BASICでいうところの固定長のレコードを持つランダムファイルの作成が必要になったのだが、この処理が案外面倒くさい。ここ2,3日なにかスマートに処理する方法はないものかと、あれこれ思案中。QuickBasicなら、PUT,#filenumber,variable で処理できる。変数のタイプに応じて、Basicが自動的に該当する固定サイズのデータを出力してくれる。文字列変数にも固定長のものが用意されており、割と楽にファイル処理が出来る。Cには、明確な固定長文字列の定義がない。単に文字列とは0で終わるバイト列である。この文字列と、整数、バイトなどの複合データで構成されるレコードのファイル入出力の扱いにちょっと思案している。
どんなプログラムでも、不定長のデータを取り扱うのは結構うっとおしいものである。こんな時は予め取り扱う最大数(最大長)を決めてしまうことになるのだが、処理するケースの9割方がその1割にも満たないデータである事が多々あり、常にメモリやファイルに無駄が生じていると思うといささかげんなりする。なにかいい方法はないものかと、ついつい考え込んでしまう。