mirror of
https://github.com/kennethreitz/context.git
synced 2026-06-05 14:50:19 +00:00
84 lines
2.4 KiB
LLVM
84 lines
2.4 KiB
LLVM
/*
|
|
* @progname infant_mortality.ll
|
|
* @version 1
|
|
* @author Eggert
|
|
* @category
|
|
* @output Text
|
|
* @description
|
|
|
|
This program finds families that have lost multiple children.
|
|
You give it the threshold for the number of young deaths, and the
|
|
threshold for the age at death, and it finds all the appropriate
|
|
families.
|
|
|
|
infant_mortality - a LifeLines program
|
|
by Jim Eggert (eggertj@atc.ll.mit.edu)
|
|
Version 1, 19 September 1994
|
|
|
|
*/
|
|
|
|
|
|
global(yob)
|
|
global(yod)
|
|
|
|
proc main() {
|
|
getintmsg(numthresh,"Enter threshold for number of young deaths")
|
|
getintmsg(agethresh,"Enter threshold for age at death")
|
|
forfam(family,fnum) {
|
|
if (ge(nchildren(family),numthresh)) {
|
|
set(countdeaths,0)
|
|
set(maxageatdeath,0)
|
|
children(family,child,cnum) {
|
|
call get_dyear(child)
|
|
if (yod) {
|
|
call get_byear(child)
|
|
if (yob) {
|
|
set(ageatdeath,sub(yod,yob))
|
|
if (le(ageatdeath,agethresh)) {
|
|
set(countdeaths,add(countdeaths,1))
|
|
if (gt(ageatdeath,maxageatdeath)) {
|
|
set(maxageatdeath,ageatdeath)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (ge(countdeaths,numthresh)) {
|
|
key(family) " "
|
|
name(husband(family)) " and " name(wife(family))
|
|
"\nlost " d(countdeaths)
|
|
" children by the age of " d(maxageatdeath)
|
|
".\n"
|
|
children(family,child,cnum) {
|
|
call get_byear(child)
|
|
call get_dyear(child)
|
|
name(child) " ("
|
|
if (yob) { d(yob) }
|
|
"-"
|
|
if (yod) { d(yod) }
|
|
") "
|
|
if (and(yob,yod)) { d(sub(yod,yob)) }
|
|
"\n"
|
|
}
|
|
"\n"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
proc get_dyear(person) {
|
|
set(yod,0)
|
|
if (d,death(person)) { extractdate(d,dod,mod,yod) }
|
|
if (not(yod)) {
|
|
if (d,burial(person)) { extractdate(d,dod,mod,yod) }
|
|
}
|
|
}
|
|
|
|
proc get_byear(person) {
|
|
set(yob,0)
|
|
if (b,birth(person)) { extractdate(b,dob,mob,yob) }
|
|
if (not(yob)) {
|
|
if (b,baptism(person)) { extractdate(b,dob,mob,yob) }
|
|
}
|
|
}
|