MES3.0はLinuxの下位互換性であり、MES3.0のユーザープログラムは原則としてLinuxでも同じソースコードで動作します。
以下、MES3.0で動作確認されたLinuxとソースコード互換の時刻の設定と表示の例です。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/time.h>
#define isleap(y) ((((y) % 4) == 0 && ((y) % 100) != 0) || ((y) % 400) == 0)

static const int daysinmonth[] =
	{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

int main(int argc, char **argv) {
	int		i, value;
	struct timeval	tv;
	struct timezone	tz;
	struct tm	*t;

	if(argc == 3 && argv[1][0] == '-') {
		if(gettimeofday(&tv, &tz) == -1) return -1;
		t = localtime(&tv.tv_sec);
		value = atoi(argv[2]);
		switch(argv[1][1]) {
		case 'Y':
			t->tm_year = value + 100;
			break;
		case 'M':
			t->tm_mon = value - 1;
			t->tm_yday = -1;
			for(i = 0;i < t->tm_mon;i++) {
				t->tm_yday += daysinmonth[i];
				if(i == 2 && isleap(t->tm_year + 1900)) t->tm_yday++;
			}
			t->tm_yday += t->tm_mday;
			break;
		case 'D':
			t->tm_mday = value;
			t->tm_yday = -1;
			for(i = 0;i < t->tm_mon;i++) {
				t->tm_yday += daysinmonth[i];
				if(i == 2 && isleap(t->tm_year + 1900)) t->tm_yday++;
			}
			t->tm_yday += t->tm_mday;
			break;
		case 'h':
			t->tm_hour = value;
			break;
		case 'm':
			t->tm_min = value;
			break;
		case 's':
			t->tm_sec = value;
			break;
		}
		tv.tv_sec = mktime(t);
		settimeofday(&tv, &tz);
	} else if(argc == 1) {
		gettimeofday(&tv, NULL);
		t = localtime(&tv.tv_sec);
		printf("%04d/%d/%d ", t->tm_year + 1900, t->tm_mon + 1, t->tm_mday);
		printf((t->tm_hour / 12) ? "PM" : "AM");
		printf(" %d:%02d:%02d\r", t->tm_hour % 12, t->tm_min, t->tm_sec);
	} else {
		printf("Syntax error\r");
		fflush(stdout);
		return -1;
	}
	fflush(stdout);
	return 0;
}