1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
*(Вопрос) Мне требуется определить время госпитализации по месяцам, если даны
* даты поступления и выписки. Примерно так:
*	Номер Поступил Выписан янв февр март и т.д.
*	1     1/5/01    2/5/01  25  5    0 
*	2     2/7/01    3/7/01  0   21   7 
*	3     4/3/01    5/25/01 ?   ?    ?

*(Ответ) Размещён в SPSSX-L 20.11.2001, автор: rlevesque@videotron.ca.

* Примеч.: данные синтаксис не вполне универсальный. 
*	Предполагается, что все даты находятся в пределах одного календарного года.

DATA LIST LIST /id(F8) datein(ADATE) dateout(ADATE).
BEGIN DATA
1 1/5/01 2/5/01
2 2/7/01 3/7/01
3 4/3/01 5/25/01
4 2/1/01 4/4/01
5 1/31/01 4/1/01
6 7/1/01 9/29/01
7 9/10/01 12/30/01
END DATA.
LIST.

VECTOR month(12F8).
COMPUTE #oneday=24*60*60.
LOOP mth=1 TO 12.
COMPUTE beg1=MAX(datein , DATE.DMY(1,mth,XDATE.YEAR(datein))).
COMPUTE end1=MIN(dateout + #oneday, DATE.DMY(1,mth+1,XDATE.YEAR(datein))).
COMPUTE month(mth)=max(0, CTIME.DAYS(end1 - beg1)).
END LOOP.
EXECUTE.